WIDS 2014 - Part 2
Maxime Bélanger's talk was one of my favourite from the conference. The talk was primarily about how Dropbox hacked the OS X Finder to display the classic syncing overlays on top of file icons. The level of modification is pretty insane, and I was quite surprised the extent to which Dropbox messes with the Finder. The core idea is to write low level Darwin code that gets a foreign process (the Finder process) to run code from a custom memory location you have allocated. This allows you to run a bit of bootstrap code which you can use to link against an actual dynamic library. At this point, you can finally start working with the Objective-C runtime, and swap out the implementation of Finder methods with your own method. Dropbox uses this trick to add the syncing state to the file data, as well as swap the built-in icon rendering method with their own.
The whole idea is both exciting and really worrying. This is the level of control you are handing over to any application which asks for your administrator password when being installed. Not only does the app have full access to the entire file system (which you'd expect), it can also get other processes to change their built-in behaviour. The second half of the talk was a summary of some general lessons from this exercise. First, doing something this crazy gives you an inherent competitive edge. Not everybody is this crazy, and your competitors probably won't go this far. Second, anything is possible. Literally anything. If you want you can make a computer do anything you want it to do, whether or not the framework, operating system, programming language allow you to do it. You just need to go a level lower and bend the machine to your will.
“Everything is just C code.”
Working at such a low level comes with some baggage. You need to minimize your dependence on reverse engineered libraries as much as possible. This will be the first thing to break when the underlying platform changes, because none of the functionality you are depending one was meant to be outward facing. Counter intuitively (to me, anyway), it can be better to trust low level code more than high level. Kernel level changes are much rarer than high level changes. As an example, the Finder implementation has been revamped 3-4 times during Dropbox's existence, but the underlying Darwin implementation only changed once.
The talk after lunch was by Josh Aberant, postmaster at Twitter. Yes, apparently that's a thing. This session was probably the least technical talk from both days. That's not a bad thing, though. It turned out to be a really interesting one. The main thrust of the talk was "growth hacking".
The three primary channels he covered were email, push, and SMS. I'd never thought of push notifications as a marketing channel, but the key takeaway from this session was keeping the customer's entire lifecycle in mind, from the first time they hear about the product to when they stop using it. Every stage of that journey is an opportunity to lead the customers to different objectives, and each channel excels at different stages of that journey. The stages, broadly, are acquisition, activation, engagement, virality and resurrection. The non-obvious ones to me were activation and resurrection. Activation is turning a customer you just acquired (registration, download of a free trial, etc) into an active user. An example Josh cited was that Facebook found that once you hit a certain number of friends, you wouldn't churn. So Facebook's objective at that point is to get you to add connections and hit that point of no return, where you are guaranteed to be an active user. Identifying the causes and effects within your customers' lifecycle can help you figure out the transition from one stage to another. The other stage, resurrection, is bringing back a user who has gone inactive. Again, being able to anticipate that situation gives you a chance to reactivate the user before they even leave.
For me, the big takeaway is to think of marketing in terms of the customer's lifecycle. It's natural to strategize in terms of where the company is in its own lifecycle ("Right now, what we need is to generate awareness among early adopters", "We need to broaden the appeal of the product to allow the non-tech crowd to start using it", etc). But you get from hundred users to a thousand one at a time. Nine hundred separate people went from being ignorant of your product to becoming an active user (or a paying customer). None of them care about where the company as a whole is. Keeping each individual customer's journey in mind is a prerequisite to growth.
Up next was the panel, about Big Data and the Cloud. Big Data, if I understand correctly, is when the default font size of PHPMyAdmin is set too high. This can cause many problems including not being able to see all of it at once. This can Cloud your understanding of what it all means. In 2013, Social Media would have solved that, but teenagers don't use that anymore. It's a pity they didn't talk about Bitcoin as well; I was this close to beating my Buzzword Bingo highscore.
This is the second of a series of blog posts on the World Internet Developer Summit 2014 conference. Here's Part 1. Stay tuned for the next epic chapter of the WIDS Chronicles trilogy.