It was a musical thing and you were supposed to sing

"We thought of life by analogy with a journey, with a pilgrimage, which had a serious purpose at the end, the thing was to get to that end, 'success' or whatever it is or maybe heaven, after you're dead. But we missed the point the whole way along. It was a musical thing and you were supposed to sing, or to dance, while the music was being played."

- Alan Watts

Watch the clip...

Announcing dibs.net

You might be wondering what I've been up to since leaving my job several months ago. I made a movie to explain, in a series of pictures, what my day-to-day life of the last four months has entailed.

After countless hours of designing, coding, modeling, learning, networking, drawing, hacking, zipping, unzipping, scanning, testing, documenting, administrating, photoshopping, rewriting, tuning, fixing and launching, I have finally resurfaced with something I am really proud of.

I'm really excited to announce the opening of dibs.net, a local community online bulletin board for buying and selling stuff. (To check it out now, see what I'm selling on my personal site: http://kevin.dibs.net or read the "About" page: http://dibs.net/about).

Why did I build dibs.net? As the saying goes, "to scratch my own itch." There are other ways to advertise and sell online, but none came close to what people need. For example, eBay items need to be shipped; they charge high fees; plus everything takes a week to sell. Craigslist, on the other hand, works well for getting the word out, but the barrage of email is a nightmare if you have more than a couple things for sale; I could never keep track of who wanted what, when they offered, how much, or when they were coming over.

Enter dibs.net! I built in features for:

  • answering questions from interested buyers, and adding your answer right to your listing, so you don't have to keep answering the same darn questions over and over
  • managing many offers at a time, including accepting and rejecting
  • really great-looking listings, with no limit on photos
  • personal account URLs, so your stuff is listed exclusively at yourname.dibs.net

The result? There is no better way to buy and sell things in your community.

Of course, there is plenty more to it than that. You'll have to check it out to see everything it does. Now if you'll pardon me, I need a nap!

dibs.net: Born 3pm July 15, 2007; 0 lbs 0 oz

It's alive and kicking!

Read more about dibs.net.

This Weekend or Bust

For the last few months I've worked tirelessly on my pet-project-cum-fulltime-startup. The cadence of my work has accelerated in recent weeks as I have put myself under more and more pressure to "go live." I have pulled all-nighters or crashed into bed at 5am more frequently than I'd like to admit. Through the neglect of non-essential errands, my car has developed a thick film of grime on its exterior and my hair has become shaggy and unkempt. My eyes are permanently bloodshot. My dog no longer reacts to the word "park."

The only guarantee about working tirelessly is that you will end up tired. And maybe a little cranky. Check, and check.

But despite these tribulations, this experience has been rewarding and worthwhile. I love what I've built, and I hope the world does, too.

This weekend I am focusing all of my remaining energy on launching. In the end, the feature set is going to be well beyond what I had envisioned for the initial launch -- a shortage of external deadlines and product managers leads inexoriably to an abundance of features.

Also, as I like to read about the plumbing and machinery behind web pages, I hope to have a chance to explain all the details of how I went about building the service. Since I'm a one-man team, I've been dependent on time- and money-saving strategies, including technologies like Ruby on Rails, Amazon EC2, Apache Solr and Ubuntu Linux. That, and more, in a future posts.

For now, sleep.

Top Ten Most Frequently Things Overheard* at RailsConf '07 in Portland, OR

  • 10. "WTF, I've been here four days and have yet to see the Space Needle..."
  • 9. "Is DHH single?"
  • 8. "I just started working for a startup..."
  • 7. "So, can Rails scale?"
  • 6. "pastie.caboo.se? Is that another name for 'programmer's-butt'?"
  • 5. "OK, but what's your plan for revenue generation?"
  • 4. "No it doesn't do that yet, but if you submit a patch..."
  • 3. "Twitter is lame. Who cares what you had for lunch?"
  • 2. "just ate turkey sandwich, wasn't very good 1:04 PM May 20, 2007 from twitterrific"

And the number one thing overheard at RailsConf '07:

  • 1. "Fuck you in the neck!"

* - Totally made up, except the last one, which, when spat out by Zed Shaw, sent a shock wave through the adjacent conference rooms, and indeed may have shifted the Pacific plate a few inches to the west.

RailsConf '07: Days 2 & 3

Day 2

Yesterday at RailsConf was mainly uneventful. Two good talks were the panel discussion on "The Business of Rails," and Ezra's deployment talk. The afternoon session with Nathaniel Talbott was underwhelming, mostly due to a Jeopardy-style format that didn't work for me. (It's important that Jeopardy questions have one and only one correct answer, and that the answer is objective fact. They didn't.) Judging from the earlier panel discussion, Nathaniel has a wealth of real-world information in this area. I like creative presentation formats, but this is one case where I think a traditional presentation would have delivered his message more effectively.

Day 3

Today's most interesting sessions were Josh Susser's talk on contributing to the Rails project and Jamis & Koz's discussion of "The Rails Way." The Right Way to do things in Rails seems to shift every 3-6 months -- so these efforts to educate are very valuable. But the talk from Twitter was not great, and the final session I chose on the internals of respond_to was dreadful enough that I left it for the spontaneous open mic demo that sprouted up in the vacuum of an AWOL presenter. It was chaotic, but entertaining nonetheless. And there were a few projects I had to note down for later. PragDave closed up the conference with a clear message: do not be seduced by snake oil; do not pray to false gods; do not imitate those you perceive as more wise than yourself unless you do, indeed, understand why you're doing it. In other words: Question Authority. Good advice.

More Better

Now that the conference is over I can start thinking about what I can take away. I came to Railsconf with an understanding of the philosophy and tech at the heart of both Ruby and Rails. I leave Railsconf with a far better understanding of who Rails is: behind the websites, books, documentation and blogs I read every day, there is a community of people as diverse as a can of mixed nuts (and perhaps there are other similarities?). In this community there is lots of youth -- and the boastful arrogance, sense of immortality and naivity that comes with it. There is a smaller population of time-hardened corporate IT types -- and the reluctance to the unproven that comes with that. There are hipster designers and "cool" developers who've never worked for anyone but #1 and who you might mistake for Jack Kerouac. Others appear inspired by Steve Wozniak's plentiful facial hair. Permeating the whole community, and perhaps a driving force behind it, there is a sense of celebrated rebelliousness, of gleeful insubordination. Perhaps it is this feature of the community -- what my high school advisor identified as "nefarious collusion" -- that many of us find so appealing.

I also return home with the realization that many developers who have attained Rails celebrity status are just regular work-a-day people like the rest of us. Inspiring, sure. But some are clumsy; others are socially awkward. Most are geeks, of course. They fumble with stupid projection problems and are a bit unpolished when it comes to presenting. It's easy to build a mental image of some infallible, superhuman genius as we follow their RSS feeds. Years of deliberate marketing can do that, and it's not a bad thing. What we should learn from this (and it was repeated many times by speakers themselves) is that there are dozens -- if not hundreds -- of DHHs, Jamis Bucks, Amy Hoys and Geoffrey Grossenbachs in the crowd with the ability to rise to that level. They just haven't done all it takes to get there yet.

I am carrying home renewed inspiration, but more importantly, more confidence in the industry that has blossomed around Rails. Is there really work to be had? Is the development profession still alive onshore, here in the U.S.? Is it possible to make a living -- exceeding a well-paid corporate salary -- in Rails consulting? I think we all know the answers to these questions now.

RailsConf '07: Day 1

Back from the first real day of RailsConf after yesterday's tutorial day.

DHH's talk mainly covered Rails 2.0. I like the way he presents because he goes fast. No dilly-dallying. If you can't keep up, you probably wouldn't find it interesting anyway.

Best session of the day was Dan Benjamin's story about his experience building a successful community-driven web property, Corkd. I've followed the Corkd story from the day it launched (to recently when he sold it). Dan is a fantastic speaker: extremely well prepared and covered ground that I was eager to hear about. Something tells me he has a prosperous career as a conference speaker ahead of him.

The clear highlight of the day was Ze Frank's keynote in the evening... he killed. This was a great choice by the organizers. I watched a lot of Ze over his year-long The Show. And I'm sure I managed to weird him out with the number of pictures I was taking -- I took the opportunity to use the evening keynotes as a photography project. It was great practice and I wound up with some nice pictures. When taking shots of speakers like this, about 80% end up with goofy faces, lazy eyes, blurry hands, etc., so you have to take a whole bunch just to get a few good ones. I'll try to get those up on Flickr soon.

Today's random observations:

  • Many Portland residents use light rail like the environment depends on it or something.
  • All clinically insane Portland residents use light rail, and they were all on my train this afternoon.
  • "Portland has more hybrids per household than any other US city" -- The Oregonian
  • Best beers I've had (in order): Bridgeport IPA, Deschutes Cascade Ale, Deschutes Obsidian Stout.

RailsConf '07: Day 0

I managed to snag a secondhand ticket on last week and drove to Portland yesterday for RailsConf '07. Today was "tutorial day." As Jason Hoffman noted in the first half of the day, "tutorial day" is a bit of a misnomer; it's simply a day with longer sessions.

Speaking of misnomers, there wasn't enough thought put into the title of Jason's session Scaling a Rails Application from the Bottom Up. Apparently I wasn't the only one surprised to be listening to a survey of IT /datacenter infrastructure best practices -- good advice, but I think it would have been more relevant to more of the audience had he told the story of growth, explaining what his team did at each breaking point to address the problem either within the application or through infrastructure improvements. I still enjoyed it because I'm a recovering IBM "systems analyst" and I dig ultrascalable architecture. Plus, Jason is a compelling speaker.

The afternoon session with Jamis Buck was closer to my expectations. Having used Capistrano for some sysadmin tasks some time ago, I was reminded just how endlessly useful a tool it is. Yes, there could have been more exploration behind the recipes, but considering the diversity of the audience, I think it stayed at the right level of detail. The only fault was Jamis' inexplicable disability when it came time to switch between presentation and demo screens. I'm not psychic, but I think I felt the vibes of everyone in the room mentally screaming "APPLE-TAB!! Goddammit!!"

Some other observations about the day:

  • Oregonians actually merge out of a merge lane well before the lane ends (we Californians know you're suposed to drive as fast as you can to the very end of the lane). I drove today but tomorrow I'm taking light rail.
  • Portland traffic sucks as much as Bay Area traffic.
  • Oregonians take environmental stuff seriously: the headline of today's paper: Paper or Plastic? It was an exposition of the benefits and drawbacks of each. Note to self: put newspaper in recycle bin.
  • I recognized some guy in the RailsConf crowd this morning, then I realized he was the Rails Guy. Sorry dude, you're now a minor celebrity in this world and you will have people staring at you at these events.
  • My 17" Powerbook is not a "laptop" by modern standards. I can, however, grill a mean omelette on its underside.
  • At 30, I bet I'm at least a standard deviation above the mean age. Dammit.
  • My choice of wine this evening was less than successful. It was so nasty that I abandoned the bottle. Wilamette Valley Pinot Noir recommendations, anyone? Might have to hit up the wine room at OCC tomorrow.
  • My beer selection this evening was much more successful.

    Re-entry

    I used to be an above-average programmer. I started coding BBS utilities in Pascal when I was 13, and eventually got to be pretty proficient with algorithms and problem solving. I even won a team programming contest back in high school. By the time I graduated from college I was proficient in C and C++, Java and Perl. I was confident in my abilities, and even today I don't think I was unjustified in my optimism.

    When I graduated and moved to Sunnyvale in 2000, I took a Technical Support job at Ariba. I was under the impression that the job would eventually allow for a transition into development after some time. But let's just say my timing was sub-optimal: the stock market, the job market, and the economy began swirling in the toilet the month I started, and I spent the next 4 years on the front lines supporting Ariba's procurement network and applications. I worked with a great bunch of people, learned a lot and had some limited opportunities to write code, but I couldn't help but feel my skills slipping away.

    In 2004 I took another job at another company, but it didn't deliver the development role it claimed to be offering. Instead, it was heavy on FTP but light on Java; it demanded unreasonable personal sacrifice as the status quo. While it is true I've learned quite a bit about Enterprise IT, system administration, project management and sales, deep down I know that tailing logs and copying files late on a Friday night can't be my raison d'tre.

    So here I sit, many years since I've written code seriously; years after I accepted my fate and put my programming hat in mothballs. Yet the curious, creative fire still burns. I still read development blogs and books; I still learn about new frameworks. Either I am in denial, or -- maybe -- I could relearn what I've forgotten? Train myself anew? Become the headstrong, independent and infinitely capable developer I thought I'd be?

    Can I reestablish proficiency as a coder? I'm betting the farm on it.

    One of these days

    One of these days I'm going to start a blog. It will be perfect.

    It'll be informative, thoughtful, witty, current; maybe a little snarky. It will have a hipster name and I'll post fun and artsy pictures to it. I'll contribute my own carefully considered commentary to the heated discussion du jour. It will be a place for me to wax philosophic about intellectual, political and technical matters that affect us all. It will be entertaining but also deep. I will have a hundred thousand readers.

    I will present useful, thorough tutorials for those eager to learn and post poignant stories about my life and my business. I'll share best practices, productivity tips and programming recipes. My posts will generate pages of real discussion and make people think. Did I say a hundred thousand readers? Make that a million.

    One of these days I'll start a blog with a glassy logo and a slick pro-designer color scheme. It will have cool web 2.0 features. I'll spend time each day writing articles and reviews of new technology, new companies and the Silicon Valley.

    Honest, one of these days I'm going to start a perfect blog. Or I could start something now: perhaps just a simple picture at the top; a sidebar that shows songs I've recently played in iTunes; and a page with a list of blogs that I read. And then I can just start posting. Whether anyone reads it or not. Yeah. I think I'll do that. Maybe I'll start Right Now.