Back to my roots, procrastinating for fun and profit!

The psychological principle is this: anyone can do any amount of work, provided it isn’t the work he is supposed to be doing at that moment.

Robert Benchley

For the next month I will be free to wander around aimlessly. If you’ve been wanting to hang out with me for any reason, the time is now. Call me at +1 206.240.4233 to get my attention, I might be available. I might be more available if you offer any of the following:

  • Breakfast
  • Private Suites at Safeco for Mariners games
  • Sushi
  • Coffee/beer/tea and an interesting topic
  • Free stuff (llamas and ponies not accepted at this time)
  • Speaking engagements wherein I may ramble aimlessly
  • Pogo Stick Jousting Facilities

Thanks! I’ll leave you with the rest of the essay from Robert Benchley, How To Get Things Done, available from this compilation of his essays.

Let us see how this works out in practice. Let us say that I have five things which have to be done before the end of the week: (1) a basketful of letters to be answered, some of them dating from October, 1928 (2) some bookshelves to be put up and arranged with books (3) a hair-cut to get (4) a pile of scientific magazines to go through and clip (I am collecting all references to tropical fish that I can find, with the idea of someday buying myself one) and (5) an article to write for this paper.

Now. With these five tasks staring me in the face on Monday morning, it is little wonder that I go right back to bed as soon as I have had breakfast, in order to store up health and strength for the almost superhuman expenditure of energy that is to come. Mens sana in corpore sano is my motto.

Found via The Pmarca Guide to Personal Productivity

Handling Eventual Consistency with Amazon SimpleDB and Ruby

Eventual consistency. The storage system guarantees that if no new updates are made to the object eventually (after the inconsistency window closes) all accesses will return the last updated value.

My coworker wrote up our experience writing ruby integration tests against Amazon SimpleDB. You should know that we were in an integration test that runs infrequently. Production code should not use this retry method. You should be using exponential back off when you get an error code. I’ve heard that not doing this is the equivalent of crossing-the-streams in Ghost Busters.

Getting Git, Subversion and Bazaar Version Control Information into your Bash Prompt

Here are some must have bash PS1 commands if you’re working in multiple branches with various SCMs like git, svn or bzr. With this in your .bash_profile you’ll end up getting the following PS1

wesmaldonado:(git)gchartrb[master]/$

wesmaldonado:(svn)wumpus_project[trunk:141279]/$

Found at Lazy Bash cd aliases. The latest can be pulled from github:

http://github.com/relevance/etc/tree/master/bash/bash_vcs.sh

Seattle’s Interbay is no South Lake Union

“You can’t compare this to South Lake Union or downtown,” he says. “Not all areas are created equal.” Jeff Thompson, of the Freehold Group, the development company that has spearheaded the Dravus effort Seattle Times: Red tape fences in Interbay overhaul

Have a look at this google map for a compare and contrast


View Larger Map

Found in the spam filter, a relationship failure borne of HTTP error codes

A story about an internet crush…

… a few weeks later when I checked my spam filter. “Congrats–most women have to meet me at least twice before a crush wears off,” he’d replied. Cute. I replied, and we ended up having a bizarre but hilarious (to us) discussion about HTTP error codes. (Reproduced after the jump for the curious.) Fellow Metblogger Josh once told me upon reading that conversation, “I can’t imagine how things between the two of you didn’t work out.” And sometimes I wonder the same thing.

Go read the ongoing story at Single in Seattle: Blogger Boy No. 2

Headius on Maglev: Is it Ruby?

Charles Nutter had the following to say on the maglev ruby performance numbers:

Except that these are results reported entirely in a vacuum. Whether this is fib following the “rules” of Ruby is entirely an open question. Whether this is method dispatch adhering to Ruby’s call logic is entirely an open question. Whether this is a while loop using all method calls for its condition and increment steps is an open quesetion. Because the Maglev guys haven’t started running Ruby tests yet. Is it Ruby? http://headius.blogspot.com/2008/06/maglev.html

I am interested in maglev ruby because I’ve met some amazing smalltalkers who worked on large systems using gemstone. Want to know more about the size of systems gemstone is designed for? Have a read through this PDF: GemStone and Orient Overseas Container Lines:A Shipping Industry Case Study I think having more implementations is a great thing and will help

What do you think? Will the we use it if it’s closed source? I bet some people will, if nothing else this primes the pump for the next generation of programmers that will maintain systems like those of OOCL.

Checking Gmail POP+SSL with Ruby 1.8.6 in 10 minutes or less.

I needed to check Gmail via POP + SSL and didn’t want to use Ruby 1.9, what did I do?

Step 1: Install the latest version of stunnel

Step 2: Put the contents of the stunnel config file you see below some place convenient like ~/gmail-pop-stunnel.conf

foreground = yes

client = yes

pid =

[gmail]

delay = yes

accept = localhost:10000

connect = pop.gmail.com:995

Step 3: Start up stunnel

$ stunnel ~/gmail-pop-stunnel.conf &

Step 4: Fire up a Ruby program to pull down the messages.

require ‘net/pop’

conn = Net::POP3.new(’localhost:10000′)

conn.start(’youraddress@gmail.com’, ‘yourpassword’)

conn.mails.each { |msg| puts msg.pop }

msg.delete # your choice to delete or not

end

The source for this script shamelessly stolen from The Ruby Cookbook

And you should be aware that this is technically a violation of google’s terms of service, but if you aren’t doing anything other than what you could do through Outlook Express you probably aren’t causing trouble.

I’m not crazy, the thing on the wire is real… unfortunately.

For the past week Jodi has seen “something outside the window” and I didn’t believe her. Finally yesterday I saw it also. I couldn’t just sit by while a rat/mouse was running on the wire so I had to stalk it and get its picture. Tonight I sat on the deck camera in one hand and a flashlight in the other ready to ’shoot’ this creature. For about 25 minutes it was too light for it to come out, but finally I got it.

rat_on_a_wire

So far I haven’t seen any signs of them in my house, but I know they must be around. :(

Google Gears based offline app, boring because it “just worked”?

I’ve spent the past couple of months elbow deep in writing a Ruby on Rails based AJAX/REST/throw-in-whatever-hip-acronyms-you want-here-application. It was the same old “client” and “server” application we’ve all seen… someone enters data in a slick desktop application and then a “dumb client/mobile client” consumes it over some type of shoddy internet connection that sporadically works correctly. Where in the past we might have written the client specifically for some type of hardware and operating system, we used the web browser and Google Gears. Google Gears “just worked” and so, this is a rather boring post, unless you consider that the iPhone SDK should support the WHATWG Offline Storage recommendation and at that point our team can claim we have an offline iPhone web application. :) Go give Gears a shot, it might impress you.

p.s. if you’re working in ruby and would like some horribly written rake tasks for manipulating a Google Gears local database please leave a comment and I’ll see about making those available somewhere.

Elisabeth Hendrickson on Agile Test Automation

Agile teams need tools that separate the essence of the test from the implementation details. Such a separation is a hallmark of good design and increases maintainability. Agile teams also need tools that support and encourage good programming practices for the code portion of the test automation. And that means they need to write the test automation code using real, general use languages, with real IDEs, not vendor script languages in hamstrung IDEs.

Agile Friendly Test Automation Tools/Frameworks