Sunday, November 19, 2006

12#

As I write this, I’m wrapping up my eighth week on the Paleo diet. I am twelve pounds lighter. I think it’s safe to say that this has as much to do with being calorie-deprived as with any unique properties of the “Paleo way.” My goal with the diet is not to lose weight, but to control my cholesterol without statin drugs. I won’t know how I’m doing on that score until I get my next blood test, which I will probably schedule for sometime this week.

I have not been a perfect Paleo dieter, but I have had better-than-average self discipline. When I take the trouble to plan ahead, I’m eating very well. When I don’t, I scarcely eat at all. At the sophisticated end of the spectrum, you’re supposed to fill a lot of time with planning, shopping, cooking, storing, and transporting your ideal Paleo food. At the other extreme, you can do this diet in two laughably simple steps:

  1. Sit down to a meal.
  2. If your food has sugar, salt, grains, legumes, dairy, corn, or potatoes in it, don’t put it in your mouth.

Will you be hungry? Oh yes, you will. Will you be jealous when your wife prepares quiche? Affirmative.

You’re allowed to eat as much lean meat as you can choke down. I was a vegetarian before this, because I think factory farming is bad for people, animals, and the environment. Since I went Paleo, I have only purchased organic, vegetarian-fed meat, which is a half-measure at best. I still don’t know where this meat comes from. I do not have a clear conscience about this, and I’m not sure what to do long-term. If it turns out this diet is doing nothing for my blood, I’ll be a vegetarian again in a New York minute. But what if it turns out I’m in the best health of my life? I’ll have a dilemma on my hands.

More on this developing story as it — develops.

Saturday, November 11, 2006

Waking Up

Elizabeth and I were trying to figure out why we’re not more excited by the historic power shift in Washington this week. I said, “Well, the good news is we have finally woken up from the nightmare. The bad news is that while we were sleeping, we did, in fact, shit the bed.”

Wednesday, October 25, 2006

Poverty is Better than Regret

I'm going to India in March. Yeah, it's funny how things work. Just a week ago, spending 17 days in India soaking up the culture couldn't have been further from my mind. But then I got a surprise email from my high school. They're organizing a trip to India for spring break (I know, much cooler than South Padre, right?) and they decided to extend the invitation to alums. The best thing about this is that it's being led by my favorite teacher, David Weidman. He was the theatre director back when theatre was the best thing in my life, and he was an indispensable mentor. For the purposes of this trip, it doesn't hurt that he was raised in India. I was conflicted, because the trip costs $3500, which is about $3500 more than I can afford for a trip of this kind. After considering it from a dozen sides, I decided I'd be crazy not to go. I asked my friend Mike for advice, and he said, “Poverty is better than regret.” Fuckin’ a.

Ass-First Programming

Full disclosure: I was an English major. As a programmer, I am one hell of a faker. I even wrote an essay about it a few years ago. I am not sure when I will ever live this down. I like to read about software, and I find plenty of things to remind me how far short I fall.

My new favorite blog is by Steve Yegge. He writes so well, he makes it look easy.

When I read The Truth About Interviewing he really struck a nerve. This part in particular:

If you want a job at a company like Microsoft, Yahoo!, Apple, or Amazon.com, they’re going to have high standards. It doesn’t matter if you “know how to program”. They’re going to test you on algorithmic complexity analysis, advanced data structures, algorithm design, searching and sorting, internationalization techniques, network protocols, OS-level memory management, parsing and semantic analysis, recursion and mathematical induction, graph theory, combinatorics, programming language theory, machine architecture, discrete math and logic, graphics and window systems, fonts and typesetting, color spaces and representations, databases and query languages, filesystems and storage, embedded systems, device drivers, mobile and wireless protocols, and internet standards and technologies.

If you’re lucky, that is.

If you’re unlucky, they’ll ask you to derive the outline of their Ph.D. thesis on fault-tolerant massively parallel machine-learning systems. Or to solve a grand-unification style computation problem involving telephone switches, grid networks, and third-degree differential equations. Or, God forbid, they’ll ask you about the darkest corners of C++ syntax.

And you want to know why they’ll ask you about that stuff? Because they’re using it every day. They’ve tried hiring people who don’t know this stuff. Believe me, they try all the time. They want to hire more programmers, and they’re out there on the constant lookout for new meat. But when they lower their standards, they get burned.…the service goes down for days, losing them millions; the project gets delivered late or even not at all, losing them contracts and customers; they lose the business battle to competitors who hired better engineers.

Putting together a pretty Ruby on Rails site is no small feat. Learning to program is no small feat. Many people try and fail to get even that far. But it’s 3- to 5-ball juggling, and it just doesn’t cut it for the Cirque du Soleils and private hospitals of the software industry. I’m sure you want to be a racecar driver, a hang-gliding instructor, a corporate lawyer, a movie sound editor, a rocket scientist. But you know you don’t have the requisite training or experience. Why do you think knowing a little (or even a lot) about programming automatically qualifies you to get hired at Microsoft?

Software companies have excruciatingly high standards, just like any other profession. Those that don’t get eaten up by those that do.

He mentions this idea again in passing in Dreaming in Browser Swamp

One cause [of disrespect for web programming], and let’s be honest here, is that a lot of web developers were self-taught, weaned from text to HTML to onclick=”foo.hide()” and onwards to CSS and DOM and more complex JavaScript, and thence on to CGI and PHP and VB and ActiveX and SVG and Flash and the rest…

This is exactly how I came to be a programmer (although in my case it was Java instead of VB and ActiveX). It hurts to be pegged.

Sigh, this is a long-lived meme. Here’s Philip Greenspun from the introduction to SQL for Web Nerds:

That doesn’t sound too tough to implement, does it? And, after all, one of the most refreshing things about the Web is how it encourages people without formal computer science backgrounds to program. So why not build your Internet bank on a transaction system implemented by an English major who has just discovered Perl?

And Joel Spolsky, from the forward to Mike Gunderloy’s “Coder to Developer:”

There’s something weird about software development, some mystical quality, that makes all kinds of people think they know how to do it. I’ve worked at dotcom-type companies full of liberal arts majors with no software experience or training who nevertheless were convinced that they knew how to manage software teams and design user interfaces. This is weird, because nobody thinks they know how to remove a burst appendix, or rebuild a car engine, unless they actually know how to do it, but for some reason there are all these people floating around who think they know everything there is to know about software development.

The thing is, I have high standards too. I’m not satisfied with the status quo. My wife and my (non-technical) co-workers are always telling me not to be so hard on myself. In their opinion, I’m a good engineer. While that feels nice, and I appreciate their support, it lures me into a false sense of security, because they don’t know anything about software development. I try to learn all the time, but it always feels like I’m putting lipstick on a pig, because I don’t know jack about pointer arithmetic, discrete math, number theory, compiler design, multi-threading, and on and on. Perhaps one day I’ll cave to my mediocrity and phone it in for the rest of my life, but by God I hope not. Until then, I stubbornly refuse to accept that I cannot be a good programmer just because I didn’t go to MIT. I’m trying to be very pragmatic and systematic about this: I will put the full light of day on my ignorance and chip away at it in the right places until I like the shape I’m taking. Which is not to say that it will ever be finished. I have to accept the fact that I have limitations — every human being does. But I don’t have to accept that my life is not up to me.

In a perfectly painful synergy, this is also the story of how I became a “musician.” I will not rest until I can play piano like a cross between Reuben Gonzales and Count Basie. I hope you’re willing to wait, because this is going to take a while.

Wednesday, September 27, 2006

the Paleo Diet, day 3

I got the book and as of Sunday evening I'm officially on the Paleo Diet. I've done some crazy things, folks. I've done detox diets, I've been vegetarian. But this really takes the cake. Scratch that; Cake is not allowed. Here is a brief summary of what is not allowed on the Paleo Diet: dairy, beans, corn, potatoes, grains, sugar, and salt. This lays devastating waste to the food guide pyramid. Strangely, beer and wine are not prohibited, even though Paleo Man could not have had them. Loren Cordain PhD recommends moderation, of course! I'm only on the third full day, and this is hard. Basically, you can only have lean, fresh meat, fruit, and most vegetables (legumes and the starchy ones excluded). My fervent hope is that once I figure out how to shop for these things and how to make a few delicious meals under these restrictions, that I'll be happy again. I want to give this a good college try, because it promises to bring out the caveman in me!

Thursday, September 07, 2006

Paleo Man!

I did not care for my primary care physician at all, so I followed a recommendation from the fine folks at our local natural food store and switched to a very, um, different sort of doctor. Lane Sebring, M.D. spent more time with me in our initial consult than anybody I've ever gone to see before. Here are some highpoints of our visit:
  • He extolled the virtues of hunting and gathering.
  • Vegetarianism and low-cholesterol diets are both vile propaganda.
  • I can choose to juice up my libido with a liberal course of testosterone.
  • His favorite breakfast: a 6 or 8 ounce buffalo steak with a side of spinach.
So he's taking me off statins ("What are they for? Certainly not for your health!") and putting me on the Paleo Diet and I'm going to turn into some kind of primal man. Now we're talking!

Wednesday, August 23, 2006

SOCI 3307

I started auditing a statistics class today, from Dr. Sally Caldwell who is “the best stat teacher in the world.” [1] This is gonna rock. [1] Sally Caldwell, PhD. August 23, 2006

Thursday, July 06, 2006

Better Living Through Numbers

If you have 20 minutes to have your mind blown and your old assumptions about the world re-programmed, then watch this video of Swedish public health expert Hans Rosling at this year's TED conference.

Among the surprises: measured by the rate of child survival to the age of 5, Mao Tse Tung figures as one of the great humanitarians of all time.

Tuesday, June 27, 2006

Oh, Glorious Day!

Everyone buy this book immediately.

Edward Tufte (pronounced “tufty”) is one of my intellectual role models, right up there with Christopher Alexander. Tufte is for information what Alexander is for buildings. When I was in college, in a rut of non-inspiration, I took a gamble on an odd little course from the Division of Rhetoric and Composition called “Information Architecture,” for which Tufte's “Envisioning Information” was one of the texts. It was one of only two times in college I was awestruck (the other was an introduction to ancient Greek and Roman art). Granted, this tells you as much about my difficulties as an undergrad as it does about Tufte, but there you have it.

I went on to be riveted by the rest of his books. I can honestly say that post-Tufte I see the world in an entirely different light. A new book is like a national holiday. Imagine getting Harry Potter #7 delivered to your door out of nowhere by surprise. Times bajillion!

Monday, June 26, 2006

Post-Cartesian Objectivity

The older I get, the less of a relativist I become. I hope this trajectory does not lead to close-minded dogmatism, but I can at least flirt with it, right?

I'm near the end of a magnificent book called "The Nature of Order: the Phenomenon of Life," by architect Christopher Alexander. I learned about him from software engineering, weirdly enough; He's the pioneer of a system of problem-solving by codifying the essence of common problems and describing a generic solution taken from accepted wisdom. He writes about it from the point of view of buildings, but it turns out to be a wonderful device for talking about software problems as well.

"The Nature of Order" is a four-volume magnum opus that strives to do no less than codify beauty in objective terms. In order to do this, he first has to re-cast the very meaning of objectivity away from 17th century mechanistic scientific objectivity. Alexander blames this impersonal worldview for the cold, lifeless, and even hostile architecture of 20th century. In the Alexandrian model of life and beauty in the world, beauty is objective from the frame of reference of our shared humanity; it is a deeply-felt, profoundly human experience. What he describes is not so much an approach to the built environment as it is a philosophy by which we aim to make ourselves more truly alive.

I can't wait to start volume two!

Friday, June 23, 2006

“Overwhelming Response”

I just dialed 1-800-MY-APPLE and got this:

Due to overwhelming response to our products and services, we are unable to take your call.…

Notice how they spin that to make it sound like a good thing.

Saturday, June 17, 2006

MacBook Review

I'm loving my new Apple MacBook. I've got the white one, because I couldn't see why I should want to pay more to get the color of almost every other portable computer on earth. I ordered it with the minimum RAM configuration and bought 2GB from Newegg right away. Apple must be smoking drugs to charge $500 for the same upgrade: Newegg's was around $180. I'm thrilled that the MacBook's RAM and hard drive are user-swappable, but there's a pitfall when installing the memory: shoving the memory modules in takes a good deal more force than anyone would reasonably expect. You don't usually want to be subjecting an expensive piece of equipment to brute force only a few minutes after you lift it out of the box. And it's a beautiful box, by the way. Apple has a knack for achieving obsessive levels of refinement, and you can see it right down to the museum-of-modern-art packaging. The MacBook has a new and different keyboard, and since I bought this machine sight unseen, I didn't know if I was going to like it. Well, I love it. It has a very crisp action that doesn't feel notebook-y at all. The key caps have a very subtle texture on them that makes them more tactile. The surface of the trackpad has the same texture, which makes it very nice to touch. If you put two fingers on the trackpad, you can scroll the active window. Remarkably, it's smart enough that if you have a window with multiple panes and multiple scrollbars, it scrolls the one your pointer is over even if if that pane does not have keyboard focus. Trackpad scrolling is so nice, I hope I never have to click a scroll button again. Speaking of clicking, the MacBook trackpad button is unfortunately a little mushy. My previous machine was a G4 PowerBook, so I am enjoying a big speed boost. I can build Sakai from scratch in four minutes instead of twelve. I've never had a computer with dual processor cores, let alone a "low end" consumer laptop like this one. Oh, I just misspoke. A lot of hay has been made about how the MacBook and MacBook Pro are too hot to sit comfortably on your lap. It is absolutely true. It's fine for a few minutes, but only if you're wearing pants. ;-) For extended use on your couch or in your bed, you are going to want some kind of tray to set it on. In spite of the dual cores, the heat, and the fact that it has a brighter screen and 25% more pixels than my old PowerBook, battery life is about a third longer. Since I like to be mobile, that's a lovely surprise. The MacBook has a new high-gloss screen. I wasn't excited about this, but it turns out that in most lighting conditions you won't notice it. In one case, reflections were obvious and I just had to adjust the angle a little bit. I personally don't buy the claim that this glossy screen is going to make video look better. That sounds like pseudoscience to me. The complement of software that comes bundled is pretty amazing. OS X is an entire universe all by itself, but you also get iLife '06, PhotoBooth, FrontRow, and full versions of ComicLife, OmniOutliner, and 7 classic board games from Freeverse. By surprise, there's also a full version of Quicken 2006 on here, which I could find no mention of on Apple's website. That's about it for my first impressions. The built-in iSight camera is nice, as is the ability to boot into Windows, should that need ever arise (I'm not holding my breath).

Wednesday, June 14, 2006

MacBook Cometh

I'm taking delivery of a rawkin' MacBook tomorrow. Thanks to the international date line, my package can depart China and arrive in Alaska in the past.

Monday, June 12, 2006

I Will Eat My Socks…

… if all the 5-star reviews for this course on DVD were not written by the author himself! His style is — how shall we say &mdash distinctive? Viral marketing on the very cheap. Hey Boris, next time you should mix up your capitalization and punctuation a little bit.

Friday, June 09, 2006

Windows Genuine Advantage

The last time my Windows machine downloaded updates, I got this gem:
The Windows Genuine Advantage Notification tool notifies you if your copy of Windows is not genuine. If your system is found to be non-genuine, the tool will help you obtain a licensed copy of Windows.
How stupid does Microsoft really think its customers are? As a software company, they're well within their rights to do what they feel is necessary to stem the tide of piracy, but they're pitching it like they're doing all of us a magnificent favor. They even have a slick website about it. I don't know about you, but I doubt those that are using Windows for free are going to feel the "genuine advantage" vibe.

Friday, May 26, 2006

Maybe I'm Too Well Paid?

I have yet to work for an employer who will buy software tools for the team when we ask for them. The beautiful side of this is that it drove me to pursue open source alternatives, which has proved to be a very good thing. One of the ways a state agency is ill-equipped to produce great software is that their byzantine purchasing process makes it very difficult to get development tools. Apparently the only place we can easily purchase from is shi. If shi doesn't carry it, then for all practical purposes, it doesn't exist for us. I guess no one has explained to the state agencies that we're entering a new golden age of independent software development. Software in boxes is so last century. I have been using a trial version of TextMate, a fabulous text editor for developers on the mac. Its entire development is the work of one nice young man from Copenhagen. This software is worth more than the asking price (around $50), and Allan deserves our money, so I approached my boss, gave him a flashy demo, and asked him if he can get it. After explaining the near-impossibility of fulfilling this request, he offered me an intriguing organizational hack: "If you pay for it with your own money, I'll reimburse you in time off." By the way, this is the officially-supported means of compensating for overtime, which when you think about it is not really a benefit ("You get to work on Saturday instead of Monday!"). At first, I was excited. A solution! I can get all the software I want! "See you in a couple of weeks boss, there's lots of stuff I wanna get." But then I started wishing I wasn't paid quite so well. If only I made minimum wage, I would get to take more than a day off in compensation for buying TextMate. As it is, though, I only get two and a half hours. Sheesh, that's only a long lunch. It's funny, ever since my son was born I have become very philosophical about time, about how I should value my time ever more highly. When faced with the chance to pay money for time, it suddenly feels like a different equation. In this particular case, it's a no-brainer, because not only do I get two and a half hours back, I get some great software! I guess the problem in general with being compensated in time, is that just like that, it's gone. There's a larger lesson here, isn't there? Time, she is a cruel mistress.

Friday, May 19, 2006

Flirtation with MacBook Pro

I'm borrowing a shiney 15" MacBook Pro from work. First impression? It's cooking my lap! I had heard that these guys run hot, but it's leaving a MacBook-shaped mark on my body. My other impression is that you can sort of tell that the Intel machines aren't as reliable (yet) as their PowerPC brothers. One of the first things I tried to do was download the new Intel compatible version of Eclipse, and on two attempts Firefox would only download the first 75% or so, and then StuffIt Expander would try to expand the incomplete file, hang and eat one of the CPU cores until I opened Activity Monitor to force it to quit. I'm sure there is an Intel mac in my future, but playing with one rubs off some of the mystique. It's still just a computer. It's good for me to learn not to covet.

Wednesday, May 17, 2006

Brainless Stock Photography

Part one of a new series.


This woman loves her computer so much, she'll sit in front of it even when it's not on!

Update: the series began unofficially last October with this beauty from Apple.

Zach Thomas: Browser Maverick!

I guess Firefox is just too popular for my taste. I'm switching to Camino! Actually, I'm just giving Camino a test drive. After all, Greasemonkey contributes a great deal to making Firefox the coolest browser in the world. We'll see where this goes. Heck, I could still wind up with OmniWeb or Opera.

Monday, May 15, 2006

Impactful Website

Thank goodness. Apparently I'm not the only one who despises the use of the word "impact" as a verb.

Bubble or No?

In a new article at BusinessWeek (apparently it was written in the future — it's dated seven days from now), they consider the question of whether we're in the midst of another tech bubble, headed for another crash.

The authors say probably not, and I agree with them. While it's true that many new companies are starting up with copycat ideas and little real value, the difference this time is that they are spending next to no money to get started. Innovation in business is just like innovation in nature: a thousand ideas must perish to find one that will propagate to future generations. In this era of cheap startups, there is very little harm in failure. This may prove to be an ideal environment for creating wealth in the Paul Graham sense of the word.

Friday, May 12, 2006

You Know You're Having a Rough Week When…

…it's Friday and you have your first chance to open your email, read your RSS feeds, and walk over to the vending machine to buy a Coke™.

Tuesday, May 09, 2006

Skype + WiFi + Itty Bitty Phone

As a sometime rock star, I can attest to the difficulty of making and receiving phone calls while touring the globe. My cell phone won't work overseas. Every country has its own version of pre-paid phone cards. They're expensive (the last time I was in Europe, I racked up more than $300 in phone calls to Elizabeth). And they're complicated: Every country has its own arcane formula of prefixes, country codes, area codes, exchanges, and extensions. The friendly robotic instructions will often not be in the language of your choice.

Those days are over. SMC has announced a WiFi phone with embedded Skype. Skype is a popular software system for making free calls over the Internet. They have a service for making calls to other Skype users and to regular telephones, and they have a service that gives your Skype account an ordinary phone number that people can use to call you from any phone. To this point, Skype has been a tool for nerds who like to keep their laptop computers around them at all times. With the advent of SMC's new phone, you won't need a computer at all to make and receive calls from anywhere.

There is a major caveat, of course: you have to have access to a WiFi network to make or receive calls. This isn't so bad, especially with the proliferation of Internet cafés worldwide. And it's only a matter of time before ubiquitous wireless Internet access blankets the earth.

Monday, May 08, 2006

You Know Someone is a Bad Software Manager When…

A software project manager who shall remain nameless was staffing up a new team. We were standing in line together at a hamburger cookout and after some small talk he asked me if I knew any software engineers looking for work.

“I know of one, but he is really unlikable,” I said.

Said the manager, “If he’s good, his personality doesn’t matter.”

He went on to drive his project into the ground. I wish I was making this up.

Sunday, May 07, 2006

Screencast: Adding a Drawer to a Window

I've been having a lot of fun with Cocoa all weekend. Inspired by Apple's Core Data movie (which I found out was done by "Wolf" Rentzsch), I decided to make a short movie to share a little of what I learned recently: How to Add a Drawer to a Window with Cocoa.

Saturday, May 06, 2006

Rocking with Core Data

My wife and child are in San Antonio for the weekend, so I'm left alone to — what else? — write code! I have embarked on a 36-hour code jam with Objective-C and Cocoa. I'm attempting to build a personal finance application for my own use that may turn into something more.

If you want to write apps for OS X and you'd like to be productive in a hurry, I super highly recommend watching this video tutorial from Apple that demonstrates building an application with a technology called Core Data. Core Data was introduced with Tiger (aka OS X 10.4) and is just monstrously useful. With the information in the tutorial alone, you can write a zillion simple, handy apps.

Improv Everywhere Mission: Best Buy

Oh, the glory. This is my kind of civil disobedience.

Friday, May 05, 2006

Backyard Veggies

Let's check in on my garden! I am a complete beginner using Mel Bartholomew's Square Foot method. The basic idea is that you plant in boxes filled up with ideal soil, and that you put each crop into one square foot, marked off by a grid. Here's the box I planted mid-March. It's four feet on a side, for a total of 16 square feet. I've got pole beans, purple bush beans, cucumbers, scallop summer squash, cherry tomatoes, bell peppers, New Zealand spinach, parsley, two kinds of beets, and four kinds of lettuce. My garden, all 16 square feet. Waiting for my cherry tomatoes to turn ripe is hard work. This is a variety of Romaine lettuce called "Freckles." Here's another box ready for planting.

Venture Voice

Greg Galant at the entrepreneurship podcast Venture Voice has a remarkable talent for conducting interviews. He's a great listener, and he has a knack for asking questions that make it easy for his subjects to talk, unlike this bozo who, in his interview with Paul Graham, barely lets him get a word in edgewise. Great work, Greg. I always look forward to the next interview.

Thursday, May 04, 2006

Feel Like Going to Berkeley?

Here is an embarrassment of riches: http://webcast.berkeley.edu/courses/ I just watched a couple of videos of Alan Kay, inventor of Smalltalk and most of the user interface innovations we take for granted in contemporary graphical operating systems. Here are parts one and two. Not only will you be amazed again and again while watching these lectures, you will become convinced that computer science has been at a virtual stand-still since around 1976. I can hardly believe how much milk Berkeley is giving away for free. My son is growing up with a wealth of resources at his stubby fingertips.

Tuesday, May 02, 2006

Simple Productivity

I came up with a technique for my whiteboard that is working really well for me:

I have a list of the major tasks that still need doing, the ones that would take more than a day to complete. Right next to it on the same whiteboard, I put a list of little things that I would like to complete today. Every morning when you're ready to get to work, you mentally decompose the big items into a handful of next actions and put them on your TODAY list. Ask yourself the following question: "What is the list of accomplishments that I could truly feel good about having finished by the end of the day?" Like you, I am easily distracted, but now when I catch myself being swallowed by NetNewsWire (thanks Brent!) or http://developer.apple.com/documentation/, I just turn my head a few degrees and look at my list. Then I latch onto something and grind through it.

It has been really important for me to have this list on a whiteboard staring me in the face. I have tried Trac and some other software tools, but I find it's far too easy to drop a ticket into the system and let it languish indefinitely. Physically crossing things off feels good, especially the big ticket items.

I have read David Allen's "Getting Things Done," and I recommend it highly. You can get a lot out of it even if you don't implement the full system, which requires a ton of discipline, and I haven't ventured that far yet. The book reinforces a lot of ideas that weren't new to me, but what was new to me was the idea that we can free ourselves from the nagging and stressful voice inside our heads that is constantly inducing us to panic because the library books are overdue and the gutters are clogged and the car needs an oil change and your son's 2nd birthday is in two weeks and on and on. I have always taken this voice for granted, a necessary evil of complicated times. The prospect of gaining back all the energy you waste worrying about 150 things at once is truly liberating.

Tuesday, April 04, 2006

Archaeology of an Obsession

I know you probably won't believe me, but I've been a fan of Ruby on Rails since before it was cool. In this age of information overload, have you ever noticed that it can be really hard to remember how you first heard about something, or when? For me, Rails is a rare example of a case in which I know exactly when and how I first came in contact with it. I had been using a really cool project collaboration system called Trac, and on their project wiki, they have a page called TracUsers where you're supposed to write a blurb about your organization and how you're using Trac. After I wrote my two lines about Texas State, I couldn't help but see "Rails is an open source web-application framework for Ruby." Thanks to how awesome Trac is, the version history tells the story. My edit was #33, on December 28, 2004. David HH's edit was 7 weeks before on November 10. I was into Rails before there was a slick website design, before the swooping logo, before any of the books had been published. Incredibly, it was still two months before Jesse James Garrett coined the term "AJAX."

Thursday, March 30, 2006

Hello Ranchero

Ranchero is running a promotion on NetNewsWire and MarsEdit, and I couldn't resist any longer. I'm now a bona fide, license-carrying Ranchero software (er, I mean NewsGator) customer.

And writing this on MarsEdit. See you around!

Saturday, February 25, 2006

The Slow Demise of the Page

The world wide web was designed with a powerful metaphor: pages. It's powerful because anyone can grasp the idea in an instant, and at the same time its scope encompasses no less than the entirety of accumulated human knowledge. Of course, we already had pages for centuries on paper. The web's contribution is not its concept, but its scale; I estimate that it has already expanded the publishing privilege by three orders of magnitude, and I believe it's got at least another two up its serpentine fiber optic sleeve.

Ok, so the web is breathtaking, no argument there. The page metaphor has been wildly successful by any measure, except maybe one.

I saw my first cgi script in the spring of 1995. It was a page (there's that word again) that displayed the current date and time whenever it was requested. Some alpha geeks were huddled around a mac on the showroom floor of the campus computer store where I worked part-time. I was not yet an alpha geek, so the significance of this demonstration was lost on me. Of course the true ramifications of this development are so great that we'll have to wait a generation or so for the historians to sort it out. The browser had become a medium for delivering software instantaneously anywhere in the world.

Web applications are amazing. I owe my career to them. Incidentally, I also owe my blog and the editor I'm writing this in to them. The trouble is it's just so darn hard to shoehorn a software application into the page metaphor. Those of us who develop web applications are so used to taking this paradigm for granted that we forget how weird it is until we have to explain it to someone else.

At long last, change is in the air. With the advent of AJAX, the idea of a web application as interconnected pages is going to become rather antiquated. The correct way to think of a web application is as a DOM that can be updated in whole or in part by events from both the client and the server. In this brave new world, a URL is no longer a “location,” but a message from the client to the server.

Yes, the interface of the application is still a document (that's what the “D” in DOM is for), but the document is just an abstraction that permits you to describe a user interface in plain ol' text. Ok, maybe it's still a little strange, but it's a breath of fresh air for developers and a sea change for the world wide web.

Tuesday, February 21, 2006

On New Ways to Get Hired

I just saw this story at 37Signals about how someone recently created a blog all about Gawker in an effort to convince Gawker to hire him. I expect this trend to thrive, and I hope that it will.

Résumés and the traditional job interview are a terrible way to learn about someone. What businesses and prospective employees really want is to know each other, and everyone knows the standard hiring tools are pretty thin and pretty fake. That's why it's so much easier to get a job when someone introduces you. There is tremendous value in the relationship that a referral represents. Human beings are experts at relationships (even if it doesn't always seem that way). Have you ever hated someone who looked good on paper, and even interviewed well? I have. I believe there is a better way.

The Information Age offers us some nice alternatives. I'm currently a lower-tier committer on an open source project called Sakai. I've been working with people from around the country and around the world for close to two years. Some of the contributors are volunteers, and some (like me) are paid by their institutions to help out, but no one has to pass an interview to start working. Let me tell you something: the cream rises to the top. There are 1,318 people on the developer mailing list, and if you asked everyone to name the best 1%, the same names would appear again and again. When my institution came up with some extra money for new staff, I emailed the person I wanted the most and offered him a job. Of course we still have to negotiate the details, but I know his personality and I know his work, and I can bring him into the team with complete confidence.

The rise of web publishing also plays a huge part in this new way to get hired. If we know how to write, we can learn a lot more about each other than we can get from a résumé. And the best part is, we are free to express our true selves online, not the perfect-employee version that we pretend to be in an interview. From now on, I hope anyone who hires me knows I'm mercurial, distractible, idiosyncratic, and a dozen other adjectives you would never find on a job application. My wife knew all those things about me before we got married. She still loves me, even!

This new brand of getting-to-know-you doesn't only extend to the prospective employee. Increasingly, it is possible to learn enough about a company to get a clear idea of whether you will fit in there before you ever approach someone there. There are around a hundred employees at ThoughtWorks who keep a weblog. If you follow http://blogs.thoughtworks.com/ for a couple of days, you will feel like you've actually worked there for a while. It is such a refreshing change from the galling bullshit that passes for information at most corporate websites.

Lately I've been lurking on the Ruby on Rails core developers mailing list. I don't have anything to contribute just yet, but I might in the not-too-distant future. Every time a fellow by the name of Michael Koziarski posts something on that list, I think "Holy crap, that guy really knows what he is talking about." You can't fake this stuff. I went looking for more information about his company , because anyplace that hires people like Koz has got something going for it.

In the 37Signals story cited above, they suggest that the blogger-turned-Gawker remained anonymous while he was gathering the necessary attention to land a job. I don't believe it's necessary to be covert. I think it's perfectly acceptable to make your intentions known. It's like applying for a job, but instead of insisting that they make up their minds about you right away, you take as much time as you need to make it self-evident that you should work there. If you don't make the grade, then why not improve yourself until you cross the threshold?

I like the new way of landing your dream job. Instead of pretending to be what your employer wants, you use all the information at your disposal to become what your employer wants. It's elegant in its simplicity: you see the path, you follow it.

Friday, January 27, 2006

SICP = Rad

One of the things I decided I would finally do this year is self-study "6.001: Structure and Interpretation of Computer Programs," which is MIT's classic undergrad introduction to computer science. I have been hearing about this course and its accompanying textbook since I started getting seriously interested in software systems around 1998. There are video lectures available here.

I always assumed this would be really dry subject matter, and that it would be good medicine, but not actually enjoyable. To paraphrase Mark Twain, I figured it was something I wanted to have done, but not something I wanted to do.

I've seen three weeks of lectures now, and I can honestly say it is blowing my mind. Since I came to software from the top down and not from the ground up, I've never had an opportunity to contemplate computer programming from first principles. For that matter, most computer science curricula don't do this either, but rather introduce you to the minutiae of some programming language, be it Pascal, C++, or (lately) Java. SICP is astonishingly refreshing and illuminating. I've managed to learn a few things about software already, but this course is revealing the why of software design.

The video lectures were done in 1986 for employees of Hewlett Packard. One of the great side-effects of this is that the students in this class are asking really good questions, usually the questions that I wish I could ask.

Will this course turn me into a Lisp hacker? Paul Graham and Philip Greenspun are convincing advocates, but the pudding in which the proof really is is Andy Gavin of Naughty Dog. If Lisp is good enough for Jak and Daxter, it is freakin' good enough for me.

Friday, January 06, 2006

Learning to Do Things

I am a lazy thinker. When I'm trying to solve a problem, I think about it until I find a way to solve it. The glitch is, I use the first solution I find.

The trick to truly understanding how to do something is to know many ways to solve the problem, to understand the permutations of each, and to be able to evaluate them against the priorities of your situation.

I'm gonna try, honest I am.

Thursday, January 05, 2006

Detox Made Easy

I've started the new year on a detoxification regime. In a nutshell, this means that I stop putting various poisons into my body to give my organs a chance to clean out the gutters.

You can find a lot of information about detox on the web, and a lot of people who would like you to pay them for advice about detox. My program is a bastard version I invented myself. I just follow a simple mantra: no sugar, no wheat, no dairy, no meat. I also give up drugs*, but that doesn't fit nicely into the rhyme.

The first couple of times I did this, I had no idea what to eat, and it was pretty painful. It's amazing how many foods in the standard American diet are ruled out. But this time, I've been a vegetarian for almost a year, and I am much more comfortable with the kind of menus I can prepare. I just finished a bowl of chili so good that you don't even realize it's vegetarian, let alone detoxifying. My wife made cornbread that I can't eat because it's got wheat flour in it, but I figured out that I can sauté some slices of polenta and it's just as good as cornbread.

The other thing that's better this time around is that vegetarian and all-natural alternatives to many standard foods are more plentiful. I made Rick Bayless's Oaxacan Black Bean Soup, with onions, toasted avocado leaves, and chorizo. God bless you, Soyrizo! Since I won't be having any flour tortillas for a while, I bought a tortilla press, and learned how to make my own tortillas from fresh corn masa. This is the Genius of the And in action: My homemade corn tortillas are worlds better than anything I used to buy at the store. In the quest for healthier food, I'm getting better-tasting food to boot. Granted, the soup is a lot better with a mound of queso fresco crumbled on it, but that's why detox doesn't last forever. ;-)

In the past, I've been on detox for about 3 weeks. I'm planning to double it this time. I'll let you know how it goes.

* I'm talking about alcohol and caffeine. Jeez, people!

Wednesday, January 04, 2006

What's Up with SAP?

Last year, Texas State University completed a painful migration of all its HR systems to SAP. I had heard about SAP before, but I had never had any interactions with it. They are well known as one of the top dogs (if not the top dog) in so-called enterprise resource planning. I don't have any knowledge of how it works behind the scenes, but I can't begin to tell you how bad their web user interface is. I'd better just show you a sample:

It may be a little difficult to see, but there are three vertical scroll bars and two horizontal scroll bars!!

The red warning at the top reads:
If you experience a blank screen while working in the SAP Portal, press the Enter key on your keyboard to continue through the blank screen.

Nice.

But here's the really cool part. When I upgraded my browser to Firefox 1.5, all hell broke loose in SAP. Each button is now a sliver one pixel wide. While I can still click them, I have to hover over each button until the tool tip tells me what it is. And the paycheck report is completely broken.

I can access the paycheck report in Safari, but not the timesheet entry.

SAP's revenues in Q3 2005 were €2.01 billion.

If you can be so well paid for such crap, break me off a piece of that!

Tuesday, January 03, 2006

Things to Do Before You Die

Here's a good list of things to do before you die:
  • Get some grandchildren
  • Become fluent in another language
  • Travel around the world
  • Publish a book
  • Achieve financial independence