Ultra-Cool Java Programming Game

| | Comments (0) | TrackBacks (0)

The Mario AI Competition is a competition where you submit agents, written in Java, that play Mario in randomized Super Mario Brothers levels.

The video above is an amazingly cool run by one team. At about 45 seconds in, the machines rise up and crush their human masters.

The starter project provides lots of example agents and looks pretty easy to get started with. Though the contest deadline is very soon, this could still be a great home learning project.

(via Grand Text Auto)

The Overzealous Programmer

| | Comments (0) | TrackBacks (0)
In The Pragmatic Programmer, Andy Hunt and Dave Thomas make the case for aggressive refactoring (p. 176)

Don't be a slave to history.  Don't let existing code dictate future code.  All code can be replaced if it is no longer appropriate.  Even within one program, don't let what you've already done constrain what you do next--be ready to refactor. [...] This decision may impact the project schedule.  The assumption is that the impact will be less than the cost of not making the change.1
This makes a good, if brief, case.  But there's a footnote.

1.  You can go too far here.  We once knew a developer who rewrote all source he was given because he had his own naming convention.
struwwelpeter.jpgThis is a familiar figure to those who discuss refactoring, who I will (at least initially) call the Overzealous Programmer.  He is the Struwwelpeter brother of the Software Craftsman, and he is often invoked to warn against the dangers of caring too much about the condition of the code.

I wonder where the Overzealous Programmer figure comes from, and when he first appeared?  Are there counterparts in other professions?  Do doctors have a cautionary figure for, say, those who are too invested in the health of their patients, or too fastidious in maintaining their surgical skills? 

Does he still serve a good end, or is it time for his retirement?



A Mysterious List

| | Comments (0) | TrackBacks (0)
I found the following list in an old notebook in my handwriting.  I have no idea what they have in common, nor any memory of writing it.  Their connection is irretrievably lost, and probably wasn't much to begin with.

The title of this blog, "Code and Things and People" constitutes another list.
 
  • Code (for example, source code, software, and software systems)
  • Things (for example, doors, power grids, and subatomic particles)
  • People (for example, me, soccer players, and humanity)
Unlike the first, the elements of this list are deeply interrelated. Unlike the first, the relations between them can be unearthed and examined.  These elements and their relations are the focus of this blog.  Welcome.