May 19th, 2019

Bike to Work Day

When I was 11 years old, I biked for work; delivering ~20 papers along a ~1 mile route with a fairly steep hill. Alas, none of my jobs post-college have really been bike-able, given nearly all of them have been in San Francisco; and there isn’t a bike lane all the way across the Bay Bridge (yet).

The one exception was a period of time in 2004-2005 when the main office of CafePress was in San Leandro (they moved to San Mateo ~10 months after I started). Some days I would bike 1.7 miles to the West Oakland BART station and then 2.3 miles to the office from the San Leandro BART station, but that doesn’t really count as “biking to work”. It turns out I could have biked the whole way if I’d been willing to ride on some not-so-safe streets and/or known about the dirt/gravel trails. I partially blame the lack of Google Maps cycling directions at the time (in fact Google Maps had only recently launched and it was an accessory to getting me in trouble with HR, but that’s a story for another time). Plotting a route from where I used to live to the former CafePress office indicates it’s a little over 12 miles and an hour each way; so not necessarily something I would have done often, but certainly doable.

The last significant distance I’d traveled on a bike in one shot was almost 3.5 years ago when I biked 7 miles to the (then) terminus of the bike path on the eastern span of the Bay Bridge.

The old eastern span was still in the process of being disassembled.
Two “bridges to nowhere” side by side…
The view of Treasure Island from the previous terminus of the bike path.
An artsy shot of the new eastern tower.

An officemate who goes on 20+ mile bike rides for fun on the weekends mentioned Bike to Work Day was coming up, on a day she was schedule to work in Mountain View. She had signed up for a group ride and I should do it too. I looked at the map, it would be a little over 53 miles door-to-door, one way and I’d have to leave my house around 4:30a to meet the group at Lake Merritt in Oakland at 5a. Along the entire route, there was very little elevation gain other than the climb over the Dumbarton Bridge. I had been exercising regularly, my bike was probably in reasonable shape. I was also planning on working from Mountain View that day and it turned out another co-worker would be doing a ride from San Francisco. I’d thought about doing this in the past, a former co-worker and his girlfriend were currently on a 10,000 mile bike ride from Alaska to Argentina, what excuse did I have not to go?

Well, maybe the fact that the last time I biked more than 7 miles in one go was nearly 18 years ago in 2001? I had planned on doing the California AIDS Ride, 575 miles from San Francisco to Los Angeles, but the startup I was working at was falling apart, and with it went my matching sponsor. I documented a few of my training rides, but did not end up participating.

29 mile Briones Reservoir Loop (1300+ foot elevation gain)
35 miles on Hwy 1, north of Bodega Bay (~2000 foot elevation gain)
59 miles on and around Mt. Diablo (2700+ foot elevation gain)

So yeah, one time in my life I had biked 53+ miles in one go, I had no time to “train” for this ride, I’m significantly older and likely in worse shape; hmm, that’s more than one reason not to do this. Nevertheless, I bought a couple of spare bike inner-tubes and a portable pump, tuned up my bike as well as I knew how, rode it around a couple of blocks the night before and set my alarm for 3:45a.

The morning of the ride I had a big bowl of cereal for breakfast, packed my bike supplies, 2 liters of water, some granola bars, a change of clothes and my laptop into a backpack, threw on my reflective vest, helmet and bike lights and at 4:25a I was off. At 4:40a I realized I had forgotten my cell phone, but if I turned around to go back and get it I would not be able to meet up with the group (in hindsight this was likely wrong as people were late and if I sent a message as soon as I got my phone, that I too was going to be late, they’d have waited). Instead, I was the second one to arrive at the meeting point at 4:50a and already had my first facepalm moment to share with others (so yes this means no more pictures in this post, no Strava route times etc. you’ll just have to trust me).

My office mate had decided not to go after getting sick over the previous weekend and a couple of other people also cancelled, but we still had a good sized group of 9. Some people seemed fairly serious about cycling i.e. padded cycling shorts, clip in shoes, hydraulic or disk brakes, hydraulic shifters, aluminum frames etc. Others, like me, had flat pedals and sneakers, steel frames, non-cycling clothes etc. I even had part of a child seat support attached to my frame because it’s way too much trouble to take that part off (I of course didn’t have the seat itself attached). The group leader mentioned he planned on staying on dirt/gravel trails as much as possible to keep us closer to the bay and away from the cars, that sounded good to me. He followed that up with, “I usually do this route in about 2h 45min, but happy to go faster or slower”. Yikes, I had presumed this would be a 4hr+ ride given the amount of gravel/dirt trail that was planned. I think this is roughly the route we took: https://goo.gl/maps/GH8bQcxt16QyiAB76. It’s not the shortest, but it stays as close to the bay and out of traffic as possible.

We left at 5:10a and had our first flat tire within 20 minutes, hadn’t even made it to Alameda yet. I hadn’t invested in a water bottle cage so the timing worked out well to have a drink and a snack. We probably made it another 60 minutes before we had a second flat and at almost the same time a rider fell (minor cuts on the hands). At that point we had made it past the Oakland Airport and the person leading the ride said he had to go on without us since he needed to be showered and changed for a client meeting at 9a.

We proceed without incident to the toll plaza of the San Mateo Bridge. The ride along the bay had been quite nice, the skies were overcast which meant no view of the sunrise, but also comfortably cool weather. We met a woman on a mountain bike (enjoys spending weekends in the Santa Cruz mountains, Joaquin Miller Park etc.) She had started the day in Castro Valley and joined our group as she was on her way towards an office on Hwy 84 just before the Dumbarton Bridge; and that was how we were going to cross the bay. We suffered our final flat tire along the way, and after she left our group, made our way to the bridge.

By this point I’d biked over 35 miles, and even though it had been mostly flat, much of it was pretty bumpy and my body was starting to feel a little sore. Perfect timing for the first significant headwinds and incline. It was a great feeling to be moving faster than all the traffic on the northern side of the bridge (heading east/west) but it totally sucked to have the bike path on the southern side with oncoming traffic speeding along at 50mph+ (west/east). Every time a truck or bus rocketed by it was a face full of exhaust and a force trying to push me back down the bridge.

Once down, the rest of the ride went smoothly, no flat tires, no falls, and we rolled into work just after 9:30a. While the soreness in my arms and legs was gone by the next day, it wasn’t until a few days later that I could sit comfortably on my bike again.

February 21st, 2019

RIP Sweet, Tender CafePress

Somewhere along my circuitous route through paid employment I spent ~21 months at a company called CafePress. I met some great people, learned a lot and as part of the offer letter, received Incentive Stock Options (ISO) in the not-yet-public company. My previous encounter with stock options did not result in anything material i.e. my offer letter included them but shortly before the 1 year cliff the company shrunk to 4 people (including me) and I left a few months later without exercising anything when the company ceased to exist. While access to information about the mechanics of start up equity has increased significantly over the last 15 years, it rarely hurts to have more information and real-world examples.

Deciding to leave CafePress started a 90 day timer during which I either needed to buy my ISOs and pay taxes on the capital gains between the strike price and the current valuation, or forget about them (it was 2006 and startups had not yet gotten around to converting ISOs to non-qualified options [NSO] with longer exercise windows, oh well).  I had 8,750 shares at a strike price of $0.25/share. The then current valuation was $0.75/share, so that came out to $2,187.50 to buy them and then a taxable gain of $4,375 which set me back another ~$1,300. So I plunked down ~$3,500 figuring what the heck; there had been talk about going public in the next few years and I believed in the company (I just didn’t want to commute to San Mateo anymore and wanted to work on much larger problems/systems/datasets etc.) If the stock made it to $10/share that’d be the biggest lump sum of money I would have encountered to date by an order of magnitude. If it made it to $20/share I could self-fund a multi-year sabbatical etc.

A few years later, a company called SharesPost opened up a private equity marketplace and after a while CafePress appeared in their listings. If I had been willing to part with at least 5,000 shares I could fetch ~$5/share. I didn’t fully understand the process or fee structure and given the economy had recently collapsed, figured there was still significant upside in the future presuming things eventually recovered.

CafePress ended up going public nearly 6 years later, but before doing so, executed a reverse stock split i.e. I now owned 4,375 shares with a cost basis of $1.50. On 2012-03-29 PRSS opened at $19/share, rose to a high of $22 and then closed at $19.03.

CafePress ringing the opening bell at the NASDAQ.

Some friendly faces enjoying the moment.

Not too bad, had I been able to cash out right then, I could have purchased a Tesla Model S outright. Sadly, the stock never again traded above $20 and by the time the 180-day lockup period I was subject to ended on 2012-09-24 , it had experienced a steady drop to $9.32/share. I figured even if it were to go up again in the future, it would be prudent to offload a chunk.

Unfortunately I hadn’t paid attention to the state of my shares. I left them with a company called ComputerShare during the lockup period and it turned out I could not sell shares through ComputerShare as they were just a holding/transfer company. The shares needed to be transferred to a brokerage and none of the ones I had accounts with seemed to be able to accept the transfer electronically/immediately. So by the time I had figured out what needed to happen, assembled and sent all the forms, a few days had passed by. Then there was a weekend, processing time etc. In hindsight I should have sent the forms overnight express or paid to use a fax machine, as by the time I could finally access the shares and sell them on 2012-10-11 the share price had dropped below $7 i.e. a paper loss of ~$12,000 (after the taxes I would have owed on the gains) due to stupidity.  On that date, I liquidated 1,375 shares at an average price of $6.635/share 

In order to calm down, I kept telling myself this was all icing on the cake since the number of startups that actually have a liquidity event is small. The next day I sold another 500 shares at $6.02/share. The stock continued to decline but then bounced back a bit in early November. I sold 500 more shares at $6.15 on 2012-11-07, 1,000 shares at $5.01 on 2012-11-08 and 500 at $5.50 on 2012-11-14. At that point I only had 500 shares left and had sold 3,875 shares at an average price of $5.927/share. For 2 years after that the stock bounced around between $5 and $7/share and then in Q4 of 2014, it cratered to ~$2/share.

I still knew a few people who worked there and felt horrible for them, because even if they were following their passion, growing their technical, social, emotional skills etc. having one’s company’s stock, and therefore part of one’s total compensation, lose 90% from the IPO is hard to digest.

A ray of light emerged during the first half of 2015 as the stock went up 150% to just over $5/share in early June, but I did not act. From there it declined again over the next year and a half to under $3. On 2017-01-31 it was above $3 and I decided to donate 300 shares ($1,011) so as to avoid paying any long-term capital gains taxes; even at $3/share it was still a 100% gain over my strike price.

Sadly, the stock price returned to its downward trend, eventually going below $1.20/share in early 2018. At this point I had decided I was going to just hold on to them “forever”. However in late 2018 I received a bunch of legal documents stating that Snapfish was planning to acquire CafePress via a tender offer for $1.47/share. There was some jargon in it that I think stated I could lead a shareholder revolt etc. to try and block this, but once Snapfish had a majority stake they would not be anything I could do. So I did nothing and as I work on my taxes for this year, I’ll be claiming a $6 long-term capital loss for PRSS.

October 5th, 2018

Real World Rollback

When doing anything, it’s always a good idea to have reasonable a way to undo it. Sometimes reverting something, while possible, requires too much effort or costs too much. On rare occasions, it may be impossible and one is faced with a “point of no return”. If dealing with digital data, the standard process is to restore from a recent backup.

My first introduction to computers and writable storage involved 5.25″ floppy disks and cassette tapes. The saved data consisted of typed documents, which often ended up being printed. Worst case if the electronic copy disappeared, I could re-type the documents from the printed version. And of course if I lost the printed version, another could be easily generated from the digital file.

By the time I started writing software, the source code resided on a hard drive inside the computer I was sitting at; the stuff I really cared about would also get copied to a 3.5″ floppy disk and then it would be set as read-only. There was no geographic redundancy, those disks resided a few feet at most, from the computer. There was also no water/fireproof safe; but if the hard drive failed or I fat fingered a command, it might take some time and I might have lost some work, but I could recover something. As time passed, I began to use source control, CDs, DVDs, network attached storage, scheduled offsite backups etc. to minimize the amount of lost work. Storage is not infinite, or at least not free, so backups often get deleted after some time, thereby somewhat limiting the window in which one can successfully restore from a given state.

As I began writing the type of software that got deployed to and run on other machines, “undo” became more difficult. The standard process was to rollback to the previous version i.e. a backup, but that only covered the software, not the data that might have been generated, mutated, corrupted etc. Sometimes restoring data from a backup was an option, but more often some sort of cleanup or back-fill needed to take place, or worse additional defensive code had to be deployed to handle cases should corrupted data be loaded and processed. On some occasions, the least traumatic option might be to roll forward i.e. live with the problem a bit longer and just deploy an update with a fix.

Still, as tedious and onerous as building, maintaining and executing these processes might be, they’re all in the digital realm, at least one layer of abstraction away from the physical “real world”. I hadn’t given much thought to how and when things get rolled back or forward in the “real world”. If a stop sign is installed improperly, one could rollback but it’s probably easiest to roll-forward. If a high rise apartment building starts to sink and tilt after people have moved in, it’s not realistic to rollback or obvious how to roll-forward.

For the majority of work days during the last twelve years, I’ve taken a public Alameda County Transbay Bus from the East Bay to San Francisco. For the first four years the ride ended at the Transbay Terminal. For the last eight years the destination has been a Temporary Transbay Terminal. A little over a month ago, it became the Salesforce Transit Center.

My walk to work took me past the temporary terminal and one morning I decided to take a few photos as the plan was to tear it down and build housing and a park in its place, and I had no reason to believe it would ever be used as a terminal again.

Temporary Transbay Terminal

Jaywalking Safely

I even “jaywalked” across it a few times since it was safe; while it was in use the supervisors would loudly chastise (rightly so) anyone who stepped out of the crosswalk since it was not only dangerous for the pedestrian, but it slowed down the flow of the buses. However, within a week a chain link fence had gone up around the whole block, can’t have nice things.

My rides home from the new transit center offered a nice viewpoint of an interesting mural and what appears to be some sort of staging area for the construction.

Leaving the Salesforce Transit Center

But then only a month after opening, they discovered a crack in a steel beam. I remember walking by a worker on a ladder the previous day who was working on the ceiling with a circular saw. The scene caught my eye due to the numerous sparks flying everywhere. Perhaps it was that worker who discovered the crack while continuing his work the next day. All of a sudden, portions of the chain link fence were removed and the Temporary Transbay Terminal was in use again, quite a size-able rollback in the “real world”.

At the time it was unclear how serious the crack was or how long it would be until the transit center would reopen, but the reports were optimistic. So I decided to take some more photos of the temporary terminal in action before it was too late. As it turns out, there was no rush as it’s likely to be at least a month. No more jaywalking…

Temporarily Reinstated

Back to Waiting for the Bus Outside