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.