The Chasm of Compromise

You and your friend are trying to decide whether or not to jump across a chasm. You want to jump across to the other side where you will be rewarded with delicious berries. You friend wants to stay put and eat the so-so berries here. So you decide to compromise: you each jump halfway across the chasm and die.

Not all situations are chasms, but the really important ones usually are. Compromise can kill you; go for consensus if you can. If you can’t, go alone.

25 Random Things About Me

1. I love programming, computer science, data-structures and algorithms.
2. I type using the Dvorak keyboard layout and my keyboard hasn’t jammed once. In your face QWERTY!
3. My favorite sport is soccer.
4. I’ve programmed two Facebook Apps (http://apps.facebook.com/telepictionary/ )
5. One of my favorite jokes is about putting a moratorium on hiatus.
6. My nose was once broken playing soccer (8 days before getting married).
7. I’m married.
8. I work for a bio-tech startup in San Diego, Stemgent, and have created most of the application logic for the commerce portion of the website (www.stemgent.com).
9. I read a bunch of blogs, Google tells me: From your 16 subscriptions, over the last 30 days you read 640 items, starred 18 items, shared 7 items, and emailed 3 items
10. I have a blog ( http://strd6.com )
11. I used to be a professional gambler.
12. I can’t whistle and can barely snap.
13. I’m fast.
14. The first programming language I learned was FORTRAN.
16. I know more about web programming than a sane person would care to admit but still need to know so much more.
17. I don’t like bananas, but I don’t mind food that contains bananas or even banana chips.
18. I’ve created a turn based, tactical combat board game.
19. I’m bi-modal about Magic: The Gathering (trading card game) and JavaScript (programming language).
20. I’ve programmed a text adventure game based on Edgar Allen Poe’s Cask of Amontillado.
21. I don’t have cable TV.
22. I like to pretend I don’t read so as to appear cool.
23. I like esoteric sketch comedy (Mr. Show, The Ben Stiller Show).
24. I lead a frugal lifestyle.
25. I skipped a lot of classes in college to write a play: Hamlet on The Moon (http://strd6.com/wp-content/uploads/2009/01/hamlet-on-the-moon.pdf) Couldn’t have done it without Graham.

No explanation needed

No explanation needed

A Whack on the Side of the Head

I found out about this book in a seemingly unlikely place, Mark Rosewater’s design column Making Magic. Not that unlikely for me though because Mark Rosewater is one of my heroes. I enjoy reading almost every one of his columns. His writing on elegance and the many other aspects of design is applicable to all matters of thought engineering.

What’s all this gassing on about some trading card game designer, isn’t this an internet programming blog? This brings me to my point:

That’s Not My Area

Some of the biggest breakthroughs come from the cross-pollination of ideas: what does orange farming have in common with a web application? What does biology have in common with computation?

The Right Answer

Nothing is more dangerous than an idea when it is the only one we have.

Believing that there is only one right answer can be incredibly stiffling to creativity. Settling for the first answer that works will get you part way there as a programmer, but how often is the first answer the best answer?

Follow the Rules

Sacred Cows make great steaks. — Richard Nicolosi, Businessman

Just because an idea was absolutely right in the past doesn’t mean that it is guaranteed to be right today. The qwerty keyboard layout was designed to prevent typewriter jams by slowing down the typist. When was the last time you experienced a jam on your keyboard? How about repetitive stress injury? Problems change with the times.

To Err is Wrong

A man’s errors are his portals of discovery. — James Joyce

Software development is about making errors… constantly. If know a developer who isn’t making any errors then he isn’t writing any programs. How many things do you learn when everything appears to work? It often takes 50 errors to get to the first right answer and 5000 more to get to one of the best answers.

Roger von Oech’s A Whack on the Side of the Head has a list of ten mental locks that can prevent creativity. There’s a whole lot more in the book than just that though. So go ahead, read it.

A Brief Review of Code Complete (Really Brief)

Code Complete, 2nd Edition, by Steve McConnell

Code Complete is an enlightening book. Half of it is pure gold, and coming in at around 900 pages that means 450 pages of gold. It covers, in great detail, every part of the software construction process. I found out about it by looking at this list of top 100 best software engineering books. Coming in at #1 it seemed worth a read.

The most important point: “The primary goal of software engineering is to reduce complexity.” Things such as variable names, comments, live time of variables, cohesion of classes and methods, and coding conventions are all discussed. I don’t agree with all of the specific recommendations, but that’s the point: to consider what matters and decide what is best for the current situation of you and your team.

I also enjoyed what was said about programming in high level languages: “You save time when you don’t need to have an awards ceremony every time a C statement does what it’s supposed to do.”