February 25, 2006

Mark Osborne's "More"

Get Happy

This morning I happened across Mark Osborne's animated short: More.

You can watch the full six minutes in its entirety here.

Eerily good, I say.

In General

Posted at 04:46 PM | Permanent link

February 24, 2006

Tech Book Binge

Books I've bought over the past week:

Total: $208.92

This is what happens when you mix reading great technical essays with wine and amazon.com a few clicks away.

These are mostly the books from this list that I haven't read yet. Oh boy just wait until I go back and read this other list with a glass of wine in hand. That one's going to hurt the old pocketbook.

Luckily, I've become a true believer in the Mark Cuban philosophy of read as much as you possibly can. One good idea gleaned from a book can potentially pay for itself many times over over the course of a lifetime.

Nine times out of ten you can tell how good a programmer is by looking at what's on his bookshelf (assuming that he actually reads what's on his bookshelf and it's not just there for show). Most programmers don't read books on programming at all. Draw your own conclusions from that.

I've been trying to take up the habit of reading for ~3 hours per day. I think it's easier if you get up early in the morning, read for an hour and a half before work, and then read some more in the evening. This ensures that you've already got some reading in the bag before you tire yourself programming for eight hours straight, and it usually helps with the motivation to keep going in the evening. A nice bonus is that it also gives you something to think about during your morning commute (if you have one).

In Technology and Software

Posted at 07:47 PM | Permanent link

February 22, 2006

Wordiness Considered Harmful

Good programmers know that code is not an asset. Code is a liability. Lines of code are something you spend in order to build a product.


Two reasons (mainly):

  1. The only code you can be absolutely, positively sure is bug free is no code.
  2. The more code you write, the more you or someone else has to (re)read to understand what your system is doing.

This is the Zen.

I was pondering this idea on my way home from work this evening when it hit me that there is actually a corollary in writing (English, that is).

Words are not assets. Sentences are something that you need to spend to get your point across.

Whenever I finish a new blog, the first thing I do is go back and delete all the nonessential crap: extra words, prepositional phrases - usually sentences and paragraphs too. A lot of the in order to's, that's, anyway's and so's get the axe.

Then I go back and read what I wrote again with an eye towards rewording sentences so they require fewer words. Then I go back and rewrite what I wrote with an eye towards rewording sentences so they require fewer words.

Why does this make your writing better?

In our code corollary, above, it has more to do with point two than point one. Words are things that your eyes have to travel over and your mind has to process in order to absorbe their meaning. Reading, itself, would really blow if it weren't for the ideas conveyed by those words on the page. The less you have to read to get at that meaning the better1, but then if extra words are necessary to convey the exact feeling you want then they're necessary and there's nothing to be done about it.

This is why someone like Jane Austen is such a pleasure to read while someone like Kant is so awful that we mostly just keep him around to make fun of his writing in essays like this2.

In most cases, however, the difference isn't so pronounced. It's more subtle and subconscious.

It's the difference between walking into a room that has just been dusted and one that hasn't. Ninety-nine times out of a hundred you can't peg the difference unless you're specifically looking for it. You just know that the tidy room feels better.

Concise writing just feels better.

In and of itself, it may not be the quality without a name (that magical quality that defines good writing). But if the quality without a name is there, it allows it to come through more clearly. So bring the axe, and keep it clean.

This, similarly, is the Zen.

[1] With notable exceptions mostly having to do with poetry and word play I think.

[2] Ok, I'm being facetious here. I don't actually know very much about Kant. I'm sure his philosophies are brilliant in their own way. I just wouldn't know because whenever I try to read his stuff it feels so much like trying to wade through maple syrup that I have to stop.

In Matters that are otherwise worthwhile, Technology and Software, Writing

Posted at 09:39 PM | Permanent link

February 20, 2006

Raleigh Bloggers Meetup, Tuesday Feb 21st

The Raleigh bloggers are meeting tomorrow (Tuesday) evening at Cafe Cyclo. Please join us!

What: An open meeting to talk about blogging, podcasting & whatever's on your mind
When: Tues @ 6:30 p.m.
Where: Cafe Cyclo, in Cameron Village

2020 Cameron St
Raleigh, NC 27605 (map)
(919) 829-3773

Who: Bloggers, Podcasters, or anyone who is interested in blogging-related conversation.

Yay, I think I can actually be called a blogger again :)

In Blogging

Posted at 11:29 PM | Permanent link

February 19, 2006

A Tribute to Steve Yegge

I don't know who Steve Yegge is, but he rocks.

And here I thought I was the only one in the world with a day job programming Java, an unhealthy obsession with Emacs, and secret affairs with Lisp, Scheme, Ruby, blogging, and Google on the side.


and similar drunken blog rants.

I don't care how much of an idiot Stevey says he is; he's right up there with Paul Graham, Philip Greenspun, and Mark Pilgrim in my book. Those who know me know that's the highest compliment I can possibly pay a person.

Reading these guys for the first time stretches your mind. It makes it hurt a little - in a good way. It allows you to catch glimpses of things that were right in front of your nose that you didn't know were there. I can't really describe it other than to say, from what I've read about the Zen and Buddhism, this has to be what the enlightenment is like... at least a little bit... at least the awakening part. Ok, maybe not, but still.

'Welcome to my life. I'm the cow in the Gary Larsen comic1 -- the one who looks up, shocked, and says: "Hey, wait a minute! This is grass! We've been eating grass." The other cows stare blankly, munching the grass.'

-- Steve Yegge in The Emacs Problem

Quotes like that get me all kinda teary-eyed.

After years of pondering the Lisp and Emacs and Java and closures and SQL and XML and RSS and Atom and REST and continuations and Javascript and Objective-C and Cocoa and Perl and Python and Ruby and the Gang of Four and blogging and blog meetups and Peopleware problem I think I've finally gotten to the point where I can read a guy like Stevey, understand exactly where he's coming from on many issues and feel completely comfortable saying something like:

"See all that crap that guy over there is ranting about? Yeah... what he said. Right on, brotha."

Whereas before I would have simply said "Aha!" or "Holy hell, he's right!".

Of course, I'm still saying those things - often, in fact - just not exclusively anymore, and it's a far cry from that kid who just graduated from college and was trying to convince himself that J2EE was the best thing since sliced bread, because it had to be, right? Because that's what they used at IBM, and IBM couldn't be wrong.

That's the feeling I get, and it's none too bad. Now if only I were only smarter... If I only knew how to write like these guys. If if if...

[1] For the love of god, if anyone actually has this comic or knows where I can find it, please let me know.

Disclaimer: Just so you know, in honor of Steve, I've had a few glasses of wine before writing this - which, if my previous entry is any indication, might become a theme with me for a while. So pardon the misspellings and horrible grammar.

In Matters that are otherwise worthwhile, Technology and Software

Posted at 12:09 AM | Permanent link

February 17, 2006

Why do so many people wear glasses?

I'd like to take a few moments to appreciate the eyeglasses.

After all, without eyeglasses I'd probably be lying dead in a gutter somewhere or at least living in filth on the street, begging for change, and witnessing people's internal oO(scam? scam!) thought bubbles first hand as they walk by.

Corrective lenses are what separate us from the (other) animals.

Seriously, have you ever thought about this? What did people do before glasses? I don't know about you, but without my glasses I wouldn't have been very good at hunting/gathering/making babies (not that I'd be terribly good at that last one, anyway, at the moment).

Why do so many people need glasses or contacts? Shouldn't this defect have been weeded out of our genes long ago? Or is it just that by the time glasses finally were invented, the sightless minority that were still around had developed such superior intellect to cope that they quickly supplanted their non-blind neanderthal compadres1?

Anyway, if you happen to be of the visually impaired (and yuppy) persuasion in the year 2006. One word:


Silhouette eyeglass frames photo

There frames have brought great joy and happiness into my life.

If you wear glasses, I promise, you'll never go back.

If you're one of the lucky non-blind, 20/20 few then you may want to pretend that you are blind - just for a moment - just to see how it feels - just so you can experience these frames.

They're that good.

That is all.

[1] More likely: bad sightlessness is a condition that has become prevalent since we've had the invention of eyeglasses around as a crutch. But that's not nearly as much fun to think about. Of course, the fact that we now read books with tiny type (like this!) and stare at computer monitors for twelve hours a day can't be terribly healthy either.

[2] I'd link to their site, except it's one of those all flash sites that maximizes your browser and takes away your address bar. I refuse to be associated with such retardation. Do a google search if you like experiencing pain.

In Matters that are otherwise worthwhile

Posted at 06:36 PM | Permanent link

February 14, 2006

How to sign over a check

From the "things you probably should know, and you feel retarded you don't know them, yet they don't really come up until you're 24 and someone has rammed your car and you need to deal with insurance companies and body shops and rental agencies" department.

You have a check that is made out to you... say from an insurance company. And you want to use it to pay someone who is not you... say a body shop.

If you're like me, you're thinking "Wow, I didn't even know you could do that. I'll have to remember to look that one up on the internet."

Lo and behold, the internet is before you. So how do we do this?

Normally, when you're cashing or depositing a check at the bank, you flip the check over, endorse it with your signature and then give it to the bank teller.

If, instead, you want to sign it over to someone else, you flip it over and endorse it this way:

Pay to the order of
(the person/place/thing to whom you are signing over the check)
(your signature)

and then give it to the person you want to pay. When they cash it they'll sign their name underneath all that crap.


And that's how that works.

In Matters that are otherwise worthwhile

Posted at 10:43 PM | Permanent link | Comments (42)

It's Valentine's Day - Laugh

Happy (effing) Valentine's day!

Cupid PBF

(from pbf)

In General

Posted at 07:22 AM | Permanent link

February 12, 2006

A short review of Peter Seibel's Practical Common Lisp

I recently finished reading Practical Common Lisp by Peter Seibel. For anyone who wishes to check it out, the entire text is available online at:


This book serves as a very good introduction to Common Lisp.

It contains some of the best explanations I've seen of Common Lisp's loop macro, format directives, and condition system. These alone were worth the price, as it's difficult to find good information about them elsewhere.

My one major complaint is, with the notable exception of the Unit test framework chapter early on, the "Practical" chapters don't capture the incremental development style of Lisp very well. Most of the latter chapters involve typing out pages and pages worth of code at the end of which everything magically just works.

This is fine and all, but it neglects Lisp's major advantage over less dynamic languages like C and Java: the ability to build up larger systems piece by piece, experimenting with bits of functionality in the toplevel as one goes along.

Understandably, it's more difficult to capture this style of programming in book form1, but it would have been nice if Peter would have alluded to it a few more times in some of the larger examples.

I'm also somewhat puzzled that he chose to introduce his HTML Generation library at the very end of the book, when it had already been in use for four chapters. I believe the book flows better if you read chapters 31 and 32 prior to chapter 26.

Still, studying the compiled version of Peter's HTML generation language was absolutely fascinating for me - one of those "aha" moments.

A very good read overall. I'd also recommend Paul Graham's ANSI Common Lisp for Lisp beginners. I think it does a slightly better job of conveying the Lisp way of thinking, and does an exceptional job of explaining recursion if you're a beginning programmer and haven't *gotten* it yet.

[1] Although I hear Norvig does a very good job of capturing the incremental development style in PAIP, which is next on my reading list.

In Technology and Software

Posted at 09:53 AM | Permanent link

February 07, 2006

Raleigh Bloggers Meetup, Tuesday February 7th

The Raleigh bloggers are meeting this evening at Cafe Cyclo. Please join us!

What: An open meeting to talk about blogging, podcasting & whatever's on your mind
When: Tues @ 6:30 p.m.
Where: Cafe Cyclo, in Cameron Village

2020 Cameron St
Raleigh, NC 27605 (map)
(919) 829-3773

Who: Bloggers, Podcasters, or anyone who is interested in blogging-related conversation.

Is it still called a blog if you blog about nothing but blog meetups? Hmmm...

In Blogging

Posted at 07:15 AM | Permanent link