A day and four months in the life of a CTO for a startup developing mobile social casino games.
Inspired by the "day in the life" blog post of the Producer I decided that I would make my own post from the perspective of the engineer/CTO in a start-up. But mine blog post would have blackjack and hookers slot machines!
In fact, just forget the blackjack!
End of January playable
8:50 The first alarm goes off.
Am I awake?
Am I conscious?
The previous night I left the keyboard around 3AM and finally fell asleep around 3:30AM after reading a few pages in the first Sandman graphic novel.
I hit "dismiss" on the alarm after a few seconds. I roll over and my fiancee is missing from the bed. I become a starfish, sprawling out in all the space available to me. My fiancee was up early dealing with one of the European board members for the IEEE SOI technology conference that she organises.
9:50 The second alarm goes off and I drag myself out of bed. Quick wash, dress comfortably, clip on the Fitbit fitness tracker. Pointedly ignore all notifications on my phone about anxiously pending emails to read and voicemails to listen to. I don't always achieve but always aim for the first productive hour of the day to be spent creating great work. Google Calendar lets me know there's a Santa Monica New Tech meet-up tonight that I should be attending. I'm undecided whether I should go, I'll have to see how the day shapes up.
10:00 Downstairs and make two cappuccinos on the Jura J9 coffee robot for me and the fiancee. I've gotten lazy. Six months ago I would make these by hand on the regular espresso machine. Since quitting my day job in September 2012 to spin up this start-up, right at the time I brought my dedicated office coffee machine (the J9) home with me my manual espresso shot slinging skills have plummeted.
Prepare food for all of the animals using up the last of the renal diet cat food that I purchased for my ailing cat that passed in January. Feed the two cats and dog milling around my feet looking for breakfast even though the Pet Feedsters (Arduino hacked to permit web browser control from my smart phone) have been quietly and dutifully doling out dry food for them regular as clockwork since yesterday's breakfast. I guess they crave novelty and difference as much as I do.
10:10 Scan a few news items on the Google news feeds on the iPad and drain my first cappuccino. Walk the dog around the block.
10:23 1,100 steps logged so far today as I climb the front steps to the condo. The heat of the day is already coming on.
I feed the stray cats across the road making sure they all survived the night. We heard a coyote in the neighbourhood the past few evenings and worry about the strays we tend. We lost two in 2012 to speeding cars on the road and one of my own cats passed just a month earlier, please let's not lose anymore for this year. Fresh water for the cats because the local racoon population, the momma racoon we call T-Virus and is tame enough to handfeed, always upends the water bowl and turns the ground in to a mudpile.
Back to the condo and make a second cappuccino then head straight to the office on the top floor. Open the blinds on the West facing window. With the Sun still in the East it's turning out to be another beautiful February day in Los Angeles. Power up all the monitors on my desk, lightly shake the Logitech G700 to bring the machine out of sleep mode, flip back and forth idly between the Unity 3D editor and Visual Studio and my Trello board as I rebuild my mental map of what I need to do.
Programming has begun... sort of.
I'd like to say "code pours forth from my fingers" but in actuality I just poke at the free spins feature resisting the need to start building out a large chunk of foundational code but knowing that to implement the feature properly I need to. I open up Microsoft OneNote and write out six ideas on possible ways to do it quickly.
Eventually I remind myself that I wanted this game specific game engine built for the long haul. I have maintained near zero technical debt and want to keep it that way. I start detailing, in a freeform style all the tasks necessary to build the feature. I convert those over to Trello and dive back in to the code.
I'm not in the code five minutes before...
11:20 I take a call from my business partner. Told to check my email. Important discussion ahead. He had a meeting the previous evening with the CEO of another company who may want to do a joint venture or even a possible merger. Is it too early for this? Is this something we want?
There are three points we cover: Work-for-hire, joint venture, or an entirely new entity. I am not enamoured of the third option - is this a pivot too far? We talk around it for almost 90 minutes but it is all up in the air right now until we have more solid information.
Now I'm here I might as well check the rest of my email. Several recruiters and spam emails from Monster and Cybercoders. Here's an out-of-scope AKA "never in a month of Sundays" licensing opportunity with a business that saw my post on LinkedIn about our imminent game release and desires our games for their free, casual, web based, low traffic casino website. I politely decline. The only one of any importance this morning is from my business partner so I can move back to programming tasks. I quick scan the Unity 3D forums for intriguing posts but don't find anything that piques my interest.
12:47 I write out notes in OneNote of what we talked about. I go back to the slot machine code.
Where was I?
Hmmm… that feature.
Damnit! Utter frustration. Too big to attempt right now and I am pre-occupied with what we just discussed. I poke fitfully at some key frames in the Unity 3D Animation window trying to achieve a decent pulsing glow effect for the free spins button instead.
13:30 A quick lunch. Wash rice. Microwave for 18 minutes whilst I catch up on Techcrunch. 13mg of curry powder and other spices. 100ml of water. Make curry paste. Break egg in wok. Scramble it. Fork over rice and stir fry in to scrambled egg. Add curry mixture. Throw in shaved carrots, celery and diced bell peppers. Serve in bowl. Burn mouth as I absentmindedly wolf it down returning to my desk thinking about ramifications of a third business entity. Open Perrier water bottles. Make note on Remember The Milk to restock water on next Costco run.
13:42 I drop the blinds on the West facing window as the Sun is now past the zenith and is hitting me right in the eyes. I eat lunch and drop some witty repartee in to my Buffer queue to be posted on LinkedIn and Twitter tweet stream. I say something mean about recruiters/head hunters, which is always good for a laugh from the engineering crowd but is also the equivalent of joking about airline food… "Airline food? So what's up with those little packets of peanuts? Seriously..."
13:58 I am back in the code for the free spins. StackOverflow reminds me of the syntax for converting a generic List in to a generic Dictionary. After a few minutes of fiddling with the lambda expression I get rid of the compiler error and then realise I don't actually want a Dictionary, I actually want a SortedList. Test the code on the iPad to make sure the AOT won't have a hissy fit with the LINQ expression I just put together.
15:00 I am craving good chocolate. Every scrap of British Christmas chocolate in the house has been consumed. There's two packets of Scampi Fries in the stash and that much salt only goes well with a decently cold Blackthorn. Too early in the day to start drinking that with coding to be done. I go downstairs and take it in to my head to make homemade toffee. This stuff will rot teeth and extract fillings.
15:37 Chatting with my business partner on Google about my concern of the third option to form a new business entity. We spend another 60 or so minutes discussing possible issues and resolutions should it come to pass. Most of what I say is unintelligible due to a wedge of warm toffee sticking to the roof of my mouth. I hang up when my business partner has to rush off and take another incoming call.
I am feeling conservatively better about the possibility having talked it through. I shall withhold judgment for now as my past start-up experience in making deals tells me it will most likely never come to pass.
Am I being too negative?
In my notes I resolve to take a "wait and see" stance. If we pull it off, maybe it'll be for the better, it'll certainly be a financial win.
I start work on my fourth cappuccino of the day. I break open another pound of Groundworks coffee beans and refill the J9.
Important tip: Cappuccino sans sugar does not taste good after toffee.
16:15 The toffee turned out surprisingly well for something I hadn't made in 20 years. I had to put it in the fridge so that it would pop out of the molds easily and then smack it with a rolling pin to break it up. I made enough to give away to people at the next tech meet up I attend in L.A. Not the Santa Monica New Tech at Cross Campus tonight, that would be a complete social faux pas I think, it needs to be a smaller meet up, more intimate. I can use it as an ice breaker. Or maybe a tooth breaker given how glutinously grabby the toffee turned out. More code before I have to get ready for the meet up.
17:12 Fiancee calls out from the office next to mine, shattering my concentration with her question "How do you spell vociferous?"
I respond "G. O. O. G..."
"I don't have time for that, just tell me!" she declares.
I crank up YouTube on the Rubicon audio monitors in response
18:35 A quick walk of the dog around the block and it will be time to head out the door for the 19:30 Santa Monica New Tech meet up. I make a final espresso shot for the road and I'm off.
- Business cards: Check
- Fully charged iPad: Check
- Latest build of project on iPad: Check
- Wallet: Check
- Fully charged phone: Fail. I'll charge it in the car.
- Latest build of project on phone: Check
- Laptop with power brick: Check
Traffic on the Southbound 405 is always unpredictable, doubly so with it under construction. I sail over the hill from Van Nuys to Santa Monica in a record 24 minutes even though there's a light drizzle. The ParkMe app is having connectivity issues, probably the weather messing with the iPad, and is the first time it has failed me in months. Oh noes! I have to find a parking spot like other people do! I spend the next 20 minutes circling Cross Campus looking for an available parking space that won't run afoul of the byzantine Santa Monica parking permit bylaws. This is almost as bad as that time my GPS broke down in Seattle and I couldn't remember where the hotel was located that I had been staying at for the past two weeks.
20:30 It's a fun meetup so far. I get to hear some good startup pitches from those presenting. Made a few useful contacts that I need to follow up on over the next few days.
20:45 Dodging several "I just need a programmer that can work for free for a few years" type pitches from first-time entrepreneurs looking to cut me in on their grand idea for 5% of the future profits during the schmooze at the end.
21:10 I drive, one hand on the wheel and the thumb of my other hand furiously rapping out a continuous tattoo of Morse code in to my smart phone via the makeshift, Bluetooth connected keyboard. I am making notes of tasks to be completed and features to be implemented when I get home and my thoughts of potential issues with a third or fourth or more person in the business mix. The smart phone is tucked away in the front pocket of my bag sitting behind me on the back seat and any spelling mistakes that I am entering in to Evernote will be fixed when I get back to my desk.
Traffic on the hill Northbound is slow. There's a pickup stalled in the middle lane just South of the Skirball exit. Once past the breakdown I sail down the other side of the hill in to the glimmering lights of the valley.
22:03 I make it back to my desk. Open a bottle of Lemon Perrier and crank up ATB's "Seven Years" on iTunes. It has been a "programming-lite" day and I need to crank out some code to make me feel better about myself. High BPM electronica is a signal to my brain and my fiancee that I am head down and cranking on hard technical tasks. It is the audio equivalent of hanging out the "Do NOT disturb" sign to everyone in the house.
Free spins is turning out to be a monumental task that is effectively an entirely separate play mode with lots of special case edge conditions.
I've wildly underestimated the amount of work it will be.
Visually on-screen it's just a glowing button and a progress bar and a simple animation of some numbers rolling up. In actuality it touches several sub-systems that will require me to either shoe-horn in several hard-coded if-tests that make my brain itch just thinking about them or I bite the bullet and do it right. We have to ship this damn game, the pressure is on, it's beginning to drag on a bit longer than either myself or my business partner estimated but there's still quite a bit of work to do on it once this feature is finished up.
00:15 My fiancee is heading to bed. She comes in to say goodnight, we talk for a few minutes about nothing in general and then she leaves.
I contemplate killing the free spins feature entirely for our release version and then adding it back in post-launch but my business partner was quite emphatic that we needed this. I start thinking about building a business case by reviewing other mobile casual slot machines out there that went to market without a free spins feature.
01:19 The smell of woodsmoke drifts in through the open window. I suddenly realise how chillled it has gotten in the room. My feet are propped up on the top of my APC uninterruptible power supplies beneath my desk, my heels hungrily sucking in the warmth. "Why does ATB's Chapter One from Distant Earth never seem to go anywhere?"
And then I dive back in to the code once more.
03:17 I'm nodding off at the keyboard. I've caught myself falling asleep twice. Deadmau5's "4x4=12" isn't even keeping me awake now and it's time to wrap it up.
I fire up OS X and kick off a build to push out to Testflight and our Asylum Labs QA website for people to take a look at. It takes me four attempts to type in "ant full-build" before I get it right. Yeah, I'm that tired.
03:30 Five or so hours of straight programming. I half-heartedly move a few tasks around in Trello trying to make sense of what I have done that day that advances the game project.
I perform a code check-in to Bitbucket neglecting to run the automated tests but too tired to care. I'm sure it will bite me tomorrow when I come back to the keyboard. I'm mentally exhausted. I've inched the free spins feature a little further forward, squashed two bugs and modified the asset cook script for new font graphics.
Was it enough? Did I do good?
I stagger away from the computer leaving it to put itself into sleep mode. I live in fruitless hope that I'll be conscious enough to wake up to my 8:50AM alarm, but I doubt it. I shoo the dog off the bed.
So far beyond tired I forget to take the Fitbit off of my pants and throw it in the basket like I normally do. This isn't the first night I've face planted on to the bed on top of the covers fully dressed when building a start-up - it won't be the last.
My fiancee retired to bed hours ago and as I drift off beside the love of my life I realise I've spent another day trying to make something that will permit me to spend the rest of my life with her and maybe not work so hard.
Maybe that will be tomorrow...