The 10 Greatest Hacks of My Life
My co-founder and I briefly considered applying to YCombinator for the Winter 2012 session. We eventually decided to bootstrap Curvio initially, and raise a seed round on our own after we launch (so far so good!). But looking over the YC application, one question intrigued me:
Please tell us about the time you, tansey, most successfully hacked some (non-computer) system to your advantage.
Now, there are a lot of ways to interpret this. A mechanical interpretation would be about how you used some physical object in an extraordinary way to solve a challenge. Shifting to a more human-focused interpretation, maybe it’s about how you navigated your way through some social hierarchy or organization, breaking down walls that should have kept you out. From a business perspective, it may be about making a market when you saw an opportunity that no one else did. One friend even referenced having a surgery that left him paralyzed and having to hack his own mind via Neuro-Linguistic Programming to learn to walk again– the possibilities are endless!
This all got me to thinking: what are the greatest hacks I’ve ever done? Computer and non-computer systems. So here they are, in chronological order, the 10 greatest hacks of my life.
Coat Hanger Catapults
Kids love to throw things. Footballs, paper airplanes, you name it. Now combine that love for projectiles with a predisposition for engineering and an under-challenging public school math program (think: free time) and conditions are ripe for innovation. Enter the coat hanger catapult. A group of us discovered that if you took a metal coat hanger and bent it properly, you could make it attach to your desk and fling paper balls all the way across the room. This lead to inevitable wars and probably sealed my fate as wanting to create things.
Growing up, I loved gum. I would carry around one of those 50-piece value packs in my backpack to school. When one day someone at lunch asked me for a piece and I said no (on principle, I don’t feed the pigeons), they then offered to pay me for it. Light bulb. I had my first startup at 11 and boy was it a beauty– profitable from day 1, iterated fast on gum brand/flavor feedback, and a decent size market for a tween. Eventually, I became old enough to actually work a real job and the $10/week that gum brought in was no longer worth the hassle. Nevertheless, it taught me that these sorts of supply-demand opportunities exist and are exploitable if you keep your eyes open.
Vending Machine Knockoffs
Okay this was straight up illegal, but it was cool. Near my bus stop there was a vending machine that hung its items (candy, chips, etc.) by thin plastic rings. One day, a group of us figured out that if you rock the machines back and forth, the plastic rings on the front items would snap and fall down– free candy! What followed was a Goodfellas-esque rise to power as a candy seller ($1 per item, moving 25 items a week) and the subsequent recklessness that led to our downfall. I did my time (200 hours of community service for our gated community) and I realize it was wrong, but it showed me the joy of beating a system and getting for free that for which everyone else was paying.
My high school had installed a web filtering system that required you to log in to your browser at the start of a session. The login for students was simply “student” with no password. One day, by shear accident, I typed in “student\” and hit enter before realizing it. When it was accepted, I was curious: why did it accept me? Was I still logged in as a student? I tried going to ign.com– success! Espn.com– yes! I was given full permissions to the internet. I used it quietly at first, but of course when one kid sees you’re on a blocked site, they ask. Eventually most of the students in the school knew about it. One kid was even bragging that he discovered it; I was fine with that, because I knew if punishment came down on someone, I now had a scape goat. After a few months of blissful freedom, the software was patched and everything went back to normal. Everything except my attitude towards computer security, now that I saw it as potentially flawed the stage was set for something much more badass.
This is probably my favorite hack after APPI (see below). DeepFreeze was the most annoying, invasive, and stubborn piece of security software I’ve ever seen. Effectively it was rebooting from the same image every time. You could delete or create files and they’d be gone– even system files. It would simply prevent you from changing the state of the hard drive after it had booted. Even the teachers hated it, because it meant they had to get approval from IT to install any software.
So I got to work. I tried the obvious uninstall of the program: fail. Deleting the folder: fail. Disabling it in the startup config: fail. Nothing worked! I had to go deeper (pun!): I made a boot disk to try to get DOS access before DeepFreeze could load. This is where it got tricky. The Dell computers that were throughout the school had an annoying feature: you could not access the BIOS to change the boot ordering. I found the manual for that model online and discovered it actually had a jumper setting for BIOS access, and removing the jumper would enable BIOS access. So when the opportunity arose, I cracked open a machine, yanked out the jumper, sealed it back up, rebooted, changed the boot ordering, booted from disk, entered the DOS prompt, and deleted all of the relevant DeepFreeze files: success!
I threw together a bat file (thaw.bat haha) and distributed it to my classmates. Within days our class was thawed out. Within weeks, any class I was in had been purified. I even had a couple of teachers come to me, as if I was a weed dealer or something, asking “Wesley… I heard you can get rid of DeepFreeze.” Definitely an awesome feeling.
I enrolled at Virginia Tech in the Fall of 2003, about 9 months before Chris Moneymaker won the WSOP and poker exploded across the country. For those of us in college at this time, poker became huge. We were playing almost every night. Buy-ins on campus grew from $5 to $100 in about 18 months and the games were super profitable for me and my friend, with both of us starting to make a decent living at it. There was just one problem: playing poker for money on campus was forbidden.
To get around this, my friend and I started “Aces Up” – a student organization aimed at hosting free tournaments that gave away real money prizes. The catch was that in order to participate in these tournaments, you had to first sign up at an online poker site using our affiliate ID. As you played and accrued rake, we would receive a percentage that we converted into “Aces Up points” which could be used to enter tournaments. The tournaments worked out to giving away only about 20% of what we made from rakeback, and of course once they were signed up under us it was our rakeback for life.
After about three weeks of canvasing the campus with flyers, we had around 20 people signed up. It turned out that not many people played enough to make it worthwhile for us to host tournaments, so we scrapped the idea. However, months after we shut down one person who signed up generated more than $1000 in a single month. We also were able to use the Aces Up thing as a cover for our real-money games, telling the RAs that it was a charity game and referring them to the website. So in the end, Aces Up failed, but we saw it through and that ended up being a valuable experience. I learned how much work it is to actually get users and that even then it may not be enough to keep you going.
I had two passions going into college: Artificial Intelligence and poker. When I was in tenth grade, I read Blondie24, a book about how a guy evolved a neural network to play checkers then let it loose on MSN and it earned an expert rating; later, he applied that same technology to develop a state of the art breast cancer detection system. It inspired me to go into AI and when I became interested in poker, I thought, “Why not evolve a poker-playing neural network?”
With that grand vision in mind, I spent the majority of my sophomore year building the Automated Poker Playing Interface (APPI). What started as a simple idea lead to a 90,000 LOC behemoth that could do everything. APPI could simulate millions of hands a second, generate a wide array of statistics about hand probabilities, and even interface with Party Poker to play online. I created a DSL to teach my dad simple limit hold’em preflop strategy using a GUI that flashed a big red “FOLD” based on his hand, position, and previous action. I had a complete plug-in interface for scripting expert strategies in C++ and eventually wrote around 20,000 lines of full-ring LHE strategy; lesson there: rule-based expert strategies are brittle! I later hand-crafted a push/fold Sit-n-Go (SNG) formula which I would have play four $5 to $10 buy-in tournaments simultaneously every night while I went to dinner. Surprisingly, it actually was profitable!
In January, my friends and I went to Vegas to celebrate turning 21. Before we left, I setup a simulation that co-evolved a neural network to play a push/fold SNG strategy. When I came back 4 days later, I pulled up the best individuals after 3000 generations of evolution and I was stunned. They played perfectly! I mean sure, they played a very simplified game, but wow was this amazing! On that day I was hooked for life on machine learning.
I later contacted David Fogel, the author of Blondie24, and we became good friends. Upon graduating with my MS in CS, he hired me to do trading model research at Lincoln Vale, mostly on the basis of my work on APPI.
C++ Private Accessors
My first project as a grad student was on creating an intuitive, fast, standards-compliant way to automatically serialize objects in C++ via MPI without requiring the user to modify their application’s code. Basically, we parsed out the fields in a class and needed to generate some external code at compile-time that would recursively marshal those fields into a buffer. The problem here was that private fields cannot be accessed by external code unless you are declared a friend by the enclosing class. Requiring this would violate one of our design constraints, so we needed to find some way around it. What followed was around a month of failure and an in-depth reading of the C++ spec (~600 pages) until finally we had a solution.
It turns out that each field in your class has some tricky guidelines about where it can be maintained in memory. Specifically, each block of fields within the same visibility declaration has to be laid out in contiguous memory– however, within that block, fields can be laid out in any order, so we couldn’t simply assume that a field declared first in the class was at the start of a pointer to an object of that type. Like all problems in Computer Science, we solved this by adding a layer of indirection.
For each class that we wanted to serialize, we generated an identical class except that it had a friend declaration to our serializer. We called these classes isomorphic, because they were laid out identically in memory. Then we casted the object pointer to the isomorphic class type and used offset_of (which is itself a very clever hack– look it up!) to safely access the field. The result was our paper at IPDPS ’08 which, to the best of my knowledge, is the fastest and most robust approach to C++ serialization ever.
We were pivoting really fast at EffectCheck during the start of this year. One main switch we had to cope with was moving from short (1-2 pages) to long (30+ pages) documents. Trouble was, our algorithm was taking nearly one second per 100 words due to an average of 4 database calls per-word; and let me tell you, it is hard to keep things exciting when demoing if you have to wait 3 minutes for a result. Right before a big demo, I managed to come up with a cool implementation that uses a custom trie variant to achieve around a 100x speedup!
Curvio is my current startup. I’ve leveraged all the lessons I learned from the above hacks in order to get it ready for launch. I suppose that I am optimistically adding this to the list, since I don’t know if it will be a success or not. Nevertheless, I have confidence that my co-founder and I are on to something big and that when we launch next month– with a whole lot of marketing and advertising effort of course– it will be a hit.
A few additional hacks that I’m proud of but which sadly did not make the list:
- Affiliate Arbitrage
This would be on the list if I had been a more integral part of it. In 2005, PartyPoker, an online poker site, had an exploitable affiliate program that my friend ended up cashing in on. For each new player referred to the site, the affiliate had a choice between either receiving a flat fee of $75 (upon completion of 100 real-money hands) or about 25% of their overall rake. The kicker was that the players did not have to ever make a real-money deposit; instead, they could receive a transfer from another player.
Since I had recently built APPI to interact with PartyPoker, I sold my friend a collection of licenses for a very simple bot that folded all hands except JJ, QQ, KK, AA, and AK, which it simply shoved all-in with. My friend would then proceed down to his computer lab at his school, where the machines were wiped daily, and open up 12 new accounts. Each account was transferred a small amount of money and then the 100 real-money hands were cleared using the bot. On average, the bot lost around $10 in 100 hands at NL $25, but that meant that my friend actually made $65 on the transaction. It was a brilliant hack of the affiliate system.
- Anything at Lincoln Vale
I worked as a mix of a machine learning researcher and a quant at LV. We built so many awesome things which would qualify for this list without question. Unfortunately, I cannot talk about them due to an NDA. :(
- Zip Tie Car Repair
Somewhere in the middle of Nevada, while driving across the country to Palo Alto this past January, my car started making a horrible banging noise near the front. Pulling over, I noticed a large piece of plastic had broken off and was knocking up against the left tire. I bought some zip ties and spent a few minutes looping a few intricate knots together (length requirements) and set out again. The car made it to California with no problems and I still have the original ties on there. A simple hack, but it just amazed me that it worked so well!
I believe hacks come in all shapes and sizes. Some fit the more traditional definition of the word, where as others may stretch or break your own personal definition of a hack. Some the hacks I described are of dubious legality; one is even outright illegal. And still others you may see as just plain boring or uninspired. Nevertheless, when I look back on the hacks from my life, I’m content with my greatest hits collection. :D
If you liked this article, please vote it up on HackerNews.