When I was young, my friend James and I liked to fish. Other kids would be dropped at the mall for the day, but we’d get our parents to drop us at Joe Pool Lake. We were strange.
In those days, I’d save my allowance from week to week, dreaming of new fishing lures and fishing rods. My brothers and I would ride our bikes a mile or so to a big box retailer called Oshman’s. It was there that I’d window shop and plan my summer’s allowance. The fishing lures never worked, but I kept buying them all the same.
For a long while, James and I spent our days at Joe Pool Lake trying our various fishing lures – deciphering purposely vague hieroglyphics that passed as instructions from lure packaging. If the lure never worked, you probably just didn’t read the instructions right – that sort of infomercial style marketing scam.
We never caught a thing – but we kept right on buying, over and over, all summer long. “I SAW SO AND SO CATCH SOMETHING WITH THIS EXACT ONE ON TV, IT MUST BE DIFFERENT FROM THE LAST FOURTEEN WE TRIED!” – that sort of thing.
Summer passed into fall, and finally into winter – enough time for even a dimwitted pair of 12 year olds to realize they’d been had, fishing lures were bullshit – or if they weren’t, the patience or skill required to make the things work were out of our reach. Truth be told, we didn’t know what we were doing.
A few years later I spent my summers writing polished little software packages. The first, Lan Chat, was an internet based chat application back when my father and I had networked the home computers. Lan Chat let my brothers and I negotiate upcoming Duke Nukem 3d deathmatch map choices over a wire, rather than shouting down the hall. Negotiating over the wire meant our parents wouldn’t hear us and realize we were staying up so late.
The following year, instant messaging file transfer was in a terrible state – no matter how perfect the setup, none of us could get a file to ever actually go. This was in the golden age of dial up modems, before NAT, and Port Forwarding, and other forms of networking hell. This was when sending a file was as simple as just specifying a I.P. Address and a Port – for whatever reason AIM, ICQ, and the others couldn’t get files to go over the very same connection all of those little chat bubbles went through just fine.
My dead-simple solution to this problem, File Messenger, actually worked. Hell, Lan Chat sent files more reliably than AIM ever did, but File Messenger added a queue, automatically resumed file transfers and auto reconnection.
The year after that, as a freshman in school, my high school CS teacher was on my mind. I had been her assistant, grading bits of high school code printed on ink jet printers – it was a disaster. Without fail, every class had the one student who insisted their program would work, when a quick eyeball of code on PAPER clearly showed it would not. Still, we’d suffer the delusion for a bit and let the student load his program and show us how it didn’t work.
Problem Student: “Oh, it was working, let me just fix this.” Me: Right.
Every time we graded an assignment, the CS teacher would have a stack of code half a foot hight on her desk from all of her students. Nightmare.
Class Project Manager, my third little software package, solved my teacher’s nightmare. CPM was File Messenger with a drastically simplified UI. Students could submit their code and their questions, and the teacher’s machine would collect this information in a nice organized folder structure, all without a half foot of printer paper per assignment.
My high school software had moderate success, a few thousand downloads, and a grand total of two $20 checks from users who actually registered the software. Various shareware “review” sites awarded some of my work ridiculous little 5 star award gifs that they handed out like candy – you know the type, the site’s logo in the gif was 30 point font, and the “5 stars!” bit was 6 point.
I was happy with my accomplishments. Unlike those damned fishing lures, I seemed to have the skill necessary to make a computer sing, but, in truth, I didn’t know what I was doing.
After college, I knew better than to trust my fate on the generosity of strangers. Self-contained hobby software packages were fun as hell to write, but they didn’t pay the bills. I signed on at Visa and learned to make software the way big boys do. Sending files from one computer to another was a neat trick, but Visa was another level.
My favorite Visa interview question: How would you create software that can be upgraded while it’s still running?
While at Visa I started picking up Java, and iTunes was annoying me with terrible playlist export options. I wanted to be able to export a playlist of songs into a folder with a customizable file format, but also, I was extremely frustrated that there was NO export option at all.
I spent several weekends putting iPlaylist Copier together – a simple program really, it read in a terrifying only-apple-knows-why XML file format, made sense of it, provided the user with some options on which playlist and folder and such, and exported files as directed.
I posted iPlaylist Copier to the internet, and I received my first little bit of troll mail from a fan: “Why not drag and drop from iTunes, you can copy playlists that way?”
Why hadn’t I thought of that?
I knew how to upgrade software while it was still running, but I still didn’t know what I was doing – clearly.
After Visa and some other jobs, my friend Russell convinced me to pick up an iPod Touch – a non-phone mobile device that ran iPhone software. I cursed at my friend Russell for a fair bit of time – to this day I think typing on these devices is an exercise in pure masochism.
In time, we bought more iDevices, and my wife wanted to listen to some music while she ran. Her interval timer watch wouldn’t beep loud enough to be heard over music playing from her iPod, so she searched for interval timer apps.
We found half a dozen interval timer apps, several of them clearly made by very smart people. The trouble was, I’m not a very smart person. Remember, I can’t figure out how to work a fishing lure, or what “drag drop” is, apparently.
My wife is very smart, but she’s not a rocket scientist, and she’s not telepathic – so she, too, was at a loss, trying to operate any of the interval timer apps at all. Every app was far too complex for what she wanted, and several of them we could not figure out at all. We just wanted to set timer A to say X minutes and B to say Y minutes and click “start”, how hard was this?
At this time in my life, I didn’t know what I was doing, but I had worked at Visa and some other places long enough to know that engineers are funny creatures. We’re all the time competing on feature count, rather than simplicity – something feels wrong to many an engineer to charge $2 for an app that’s not as complex as another $2 app. We never understand why our software isn’t being used or sold, and why the guy with the less-is-more approach is doing just fine.
My friend Russell is also a very smart person, like my wife. He spent most of his career coding software for mobile devices, long long before that was a fashionable thing to do. Russell cut his teeth on shitty PalmOS devices that never did what they promised to do.
That’s not a joke. The Palm devices were shitty. Ask Russell about reading back every write, and manually checking a checksum you wrote along with the data, to make sure the OS itself didn’t garble your write and say “SUCCESS!” when really it meant “I HAVE NO IDEA WHAT I’M DOING!”.
Another time Russell was talking about a discussion at work with some colleagues, where the team needed to be able to tell if a single field had changed from one call to the next. Russell suggested the obvious answer of comparing a hash code over the fields, but his obvious answer was dismissed by lesser minds. A lot of software development works that way, sometimes we’re doing things the long way because our buddy Brandon on the team can’t be bothered to consider an idea he did not invent.
When my wife was out of luck for interval timer apps. I knew exactly who to call.
Russell and I put together rTimer in a weekend or two. That was my introduction to objective-c, rTimer. Christ, every bug fix we make these days, 5 years later, makes me want to shoot myself. Bakercode is bad, but new-to-the-language Bakercode is the fucking worst.
rTimer came together so quickly and easily that Russell and I thought we shouldn’t bother putting it on the app store – I mean, look at all those other interval timer apps with more features, right?
We didn’t know what we were doing.
Months after rTimer, we bought our first iPad, and I noticed Tumblr apps on the device were lacking, not unlike the interval timer apps on the iPhone were before. In an evening I threw together a sloppy but functional iPad Tumblr app that worked like a few iPhone Tumblr apps I already had – it looked like garbage.
I sent the code to my friend Adam, and asked him if he’d like to make a Tumblr app with me. A few weekends later his girlfriend and he brought over a photoshop file showing the beginnings of the TumbleOn interface, beyond pro-level graphic design, just astounding.
By day, Adam and I would practically sleep through our day jobs, stuck in a six month QA cycle that would never end, and by night we’d code our hearts out on this little Tumblr app.
We coded for months, 4 or 5 months, 80 or 100 hours of evening work every month, we had a blast.
As the app was coming to completion, I knew, I absolutely KNEW we were going to publish it. Our Tumblr app was going to be a success, we were going to be rich, and if not rich, we’d have resumes that look better than yours – we’d have the satisfaction, that finally, for once, we knew what we were doing.
As we spun up LLCs and business bank accounts, I did everything in duplicate, making my own personal “Coder Cowboy” LLC, with the intention of finally pushing rTimer out the door as well.
Work on TumbleOn had made figuring out the ins and outs of publishing an app as a legit business worthwhile – it had so much time invested in its creation. But rTimer had taken Russell and I 40 hours to put together, and we weren’t sure if Russell’s employer would fire him on the spot if it was discovered he had made an app on his own time – it was that kind of insanity over in the land that didn’t believe in hash codes.
We kicked out rTimer anyway, removing Russell’s name from the product, but still sharing the revenue.
I thought we knew what we were doing.
At first, both TumbleOn and rTimer kicked me over into a deep depression – nobody gave a fuck. We didn’t know what we were doing, I guess.
We started to suspect that maybe the reason there weren’t great Tumblr apps on the iPad was because there’s no money in great Tumblr apps?
Then, in time, we got over ourselves. I noticed in an airport one day that the only people using iPads were 50 year olds or 4 year olds. None of the teens and twenty somethings who actually like Tumblr or know what Tumblr is. We realized we had engineered a product for a device our target market didn’t care about.
We spent a season of the following year, 80 hour months, again, making an iPhone variant of TumbleOn, and finally, success. Finally, TumbleOn started selling well.
After a year and a half of scheming, cramming in features, listening to user feedback, the works, we had a third party Tumblr app that made a decent enough amount of money. For a month or two we made $1000, then $1500, then $2000.
We considered the possibility of quitting our jobs. Maybe hobbies could pay the bills? Especially hobbies like TumbleOn, with some 2000 hours of love per person invested in the product. Silly things like rTimer wouldn’t fly, and there was a good ethical, justified reason for that, right? rTimer took 40 hours to make, and TumbleOn took man years.
Then TumbleOn made $2500 in a month, then $2000, then $1500, then $1000, then it leveled off at making between $200 and $400 every month – not nothing, but split three ways, not enough to continue investing our time on the software.
Just when we felt like we knew what we were doing, we learned we hadn’t a clue – back to the day jobs, I guess.
One winter day, when I was 12, James or I had the bright idea to stop following the marketing. We left our useless fishing lures at home, and just bought some worms. We went over to the shack over in the marina – 4 tin walls constantly fighting a nasty, cold, and unforgiving wind.
That little shack was the best, they had these little space heaters hanging from the ceiling every so many feet, so you’d see these fishermen who didn’t know each other all huddled up under the space heaters, getting to know each other.
Bonus: When the water is freezing cold, space heaters make the water just warm enough to bring the fish in.
Some old guy told us that was why we were catching so many fish, the space heaters. We were catching these little 3 and 4 inch length perch left and right – the two of us were having a blast. By the end of the day, the both of us had two trot lines with 20+ perch each.
The old guy who was sure it was the space heaters laughed at us and with us throughout the day. He was using lures and waiting on the big one. He was waiting for a striper that as far as I can tell, has never existed in Joe Pool Lake over near Arlington Texas.
The old guy kept waiting and waiting, every cast with his infomercial lure a little lottery ticket – every cast an idle hope at winning big.
That night my mother thought me ridiculous, diligently fileting my 25 perch – every filet a half bite of food at best, all 25 of the fish making almost a full meal for me alone.
One time my father drove through fog that looked like ghosts to a lake to catch catfish with us, that was my most favorite fishing trip ever – the fog made the day feel ethereal, special, like we had visited some foreign land that only existed in that moment.
My second favorite fishing trip was the day James and I learned that lottery tickets are bullshit, and decided to have some fun instead – the day we caught fifty or more fish nobody in their right mind would bother taking home.
Over the years I’ve taken my fair share of lottery ticket attempts. Solving ultra important Duke Nukem 3D map communication problems, and figuring out how to send a bootlegged Nine Inch Nails mp3 to my friend Greg reliably.
Somewhere I’ve still got photos of a couple of $20 checks I received in exchange for entire summers of 17 year old effort.
TumbleOn has bought me a nice laptop, and my wife and I went on a trip, in exchange for so many hours spent on the thing that I might as well have had a 7-11 gas station job that would have paid more.
TumbleOn – that was my moment. Building something with friends, finally, after years, with the know-how to give the thing the best shot it could have had without breaking our bank on marketing.
We started counting images viewed per second in TumbleOn, and I was laid off from a startup full of know-it-alls, not unlike Russell’s hash code fans, I was laid off the very same day TumbleOn overcame 1 million photos viewed per day.
As the tidal wave passed us, TumbleOn maxed out at a steady 2.5 to 3 million photos viewed every day – viewing photos on Tumblr on your phone or iPad is an esoteric niche hobby, it seems – shared by thousands, but not millions. A revolving cast of 4,000 or so users use the app every week and there have been billions of photos viewed, thanks, in some small part, to us.
When I started TumbleOn, the sky was the limit. I aimed to quit my job and make apps forever, forever solving Duke Nukem 3D communication problems, stacking “passive income” over years and years. Indeed, as TumbleOn started climbing toward $2000 per month of income, it seemed as if all I’d need to do was seriously invest in an app until it made it – I just needed to stick with the lottery ticket and follow through.
When rTimer was released, it made about $10 the first month it sold, and the second month, and the third. Figures, right? Right. I didn’t put a lot of sweat into the app, so in this big make believe software engineering meritocracy world of ours, it makes sense that I didn’t have any success there.
Except, I did.
These days rTimer clocks $150 to $200 in income per month – while TumbleOn makes a slow and steady crawl downward toward zero. TumbleOn, the app we invested man years of effort in, one really expensive lottery ticket in terms of time, made $2500 in one month once – but it doesn’t anymore.
Meanwhile, rTimer, that 40 hour “I don’t know what I’m doing” app, rife with the worst Bakercode in existence, makes more or less the same amount of money as TumbleOn, and will continue to, long after Tumblr fades into wherever when Yahoo or the next Yahoo finally ruins it for everyone.
Financially speaking, TumbleOn was a wash – it will *never* make an ROI per hour invested that rTimer has made, but our hobby project has rewarded us in other ways.
So many evenings spent responding to user emails; so many evenings planning the next version; so many evenings coding the next feature that we were certain would make a difference and raise TumbleOn’s star – we were determined to have our moment, and we did.
For our man years of effort, my friends and I achieved a level of success we will not likely achieve again in our lifetimes – knowing we touched the hearts and minds of thousands of users.
It’s quite something to know that our after-hours hobby has been a part of no doubt millions of special moments for people we’ll never know – someone catching their breath and wiping tears after seeing their first lolcat; a teenager showing his class mates his collection of rare tasty memes he’s found with TumbleOn – begging them not to steal any; a budding photographer seeing inspiration in other’s work; a child identifying animals by name from theanimalblog; and so on.
My friends and I have put some afternoons into our fair share of lottery tickets, always hoping to touch the world in some way – to leave some dent, no matter how small, to create something bigger than ourselves.
Some of these lottery tickets pay a little, and many pay nothing at all, but the life lessons; the pride in our efforts; the emails from users; the billions and billions served image count; these things make the effort worth it, every time.
I still have no fucking clue what I’m doing. I’m not sure I’ve got another TumbleOn or even another rTimer in me. But I do know that no matter what we create next, I’m done with fishing lures and believing the infomercial marketing about one lottery ticket being better than another.
If you’re having fun, who gives a fuck if it sells?
Music: VNV Nation – Automatic / Judgement