Your Outboard Developer Brain

Clive Thompson wrote a thought-provoking article for the September issue of Wired titled “Your Outboard Brain Knows All.”  The focus was on our increasing reliance on the silicon-based devices that expand our intelligence and whether or not that was a good thing.

My point is that the cyborg future is here.  Almost without noticing it, we’ve outsourced important peripheral brain functions to the silicon around us.  And frankly, I kind of like it.

I’ve been on a CodeSmith jag for several weeks, obsessed with the coding patterns in my days and how my expanding CodeSmith library of templates has been enabling me to crank out much more code in less time.  My most current codegen addiction took hold while preparing for my New England Code Camp CodeSmith presentation when I demonstrated how to automate all of the aspects of building a data provider, its business objects and the methods that manipulated those objects.

Then I thought about code generation in regards to Thompson’s Outboard Brain piece and concluded that I have an obligation to myself and my clients to absolutely-positively rely on peripheral coding devices like CodeSmith to handle the mundane patterns that I encounter every day.  I keep seeing patterns that my brain can outsource, and

Patterns of patterns

For instance, I created templates today to generate object property and property value comparison classes for custom Community Server Chameleon controls.  These are used in conjunction with Chameleon data and list controls, whose functionality can be extended with query and thread query classes, all of which using a custom utility control to obtain a datasource within the current context container.  Why not a CodeSmith project to create the data, list, query, thread query, property comparison, property value comparison and object control utility class?  All of them.  At once.

The better question is why am I not yet using a CodeSmith project to do this?  The control classes are patterns that repeat themselves, over and over again, from one object to another with a few unique properties.  They’re brilliant, but they’re already done.  I can’t be spending my energies on retyping the patterns that comprise those individual control classes.  And yet there are

More patterns of patterns

Each custom Community Server project I build starts with DBVTContext and DBVTConfiguration classes, a data provider, a custom base page class that derives from CSThemePageBase, a DBVT.config file and a class in the root to pass data requests from the UI to the data provider.  It’s time to outsource that process.

The patterns taunt me in the dark, when I’m not looking from deep in my psyche they seek me out.  I right-click, Add, Class, name the file, generate some code in CodeSmith Studio, copy, paste, compile clean, but that’s still not good enough.  When I return to the project village I discover a pile of hacked-off little chucks of code.  I cry.  I weep like some grandmother.  And it’s like I am shot with diamond bullet right through my forehead.  And I think: My God…the genius of that. The genius of automating those patterns.  Perfect, genuine, complete, crystalline, pure.

The patterns….the patterns….

Article written by

A long time developer, I was an early adopter of Linux in the mid-90's for a few years until I entered corporate environments and worked with Microsoft technologies like ASP, then .NET. In 2008 I released Sueetie, an Online Community Platform built in .NET. In late 2012 I returned to my Linux roots and locked in on Java development. Much of my work is available on GitHub.