Monday, 30 May 2011

Red Sky at Night


146/365, originally uploaded by craigand.

Red sky at night, Angel Delight.

Wood Pile


145/365, originally uploaded by craigand.

The wood pile that used to be trees in my garden.

Fallen off the wagon a little of late with one thing or another. Will be back up to speed shortly.

Tuesday, 24 May 2011

Swirly Digger


144/365, originally uploaded by craigand.
Mini-digger with a freaky effect. This is basically a hand-held shot with some serious camera shake. The interesting swirls are caused by the lens's image stabilisation completely failing to help.
Part of the minidiggers set.

Cement Factory


143/365, originally uploaded by craigand.
Cement factory at dusk.

Sunday, 22 May 2011

Sunset over Pitsmoor


142/365, originally uploaded by craigand.

Sunset over Sheffield from Pitsmoor

Daisy


141/365, originally uploaded by craigand.

A daisy beats the odds and grows in the middle of a roundabout

Forever Blowing Bubbles

Just a quicky post of some bubble blowing activities that I think I managed to capture nicely!



Saturday, 21 May 2011

Postbox


140/365, originally uploaded by craigand.

I've lived in this city all my life, and I've never once noticed this old fashioned red postbox by the cathedral.

Thursday, 19 May 2011

Hidden Plantlife


139/365, originally uploaded by craigand.
A plant grows in a disused cupola outside the Kelham Island development in Sheffield. The circular border is provided by one of the many small holes clearly visible on the other side.

I also took this picture of the outside lip of the cupola. I couldn't decide which to use, but I figured the plant one was unlike anything else I've taken. Here is the other contender.

IMG_7198, originally uploaded by craigand.

Riverside Industry


138/365, originally uploaded by craigand.

A view up the Don from Kelham Island. The remains of industry are clearly visible as derelict factories line the river.

Cathedral


137/365, originally uploaded by craigand.

An unconventional view of Sheffield Cathedral. The crouching man and wonky bollard break up the straight lines and add a point of interest.

Another Car Park


136/365, originally uploaded by craigand.

The car park. Where I park my car. Thrilling, ain't it?

Old and New


135/365, originally uploaded by craigand.

A mish-mash of old, new and middle-aged buildings that I see on my way in to work.

Mini-digger


134/365, originally uploaded by craigand.

There seems to be an influx of mini-diggers around Sheffield at the moment. This one was heading from West Bar down the pavement towards town.

Monday, 16 May 2011

Windows


133/365, originally uploaded by craigand.

Extreme window cleaning.

Saturday, 14 May 2011

Triumph


132/365, originally uploaded by craigand.
Was feeling uninspired today, so I used the @dailyshoot for inspiration. The brief was to make photograph dominated by red. Well, I saw this Triumph TR 250 in the car park, and I saw that it was red. So there we go.
I also shot this lovely black and white pic. The B&W, combined with the swirly bokeh of my 28mm Makinon lens, make it appear almost anachronistic.

Thursday, 12 May 2011

Flowers in a vase


130/365, originally uploaded by craigand.

Some tiny pink flowers in a vase. And by "in" I actually mean "inside" and not just perched on the top.

Birthday girl


131/365, originally uploaded by craigand.

Birthday cake!

Tuesday, 10 May 2011

After the rain


129/365, originally uploaded by craigand.

A rather damp, surprisingly empty Meadowhall carpark turned a little reflective after the downpour.

The second post set in a car park in 3 days. Can you tell what I've been doing a lot of lately? Yep. Shopping in the rain.

Sunday, 8 May 2011

Hero: 108


128/365, originally uploaded by craigand.

Hero: 108 Kingdom Krashers. A rather silly game involving cannon balls and armoured turtles. £4 from Home Bargains!

Car Park in the Rain


127/365, originally uploaded by craigand.

A car park through the rain. Lovely effect from the water on glass.

Grass


126/365, originally uploaded by craigand.

Grass and flowers at 60mph.

Glossop


125/365, originally uploaded by craigand.

Looking toward Glossop over Hurst Reservoir from the Snake.

Low Speed Pursuit


124/365, originally uploaded by craigand.

Low speed pursuit on the Snake Pass

Artificial Flowers


123/365, originally uploaded by craigand.

Artificial flowers and their reflection.

Saturday, 7 May 2011

In which I complain that coding standards are a waste of time

Just kidding. I'm not going to rail against coding standards. No, I'm going to rail against the absolute and dictatorial enforcement of coding style guidelines, to the point where a single misplaced curly bracket can fail the code review of a thousand line project before it's even started. I'm going to rail against the fact that many people these days don't actually know that coding style guidelines and coding standards are not the same thing.

Coding style guidelines are not coding standards. Coding standards are rules on how to construct software. Rules that have practical and defined benefits. Rules than can be proven to assist in the structured and correct building of code. For example:
  • Do not perform database access in the constructor.
  • All database access should use the framework's DAL.
  • Do not rely on complex instantiation instructions; provide a factory method.
  • Do not inherit from a class in a different module or library; only encapsulate.
  • Avoid singletons.
  • Don't maintain state in utility classes.
Of course the specifics change with each project, with each team, with each individual. But the point is that the coding standards define how code is built, and in no way does it define how much whitespace to use.

Another assertion is that automated coding style checking is a static analysis method. Incorrect. It is a way to count whitespace and make sure your curly braces are not out of place. It doesn't check types for logical consistency. It doesn't check variable access for potential casting exceptions. It doesn't ensure that all types are locatable by the class loader. Static analysis tools and lint checkers check far more important things than parenthesis placement.

Ironically, many of the languages where over-zealous application of coding style guidelines is rife are in the dynamic language communities. PHP, Ruby, etc. I say ironically, because they're dynamic languages and cannot, by definition, have static analysis performed on them. That's why they rely so heavily on unit tests.

In these communities, it seems that a meme has taken hold without true understanding. "We need consistency and automation!" they cry, and so they try it. But they put it in all the wrong places. Your code should stand or fall on whether it is logical, correct and understandable. How you choose to indent is your own business.

Coding style guidelines are the lowest form of code analysis. Code reviews in disfunctional teams often degrade to picking spots about coding style.
  • Put curly brackets on a new line.
  • Put curly brackets on the same line.
  • Indent multi-line statements to the first parenthesis.
  • Indent multi-line statements one tab stop.
  • Put a space between if and (
  • Do not put a space between if and (
So much nit-picking, so little actual, useful insight. A few people got together and had a thought:
"If we're spending all our review time picking little, insignificant faults in each other's code rather than checking that it's actually any good, then maybe we should change things?"
There were a few possibilities, but the solution they chose was "automate the nit-picking of insignificant whitespace differences." This was the wrong solution. The correct solution would have been
"Why are we nit-picking about whitespace anyway? Are we really that petty? Let's start reviewing based on actual coding standards and unit test results."
Failing code for not meeting coding style guidelines precisely is a waste of time. It's arbitrary. It's subjective. There is absolutely no evidence that enforcing coding style in this way has any positive effect on code quality, readability or coherence. However, failing a code review for petty reasons does have negative knock-on effects.


Judging code quality by amount of whitespace
is like judging programmer productivity
by lines of code written.


The compiler doesn't care. The user doesn't care. In all practical ways, the coding style guidelines should remain just that; guidelines. The most egregious flaunting of the rules should be flagged in code review. If somebody completely fails to maintain sane indentation, or writes tightly packed code that's hard to decipher, then by all means throw it back. But if the only problem is that somebody's editor indents the last line of a multi-line array in a slightly different way than your standards dictate, lighten up and realise that it doesn't matter at all.

Can anyone out there, in all honestly, compare this:

    doSomething(someValue,
                someOtherValue);

with this:

    doSomething(
        someValue,
        someOtherValue
    );

and categorically state that one is harder to read than the other? No, because it's subjective. It's all subjective, and it's all arbitrary. Making code functionally and logically correct are objective standards and are provable. Making code readable is entirely subjective and cannot be dictated by failing reviews over hard and fast rules about indenting. 

If anyone out there can explain why coding style guidelines have been elevated to this pinnacle, this pedestal, this lofty height to which we mere mortals can only dream to reach, then please enlighten me. As far as I can tell, there is no reason at all beyond cargo cult programming, rhetoric and misunderstanding.

End of rant. Just needed to get that off my chest.

Tuesday, 3 May 2011

Sunset Pigeon


122/365, originally uploaded by craigand.

A pigeon sits on a telegraph pole while the sun slowly sinks beneath the horizon, illuminating the clouds with sepia.

Sunday, 1 May 2011

Canon EOS 500N


Canon EOS500N, originally uploaded by craigand.
New toy. Well, the body is, anyway. Already had the 28-135mm stuck on the front of it. EOS 500N to complement the EOS 500D for if I fancy using film once in a while. Only cost £7.99 including postage, so ... bargain!

This is, of course, why there are a few grainy, filmy looking pics of late. Unfortunately half the "new" film I had turned out to have already been exposed. It just wasn't wound back in to the canister. Hope to get some more exciting pics over the summer using lower ISO film and a film scanner (well, borrow my dad's ...) rather than just scanning 6x4 prints.

Froggy


121/365, originally uploaded by craigand.

A friendly froggy we found crawling up the wall by our marshmallow toasting BBQ session.

Sanctorum


120/365, originally uploaded by craigand.

Aaron Sly of Sanctorum screaming out new material at The Frog & Nightgown, complete with 80s laser disco lighting.

Delain


119/365, originally uploaded by craigand.

Charlotte Wessels of Delain sharing a metal moment with new guitarist Timo Somers.

Home comforts


118/365, originally uploaded by craigand.

Home comforts.

Fun in the Garden


117/365, originally uploaded by craigand.

Tiny trampolining. Taken with a 28mm from an upstairs window.

Ring road flowers


116/365, originally uploaded by craigand.

Flowers blooming on the central reservation of the Sheffield inner city ring road.

Reclaimed by nature


115/365, originally uploaded by craigand.

Nature reclaiming a disused car sales lot.