Physical Skills: Learning to Juggle

Here’s what I’ve learned:

  • there’s only so much you can do in a day before you hit diminishing returns, then zero returns, then negative returns
  • quit while you still have the motivation to continue tomorrow
  • the most drastic progress is made by sleeping
  • publishing videos to twitter helps with motivation
  • if you’re super stuck on a step, going to the next one might help bring some perspective
  • if you do that, make sure you go back and perfect the last step, or you’ll never be good at the next
  • keep rewatching the video; listen to the man when he says “there’s no rush.” - every time you succeed stop and think before starting again
  • you can only train muscle memory by repeating the correct movements. this requires a lot of purposeful thinking during the early stages
  • it’s amazing how much time you can spend repeating the wrong motions. it will literally add up to hours in what you could have done in minutes if you stopped to think
  • this is the most determined i’ve felt in a while. it’s relatively easy to stick with such a simple thing. yet it’s complex enough to require sustained effort
  • it will take until the end of the week to juggle, not 48 hours

Here’s what I’m assuming:

  • it would be much easier for people with hand eye coordination. if you can shoot a basketball, you’re probably more likely to toss a ball and have it land in your other hand
  • this will help me learn other hand/eye, coordination, pseudo-athletic, or useless skills faster later
  • pubishing videos of work in progress steps will help me not feel embarassed/ashamed when I have to live up to my word that I can juggle later
  • if there’s muscle memory for determination, i’m training it
  • there will be no direct extrinsic benefits to learning how to juggle. I should choose a more useful skill next time

Tweeted progress videos #noshame

What’s next

  • I still need to complete a backflip on a trampoline. the annoying thing there is that there aren’t many useful intermediary steps.

The resources:

Become a Dev: The Road to Setting Up and Teaching Yourself Ruby on Rails

People ask me multiple times per week - “alright John, you convinced me to learn programming, but how do I get rails on my computer?” I’ve sent this email to about 25 people. Check it out, with some updates especially for you, dearest blog reader.


You need Ruby on Rails and some dependencies (like a database, git, etc) as well as a text editor to actually write code. Here’s how to install both on Mac and Windows.

Ruby on Rails (mac/win)

  1. Go to (download the kit)

    If you’re having trouble getting the mac version to download, try this Download page

  2. Run the railsinstaller from step 1, defaults are fine

  3. Open a terminal or console window and run “gem install rails” to upgrade rails if necessary

Techie notes about rails installer for mac: I was wary about using this, but a friend allowed me to use his out of the box mac as a guinea pig. Turns out, it installs the stuff the same way I would have told you to do it, using gcc without the full XCode and rvm (does a system install, installs the current version of ruby and rails). As you’ll learn below, it meshes well with homebrew when you need to install native dependencies down the line. So it’s both geek and n00b approved. That’s what makes it so awesome.


Sublime: Install Sublime Text 2 for your platform from

Now go make something cool!

Learn, and make something cool!

If you’re just getting started, that project you’ve always wanted to make… you know, the one you couldn’t find a developer to create, so now you’re here hoping you’re a natural? I hate to be the one to break it to you. It’s not going to be that easy.

You should first play along with a few almost-as-cool-but-still-not-as-cool-as-your-idea tutorials. While I applaud ambition, the time you spend on these tutorials will pay off 5-10x later (like in the next few days).

The more perspective you gain about what you’re doing, the more the things you try will “click”. Make it a point to not to be a copy-paste monkey.

Also understand that if you’re “tech savvy” this will still probably take you a few weeks to a month to get from zero to “novice programmer.” But once you get over that barrier, you can build stuff! So if you’re the maker type, the motivation is self perpetuating from there on in. Get through the dip!

Here’s a whole bunch of awesome resources for ruby, rails, and html/css.


You’re coding a web app. So you should probably know how web browsers work and display content. Lots of the code you write will be HTML/CSS, so you should know the basics before you proceed. Maybe even sprinkle on some javascript here, though not necessary for beginners.


Ruby is the language. Analogy: it’s like learning a foreign language, say Spanish.


Rails (or ‘Ruby on Rails’) is the framework. Analogy: it’s like learning shorthand or IM speak in Spanish. It’s kind of hard to learn shorthand if you don’t know the language, so you shouldn’t blow right by the Ruby stuff above.

That being said, IM speak and shorthand only use the simple parts of the language, as does Rails, so you don’t need to be an expert in Ruby to start learning Rails.

If this tutorial doesn’t work verbatim or you strongly suggest some other resources be listed, please comment below.

Happy learning!

Orderly Gem: Assert Sort Order in Acceptance Tests

Because sometimes you just need to assert that this appears before that on a page. Like when testing sort order.

For more explanation, derivation, and geekery, check out my original post on the LaunchWare Blog from last week!

The approach

There are many ways to do this, and I’ve tried lots of them in my work with LaunchWare. Most of them were ugly, clunky, brittle, or inefficient. Then I thought of a simple solution. Find the index (or position) of one piece of text (“this”) on the page and then find the index of the other (“that”) and assert like so:

page.body.index(this).should < page.body.index(that)

The gem

Simple enough right? So I made it into a custom rspec matcher, which I then gemified and web 2.0ified. It’s called orderly and it’s available at gem install orderly :) Also source code is on Github for your forking pleasure.

Now you can write:


And as a bonus, it’s got built in error handling if this or that aren’t found on the page. It’ll even tell you which one is missing.

Trust me, it’s fun. Soon you’ll be thinking you know what would make this app better? Putting things in a strict, complicated order so that we stack orderly assertions on assertions on assertions.

Using Github Downloads for Private Dependencies (Bonus: Geolocation)


I’ve been working on WhatNext, a social network for the cancer community via LaunchWare. And this week, the site got some geolocation love. After hacking together a combination of Google queries, resque jobs, and some backbone-js-HTML5 location code, we realized that we needed something instant, even if it’s slightly less accurate.

So back to the drawing board. I spiked a research project on IP geolocation data. My findings, as officially published in the LaunchWare HipChat room:

all signs point to the best professional solution being maxmind, there are others, but they’re “because it’s cheaper!” or “this is free check it out, it’s awesome!” but that was the most accurate by my small (~20) testing sample, and seems to have been around forever. and the ‘stick it to the man’ services point to that as ‘the man’, which i think [the client] would appreciate for reliability. plus it has a gem that makes it super easy to use (though you need to compile some dependencies), is what we need. its $370 once and $90 for updates. and US-only database is $250 one time fee, and $61 per month of updates.

the gem is at

Using this data was a dream, so if you’re looking for geolocation data for a ruby/rails project, look no further. They also have free data which is quoted as 2-3% less accurate. The only thing is, where do we store the data?

Data Storage

The data turned out to be 28 MB. Not something we want wasting space in our repo and slowing down deploys. We need a solution that can be quickly run on staging and production servers as well as locally for each new developer on the project. A one liner for a readme would be ideal.

First we thought - put the file s3 private storage. Create a rake task to pass the credentials and download the files, creating the system directories along the way if they don’t already exist. Not simple enough.

Then Github downloads came to mind. Our repo is already private, therefore so are our files. I clicked “Downloads” in our repo and uploaded the 28 MB file with one more click.

Next we have to download it. Their help files make that super easy.

Check it out:

curl -u 'github username' -L -o /usr/local/share/GeoIP/GeoIPCityus.dat

Just type your github password when prompted. One command to download the file, put it where our app expects to find it, and create the directories along the way. We can run this command with data updates as often as we please.

Github continues to make life easy. I love it. Congrats on the funding by the way. And for bootstrapping it this far.

On Postal Codes

I’m importing all US postal codes into a database for a geolocation app. While the data was importing I did some scanning. Fun facts: * Holtsville, NY is the only postal code that starts with 00. (00501)

According to Wikipedia, that’s the IRS’s fault. They have a tax processing center there and they have the lowest postal code. And since I (and the wiki editor) put them in the same sentence you will assume causation.,_New_York

The rest of the facts aren’t that fun, so I’ve omitted them.

Postal codes:

7 Reasons Why I Blog and Why You Should Too

If you’re wondering whether I’m making these up as I go along - yes. I definitely am. But watch them turn out to be pretty good.

The definitive list of reasons:

  1. Because people sometimes ask “so who are you” - a question that is difficult to rephrase accurately, and equally difficult to answer. There’s too much to say (hope this helps), and
  2. I’m terrible at reflecting. I recently started keeping a life log because otherwise I forget what I’ve done recently and how I’ve felt, and that’s good to know. And some of that stuff is bloggable.
  3. Because it’s one of those things that I say I’m going to do some day. And like most of those other things, I haven’t started because… I haven’t started. So here I am, starting (again).
  4. I write this post because hopefully writing a post like this will cause me to actually continue.
  5. Blog post != blog. (!= is programmer for NOT equal) I mean that in the “I should write more than one post” way and moreso in the STOP CALLING A BLOG POST A “BLOG”. As in, “I’m gonna write a new blog tonight.” You’re doing it wrong.
  6. I am such a scatterbrain, but I think it makes for better writing, not better alone-thinking.
  7. I’m extraverted, yet I’m a programmer and spend a lot of time alone. Even if no one reads this, it’s almost like I’m talking to real people. Right? There you have it, the 7 reasons that I’m blogging. Because everyone likes a top 7 list. Some of them were even good enough to get bold letters.

Update: Switiching to an unordered list, because otherwise what good would the title be?

  • Mountain Lion will have Siri dictation built in. And this gives me something to talk to my computer at length about. And just like that, #7 got a little more true. And my life got a little more <>.

Why you should too

Because it makes for a far more engaging title. I’m about as likely to read your blog as you are to come back and read mine. But read the 7 things again and make a decision. Posterous takes 3.5 seconds to set up. You have no exucse to do it later. Or you could spend the whole week designing your blog to post once. It’s up to you. I’ve haven’t done that in the past, especially not 7 times. (Stupid wordpress.)

The New Best Travel Story Ever (JetBlue, Big BUF)

I’ve been known for my #traveltweets for a while now. Love ‘em or hate ‘em, I love ‘em. So if you follow me on twitter, you’re just going to have to sacrifice some screen real estate when I go on a trip… which I do often. But this is the best one yet.

Glossary / Exposition

JetBlue - a low cost/best service carrier in the United States

Big BUF - Buffalo/Niagara International (flights to Canadia) Airport. Where even the JetBlue staff is unhappy. And the airport code is indeed BUF.

Silver Line Hell Time - The silver line of the MBTA is a fantastic idea - a gas/electric bus that takes you from Logan Airport to South Station (a main commuter hub of the city) in 15 minutes. Unless the tourists get in your way! It stops at all terminals and every passenger has to pay at the front door with CharlieCards, or CharlieTickets, or cash, none of which tourists know how to use (how hard is it to put cash into a machine?). So the bus sits at each of the 4 terminals for crazy amounts of time, then finally proceeds to South Station.

Massport - the people that are in charge of Logan Airport (BOS) and some other things.

TrueBlue points - the “airline miles” that I finally used to book my return flight from big BUF

My return flight was scheduled for 3:25 pm from BUF to BOS.

Good story, bro

Here we go.

Part 1: I took a bus, train, train, and shuttle bus to Logan and flew to Buffalo. And it was so boring and uneventful (even though the T got me there twice as fast as expected) that I barely tweeted about it.

Part 2: The return flight.

So good, it gets a subtitle and a paragraph break.

I get to the airport an hour before the flight (only n00bs arrive earlier) Check in, through security, and sitting at the gate at 2:45. At 3 pm, boarding time, the flight from Boston lands at our gate, right on schedule. The passengers unload. Intercom:

“I’m going to be honest with you. Unfortunately indicators in the cabin show problems with the landing gear. There is a ground repair crew on the way to diagnose the problem. But they won’t have an update for 30 to 45 minutes.”

For those counting along at home, that means we’ll figure out if the gear will be fixed after we should have alrready departed. Woot.

3:25: no update.

4:00: no update

4:15: “I’m going to be honest with you…” (thanks for the constant honesty)

The repair people are not sure what’s wrong with the gear and the plane can’t leave the gate until it’s fixed. That’s all we know. If you have any further questions or want us to do something for you, like rebook you or something, come form a line at the desk and we’ll do what we can.

I JUMP! And it’s too late. Line has 20 people in it already. Any chance of getting rebooked is gone. Unless… Everybody look to the left. Everybody look to the right… No, back left. There’s another JetBlue gate. Go figure. And an attendant at the desk. And only one group in front of him (the people that were sitting right next to me a few minutes before). I ask them, “what’s up? What did he say?”

There’s another flight, but it only has one spot on it. And there are four of us… Oh wait, you’re by yourself right?! Oh but they can’t get the luggage in time. Oh wait!? Do you have luggage?

Ha, luggage? I think I already covered the n00b section. Of course not. So I turn to the gate guy:

I heard there’s a flight to somewhere at some time with one seat left on it? I’ll take it. I don’t have luggage.

Click click, type type. “Hurry up, give me your boarding pass or you’re gonna miss it.” Me:

Me: So uh, where is this flight going?

Desk guy: To Boston. Direct. 5pm. Gate 11. Here you go!

#win. Good story right?

But wait, there’s way more

We took off on time at 5 pm, putting me 1h30m behind schedule (what schedule?). Landed in Boston, and decided to have dinner with @ryandawidjan and @lifeoffbi in Kendall Square. That means Silver Line Hell Time (see glossary), But Massport is running a trial where they pay for everyone’s fares on the silver line to reduce traffic. So 20 minutes of the “15 minute ride” was shaved off! Oh and I got a free transfer to the red line at South Station (because I already paid, right? Thanks Massport!)

Then I sat in Kendall square, continuing the game of iPhone monopoly that I started as the plane landed. Then I proceeded to lose that game of monopoly.

While I was waiting for Ryan and Fan for dinner, I got lots of Kayak text alerts

B6 #1216 delayed 3hr 50min

B6 #1216 delayed 4hr 10min

B6 #1216 delayed 4hr 50min

B6 #1216 cancelled

As if I wasn’t already extactic that I’m in Kendall Square and not big BUF with a dead laptop battery.

And still more

Tonight (a little over 24 hours later), I get an email from JetBlue. Have I mentioned how much I love JetBlue?

Subject: Apology from JetBlue


Dear JOHN P III GESIMONDO, We sincerely apologize for the inconvenience you experienced on JetBlue Flight #1216. We understand how challenging it is when your travel plans are disrupted.

According to our Customer Bill of Rights, we have issued each person on this flight a service credit in the amount of $50. In addition, as a gesture of apology and goodwill, we have issued each person on this flight a service credit in the amount of the one-way fare paid (excluding taxes and fees). Note: If you’re traveling on a TrueBlue award, you will receive a $100 service credit.

The credits will be placed in your JetBlue Travel Bank and may be used anytime during the next 12 months for another JetBlue flight. You will receive two separate emails, within the next two weeks, regarding each of your service credits. If you do not receive the emails with the details of your credits, please call us within two months at 1-800-JETBLUE (538-2583) and have your confirmation number available in order to get information on how to find and use your credit. If you are a JetBlue Getaways customer, please call 1-800-JETBLUE (538-2583) option #3 for assistance.

Our goal is to offer you the best in air travel. We look forward to welcoming you onboard again and giving you a renewed JetBlue experience.


Justin Thompson

Director, Customer Support

JetBlue Airways

The flight from BUF to BOS would have cost $50. But I used TrueBlue points. :) Which means I get a flat $100 credit. Plus the other $50. Do the math:

For ~$50 worth of points earned by doing what I like to do anyway (travel), I received $150 of future travel credit on my favorite airline and a flight back home 1.5 hours later. And this story.

Now that’s a #win.

Proposal: Napping in Traffic


I realize that it’s not overly economical to dedicate resources to this problem, but wouldn’t it be better if traffic worked like this:

Think about the cape cod bridges, right? If you don’t know, every weekend in all but winter, both bridges (the only way to cape cod) are backed up for 3-5 miles going toward the cape of Friday/Saturday and back on Sunday. 2-3 lane highways lead up to this point, so all the cars stop on the highway.

cars in traffic traffic on bridge


Ok. So thousands(?) of cars stopped on a highway. You drive one of those cars. You have two priorities -

  1. turn the car off
  2. be productive (even if that means napping)

But you can’t do either of those things, because you have to inch forward every 10 seconds. If you don’t, you’ll give up your spot in the 3 mile (9 mile if you put everyone single file) line.


Can’t we just throw some traffic lights 3 miles away from the bridge? Put up a green light except Fridays. When the speed of cars passing under the light is < 10 mph, change to red. Show a giant minute countdown (just like those pedestrian ones) and always make it the same number of minutes. People turn off their cars, sleep, play card games, and go about their improved travel lives.

Better, right? Post problems with my theory below.

Uruguay/Argentina Reflection

uruguay bridge zakim bridge boston

If I’m going to write it for class, I might as well write it for everyone…

During the week in Uruguay and Argentina I learned a lot about academics, the countries and their governments and economies, and especially the people.

The first striking thing was the purchasing power of the US Dollar in both countries. Given that both countries are developing (at different points), I would have expected to have good purchasing power. That was not the case. Food generally cost the same amount as it does here in the states. In fact, if you look at the Big Mac index for both countries, a burger in both countries is about 20% more expensive than one in the United States (after being converted to current USD).

On monetary policy, it is also surprising that the countries hold similar purchasing power parity. Montevideo is certainly less developed than Buenos Aires and the countries are of different size. But also, the Uruguayan government seems to be enabling growth of their economy. They have multiple free trade zones where the Argentine government is enacting arbitrary rules that would make the country less attractive to do business in. For examples, not being able to buy foreign currency for things like dividend payouts and having to balance imports and exports. Despite not being able to easily exchange money or trade between the two neighboring nations, their values of the currencies are very similar when compared to the dollar.

The point about the governments is not only a monetary one. The impression that I got from Uruguay was “entrepreneurial”. One thing that majorly contributed to this was Plan Ceibal. They distributed the first OLPC laptop in 2007 and had complete rollout done by 2009 with direct endorsement through two presidential regimes. They don’t deal with the department of education often, work very well with the national ISP to wire internet to places that don’t even have power, and they do not worry about getting outside funding from donors. This company and the Uruguayan government sounds more ideal than most case studies I’ve read.

The impression I got from Argentina was “bureaucratic, unstable, and corrupt”. Quite a contrast. Argentina would never support an initiative like Plan Ceibal. Speakers on the first day explained to us that government support is extremely short term and almost nothing makes it through two presidencies. Not only that, but the president can do nearly anything thanks to vetoing and assumption of power of congress precedents. The judicial branch is blackmailed, congress members get “promoted” to governor positions. If that isn’t enough, the longest consistent government rule is the current one, which is going on 29 years. The contrast between the two countries monetarily and governmentally is pretty extreme, which is interesting because from the US perspective the dollar buys the same trinkets in both places and they’re both “Latin American”.

There are very interesting cultural differences between the two countries and the United States. The first that comes to mind is the orientation around food and meals. In both countries they spend hours eating both lunch and dinner, which are both almost always meat-based. In the United States, and in most other places I’ve traveled (Hong Kong as a perfect example) this is not the case. A long US meal is hard to come by. We are busy people and often the meal gets tied with family time, of which in many households (including mine) we often take for granted and doesn’t last long. In Hong Kong, most meals seemed to be disconnected from family time and were part of the normal working day. That meant they needed to be quick, like most other things in the bustling city. In Uruguay and Argentina, there was absolutely no rush. The meal was about the people and your experience of spending time with them and no time is too long, for both lunch and dinner. Based on the meals we had, I think the main differences between the neighboring countries are that Uruguayans a longer time eating while Argentines like to eat meals later. The extra time the Uruguayans spent eating could be explained by their even higher pride for what they were serving. The experience wasn’t just about the people, but also about the food itself. Both countries loved their food, but we just couldn’t stop hearing about the “best meat in the world” in Uruguay.

In most other cases, Argentines were full of themselves and not afraid to say it. During the Alumni dinner in Buenos Aires, I had two alumni constantly making jokes about the Argentine ego. “You know the best business in the world? Buying Argentines for what they’re worth, and selling them for what they say they’re worth.” Another alum spent ten minutes telling us a story about one of his interactions with the President where he spoke badly of a government plan after an international conference and the President’s office blackmailed him and banned him and his well-known family from all government events for the rest of his life (or, more likely, for the rest of the presidency). He was even proud of this. Says a lot about ego!

Another interesting cultural difference centered around gifts. After each presentation, Heather gave us a pen to give to the guest speaker. A nice OIP gesture, of course. The interesting thing was that almost every guest speaker opened the gift on the spot. Most Americans find that rude. (First I assumed that everyone was like me, then I asked my friends. They agree.) In Uruguay it seemed to be a universal rule to open gifts on the spot and with enthusiasm. In Argentina, it seemed to be more of a case by case basis, but most of the speakers tentatively opened them anyway. I’m not sure what causes this difference in cultures. A small but very interesting observation.

The drive through Punta del Este was also packed with interesting observations. First, going back to my first point, we heard early on that rent in some of the apartments on the beach is two times the price of that in Miami. While this is somewhat speculative, the economy is certainly developing in that area and I was shocked to hear just how expensive things have become. I also via heard students that the street vendors take their same trinkets to Punta and they charge twice as much for them.

The other crazy Punta del Este observation was an example of great design resulting from a difficult design challenge. The apartment complexes with the glass first floors around the area looked very futuristic. And we were enlightened by an astute man that they were built this way because they were regulated against blocking the ocean views. Reminds me of a design challenge in Boston: We want to make a new skyscraper but we’re putting it in an area with lots of old, historic buildings. I know! Let’s make it reflect the image of the buildings around it! (And the Hancock Tower was born). In both situations, great works of architecture were created, perhaps better than they would have been without the design constraints.

The other great design was the Maldonado Bridge. The first one of its kind, this stressed ribbon bridge feels just like a roller coaster when you drive over it, looks awesome, and after adding another one just like it (one for each direction), supports the traffic going to and from Punta del Este and La Barra. The bridge is a very simple one, using concrete and its own shape to reinforce itself and provide support passing over it. Again, it comes back to Boston (the Zakim Bridge is the widest of its Cable-stayed bridge kind).

The last overall theme of my journal was about the Spanish language. I have not taken a single lesson of Spanish since senior year of high school (about four years ago) where I took up to level 4. For some reason, I can still conjugate quite well, including irregulars in lots of tenses. I never had a problem with that in high school either. What I did have a problem with was remembering the vocabulary words from each chapter. And the number one impediment to me speaking Spanish in either country was just that - not knowing the vocabulary. Because of this (I thought) I was never good at those darn listening sections during class. I can read, but I can’t process things fast enough when people speak. I think too much!

This trip was a different story though. On the flight and during the beginning of the week (especially at Hotel Europa) I had to use Spanish quite a bit to get by and it was working well enough. I could actually listen to a sentence, pick out the words I remembered and respond. I was really excited as I had finally reached a useful point for those four years of language, just about four years later. As the week went on, I refreshed myself on grammar, some vocabulary that I was confused about throughout the day when I had wifi (like “por accá”), and some local conventions. Then somehow by the end of the week, I was back to Spanish class - over-thinking everything and missing the point of the sentence. I learned one of two things: I either need to get to the other side of this gap and become fluent, or stick to the stupid side where I know just little enough that I stop thinking. I think I’ll strive for the former.

The most striking “is this real life?” moment on the trip was the Tango show in Buenos Aires. First of all, going back to the meals point, it was a long night. But when the show started, I turned to the stage and thought… I feel like I’m in a movie or something. I’ve never eaten a meal and turned to watch an exotic show (ok it’s exotic to me, I’m new to the continent) happening in front of me. I looked around and saw an older, upper class crowd. I realized just how lucky I was to be there and just how surreal the experience was. To top it all off, a woman with a beautiful voice sang “Don’t Cry For Me Argentina” in Argentina (in Spanish). This brought the whole experience (and apparently its reflection) full circle.

In-flight Power Struggles (& Spanish Ftw)

somewhere over the eastern united states (in transit between new york and santiago):

on the plane i reached down to find power plug for laptop. no dice. usb port there tho.

plug phone into it. no dice. GREAT.

so i fish around for an hour while also eating airplane food.

and then finally ask flight attendant (whose english is dodgy). “yes it’s between the seats”

nope. it’s not. meanwhile people next to me are pretty much laughing. but they don’t speak english so they weren’t going to ask what i was doing… (i already failed their spanish test, they were talking to me and by the time i realized it the only thing i could do was awkwardly ignore them!)

eventually flight attendant gets on hands and knees and says “yeah it’s supposed to be right there. i don’t know why you have this thing” (usb) “sorry!”

and then, with hand gestures and a bit of spanish, i finally asked the people next to me to plug it into theirs.

2 minutes later, with old guy on hands and knees. “OK! bueno!”

macbook charger light GREEN.

hurray high school spanish.

oh and I remembered to use usted.