Rules over Safety

Last year, MUNI removed a few seats from the front of its standard electric buses by permanently locking them upright. They did this due to safety reasons: “these seats do not have a barrier in front of them to protect a person from falling in the event of a sudden stop or collision.” (link)

It’s easy to read through the lines to glean that the bus manafacturers and likely the San Francisco Municipal Transportation Agency have done this to protect themselves from litigation in the case of an accident, and not in the true spirit of making the bus safer. The bus makers have said: “Here’s the way you should use our buses. If you color outside these lines, it’s on you.”

What happens in reality? For those who have an even passing knowledge of SF transit knows that the buses get incredibly crowded — if there’s a place to stand where a seat isn’t, someone will stand there. Now, instead of someone sitting on a seat where they might be thrown forward, that person is now standing in a spot where they may be thrown forward, and due to centers-of-gravity and torque and all those other fun Newtonian physics concepts, it is more dangerous. It is a common sight to see someone half-sitting, half-leaning on the raised seat, poking at their phone. A sudden stop would send this person over top a row of sitting people versus hitting the single person in front of them.

This is a good example of a policy enacted by fear of litigation over safety but still publicized as being done “for your safety.”

Hello, Slack

Two weeks ago, I started at Tiny Speck as their engineering manager, working on Slack. Slack is getting bigger in almost every way that matters and I'm excited about getting to take part in it.

So what does taking this particular role at this particular company mean to me? It means I'm working for the same people that built the company that hired me that moved me from the east coast to San Francisco. It means I'm managing at a company that shaped most of my thoughts about software development and how to build products that people love. It also means I get to take those experiences and principles and help build frameworks where we keep doing those good things but at a different scale than we are all used to.

So, is this a little scary? You betcha. Am I excited? Oh yeah.

A Tahoe Trip

Meghan and I got back from Lake Tahoe this afternoon. We shared a house in Incline Village, Nevada with her parents and three brothers who had flown out from Tennessee. It was a relaxing week of eating, drinking, skiing, reading, and catching up with the in-laws.

A Train Adventure in Italy

A couple of months ago, my wife and I went on a two week vacation to Europe for our 5th wedding anniversary, splitting our time between Paris, Rome, and Cinque Terre. The first leg of our trip was in Paris where we spent a few days exploring the city. From there the plan was to take the TGV to Milan so we could see the Alps on our way to Vernazza.

Our destination after Paris was Milan–specifically the Porta Garibaldi station. This station is the main hub for the high-speed, long-distance trains like TGV. To get to Vernazza, once in Milan we had to transfer to another station, Milano Centrale. These two stations are less than a mile apart but with our luggage and general unfamiliarity with all things Italy, we gave ourselves over an hour to get from one station to the other. In the worst case, we could grab a cab. (Below is a map of Milan with P. Garibaldi on the west and Centrale under the marker.)

View Larger Map

In my research of planning this train ride, I discovered that you could buy full trips in advance, so I did. I had tickets that would take us from Paris to Milan, Milan to Sestri Levante, and from there onto Vernazza. I was confident, prepared, and had no idea I had already messed up.

The morning of the trip, we walked the mile from our apartment in the Bastille to Gare de Lyon. Gare de Lyon is a huge transit switching station, serving TGV, RER, as well as the Paris metro. If you are a train in Paris, this is your Champs-Élysées.

Gare de Lyon

Our TGV train left on time and we were soon zooming through the French countryside. We sat in front of an older Australian couple, who both seemed to have generic digestive issues, belching loudly and passing gas, much to the dismay of the coutured French woman across the aisle from us, who would occasionally spritz her Chanel No. 5 in their direction which they, of course, didn’t notice.

The trip proceeded without event until we reached a small town at the foot of the mountains. Most of the stops we made were less than five minutes. This one dragged on for about ten minutes and there was a sense in the air that something wasn’t right. After about 15 minutes, a young, dark-haired girl walked into our car, crying and being escorted by one of the train attendants. They were speaking French but I got the sense she was looking for someone or something was wrong with her ticket. She eventually made her way out to the train platform and we left.

We trudged slowly up, and often through, the Alps. Eventually, one of the tunnels we went through popped us out into Italy. Upon exit of the tunnel, the train stopped. And we stayed stopped.

After about 20 minutes sitting less than a half a mile inside the Italian border, the conductor finally broke silence and announced that there was a medical emergency with one of our fellow travelers and we were waiting for an ambulanza. We sat for another 10-15 minutes while the medical staff attended to the sick person. After that was dealt with, the train started moving. The conductor said, through the PA that “we were delayed 16 minutes.” That wasn’t too bad. We still had about an hour to switch train stations.

Turns out “sixteen” and “sixty” sound approximately the same when said through a train’s PA system, spoken by a French train conductor whose second language was Italian and was giving a valiant attempt at English. I realized my mishearing after our arrival time came–and went–and we were in the middle of a giant field with no Milan in sight.

Italian countryside_46
Not Milan. Photo courtesy of prof50000 on Flickr.

We arrived at Milano Porta Garibaldi with about 20 minutes to spare before our Milano Centrale train left. I switched to Optimistic Mode (aka: Denial Mode) and laced up my shoes, imbued a sense of urgency to my wife, and then sprinted through a foreign station in a foreign land to a foreign taxi stand. If stars aligned, and Lady Travel Luck smiled on us, we’d be resting comfortably in a Trenitalia train cruising towards our coastal town apartment in just a few minutes.

But, there were no cabs. There were signs outside the door pointing towards where taxis normally should be but now pointed to an empty stretch of asphalt. We waited for a few more minutes but I knew our window had closed and it was time to figure out Plan B.

My concern now switched to not just finding a new set of tickets into Vernazza but to find a way to get there that day. Vernazza, being a small town off the main line, didn’t have regular train service after 8pm and it stopped earlier than most stations. In my original booking, I knew there were only two or three trains after ours. Time was ticking.

My first priority was to buy tickets from where we were to where we wanted to be as quickly as possible and then see about getting a refund later on. I went to one of the self-serve kiosks, and after assistance from a 7 year-old girl and a college-aged art student who knew a little English, I gave another 80 euros to the Italian train system.

Now that I had tickets that ensured that we wouldn’t be sleeping in Milan, I queued up to speak to one of the station’s service agents about a refund for the missed train tickets. The line moved slowly as there were two agents, one of which seemed to know half-a-dozen languages and enjoyed to talk and the other that spoke what I would call “Gruff Train Agent Italian.” I managed to get the latter. I gave him both our original tickets and the ones I had just purchased, in hopes that it was evident what went down. He focused primarily on the new ones and indicated that I had plenty of time to catch that train. I kept signaling through the glass towards the original tickets but to no avail. I looked longingly at the multilingual agent and then shuffled back to my frazzled wife, beaten by the Italian train system.

Our new tickets left from that station and took us to yet another Milan train station. At this station, we found our platform with plenty of time to spare. We just had to stand there and our train would arrive. Or so I thought.

Literally two minutes before our train was to arrive, an announcement–in Italian–was made and everyone surrounding us on the platform quickly went to the stairs, went under the tracks, and went to the platform over. Our assumption was that our train had been switched to another platform. So we followed the crowd.

This was a mistake.

At the new platform, I looked at the sign that indicated the train number. The new sign didn’t match what was on our ticket but the old one still did. The train at the new platform pulled up and everyone around us got on. I overrode deep instinct and decided to not follow the herd of fellow Homo Sapiens. We sprinted back, burdened by our luggage, to the original platform.

A train arrived, its number matching the number on the sign matching the number on the ticket and we boarded. I was 90% sure we were on the right train.

On this particular train, the cars were split up into cabins that had 3 seats across from 3 seats. We made our way to our cabin and found our seats. The only issue was that there were two business men in expensive suits already situated comfortably in our seats. I was now 35% sure we were on the right train.

I had been generally confused about transit things for hours, was drenched in sweat from lugging around a large suitcase in the heat, and assumed that the comfortable-looking business people were in the right and we were on a train to somewhere that was not Vernazza. In desperation, I showed the two men our tickets. They sighed heavily and then an intricate social dance ensued. One man stood up and leaned over to the woman across the aisle from him that from my vantage point had nothing to do with our seats or our situation. She packed her belongings, and she and the other man left the cabin. The first man then took the seat of the woman, leaving Meghan and me two now-empty seats.

Since this leg of the trip was about 3 hours, I had plenty of time to contemplate what had transpired. In Italy, you can buy two kinds of tickets. The first is what we originally had: specific seats on a specific train on a specific date. The second is what everyone else in the country seemed to have: permission to ride a specific route within the next 3 months. With the latter, you grabbed a seat and if a reserved ticketholder came by, you moved to the next empty seat. My guess is that the man that took the woman’s seat had a reserved seat, had let her sit there, and once we interjected our American confusion into the whole thing, he sat in his assigned seat, bumping her to the next cabin.

Now riding calmly, I read my Kindle and stared out the window at the gorgeous seaside towns, even striking up a conversation with a young woman who was an economics major in Milan who gave us advice of things to do in Vernazza. Things were going well.

At one point, with my Kindle in my lap, I leaned over to say something to Meghan. My Kindle slid off my lap and into the crack between the seats and fell under my seat, out of reach. The 5 other people in the cabin–my wife included–wanted to see what the silly tourist was going to do next. I surprised them all: I gathered myself and then did absolutely nothing.

About an hour later, after a couple of people from our cabin had disembarked in Genoa, I had room to attempt to rescue my Kindle. I crouched down in this cramped cabin and began to fight with the seat. By everyone’s intense interest, I could tell even the regular Trenitalia travelers had no idea how the seats worked. After fiddling for a couple of minutes, I discovered the seats moved in a very non-intuitive way, giving me just enough room to slide my sweaty arm under the seat to a point where I could reach my Kindle. I pulled it out and held it up with a dramatic, “Ta-da!” Everyone was very impressed, I imagined.

We reached Sestri Levante after dark. We disembarked and I sprinted to the ticket punch machine to validate our tickets to Vernazza. (These were the second kind of tickets I mentioned earlier, where you don’t have a reserved seat. Before you ride though, you use a self-serve ticket punch machine to mark the ticket on the date of travel.) I punched the ticket, went to the video screen to figure out which platform we needed to be on. Vernazza wasn’t on the screen, and our train was supposed to arrive in less than 5 minutes. “Oh no,” I thought, “Not again.”

I ran back towards Meghan, prepared to just hop on whatever train came next and let come what may. I found her talking to a group of people that were obviously tourists, sporting sunburns and speaking English. Turns out that they not only spoke English, they were American. And not only that, but they were from the same small city in North Carolina that we lived in before moving to San Francisco. Best of all, though: they knew which platform the train to Vernazza would come into. We followed them to the platform, chatted a bit more, and once our train arrived, we boarded and collapsed into our seats.

Waiting for the Train at Vernazza

After all that transit excitement, we spent three wonderful days exploring Cinque Terre and didn’t even bother looking into buying tickets for Rome until the morning we left.

What I learned from all this is that Italian trains are much closer to having schedules like buses and subways than airplanes. The system is built around things happening that change your plans. I learned not to expect to be in any station at any given time and instead buy my tickets for the next leg on the spot.

So when in Italy do as the Italians do: Relax and make your away across the country, one station at a time.

La Spezia Centrale

Tiny Tiny RSS, a Google Reader Replacement

Google Reader is being discontinued on June 30th. This is probably the web application I’ve used the most and for the longest so I was a little bummed when they made the announcement. I immediately started looking for its replacement.

I wanted the replacement to be something that had a liberal open-source license (so I could poke at the code and share patches) and something I could host myself to avoid having to worry about the whims of some big corporation’s product roadmap.

After some exploration, I found one called Tiny Tiny RSS. It used just PHP and MySQL, which meant I didn’t need to install or maintain any new things on my server. The code looked relatively sane and clean so I downloaded and installed it. Within probably half an hour, I had a very usable and surprisingly feature-rich RSS reader that even included an API. It’s also multi-tenant right out of the box.

The only caveat I had was that it didn’t have a usable mobile version. Today, I figured out that some kind developer had written a plugin that exposed a fever-compatible API which Reeder for iPhone supports. (Hint: After installing the plugin you have to enable API access for your account to make it work. In retrospect that seems obvious, but I had to printf-debug my way through the app to figure why it wouldn’t accept my username and password.)

Another your-URL-goes-here app

The end result of all this is that I have an RSS reader that will stay running as long as I’d like with no danger of it and/or my data being sold to the highest bidder along with a nice-looking iPhone app to read on the go.

This whole thing is also proof that the web can be resilient to vendor lock-in as long open standards (like OPML, RSS, HTTP, etc.) and the spirit that encourages them (like Reeder’s your-URL-goes-here screen) sticks around.

How Secure is my Dropbox?

The answer to this is: Secure as any other “private” content uploaded to the Internet, which is “not very.”

Dropbox is a widely-used service that lets you keep a specific directory in sync across many computers. Copy a file into the Dropbox folder on your work computer and it is nearly instantly available on your phone and your home computer. No more emailing files to yourself or scrambling to find a site that’ll let you upload a big file. They even give you a slick, web-based interface to browse your files.

This all sounds really easy and convenient which, unfortunately, usually means it’s not secure. The problem is that Dropbox stores your files on their servers encrypted in a way that they can read them.

First, what does one mean by “secure”? My definition of secure is that no one else in the world could possibly see the contents of something unless I let them. If it’s a text file, no one except me can read it; if it’s a photo, no one except me can see it.

For most of the files people want to share or sync, the security level of Dropbox is adequate. Disregarding that bug a couple of years ago where anyone could log in with any password, Dropbox is password protected and they recently introduced two-factor authentication, where you have to type in both your password and a short-lived, always-changing set of numbers from your phone. All connections between you and Dropbox go over SSL. This means no one can snoop on files you send to Dropbox and no evil person can trick your computer into thinking they are Dropbox.

From my limited knowledge of Dropbox’s internals, gleaned from reading a few security analysis reports, they do encrypt your files before uploading them. The downside is that they own the key to decrypt them “to ensure everyone has the ability to view and share files on the web painlessly.” Translated, this means that people-who-are-not-you can read your files.

I’ll assume that Dropbox, the company, follows industry standards for security. Only certain engineers get access to certain machines. Only certain support people get access to your files as necessary. Only code that’s been properly vetted for security bugs is deployed.

The weak spot in all of Dropbox’s efforts are the people. This isn’t a knock on Dropbox at all; people are the weakest spot in ANY security system.

Servers are constantly barraged by people trying to break in, and they often succeed. Support people sometimes stray and snoop at files they they shouldn’t. Developers write bugs that let random people on the internet get access to things they shouldn’t. It happens, despite best efforts in engineering or culture. People make mistakes.

If you’re wanting to keep your music in sync between computers, or want to quickly send a photo to a friend, Dropbox is great. It’s incredibly convenient. If it’s a file that you wouldn’t want another person to have, like your password file or financial documents, you don’t give it to Dropbox.

There is one (and only one) workaround to this though. If you encrypt a file on your computer before giving it Dropbox, they won’t be able to read it. 1Password, the popular password manager, takes this approach. They store your passwords in a file they then encrypt on your computer using high-grade encryption software. They then place this encrypted file into your Dropbox. Even if this file was to leak somehow, no one else but you could open it. Dropbox is purely the syncing service, which is still a handy thing to have.

The sad part of encryption is all the tools are terribly hard to use. TrueCrypt is probably the easiest of the bunch but there’s still a bit of learning curve to the terminology (partitions, volumes, and encryption algorithms?). I use GnuPG to encrypt my files, but that involves using a command-line interface, something most people aren’t (and probably shouldn’t have to be) comfortable using. OpenSSL is the Swiss Army knife of all things encryption but using it properly is like knowing some secret wizard’s spell.

Dropbox can read anything you give to it, in the state you give it to them. Give them something that only you can read and you get the joy of having this file everywhere while still being the only one who can open and read it.

I’m not saying to not use Dropbox. It’s just a fact that any file uploaded to Dropbox, given enough time, stands a good chance of being seen by someone you don’t know, so adjust your file syncing accordingly.

This post was inspired by a Twitter message from Kellan yesterday.

Afternoon Chats with the Navy

This morning, I read Claire Vaye Watkins’ essay The Ivy League Was Another Planet about the college application process for an American rural high schooler. Her story was nearly identical to my experience.

My high school had one overworked guidance counselor that also doubled as a college counselor. She was a very nice woman that seemed concerned about our futures, but there were only so many hours in the day for her. I vaguely remember my one or two sessions with her consisting of showing me the SAT testing calendar and pointing me towards the federal aid forms. Through some of confusion of mine, I didn’t think I needed to fill out these aid forms. These turned out to have been a prerequisite for many merit-based scholarships as well, which would have been useful information.

Somehow I escaped these sessions with only applying to one school, the main state school in North Carolina. I chose this school because a couple of my good friends were going there and I knew it was a “good school.” No one let me know that applying to just one university was a bad idea. I did really well in high school and not going to college if I had missed on this one application would have been a disaster.

Even the only application I filled out was a disaster-in-waiting. Like most college applications, it required an essay. I don’t remember getting anyone to proofread mine. I can barely write my name without a grammar mistake so I’m surprised they even let me on campus. Who knows, maybe they saw me as a great fixer-upper.

Watkins’ memories of taking the SAT were reminiscent of my own. The test was paid for out of pocket, and it didn’t seem to be guided by any internal force in school. It was just one of those things that we knew we needed to look into and apply to take. Afterwards, I learned from people that went to other high schools that the SAT was something that was taken multiple times and that taking preparation classes was commonplace. I took the sample test in the SAT packet and felt like I was being extra studious by even doing that. I had college friends that had studied hard for the math portion, rested during the verbal sections, and then did the inverse on another taking since you’re allowed to combine your best scores from your sittings. We could have probably figured out this strategy for ourselves, but the thing is we shouldn’t have had to. Even so, taking a $50 test multiple times would definitely have been out of reach for most of my classmates.

Our entire class also took the ASVAB. This test was administered in the school cafeteria and we got out of an afternoon’s worth of classes to take it. I did well on this test and within a week I had military recruiters calling me. The Navy must have called dibs on me as every afternoon after school, a Navy recruiter would call and we would chat. He was an excellent salesmen. He nearly convinced me that living in a submarine for months at a stretch was a completely normal life choice. The military’s rigid environment appealed to me at the time and I was probably a 60/40 split between going to college or joining the Navy. I realized this morning that if I had enlisted, I would have probably been at basic training during the September 11th attacks.

My high school ended up sending roughly half of my graduating class to college, half of those to the local community college and the other half going to a four-year school. Half of the four-year students went to Appalachian State University, which is a great school up in the mountains about an hour’s drive from the high school. I imagine the high application rate to this school was the same phenomenon that Watkins mentioned in that it was the closest four-year college to our high school and there were a lot of alumni around.

I know people who went to elite private schools that applying to college was a multi-year process with the school helping you research colleges that matched your academic needs, keeping track of application dates, paying for tests, and generally herding you through the often-confusing and always-expensive process of something that is still one of the best ways to improve one lot’s in life. Colleges in the US, I believe, are welcoming and available to everyone with the wide range of diversity and financial aid scholarships they offer but, like too many things, some are already starting a few steps closer to the finish line.