Happy New Year!

I am continuing this blog’s tradition of a New Year’s cards, even while thinking of closing down deadprogrammer.com. I might do it the Dr. Fun way – get it to 10 years and call it quits.

This was a tough fricking year. I spent it on call for application breakdowns, learning system administration, stressing out of my mind, hitting hard deadlines, missing soft ones, gaining 15 pounds, etc, etc.

I was stupid enough not to listen to my very smart friend and keeping my 401K in S&P 500 instead of in cash equivalent funds. I did have enough sense to sell it after Lehman Brothers shat the bed.

This was my first year of being 99% free of Microsoft Windows. Indeed, once you go Mac you don’t go back.

An interesting new web application that I worked on in my spare time should launch around February. I did waste a lot of my free time watching “my stories” (“The Wire”, “Mad Men”, “How It’s Made”, and other yuppie deligths), but I did not waste all of it. You’ll see.

In any case, I wish you all a very happy, healthy and prosperous New Year!

Back to Livejournal

I did a bit of posting in Livejournal’s community related to my hometown and received more comments that I accumulated at deadprogrammer.com in a couple of years. The posts are in Russian, but I believe they will be interesting to a significant portion of my readers, especially the comment part where I debate merits (or lack thereof) of speedos, man purses, and other things.

Одесские наблюдения

Возвращение

Монета

Два вопроса

Привоз

The rest of you please enjoy these two pictures from one of the posts:

The Problem With Code Reuse and Abstraction

Currently I am neck deep in some multi-layered multi-moduled code that I inherited from some consultants. Younger developers who work with me are also upset with the convolutions, but they are convinced that their way of snapping together Lego blocks is vastly superior and much more maintainable. Just like the consultants though they believe that the more modular, abstract and generic they make their code – the better it is, even if they are building a one-off super specific application. Modularity and code reuse is their number one priority, only then followed by performance, brevity, and lack of bugs.

Development frameworks and code reuse that they promote seem to the the way things are going these days. I was reminded of this trend when I was reading this passage in Ian Bank’s “The Bridge” today:

“”Are there laws against what they did?”
“There’s no law to permit it, Orr, that’s the point. Good grief man, you can’t have people going off and doing things just because they want to, just because they think something up! You have to have a… a framework””

Don’t get me wrong, I am all for code reuse, abstractions and other such fineries. It’s just that I tend to look at certain tasks and think – there’s a piece of custom code needed here! The younger developers always look at me with great disapproval and tell me that I should use module X or Y, or how they are working on a module that will cover all problems of this kind in a generic way.

Today I came upon a perfect metaphor for such thinking. Apparently it originated from an origami forum, but it seems to me I encountered it in Fidonet signature years ago. In any case, the quote goes like this:

“An elephant consists of a trunk, ears, and a hippopotamus”.

When you are building things out of Lego blocks, you must fight the temptation to substitute a hippo for the starting point of an elephant. It looks like Lego did mess up the young minds just the way Sir Harold Kroto said when he delivered a crotch punch to the Lego sales:

“New toys (mainly Lego) have led to the extinction of Meccano and this has been a major disaster as far as the education of our young engineers and scientists is concerned. Lego is a technically trivial plaything and kids love it partly because it is so simple and partly because it is seductively coloured. However it is only a toy, whereas Meccano is a real engineering kit and it teaches one skill which I consider to be the most important that anyone can acquire: This is the sensitive touch needed to thread a nut on a bolt and tighten them with a screwdriver and spanner just enough that they stay locked, but not so tightly that the thread is stripped or they cannot be unscrewed.”

If I knew about some of the things that were lurking in the codebase I’m working with now, I’d work something like this into my hiring contract:

“In April of 2000 while on a business trip I received a near-frantic email from someone with an unusual request. It seems that she represented a fellow with a company in Seattle (no, NOT Microsoft). Turns out that last September this guy was hired, and in his contract of employment it stipulated that he wanted a desk made out of LEGO.”

Sometimes I am also reminded of other classics of early Internet literature.

Zoomfly Test: Capitalist Monkey

I frequently want to post images that don’t make a lot of sense to post in smaller format. I’ve been meaning to build a custom zoomer similar to Zoomfly, but gave up and just installed an off-the shelf module.

Here’s a sample file – a scan from a Soviet “Youth Technology” magazine circa 1961. A bought a couple of these on eBay – and I got to tell you, they really took me back… While growing up I was constantly reading back issues of these magazines, and now, in these few random issues that I purchased I found a few illustrations that I remembered, like the one that is at the end of this post. It’s a very strange feeling – remembering a picture last seen 20 years ago.

Another very strange feeling is noticing the lack of ads and Photoshoppery – all illustrations are either photographs or drawings, and they look so much better than what you’ll find in most todays magazines.

The article that accompanied this full page illustration was titled “Bourgeois Ideologists on the Future of Mankind” and was about doom and gloom that proliferated amongst western philosophers. In the illustration robots are going Abu Gharib on their creator’s ass, Martians are running for cover from Pentagon’s missiles, labour bosses are exploiting monkeys, dour looking generals are growing artificial goose-stepping soldiers, hippies are going back to stone age, and Malthusians are working on biological warfare. The top hat wearing capitalist monkey in the background is just darling.

Meanwhile, on the next page simple Soviet people are partying in the light of aurora Borealis.

Paid ReviewMe Post: Phone Spam Filter

These days a controversial company RevieMe.com became downright unethical – they make it abundantly clear that they became a link purchasing company. On the other hand Phone Spam Filter is a site I don’t mind sharing Google juice with, so it’s a quick and fun way to add a 50 bucks to my Kindle fund. Here’s my review:

The goal of this site is pretty simple: Phone Spam Filter is asking you to snitch on telemarketers. You search for a phone number that you received a marketing call from and then complain about it. Besides getting a little relief from venting at the phone spammers, you get a bit of satisfaction from knowing that you added them to a blacklist. Nothing good can come out of this for the dinner-interrupting bastards. Meanwhile it’s a good place to find out if mysterious phone numbers that show up on your phone are from run of the mill telemarketers or not.

The even cooler thing is that they have an API that can help you block calls from this blacklist if you have an Asterisk PBX or are willing to install some Windows software and have a modem connected to a phone line. While Asterisk is pretty awesome, running Windows and having a modem connected to a phone line is a horrible idea these days – there are dozens of viruses that want nothing more than make a few 1-900 phonecalls. In the future Phone Spam Filter guys are hoping to add integration with VOIP providers.

The Phonespamfilter technology is not as cool as JWZ-endorsed audio-cock technology (“their computer’s speakers should create some sort of cock-shaped soundwave and plunge it repeatedly through their skulls”), but I guess it’s a start.

They also have sites in Australia, New Zealand, France, and UK