How to Find Bugs in Four Easy Steps

August 3, 2009
Thumbnail image for How to Find Bugs in Four Easy Steps

Step 1: Beg, borrow, steal, buy, fabricate or otherwise obtain a rubber duck (bathtub variety).

Read the full article →

Heuristics for Programming Language Design

July 27, 2009

These are ten general principles for programming language design. They are called “heuristics” because they are more in the nature of rules of thumb than specific usability guidelines. My apologies to Mr. Nielsen for messing with his stuff.

Read the full article →

Copy-On-Write 101 – Part 3: The Sum of Its Parts

July 21, 2009

You can easily build databases from whatever data structures are the most natural for your application. You can kiss all that RDBMS crap goodbye. No more shoehorning your data into an awkward tables-and-columns format, no more marshalling and demarshalling your data to whatever data types the database happens to support, and no more SQL.

10 comments Read the full article →

Copy-On-Write 101 – Part 2: Putting It to Use

June 22, 2009

Software transactional memory is like your own private in-memory database. If you haven’t heard of it before, I strongly suggest you to find out soon. Software transactional memory provides everything an ACID database would without the durability part…

3 comments Read the full article →

Copy-On-Write 101 – Part 1: What Is It?

June 7, 2009

Once you have gone and created a binary tree, you can never ever change it. Adding an arrow from 21 to 34 is not allowed, no sir, over here in the wacky world of copy-on-write you have to create a modified copy instead of actually modifying anything.

2 comments Read the full article →

I Have Seen the Future, and It is Copy-On-Write

May 27, 2009

The code was elegant, easy to understand, and ridiculously efficient. There wasn’t a single lock or critical section in the entire system. Just threads, message passing, and copy-on-write data structures. Beautiful.

6 comments Read the full article →

The Shell is Like a Dishwasher

May 21, 2009

With the shell, it’s “sTABnTABkTABsTABn” and you’re done in a fraction of the time. Why can’t you do that in the file browser GUI?

7 comments Read the full article →

The Golden Rule of Unit Testing

May 12, 2009

Harry has to make a few adjustments to the code; maybe he splits one function into two and replaces another function with new code. He makes little whimpering noises as he deletes the now defunct tests for the old code. He curses under his breath when he writes the new test drivers and stubs for the new code.

8 comments Read the full article →

A Little Known Way to Learn Touch Typing

May 5, 2009
Thumbnail image for A Little Known Way to Learn Touch Typing

At some point, it dawned on me that I would have to start from scratch: I would have to learn to type with a non-qwerty keyboard layout. My old skills would be useless on the new layout, so I would be forced to relearn.

10 comments Read the full article →

You Don’t Need a Deadline

April 28, 2009

That’s the holy trinity of project parameters: resources, scope, and schedule. And suddenly, they’re all more or less locked down. The team, the features, the deadline. One is based on vague ideas and another is derived from them. Sounds good to me, now let’s get to work!

Read the full article →