Category Archives: Trains

5 Items for Your Presentation Checklist and My Trip Log for DevOps Days YVR

A Few Trip Details

logoRecently I spoke (video below, plus others) at DevOps Days YVR. YVR is the airport code for Vancouver BC, thus the use of YVR in the DevOps Day name and Twitter handle (@DevOpsDaysYvr). I always love to travel to Vancouver BC for a whole multitude of reasons. The city is beautiful, clean, and has everything from shopping to foodie options all over the place. It’s a truly modern, and by US standards, futuristic city with a number of very effective transport options beyond the myopic use of cars that America is overly dependent on. If you like biking, this is the preeminent city to bike in of all cities in North America. Nothing even comes close. Not Portland, definitely not San Francisco, and don’t even get me started on the trash fire that is Los Angeles and it’s heroin like addiction to sitting in car traffic. If hanging out in the city is a bit much, one can always get out to mountains or just take a stroll into one of the many parks available to get away from it. Overall, Vancouver is an amazing place and any excuse I have for crossing the border and getting a great dose of Canadian Camaraderie and jolliness I’ll take in a heartbeat!

Of course, all the wonderfulness is great, but getting into the nitty gritty of the tech scene is also fun. Vancouver has a great tech scene, albeit small by Seattle’s tech scene, but that’s a disingenuous comparison anyway. It’d be like comparing Seattle aeronautics scene with any other city except where maybe Airbus is located, it’d just be nuts. But compared to most other cities, Vancouver has a pretty solid standing among the coding community.

Photo Mar 29, 11 29 19 PM

Pacific Central Station in Vancouver

I took the train up, as I always do, because of a number of reasons. I can roll my bike on and then upon arrival the staff just hands it back to me and off I go. Considering my origination point and departure point are both bike friendly for my needs, this is my default. In the end, it actually ends up faster than driving and needing to pack or rack the bike, I couldn’t even fly and enjoy these amenities, and the intercity Bolt Buses are just yucky anyway. It’s like flying except you’re stuck on the ground in an often times smaller seat than an airplane. I’m not sure why I’d ever want to torture myself like that. The other huge benefit is it’s extremely easy to get a lot done on the train and one also can’t beat the views en route!

A Small Rant

Once I arrived I checked into my hotel. I realized this trip I must have checked into the singularly clueless hotel in the whole city that has strange myopic, draconian, and stupifying bicycle options. The Hyatt Regency, which I’m clearly not going to be staying at again, wanted to “valet” my bike with a tag, mark it and put it into some basement garage “room”. I wouldn’t easily have access to it and would have to wait for them to retrieve it if I needed it for any reason. Anyway, this was an extremely odd scenario, and would be a lot more work on their part, that just struck me as blatantly behind the times – especially for Vancouver. People and businesses in this city should, and do, know better than to have such nonsense in place. I guess the Hyatt Regency places itself above and removed from the people in some way. Oh well, lesson learned, I’ll stay at one of the other zillion super awesome hotels (or with friends instead).

TLDR; Avoid the Hyatt Regency for future stays, they have strange policies around independence of movement and storage of personal items.

DevOps Days YVR

Alright, on to the conference. The conference was great, my only issue was my own fault, in that I had managed to not be able to attend the first day. I should have gotten there earlier and also planned to stay a little longer. Next time I’m going to make a more official scheduled brunch, dinner, drinks, and maybe a meetup or two. On day two of the event, I was up to speak first thing in the day, a 9:15 am slot! This was the first time I’d ever had a speaking slot this early in the day. At this point, my preparations complete, my checklist checked twice, and I was ready to present. In doing so, I decided a list was in order which I’ve put together below.

The Presentation Checklist

  1. Laptop(s) – These days I tend to bring two laptops when I’m presenting. One is my main workstation running Linux and the other is an older Macbook Pro that I have. The reasoning is simple, depending on the projector and connection options, the Macbook Pro is easily – with its HDMI connection – the most standard setup for presenting. It works more often than any other machine I’ve ever had and is far more consistent in getting resolutions correct for presentations and for projectors. It is in essence the ultimate backup. However I use the Linux machine if I can, it’s more than capable, but some projectors aren’t up to it.
  2. Connectors – I bring the regular assortment of connections to ensure I get feed out from the XPS 15 running Linux or the MacOS to HDMI and VGA. This basically covers every modern projector and everything I’ve ever seen built for the last decade or so. That equates to 2 dongles, one of the Mac (Thunderbolt to VGA) and one for the XPS 15 (USB-C/USB to VGA).
  3. Slide Deck – I aim to have several formats of the presentation deck available outside of some online format like Google Slides. Such as PDF that I can flip through or a local presentation app that I can use. This way regardless of the connection I’ll be able to have the slide deck ready to go.
  4. Presentation Page – This is a page that I setup for slides, video, and whatever other collateral is put together from my efforts and also from the conference organizers’ perspective. For the particular DevOps Days YVR talk I setup a page “Go for Venomous Database Reliability“.

5. Be Present – Be sure to be rested up the day of presenting and for a day of interactions. But don’t just come in like a military insertion assault and then leave. That sucks for attendees, stay for the day. Talk to people. Learn about what they’re working on. Chat about solutions both directions. Be part of the community.

With the checklist done, here’s my talk from the event. “Architecture Guidance for Venomous Database Reliability Engineering” a kind of library checklist for development and database reliability in Go.

After the conference I spent the day catching up with some friends. Included in that was the chance to hang out with Alexandra with Advanced Tech Podcast. We got some food near the office and plotted out a podcast too. Which you can give a listen to at “Adron Hall – Coder, Engineer, Architect“. We tackled a very wide range of topics, tech related, and even toward the end we got into discussions around livability, urban planning, city council meetings, and the whole life of an advocate in the urban realm in America.

It was a great weekend of talking tech, enjoying the beauty and good grub and company in Vancouver BC. Over the next week or three I intend to post videos from the conference with some succinct write ups on the various talks – available via the DevOpsDays Vancouver 2019 Playlist. For now though, time for a little disconnect and the train ride home, enjoy the scenery, cheers! \m/

Conflicts of Building a Real World Example Application Starter Kit

As I dug through a number of JavaScript user interface frameworks lately, reading a number of posts, and building a more informed opinion. All this to decide which one I should use for a sample application for some starter kits. One post I read hit home that it does need to be a bit more complex than a todo app.

However, I’m still starting with a todo app anyway, but it’s going to turn into something else that is much more than a mere todo app. In this post I’m going to write up some of those larger plans and what complexities lie in wait – dragons are indeed there – for this more extensive real world app.

Modernizing Real World US Passenger Rail Ticket Sales!

Ok, I picked this topic since it is one of the things I find frustrating in the United States. The passenger rail systems, pretty much all of them, are barely better than many 3rd world countries, let alone the developed nations. One of those elements that the United States falls far behind on is an effective, efficient, accurate, and useful ticketing and seat assignment system. Let’s talk about this particular problem for a moment and you’ll start to visualize the problems that exist with the current system.

The Problem(s): Train Seating Options

Siemens Charger engine waiting with Talgo train.

Siemens Charger engine waiting with Talgo train.

Getting people on and off of a transport system like a train, airplane, ferry, or other mode of transport isn’t a simple process. However, many times it doesn’t have to be as complex, wrought with error, confusion, or disarray as there often is in the United States. Let’s step back and focus on one particular set of trains, the four particular trains that leave form King Street Station in Seattle, Washington on an almost daily basis.

  1. Sound Transit Sounder – [Stations] [Fares] [Wikipedia] This is a commuter route that has two lines:
    1. North Line – Seattle to Everett.
    2. South Line – Seattle to Tacoma, then onward to Lakewood.
  2. Amtrak Cascades – [Wikipedia] Seattle is one of the major stops on the Cascades route, which starts in Eugene down in Oregon and traverses all the way into Canada to Vancouver.
  3. Amtrak Empire Build – [Wikipedia] This is one of the two Superliner cross country overnight trains that leaves Seattle, connects with a sister train in Spokane everyday from Portland, and then combines and travels all the way to Chicago!
  4. Amtrak Coast Starlight – [Wikipedia] This is one of the other Superliner cross country overnight trains. It departs from Seattle, travels south with a number of stops and eventually ends in Los Angeles.

These four trains use specific train equipment with a particular accommodations for ticket sales.

One of the Amtrak Superliner Coach Car's seating layout.

One of the Amtrak Superliner Coach Car’s seating layout. (Images found here)

The Sounder provides tickets via the Sound Transit System in the area, which is a relatively cheap, non-reserved seat, heavily used train. Often there’s standing room only. It’s one of those things, that if one could purchase a ticket and know if they’re getting a seat, or if the train is full or not, that would encourage or discourage use accordingly. Currently, you buy a ticket and just get on. Rarely are they even checked, there is no gated entry, it’s basically a free for all.

The Amtrak Cascades are a reserved seat system. You purchase a ticket with the contract agreement that you will be provided a seat – either business class or regular – upon boarding. Emphasis on upon boarding as this can cause great confusion when entering the station and attempting to determine how to pick up these seat assignments even though you’ve already purchased a ticket. It adds time to boarding, requires the train sits waiting longer, and passengers have to arrive much earlier than the train departure. Albeit, just for context this earlier arrival (~20-30 minutes before) is nothing compared to the horrors of airports (2 hour suggested arrival before departure), it’s still unnecessary if modern systems were used to provide a streamlined and more efficient boarding process.

Amtrak Empire Builder

Amtrak Empire Builder

The Amtrak Empire Builder and Coast Starlight are currently an interesting mix. Both trains have sleeping accommodations that give a reserved room number before boarding. A very efficient process indeed, something to aim for. Since one knows the car number and room number, one could theoretically just board without even being guided. The rest of the seats however, some 200-300 or more of them depending on the train, are reserved seats albeit one doesn’t receive the seat assignment until they arrive at the station. Again, causing unnecessary chaos.

The Problem(s): Technology Deeper Dive

Problem: Passenger Navigation to Seat Reservation

Amtrak Cascades Bistro

Amtrak Cascades Bistro

Every single one of the trains listed above: Amtrak Empire Builder, Amtrak Coast Starlight, Amtrak Cascades, and Sound Transit Sounder all have some similar characteristics that would make it cheap and relatively easy to implement a ticketing and seat reservation system. In all of the train equipment, whether Sounder Bombardier, Superliner, or Talgo Amtrak Cascades there are seat numbers and car numbers. This provides us a core basis in which to work, to make all of this processing much easier.

At each station where these trains stop, each car of each train stops at a particular point – or could be made to stop at a particular point – at each station. The Sounder trains for example all have floor mats at the station that read “Welcome Aboard”! This is another element we could use to navigate a particular seat reservation. Automating the process of not just assigning a seat, but providing the information on each ticket for where and exactly when each passenger should arrive at a particular point at the station.

Since the cars and stations all have known characteristics about where to be, where the train will arrive and depart from, and what car number and door position is at this can all be automated per train. This is a repeatable process. Something that easily meets the exact definition of why we build computer systems and automate things with computer systems!

Problem: Equipment Changes, Modifiable Trains

Sometimes I’ve had conversations with what might change within the system. Almost all changes with a rail system are very known. From a disaster all the way to a simple everyday equipment change. For example, the train arriving may have an extra coach car or sleeper car on the Coast Starlight for some reason. Since we can build a system to model around the specific vehicles, and the vehicles numbers on a train can easily be set these changes can extrapolate out to tickets so they can be accurately assigned by a computer the day of. Changing equipment may take multiple minutes in the rail yard, but in the computer it’s a few keystrokes and it’s done. All tickets re-assigned, everything rebalanced, it’s almost as magical as a distributed database.

Problem: Common Concurrency, Purchasing, and Related Issues

There are also a number of issues a proper ticketing and reservation system would have to cover, such as managing for multiple people attempting to buy the same seat at relatively the same time. A locking and concurrency mechanism will be needed, something that’s been solved before, so appropriate planning around this will solve the issue.

There are of course timing issues too, once a ticket is locked, eventing within the system should unlock it appropriately. These event based timers will be an interesting challenge too. Solved already, but fun that they’ll need solved again specifically for this system!

Problem: Or Feature “See a Mountain”?

Aerial view of mount Rainier

Aerial view of mount Rainier

Some other things I’ve pondered include, the selling of some seats as choice preferences. For example, for the Empire Builder, Coast Starlight, and Cascades trains each have specific views that are easier or harder to see depending on the side of the train the accommodations are for. An example, if you’re facing west on the Coast Starlight you get all of the ocean views in southern California. If you’re on the east side, you get views of all the mountains like Rainier (see above picture!) and even Shasta if there is a full moon. Depending on these views and related characteristics, I’d happily pay a few bucks more to ensure I get a specific assignment or get to pick a specific assignment, so why not offer the ability to choose the seat for a specific fare?


The Puget Sound, traveling north out of Seattle on the Amtrak Cascades or Sound Transit Sounder north line.

Summary  & Next Steps

Summary – This is post one of many about the very distributed nature of purchasing tickets for one of the trains into and out of the city. As comparison with my todo app, this will definitely provide a very real world application option indeed! As soon as I wrap up the initial todo app samples, just to get started and provide details on how to get started I’m going to move on to building a real, real world applications sample, so real that it could be implemented by Sound Transit, Brightline, Virgin Rail, SNCF’s TGV, Germany’s ICE, or even good ole’ Amtrak here in the United States.

Next Steps – Next up I’m going to finish up the todo applications, with the notion that they provide some starting points for people but also for this more complex real world application. I’ll also add some more details and thoughts, and would love to converse, discuss, contributions, or co-hack on this project. Maybe you’ll join me, onward, and may you enjoy this flanged wheel ride and code slinging adventure!