..on Tue, Nov 02, 2010 at 03:00:08PM +1300, Douglas Bagnall wrote:
Several months ago, Julian Oliver wrote:
We take great pleasure in announcing that The
Artvertiser source code is now
(finally) available, licensed under the GPLv3.
The Artvertiser is an Improved Reality platform, designed for the live
substitution of advertisements in a video stream with alternative 2D content.
The code was initially developed by Julian Oliver before being significantly
improved by Damian Stewart.
This is another thing I have been meaning to comment on. I haven't
seen the work (and probably never will) but I did look at the code.
The interesting thing about this collaboration is the difference in
their techniques. Damian is a bit of a programmer's programmer. He
cares about internal elegance and correctness, knows his algorithms,
configures rather than integrates, doesn't repeat himself. It's all
exactly right in a 21st century neo-textbook style. Some of his code
even contains comments that make sense. On the other hand, Julian is
the ultimate software bricoleur. His work is structurally precarious,
all found snippets of rare code cobbled together using brazenly
specific glue. Each program is written for an individual computer,
and often tailored for a specific site. His code would conventionally
be called unmaintainable, inexplicable, a mess; but he clearly does
maintain it, so a more accurate term might just be "personal".
Looking at his code reminded me of this:
where Julian celebrates his students' tendency to do things that are
theoretically ridiculous. Without rereading that or providing any
other backup, I claim that the worse a solution is from a technical
viewpoint, the more Julian admires it -- problems that don't need to
exist lead to the most interesting solutions.
What you say is absolutely correct.
I am a completely self taught C/C++ programmer and with these languages I've
always just hacked on things, learning what I need to learn, until they dance
before my eyes, on my computer. It's been great working with Damian as he's a
trained engineer and gave structure to my code where it was completely lacking.
I have only skill to truly think in this way in the Python language really, and
still not to his 'Design Patterns' level of ability. I'm learning a lot
his contributions to The Artvertiser.
All said, while I want to be a stronger C/C++ programmer I do see times where
the hacker strategy is really valuable, where a body of code is approached as a
strange and wild animal whose language you must learn to play with it, inventing
words and gestures where possible. It produces real surprises.
I enjoy working like this, closer to the way I operate during actual network and
system hacking experiments or with strange marriages of code, like my recent
project psWorld. I somehow manage to get results this way, all the while
precarious indeed ;) I guess it's a kind of game for me.
The Artvertiser is a pretty big project now and it does indeed need structure at
this time, something that Damian's provided. When I wrote the first prototypes
it was a cobbled together ("OMG, it works!") project. Now it's actually
distributable.. We'll be posting something here very soon about this!
It would be interesting to see what they came up with
collaborated on something from the start (Damian came late to the
Artvertiser), though I suspect that might prove impossible.
I'm not so sure. Damian and I have spent quite some time working together side
by side the last weeks and I think that we could kick off a C/C++ project from
scratch together. While Damian's been doing much of the implementation on the
Artvertiser recently, we solve technical problems together quite well indeed,
very much on the same proverbial page.
A real C/C++ software architect like Damian could provide frameworks where
bricoleurs and hackers like myself could get on with things like graphics
programming or adding other features, in fact this is very much what
OpenFrameworks, a project he contributes to, is all about..
home: New Zealand
based: Berlin, Germany
currently: Berlin, Germany