The eclectic musings of a bitter software engineer.

War Rocket Ajax Mark II

Monday June 23, 2008 @ 10:37 PM (PDT)

I bought a new car two weeks ago. It was a weird spur-of-the-moment pre-mid-life mid-life crisis sort of thing. I suddenly realized one evening that it had been a long time since I had done anything really irresponsible, and somehow that just didn’t feel right. So, the next afternoon, almost by accident, I swapped my sporty but somewhat reserved and almost respectable 2006 Subaru Impreza WRX wagon for a completely off the wall batshit insane 2008 Subaru Impreza WRX STi.

I regretted buying the car the instant I drove it off the lot. Not because it was a bad car, but because I stalled it twice in the process. It was literally my second time ever driving a car with a manual transmission. Somehow, in my haze of irresponsibility, I hadn’t thought that would be such a big deal, but it was.

That night I barely got any sleep. I knew I would have to drive the car to work in the morning, in traffic. For the next 48 hours, I was more full of anxiety than I’ve ever been in my life. I felt terrible. I couldn’t concentrate at work, because I knew that in a few hours I’d have to drive it again, and I’d be that guy—the asshole who stalls his sports car at a traffic light. There was none of the joy I had felt the first time I drove a WRX; just anxiety, insecurity, fear of failure.

As the days went by, though, I quickly got better. I graduated from incompetent to horrible, then from horrible to not very good. Today I graduated from not very good to halfway decent.

Coming home from work, I stopped at a stop sign and waited for a break in traffic. One finally appeared, but it was too small. I was still too slow on the clutch. There was no way I’d be able to make it. But something snapped. My feet rebelled against my brain. My left foot lifted to engage the clutch as my right foot depressed the throttle. The timing was perfect. The car launched like a rocket, merging perfectly into the break in traffic. Despite having been slammed back in my seat by the acceleration, I managed to shift smoothly into second, and then third.

Suddenly, for the first time since buying the car, I felt in control again. I was driving the car instead of being mocked by it. The joy I should have felt on the first day suddenly hit me, the anxiety left, and I remembered why three of the four cars I’ve bought have been WRXes. It was glorious.

It might have lasted, too, if I hadn’t realized half a mile later that my blinker was still on.

Mouse interference

Tuesday June 17, 2008 @ 10:41 AM (PDT)

At home I use a Microsoft Natural Wireless Laser Mouse 6000. At work I use a Microsoft Comfort Optical Mouse 3000. For some reason, if I put my iPhone too close to the wired mouse, the mouse stops working. The phone has no effect at all on the wireless mouse. What’s going on here?

Thoth 0.2.0 released

Sunday June 15, 2008 @ 03:08 PM (PDT)

Thoth 0.2.0 has been released. Notable changes in this release include the following:

  • Requires Ramaze 2008.06.
  • Requires Sequel 2.0.1.
  • Added --adapter command line option and server.adapter config option to specify a different Ramaze server adapter to use (the default is Thin).
  • Added --migrate command line option to automatically upgrade or downgrade a Thoth database schema.
  • Added site.enable_comments setting. Set this to false if you don’t want users to be able to post comments on your blog.
  • Added server.enable_minify setting. When enabled, all CSS under /css and all JavaScript under /js will be minified on the fly.
  • Pagination bars now include links to up to nine nearby result pages in addition to the prev/next links.
  • Views are compiled by default in production mode, which improves performance significantly. To disable view compilation, set server.compile_views to false.
  • All admin forms validate a session-specific form token on submission to prevent cross-site request forgery attacks.
  • The Flickr and Delicious plugins are now included in the main Thoth gem.
  • The Flickr and Delicious plugins have been modified to take advantage of Ramaze’s improved value cache rather than handling their own caching.
  • Added a Twitter plugin.
  • Added a Tags plugin for displaying tag statistics.
  • Fixed incorrect default paths for the theme.public, theme.view, and media config settings.
  • Fixed the --home command line option.

To install Thoth for the first time, run:

sudo gem install thoth

Or, to upgrade an existing Thoth blog:

sudo gem update thoth
cd /path/to/blog
thoth -d stop
thoth --migrate
thoth -d start

Note the database migration step, which is necessary to migrate your 0.1.4 database to the 0.2.0 schema. Your existing data will be preserved, but you may want to make a backup first if you’re paranoid.

Out of site

Sunday June 15, 2008 @ 02:31 PM (PDT)

Seen in an ad for the U.S. Air Force on Hulu today: “How do you fight an enemy who hides among the innocent? Never let him out of your site.”

As mentioned on the 37signals blog, Apple’s just-announced .Mac successor MobileMe won’t support Internet Explorer 6. Rock on, Apple.

Now that IE7 has finally slogged past IE6 in overall browser market share, it’s time for more websites to deprecate IE6. I don’t believe in denying access to a website based on browser version, but I do believe that it’s acceptable to serve a degraded, possibly even slightly broken experience to a crappy eight-year-old browser.

Take all that time you would have spent implementing IE6 workarounds and instead spend it making your site just a little bit more awesome for modern browsers. Better yet, spend that time making the site more accessible to screen readers and ensuring that your design scales well at higher zoom levels for vision impaired users.

If IE6 users complain, tell them how to upgrade to IE7 or Firefox. If they prefer not to upgrade, recommend that they use a competitor’s website instead. While your competitors are wasting time trying to make their products work in an ancient browser, you’ll be working on things that actually matter.

Before interviewing for a job, it’s reasonable and responsible to do some research on the people who are scheduled to interview you. This research might involve doing a few web searches to find out more about them, see what kinds of things they work on, maybe even learn about their interests so you can make small talk before the interview. That’s perfectly fine; they’ll be doing searches on you for the same reasons.

After waiting a reasonable amount of time following the interview (one to two weeks), it’s okay to email or call an interviewer or recruiter and ask for a status update. What’s not okay, though, is stalking an interviewer after the interview. Don’t send your interviewer friend requests on Facebook, Flickr, MySpace, Twitter, or any other social network. Don’t post comments on their personal blog mentioning the interview. LinkedIn is a grey area, but it’s probably best not to try to connect with your interviewer unless you’re offered a job (connecting with recruiters is probably okay).

Remember that your relationship with your interviewer is a business relationship, not a personal relationship, and it does not extend to blogs, social networks, and other non-work-related websites. Trying to wedge yourself into an interviewer’s personal life is rude and annoying, and it’s likely to give the interviewer a negative impression of your personality, even if you did well in the actual interviews.

IM conversation of the day

Monday June 02, 2008 @ 10:51 AM (PDT)

Pretty much everyone at Yahoo! uses Yahoo! Messenger to communicate, since there’s a lot of interteam, intercampus, and international collaboration. It’s not uncommon to get an IM from someone you don’t recognize who turns out to be a coworker, so when I got just such an IM this morning, that’s what I assumed was the case.

The following conversation ensued (name changed to protect the grammatically challenged):

mysterious_monkey786
ye

Ryan Grove
?

mysterious_monkey786
sorry do i know u ???

Ryan Grove
You tell me. You sent me a message.

mysterious_monkey786
oay hello i dont even know u …???? u r not added in m frnd list how can i sent u a msg

mysterious_monkey786
cheap trick to talk with a grl

Wow.

Listening habits

Wednesday May 28, 2008 @ 09:19 PM (PDT)

My musical tastes are ridiculously eclectic and there are few things I love more than discovering good new music. Thanks to Last.fm and Amazon MP3, finding new music is easy. The hard part is finding time to listen to it.

I don’t really like listening to music while programming. It fragments my concentration; I can concentrate on the code or the music, but not both at once. I like listening to music while driving, but the acoustics at highway speeds are terrible and my music selection in the car is necessarily limited. As a result, my music-listening time ends up being limited. To get my music fix, I’ll flop on the couch for an hour or so maybe once a week, crank up the sound system, and just focus on the music.

When’s your favorite time to listen to music? What’s your favorite place? Do you listen while working? Let’s see some comments.

My head is still reeling after seeing the new Indiana Jones movie yesterday. It keeps coming back in flashes, like a bad dream. I’m not exaggerating; the movie is so ridiculous and incoherent that my memories of it feel exactly like the memories of some of my more nonsensical dreams. My biggest fear is that watching the first three movies will now remind me of this one, and I’ll enjoy them less as a result.

If you’re an Indiana Jones fan and haven’t seen Kingdom of the Crystal Skull yet, here’s my advice: don’t. For godssake don’t. See something else. Anything. Speed Racer even. Please don’t make the same mistake I did.

Customer service

Monday May 12, 2008 @ 06:43 PM (PDT)

Every so often, perhaps once every few months, I’ll get a call at my desk from a Yahoo! customer who has dialed the company switchboard and then punched in a random extension in the hopes of reaching a human who can help them with a problem.

In a perfect world, this would be a reasonable strategy. In a perfect world, I would know everything about every Yahoo! product, I would be able to help this poor desperate customer, and then maybe they would tell their friends what a great company Yahoo! is because they randomly dialed a developer who was happy to give them the help they needed.

Unfortunately, the world is not perfect and I don’t know everything about every Yahoo! product. I don’t even know everything about the product I work on. The odds that someone with a question about Search Assist would dial a random number and actually reach me rather than one of the other 14,000 Yahoo! employees are infinitesimally small. So, naturally, the people who randomly dial my number invariably ask questions about products that I know nothing about.

By the time someone resorts to dialing random numbers, they’re pretty desperate. Sometimes they’re very upset. They don’t care that I’m a developer working on something completely unrelated to whatever it is they’re having a problem with; to them, I am the human personification of Yahoo! the Big Faceless Corporation, and they expect me to have at my fingertips the entirety of Yahoo’s corporate knowledge.

When I explain that I can’t help them, they expect me to be able to transfer them to someone who can, and they find it incomprehensible that, as a Yahoo! insider, I don’t have a handy list of Top Secret support phone numbers. Sometimes this makes them angrier, and sometimes this makes them ask again really, really nicely in the hopes that I’ll decide to rebel against my cruel superiors and transfer them to one of the Top Secret numbers.

In the end, I’m unable to help these desperate people. I give them the premium support phone number (which is for paying customers), but usually the questions they’re asking are about a free product, for which (as far as I know) there is no phone support.

It’s not that Yahoo! doesn’t care; we do. It’s just that there’s no way we could possibly hire enough human beings to provide personal support for every one of our hundreds of millions of users (most of whom are using free products). It’s a simple problem of scale; no company in the world could afford this. Not even Google. Not even Microsoft.

Even so, whenever this happens, it pretty much ruins my day.

Obligatory disclaimer: the opinions expressed in this post are mine alone and do not represent the views of my employer.

Copyright © 2002-2008 Ryan Grove. All rights reserved.
Powered by Thoth.