Happy New Year to all of the members of the Python community (and, well, everyone else).

Herein, my New Year’s resolutions, regarding software development:

Learn enough Emacs to use it, day to day.

Through trying to learn Lisp, I’ve been thrust into a maze of twisty key-bindings, all alike.

I think I need to admit defeat in my usual method of learning (learn everything, selectively remember what I need).

There’s too much for me to learn in one go, so I’ll just learn the subset that I need, and hopefully it will all click.

Learn to accept imperfection in design.

I had planned to work on a simple web-based application over the holidays, and in doing so I evaluated using several technologies, and found them all lacking in one way or another. For the record, I looked at: Quixote (Under AOL Server, Medusa, CGI, SCGI), Python CGI’s, Seaside2 under Squeak Smalltalk, Cincom VisualWorks Servlets, PHP, J2EE Servlets and Araneida + Lisp.

All of them have flaws: Not scalable, too slow, too new to me, impractical to deploy, not enough libraries available, requires “inversion of control”, and (in the case of PHP) horrendous language.

This application does not launch shuttles, power stock markets or control cooling rods. It’s your basic “connect some web pages to a database with a little bit of logic” type of application.

The problem is that it’s a green-field project, with neither existing database, legacy libraries or customer language requirements. I am literally free to choose any methodology I want, a situation which many people would be envious of.

I heard once that if you place a turtle between two equivalent food sources, that it will die of starvation rather than pick between the two.

I am that turtle.

Learn more Smalltalk & Lisp.

However, with regard to the above, I need to learn that knowing a language does not mean I have to consider it for work-related tasks.

Stop being led by smart people.

Selectively, at least. There are many, many gods of software development; Joel Spolsky, Paul Graham, Phil Greenspun, Kent Beck, Martin Fowler, etc.

The problem with following their advice is that they often do not agree.

One example is in how both of the PG’s feel toward Lisp in web development:

Paul Graham, as anyone who has read his site knows, attributes the success of ViaWeb to their use of Lisp.

Phil Greenspun, on the other hand, says:

“Right now the RDBMS is king and the RDBMS fundamentally only supports very primitive data types such as number, date, and string. Thus the rich type system of Lisp (or Java for that matter) isn’t useful and the productivity ends up not being that different from Perl scripts circa 1994.”

Following conflicting orders is a recipe for frustration. Just ask HAL.