Bernie’s Better Beginner’s Guide to Photography for Computer Geeks Who Want to be Digital Artists

Illustrated with photos wot I ‘ave taken

This is a beginner’s guide for computer geeks who want to be digital artists. Specifically:

Venn diagram

Roll over a section of the diagram

You are a beginner: you have little experience with photography beyond point-and-shoot cameras and mobile phones. If you are not a beginner then why are you reading this? Shoo! Go outside and play with your camera.

You want to be a digital artist: you intend to make a small number of photos or illustrations that are as close to perfection as you can get them.

If you want to take large numbers of shots to document weddings or sports events for example, then you won’t want to edit them all on a computer afterwards so you have to get everything perfect when you take the shot, just like in ye olden days of film photography. This guide may well help you, but ignore the section on digital manipulation. Then practice. A lot.

On the other hand if you don’t care about making each shot perfect then save yourself a lot of money and buy a point-and-shoot camera.

You have a computer and know how to use it. If you are reading this, I’m guessing that you do. If you are not reading this then something very strange is happening right now.

You are a geek: The fact that you’re reading this article already gave you a 90% chance of being a geek, and taking the time to roll over all these little bits guarantees it. If you think Venn diagrams are interesting, you’re a geek, end of story. I like to define a geek as someone who cares enough about something that they want to get good at it for their own sake, not to impress others or earn more (though being a geek helps you with those two goals too).

Moot point – all digital artists are computer geeks

You are a computer geek: you enjoy using computers and can learn a piece of software by playing with it for a day or two. If you are not a computer geek then it may be for the best to use a digital camera as if it was a film camera: forget digital retouching and just capture the best image you can when you shoot. This article will still be useful, but ignore the section on digital manipulation.

If all of the above apply, come on in!

Continue reading Bernie’s Better Beginner’s Guide to Photography for Computer Geeks Who Want to be Digital Artists

Project: “Camino de Santiago” book

"Camino de Santiago" means "Way of St James". It is a network of paths through Europe that all lead to Santiago de Compostella. In June 2010 I set off with camera to walk the last 500 miles from St-Jean-pied-de-port in France. This is the book that I made along the way. The book consists of 30 landscape photos presented with snapshots of the pilgrims and their lifestyle. Continue reading Project: “Camino de Santiago” book

Inamo case study

This case study describes my role in the creation of inamo: a restaurant quite unlike any other.

At inamo, customers sit at square white tables illuminated from above by a projector. The user interface presents an animated menu that customers use to place food and drink orders. These orders are sent directly to the kitchen, from where they will be delivered to the customer “in a moment” (Ha! get it? No, I didn’t come up with the name).

When the two company founders needed a software architect to turn their ideas into working software, they hired me. We developed prototypes, worked with hardware designers, designed production software, built the first restaurant installation and hired a team of developers to continue work on the product. Three years later the concept is receiving rave reviews and is being marketed around the world.

Continue reading Inamo case study

Inheritance is evil, and must be destroyed

When I built Animator.js, I got some flack for suggesting that inheritance is not a Good Thing. Keen to avoid a holy war I restated my position to ‘inheritance is often useful, but more often overused.’ Over the last few months I’ve been trying to figure out exactly when it should be used, and have concluded – at least for the kind of systems GUI developers build – never.

Continue reading Inheritance is evil, and must be destroyed

The inamo mouse system: a hacktastic story

This is the (long) story of how inamo became arguably the world’s first two-mouse Flash installation. If you enjoy the geeky details of programming projects, this is for you.

Sometimes a single sentence in a specification can balloon into a task as daunting as most of the other sentences put together. This is the story of one such sentence.

Continue reading The inamo mouse system: a hacktastic story

eval() considered useful: code generation in JavaScript

If ever a feature of JavaScript was considered harmful, it’s eval(). It’s so commonly abused that if I’m interviewing a JS web developer, I usually ask something along the lines of “what is eval(), and why shouldn’t you use it”. It’s so commonly abused that Yahoo JavaScript architect Douglas Cronkford considers it “evil”, and his JavaScript style checker JSLint reports use of it as an error.

People dislike eval() because it’s perceived to be slow and insecure. In this article I describe a way to use eval() to make your application faster.

Continue reading eval() considered useful: code generation in JavaScript

Animator.js: JavaScript animation library

View animator.js on GitHub

Community translations:

    Animator.js was a library I wrote back in 2006 to handle animation on web pages. For a time it was quite ahead of the curve: It was the first library to feature CSS morphing - the ability to smoothly transition between two styles defined as CSS classes.

    The world of JavaScript has moved on a lot since then. Animator.js has now been incorporated into most of the major JavaScript frameworks, either by directly porting the code (Animator.js is released under a BSD license that allows people to do this) or by borrowing the techniques. In particular, CSS animations produce better results and use less processor power. For a modern library that exposes CSS animations through a similar API, I recommend jQuery.Transit.

    I'm keeping this page up here for historical interest, because it's written in a tutorial style that will be appropriate if you want to learn how to create programatic animation in any language.

    Thanks to Tim Stone, Kaspar Fischer, Clint Priest and other developers who contributed feedback and features.

    Continue reading Animator.js: JavaScript animation library

The making of “eyes”

I’ve just finished my project for SoFoBoMo, and put live the new sofobomo.org site. SoFoBoMo, for those of you who don’t know, is the Solo Photo Book Month: a loosely organised international group of photographers who all decided to stop procrastinating and make a real, physical book. In one month.

You can see the finished results here.

Since this blog is supposed to be about technique, not just pimping my projects, I thought I’d share with you the process I used to make 41 portraits in 4 weeks.

Each of the 41 portraits is a macro shot of an eye, with a classical head and shoulders portrait of a the eye’s owner behind the pupil.

Continue reading The making of “eyes”

Proper private constructors for ActionScript 3.0

Here’s a useful tip for Flash and Flex programmers. ActionScript 3.0 is great, but has no Singletons.

Samuel Agesilas has a solution that successfully prevents subclasses from calling the constructor using super(), but it doesn’t prevent other code from creating new instances of a class with new

Therefore I present to you a crafty hack to make a constructor truly private: add a required argument to the constructor, which must be set to a secret value that is only known to the class:

Continue reading Proper private constructors for ActionScript 3.0