The Essence of Lambda

November 6, 2009

When I was studying Scheme on a programming course at HUT, I remember I was a bit baffled by first-class functions. My previous experiences were with C, Pascal, Basic, and other languges which didn’t have first-class functions. Data is data, code is code. You don’t go mixing those two. Why would [...]

5 comments Read the full article →

A Developer’s Most Important Interface

November 1, 2009

A long time ago, I was actively playing a MUD. A MUD is like World of Warcraft, only on a much smaller scale, and there are no graphics. It’s all text based. To make your character do anything, you have to type commands at the prompt.
The thing with this MUD was that fights [...]

11 comments Read the full article →

Do You Speak Binary?

October 20, 2009

How well do you know the fundamental unit of information, communication, computation?
When interviewing coders, I often like to ask them to explain how they would implement a function which counts the number of bits set in an integer. This is often called the “population counting” problem. In Beautiful Code: Leading Programmers Explain How [...]

11 comments Read the full article →

5 Favorite Excuses to Avoid Fixing Your Architecture

October 12, 2009

Do you remember your last quarrel over whether the current architecture of your software is a good one? Were you defending or attacking?
I’m sure some parts of that discussion weren’t completely rational. Here’s a list of some of my favorite irrational arguments against fixing a broken architecture. Maybe the list helps you [...]

3 comments Read the full article →

Platforms Come With a Culture

October 6, 2009

Porting software to another platform is tricky business. Take the first version of Safari for Windows as an example. It was not a great success, because Safari 3 on Windows did not quite fit in:
Other grumbles were more because Safari seems like a Mac-application, making it seem out of place on a Windows [...]

3 comments Read the full article →

Thinking Forth: the Unsung Classic

October 2, 2009

A colleague recently pointed me to the book Thinking Forth by Leo Brodie.
While it is heavily a book about Forth (the programming language), it’s even more a book about programming and problem solving in general. I don’t know Forth, and have no intention of learning it, but I found this book to be chock full [...]

2 comments Read the full article →

The Birth of the Grumpy Asshole Programmer

September 30, 2009

This is a story, based on true life, on how you turn from a happy programmer into something sinister.
Stage 1: The happy creative programmer
You’re developing a new exciting product.  You’re the senior programmer in a small and talented team.  You’re responsible for a lot of the core functionalities – you get to write a lot [...]

32 comments Read the full article →

Putting Things in Perspective: What is Expensive, What is Cheap?

September 27, 2009

This is a breakdown of yearly expenses for one software developer (in USD), highly irresponsibly gathered from various sources on the internet.  For illustrative purposes only, parts may be missing, your mileage will vary, batteries not included.  But, I think it’s not that far from the truth.
So, what does this picture tell me?  Lots of [...]

2 comments Read the full article →

Overriding System Functions for Fun and Profit

September 23, 2009

Selectively overriding functions in shared libraries is a little known but simple enough trick. You too can replace system functions with your own versions, or hook into them to add extra functionality.
What follows works as-is on most Linux distributions. For other Unix flavors you may need to tweak a thing or four, but [...]

10 comments Read the full article →

Approximate Regex Matching in Python

September 19, 2009

We all love a little regex hacking now and then. I loved it enough to even write a regex matching library called libtre. The cool thing about this library is that it supports searching for approximate matches.
The approximate matching features of this library are being used for things like improving OCR results, generating [...]

22 comments Read the full article →