Google, What Were You Thinking?

The Sting

We decided to find out. We made some changes to the site:

  • For visitors from the 41.203.221.138 address, we changed the code to serve slightly different content 10% of the time.
  • Instead of the real business phone number, we served a number that fed through to our call centre team, where the incoming calls would also be recorded. Our team were briefed to act like the business owners for the calls.

We switched the new code on December 21st.

When we listened to the calls, we were beyond astonished.

1 Million Is So 2011

A few months ago we published a blog post that talked about our servers doing 1 million tcp connections on a single box: http://blog.whatsapp.com/?p=170

Today we have an update for those keeping score at home: we are now able to easily push our systems to over 2 million tcp connections!


jkb@c123$ sysctl kern.ipc.numopensockets
kern.ipc.numopensockets: 2277845

Very impressive numbers, if only in exploiting the awesome hardware they have available. I wish I could run on dual hex-cores with 96GB RAM ;-) I wonder if they even need two boxes with a setup like this for connection concentration.

GoDaddy – a Glimpse of the Internet Under SOPA

The site in question featured a bad review of a local business, and that business had complained. Why on earth would a domain registrar take it upon themselves to police content?

SOPA is the worst legislation proposal I have ever heard of in the US. It needs to die a quick death.

"Another World" Source Code Review

I spent two weeks reading and reverse engineering further the source code of Another World (“Out Of This World” in North America). I based my work on Gregory Montoir’s “binary to C++” initial reverse engineering from the DOS executable.

I was amazed to discover an elegant system based on a virtual machine interpreting bytecode in realtime and generating fullscreen vectorial cinematic in order to produce one of the best game of all time.

All this shipping on a 1.44MB floppy disk and running within 600KB of RAM: Not bad for 1991 ! As usual I cleaned up my notes, it may save a few hours to someone.

Library Versioning

Libraries should be versioned and packaged such that they are easy to use over time, and in combination. The best way I have found to do this is to abide by three rules:

  • Use APR versioning
  • Re-namespace on major version changes
  • Change the artifact ID on major version changes

Sage wisdom from a true warrior.

Fest - Fixtures for Easy Software Testing

GUI Functional Swing Testing

This module provides a simple and intuitive API for functional testing of Swing user interfaces, resulting in tests that are compact, easy to write, and read like a specification. Tests written using FEST-Swing are also robust. FEST simulates actual user gestures at the operating system level, ensuring that the application will behave correctly in front of the user. It also provides a reliable mechanism for GUI component lookup that ensures that changes in the GUI’s layout or look-and-feel will not break your tests.

Nice! I like to see stuff like this.

Z-Push - Open Source Push Technology

This is where Open source Z-Push comes in; it is an implementation of Microsoft’s ActiveSync protocol which is used ‘over-the-air’ for multi platform active sync devices, including Windows Mobile and active sync used on Apple’s iPhone, Sony Ericsson and Nokia phones.

Nice! Was hoping there was something like this out there already.

Lessons From Leaders – How JBoss Did It

Really great case study of how JBoss built a world-class sales and marketing effort around their open source application server.

And This Is Why Paypal Will Be Replaced…

PAYPAL: Only a nonprofit can use the Donate button.
ME: That’s false. It says right in the PDF of instructions for the Donate button that it can be used for “worthy causes.”
PAYPAL: I haven’t seen that PDF. And what you’re doing is not a worthy cause, it’s charity.
ME: What’s the difference?
PAYPAL: You can use the donate button to raise money for a sick cat, but not poor people.

Damn Cool Algorithms – BK-Trees

BK-Trees, or Burkhard-Keller Trees are a tree-based data structure engineered for quickly finding near-matches to a string, for example, as used by a spelling checker, or when doing a ‘fuzzy’ search for a term. The aim is to return, for example, “seek” and “peek” if I search for “aeek”. What makes BK-Trees so cool is that they take a problem which has no obvious solution besides brute-force search, and present a simple and elegant method for speeding up searches substantially.