Translating tweet goes viral


Update See the end for updates on how i got the wrong mayor and modified quote.

Last week i saw an image on facebook which i thought had an awesome quote about cars and development.

I reposted it on facebook, then also wrote it out to tweet the message in spanish on twitter.

It was cool, and i spent a bit of time looking in to it and was able track it down to Gustavo Petro Enrique Penalosa the ex-mayor of Bogota. I’m a big fan of the way public transit policy in colombia is looking at low cost inclusive and green solutions. Such a nice contrast to the ‘build highways’ transit policy of Uruguay.

So i translated the quote in to english and gave it a proper attribution.

Amazingly it really hit a nerve. The tweet spread for days becoming a trending topic around the world, especially in developing countries from India to Brazil. It got over 8,000 retweets using twitter’s retweet button and many thousands more using the traditional method of retweets. More retweets than i have followers! I’ve never had that happen, but it was impressive to watch. The right idea, at the right time, can spread so much more easily than it ever could in the past. This is something which is really different and new. Ideas spread like wildfire before, but now they can go farther, faster, and with more depth.

Update: It turns out the mayor in question was Enrique Penalosa who was mayor of Bogota about a decade ago. What’s more, the original quote was not quite so twitterable.

“Una ciudad avanzada no es en la que los pobres pueden moverse en carro, sino una en la que incluso los ricos utilizan el transporte público” Enrique Peñalosa

“An advanced city is not a place where the poor move about in cars, rather it’s where even the rich use public transportation” Enrique Peñalosa



Big new for me, New Context acquires Cubox


I’m happy to announce that my company, Cubox, has been acquired by Digital Garage’s New Context. Starting and running Cubox been an amazing journey over the last few years and i’m very excited about New Context is doing. It’s a perfect fit for taking the culture and team of Cubox forward.

Read more on the obligatory company blog post, press releases & press coverage.



What should a revolution look like today?


After capitalism: ‘There is no reason to wait for revolution. It is here already in each of us.’ Author Rebecca Walker outlines a utopian vision of a world after capitalism underpinned by a moral and spiritual revolution.



Origin of the @reply – Digging through twitter’s history


Where did the @reply come from? Why did people start putting @ at the beginning of people’s names instead of at the end as in an email address.

To start with the @ was used in twitter as a kind of checkin, to say where you are. The very first was by Ev, checking in to herbivore to tell us he’s getting a breakfst burrito. Twitter was only 4 days old when this convention started.

The most common early tweet was the rather boring “@ work” although not everybody used the @ sign.

This is the dodgeball style of doing checkins. Dodgeball, the service which is now reborn as FourSquare used a text message style syntax with @location.

Some early users tried out using the @ sign for time instead of a place.

Some simply used @ as a generally short and cute form of saying ‘at’.

The very first attempt to use a @name to referrer to somebody was a discussion between Ben Darlow and Neil Crosby about how to scope conversations on twitter. First Ben says:

The format ends up coming as a quick reply from NeilCrosby:

There by creating the format which would become @username on twitter for scoping conversations and replying to users. They then went on to have a bit of conversation working out the regular expressions required for matching users and tracking conversations on twitter.

The @reply was created on Thanksgiving day, November 23rd, 2006. One wonders if this was the first case of geeks using twitter to avoid their family on thanksgiving. Update: They were brits working at Yahoo UK, so they were just goofing off while their american colleagues were on vacation. :-) Also see @Garrett’s own post with a few more tweets about how the @reply came about which i missed.

A few days passed and nobody was using the new @ reply format which Ben Darlow (@kapowaz) & Neil Crosby has created. The next person to try out something like an @reply was Robert S Andersen, who now interestingly enough is creative director at Square, quickly followed with a ‘reply’ by Cameron Waters, co-founder of Square.

None of the folks using @ replies are using Ben and Neil’s format or even being very consistent with their twitter names. For example, today Tom Coates does use TomCoates as a twitter name, but at the time he used his blog name, PlasticBagUK.

A few other people used the new way of replying, but it died out after a couple of days. It could have been gone forever, but John Hicks kept using it. Suw comes closest to the current convention, almost a month after the idea was first proposed.

By the first week of January 2007 the @ reply with a space is getting enough adoption that there starts to be a backlash. Because it was a convention created by users, twitter wasn’t tracking or scoping the conversations with @replies to a common subset of followers.

Nobody could quite decide what format to use, should there be a space or not?

Sometimes people just used the bare username followed by a : without the @ at all.

Eventually Brad Wright starts explaining to people that the @name convention exists elsewhere and it’s not a twitter thing at all. Of course given some time, @name will become inexorably linked to twitter.

People get more and more upset about the @reply spam and crossed conversations.

And finally KevinMarks is the first person to use @reply in it’s current form on Twitter. Ironically enough, explaining how @replies work.

Little by little people converged in to using the twitter name, not person’s name, and also not including a space between @ and the name. The colin, :, was dropped. As the use of @reply to referrer to somebody’s name instead of a place took over, and twitter added support with a link, the use of @ as a location indictor or time has dropped off.

Twitter didn’t add official support to @replies as part of the platform until May 2008, fully 2 years after twitter launched and a year and a half after the idea of @replies was proposed.

Twitter’s been around for over 6 years now, and it’s most of it’s early history has been forgotten. The amazing thing about twitter as a platform and community is that it’s evolution has come through it’s use. Through use, people together evolve new ways of communicating. The #hashtag, the retweet, the @reply, follow friday, trending topics, real time twitter search, explaining twitter trends, cc-ing users, etc… These were all creations of the user base, people tried out ideas and build them. Twitter the company later adopted the conventions of it’s community and formalized the tools.

This letting the community of users create, and then adopting the practices is critical to how Twitter’s grown to be such an amazing platform. It’s also why new efforts to deliver a ‘consistent experience‘ are a terrible idea and if they succeed will kill twitter’s future innovation.


Thanks to my good friend Kellan who put together a searchable archive of the first year of tweets letting us old timers relive the early days of twitter. These days Kellan is the CTO at Etsy, if you’re a hacker who’s in New York, or wants to live in New York, you should go work with him.



I’m Big in Uruguay




Logging consulting hours – The Good, The Bad, and the Ugly


There’s tons written about the world of startups and even freelancers, but almost nothing written about the world of software development services. The underbelly of the startup world, shops which get hired to do a lot of the dev work.

I’ve decided to start blogging a bit more about it, mostly adapting emails i’ve sent to my team. Hopefully they won’t kill me for using them as an example.

The joy of being a consultant is that you’ve got more freedom over your time, the downside is that eventually your time is logged and billed to a client hourly. That means rather than just reporting what you’ve done in a sprint retrospective, you’ve got to keep a log. At Cubox, we use minutedock, it’s nifty and comes from New Zealand, a country which like Uruguay, is small, was invaded by the british, has the southern most capital in it’s hemisphere, and has way more sheep than people.

When developers are billing their time, they need to track what they were doing. It’s hard for clients to know if you spent the day playing call of duty, or fixing some complicated bug. The time logged in minutedock is provided to clients in our invoices, as written. It is the primary way in which everybody knows what you were working on, how the project is advancing, and if there are problems. When clients are worried about how much things cost, they use these items to dispute payments.

All entries in the time log need to be detailed. They need to say specifically what you were doing and what value it provides to the client. Remember these may be read weeks, or months after you wrote them, by somebody who does not understand the code or architecture of the application.

All work we do should have an associated ticket in pivotal tracker, if it doesn’t exist when you start to do the work, add the ticket. It’s how we track things, it’s how our clients know what we’re working on.

All time logs in minutedock should have the full ticket title. If you’re working on a sub-part of that ticket you should include that information.

Examples of from the logs; The good, the bad, and the ugly.

  • GOOD – “Implement Connect Flow Header to Confirmation step, routes modification for testing, style changes, copy modification”
  • GOOD – “Clean up validations of Deal/PurchaseOrder. Fix bug with Purchase order and refund”
  • GOOD – “Updating rubydeps for ruby 1.9 to create a dependency graph”
  • GOOD – “#meetings discussing high-level architecture, services, jobs, and the implementation of the customer FSMs”
  • GOOD – “Fix purchase order creation for new customers WIP”
  • GOOD – “Fixing template error in collect_address_data partial”

  • BAD – “We have a bazillion pending tests. See to that.”
  • BAD – “Analytics, resque, etc.”
  • BAD – “Changes in coffeescript models”
  • BAD – “Changes for KM and GA”
  • BAD – “oauth”
  • BAD – “Pairing with pablo”
  • BAD – “Pairing with pote”
  • BAD – “Js client”
  • BAD – “Meeting with Clark”
  • BAD – “Fixing Mixpanel gem bugs”
  • BAD – “Fixing sign up issues”
  • BAD – “integration tests”
  • BAD – “Improve site usability”

  • UGLY – “” (Thursday Feb 2 – 0:45)

The good ones are clear and descriptive. They include more text and i can understand what was worked on even if i wasn’t following the project day to day.

The bad ones are vague, sometimes not related to the work at all. Often the bad ones are like 12 hours ‘oauth’ or 8 hours ‘integration tests’. Sometimes the bad ones include abbreviations which aren’t explained or documented anywhere.

Very few programmers are judged by the quality of code itself. Ironically enough, we judge programmers by the window dressing around their code. That is, those blog posts, talks, readme files, and application as a whole which is judged. Star programmers are known for what they built and how they communicated it. When doing contracting, as we do at cubox, a big part of that communication are the tickets we write when we log our time. It feels dumb, and less important than the real work. What’s more, it’s a written language, not code. It’s important, and it’s how we’ll be judged.



Global Dressup – Awesome kids clothes from around the world


My mom’s a serious traveler. She’s dragged me around the world many times. So when i had kids she started collecting the coolest dress-up clothes for them. From Guatemala to India, Thailand to Bolivia, everywhere she went she found awesome stuff. Not just buying it in the markets, but she tracked down the makers and found cooperatives. I remember finding a knitting coop of women hours outside of Cochabamba. I was translator, with my then more limited spanish, we spent hours talking about their lives, work, and struggle for justice and equality.

Eventually my mom collected way to much stuff for her own two grandkids. Friends kept commenting about how awesome their outfits were. So she decided to create an online store, offering all the cool dressup clothes she’d found in her travels. What we have is Global Dressup – Kids clothes from around the planet. Check it out.



Lean Startups for the Ruby Hacker – Brazil Edition


I gave a talk on lean startups for hackers at the wonderful Ruby Conf Brazil about Lean Startups, explaining the concept, to ruby hackers. The startup world has focused on lean startups, but many developers don’t get the concepts yet. The conference was live streamed by eventials, in a nice format that includes both the slides and video of the speaker. Amazingly, it was both streamed live, and immediately available for playback. Check it out, Lean Startups for Ruby Hackers



The train to nowhere – The train of the free peoples


The Uruguay - Argentina Train Arrives!Uruguay and Argentina recently re-established passenger train service between the two countries, for the first time in over 30 years. I’m a huge fan of trains and would love to see their revival in Uruguay.

 

I was super excited to read about new train service. Everybody really takes the ferry between Montevideo and Buenos Aires, it’s fast, there’s wifi, it’s reliable. But train service sounds cool.

 

Only once i read about the new service did i realize that it’s really a wonderful example about everything which is wrong about rio de la plata (nice way of saying uruguay and argentina).

 

Train RouteThere is now train service! The thing is, the train doesn’t go from Buenos Aires, the capital of Argentina to Montevideo the capital of Uruguay. The two places where the majority of the populations of each country lives. Instead it went from Pilar, Argentina, a town 250,000 about 56km outside of Buenos Aries, to Paso de los Toros, a tiny town of 13,000 people in the middle of nowhere Uruguay.

 

Really, the train goes from a medium size town in Argentina to a very small town in Uruguay. There is NOTHING in Paso de los Toros except cows, a small damn, and sleepy gauchos.

 

A train route, going from Buenos Aires to Montevideo would make sense, if it took a reasonable place to cross the river. But they didn’t. What’s worse is they picked two small towns nobody wants to go to.

 

They first train left Pilar, Argentina on the 22rd of September with lots of pomp and circumstance. The media covering the great new initiative.

 

The thing is, the train arrived at the Uruguayan border and in classic uruguayan fashion, somebody decided they didn’t have the proper paperwork in order. They refused entry to the TRAIN! The few passengers who were on the train were transferred to a bus for the rest of the trip. They arrived at 3am!

 

The thing is, they intended it to arrive at 3am! It wasn’t late, that’s the schedule. The train takes 19 hours and arrives at 3am, to a tiny town in the middle of nowhere. The only positive part about the whole thing is that the train trip is cheap, $31 USD!



How to block sites from Hacker News?


Can you block sites from hacker news? Who would want to do it and how?

 
I know it sounds funny, everybody’s wanting to get on hacker news, and sometimes i get my blog posts or posts about projects i’m working on posted to the site. I’ve never tried to engage in black hat hacker news manipulation, but i have stumbled across various ways it would be possible.

 
Here’s how it works. First off, once a url has been posted, it’s done, the original user who posted it gets a lock on it and the karma associated with it getting popular or not. I noticed that sometimes the www and non www versions of websites, two links to the same thing with different urls, are treated separately. When other people try and post it, they just upvote instead.

 
I first discovered this when i posted a link to asciiflow.com not using the www. It was cool, and i was surprised it wasn’t already on hacker news. Turns out it was posted about a month earlier. Nobody seemed to mind my reposting although there was some discussion about it.

 
The yesterday i posted a link to drawastickman.com, the cool animation of a stickman you create. I wanted to know, with a really cool link, and myself with decent karma, 890, would it get on the front page without me asking anybody to vote for it. It ended up with 14 points, but didn’t make it on the home page. Maybe i gave it a bad title, “Draw A Stickman – Interactive Canvas Story Telling”.

 
A few hours later it got posted again as “Bring a stick man to life.” by kgthegreat who had little karma a the time, but now has about the same as me. Perhaps he/she gave it a much better link title, i’m not sure. What’s more likely is that s/he got a few friends to upvote in the first few minutes after posting.

 
I think it’s fine that kgthegreat got the karma and the link posted, and i don’t really care who gets credit. It’s a cool link and i’m glad it got shared with the community.

 
My real question is this, what if somebody else had done like me, posted the link and ignored it? What if both the www and non www versions of the url had been posted and lost in the flow. Then those links would be on hacker news, but never float up and sit on the top like they deserve.

 
Now imagine instead of two hackers posting links they think are interesting, and instead think, what if somebody wanted to keep things from hacker news. The best way to do it would be to post links you wanted buried at high traffic times with two low karma accounts. Simply make it so nobody notices or upvotes the pages. Give them terrible titles.

 
I wonder if anybody’s done this to their competitors websites?

 
The new way to censor stuff is not to delete it, but rather to let it get lost in the noise. With crowd sourced content discovery platforms, like hacker news, it’s possible for participants to play the role of censor. It’s fascinating stuff.

 
Update: According to PG, the karma of the poster is not used in calculating whether or not the posts get moved to the front page.