The California Zephyr

From Chicago to San Francisco by Train in 52 Hours

Friday, November 1st, 2019 · 13 min read

Just outside of Denver

Three weeks ago, for the first time ever, I bore witness the might of the Mississippi River, meditated in Iowa to an endless expanse of cornfields, marveled at the towering cliffs that enveloped me as I zoomed alongside the Colorado River, and sat awestruck as the Milky Way’s celestial arm painted the Nevadan desert night.

Three weeks and one day ago, I was at home, near Philadelphia, with a job in San Francisco starting in three days.

I usually pay a little less than $150 for the six-and-a-half hour flight from Philadelphia to San Francisco, but this time, I didn’t just have six and a half hours — I had three days, and an amazing deal for Amtrak’s California Zephyr, their fifty-two hour route from Chicago to San Francisco: a ticket for $113. With a $78 flight from Philadelphia to Chicago, my total cost of travel would be just under $200.

It was the best $200 I’ve spent in a long, long time.

The Journey

Saturday, 1:30 PM CT

I flew from Philadelphia into Chicago Midway on Saturday morning and took the L to Union Station, where the route began.

We started lining up for the train at about 1:30. Amtrak is evidently pretty popular with the Amish.

Chicago Union Station

Saturday, 2:30 PM CT

After scanning my ticket, the conductor wrote my destination code on a tag above my seat. I was headed to the final stop, Emeryville, a small city across the bay from San Francisco. My seatmate was headed to Sacramento.


Saturday, 5:30 PM CT

The first part of the journey was on the same tracks as Metra, the Chicago regional commuter rail system, and we traveled through suburban landscapes not altogether different from those back home in the Northeast. As we continued west, the suburbs gave way to cornfields until we crossed the Mississippi River and entered Iowa.

The Mississippi River

Saturday, 6:00 PM CT

The viewing car still had a few people in it even though Iowa was pretty much completely cornfields.

Cornfields in Iowa

Saturday, 6:30 PM CT

The first night’s sunset was in Iowa.

Sunset in Iowa

Saturday, 7:00 PM CT

A lot of the Amish got off here in Ottumwa, Iowa.

Ottumwa, Iowa

Saturday, 8:30 PM CT

Since space comes at a premium in the dining car, passengers are forced to talk to each other — the staff fill up every booth with four, so I sat with my seatmate and across from two other riders.

We all introduced ourselves. My seatmate had fallen upon some hard times and was planning to transfer at Sacramento and take another train to Eugene, Oregon to get back in touch with family. The man sitting diagonally across from me was headed to Denver for a historical society conference, and the younger man in front of me was headed to Sacramento to skate.

I ordered the roasted chicken. For train food, the meal was actually pretty good, although they were a bit heavy with the potato portion. My seatmate ordered the chicken as well, along with a glass of crisp Chardonnay.

Roast chicken dinner

Sunday, 7:30 AM MT

I mostly slept through Nebraska, and we rolled into Denver the next morning. A lot of people were boarding in Denver, so the train took an extended stop and I decided to get off and walk a few blocks around the station.

The weather was still hot, summery, and consistently in the eighties when I left Philadelphia, and it was similar in Chicago. It was cold here in Denver — in the forties, the coldest I’d felt since last winter in Michigan — so I went back to the train pretty quickly.


Sunday, 8:50 AM MT

The observation car was much more popular after Denver.

Observation car after Denver

Sunday, 9:00 AM MT

The train climbed high enough that we could see all of Denver from above.

Above Denver

Sunday, 11:00 AM MT

We eventually started running parallel to the Colorado River.

The start of the Colorado River

Sunday, 11:30 AM MT

The observation car was packed as we climbed above the river.

Observation car above the Colorado

Sunday, 11:40 AM MT

The view out the window.

Above the Colorado

Sunday, 1:30 PM MT

Iowa was therapeutic, but still, Colorado was a nice change of pace.

Rocks in Colorado

Sunday, 2:00 PM MT

We made a quick stop in Glenwood Springs, Colorado.

Glenwood Springs Station

Sunday, 7:00 PM MT

The stations were few and far between in Colorado, and by the evening, we’d reached Utah.

We took a quick break in Green River. The train was delayed here for an hour because my seatmate was ejected and had to be apprehended by local authorities. I didn’t have all that much of a problem with him, but from what I heard from other riders, he was allegedly selling certain controlled substances.

Green River Station

Monday, 8:30 AM MT

Night fell as we passed through Utah, and we were in Nevada by the next morning.


Monday, 9:30 AM MT

A quick smoke break in Reno.

Reno, Nevada

Monday, 10:00 AM MT

We rode alongside the Truckee River as we left Reno.

Truckee River

Monday, 10:30 AM MT

Crossing the Nevada/California state line.

Truckee River

Monday, 11:00 AM PT

We passed by Donner Lake and Donner Pass. There was enough food for everyone on the train.

Donner Lake

Monday, 12:00 PM PT

Lots of twists, turns, and tunnels as we climbed.

The train turning

Monday, 1:00 PM PT

We crossed paths with an eastbound Zephyr headed back to Chicago around Colfax, CA.

Eastbound California Zephyr

Monday, 2:00 PM PT

Soon, we started seeing small farms and orchards and it began to look more like Steinbeck’s California.

California orchards

Monday, 2:30 PM PT

Sacramento was the end of the journey for many of the friends I’d made in my train car. My seatmate was unfortunately not there to tell the tale.

Sacramento station

Monday, 4:00 PM PT

Passing near San Pablo Bay.

San Pablo Bay

Monday, 4:20 PM PT

The San Francisco skyline was visible in the distance as we approached Emeryville.

San Francisco Skyline

Monday, 4:30 PM PT

Back in the Bay after 52 hours.

The locomotive

Monday, 6:00 PM PT

I took a bus across the Bay Bridge and then transferred to Muni to arrive at my new home.

New home

Tuesday, 8:00 AM PT

And finally, a beautiful first morning back in the city.

The next morning

Afterword: Traveling on a Budget

In addition to my cross-country Amtrak, I’ve been traveling a lot over these past few weeks. It’s been an awesome experience so far, and I wanted to share some of my tips for traveling (specifically, flying) on a budget — it can be a lot more affordable than you may think, and I’m very happy about how little cash I had to fork over:

  1. San Jose (SJC) – Los Angeles (LAX): Sat 9/14, $53.98 (Southwest, nonstop)
  2. Los Angeles (LAX) – Detroit (DTW): Wed 9/25, $157.00 (Southwest, connection in DAL)
  3. Detroit (DTW) – Boston (BOS): Mon 9/30, $68.30 (JetBlue, nonstop)
  4. Boston (BOS) – Philadelphia (PHL): Wed 10/2, $48.30 (JetBlue, nonstop)
  5. Philadelphia (PHL) – Chicago (MDW) – San Francisco: Sat 10/5, $77.98 (Southwest, nonstop) then $113 (Amtrak, many stops)

For a four-city, five-leg “San Francisco – Philadelphia” round trip, my total spend was $518.56. An SFO - PHL round trip would probably have saved me about $220, but it would’ve been a missed opportunity to hang with my boys in Los Angeles, at the University of Michigan and at a small college in Boston: priceless.

A big part of keeping my costs down was just being flexible (flying on weekdays, looking at multiple airports) but here’s my general strategy for finding cheap flights, starting from the straightforward (look early) to the more nuanced (competitive analysis and thinking about alternative markets):

1. Look early

I’ll try to start looking at least a month before to avoid paying a premium for booking late.

2. Look at one-ways

Airlines used to have a weird pricing model where one-ways could potentially cost more than round-trips, but nowadays, pricing is competitive enough that one-ways cost pretty much half of a round trip (as they should), and I tend to prefer one-way tickets for everything now.

Looking at one-ways makes pricing more comprehensible — I’ll often vary the length of a trip based on when the cheapest day to return is, and in most flight search engines, it’s easier to find the cheapest day to fly out, one-way, and then the cheapest one-way to fly back than to play around with different start dates and trip durations. Once I find the cheapest days, I can always try searching for round-trip tickets on those days anyway just to make sure I’m really getting the best deal.

For multi-city trips, booking one-ways keeps my plans flexible. If I book a multi-city ticket and decide not to take one leg, it’s within most airlines’ rights (i.e. in their contract of carriage) to cancel the rest of my trip.

3. Focus on competitive routes between competitive cities

Out of the five flights I took, my biggest expense (double that of the next-most costly flight) was my LAX – DTW leg for $157. Unfortunately, DTW is pretty much owned by Delta, and other airlines don’t offer very many options from farther-away destinations like LAX. I ended up flying Southwest from LAX to DTW and I had to connect via DAL, but if I’d wanted to fly nonstop, Delta was charging double.

On the other hand, San Francisco – Los Angeles is a heavily traveled route that’s served by almost every carrier that side of the Mississippi; JetBlue’s got a hub in Boston, and they’re competing with Delta on the DTW – BOS route; and American (formerly US Airways) has a heavy presence in Philadelphia, and they’re competing heavily with JetBlue on the BOS – PHL route and Southwest on the Philadelphia to Chicago route. So for those segments, I able to fly for an average of $60 per flight.

Although my longest segment was LAX – DTW and it perhaps (by normal logic) should’ve cost the most, I generally fly PHL – SFO (about 500 more flight miles) for less — around $150 — and JFK – SFO can go for as low as $98 one-way (I guess there are more venture capitalists traveling out of New York than Philadelphia).

In the specific case of LAX – DTW, I could’ve flown to Chicago, a much more competitive city with more incoming flights from LAX, for up to $60 less (a little less than $100 for the flight to Chicago vs. $157 for Detroit) followed by a four-hour, $40 Amtrak to Ann Arbor. I figured I’d rather maximize my time in Michigan, but that was an option I was strongly considering.

4. Use search engines, but don’t forget about Southwest

I use Google Flights and Kayak (both, to make sure I get a full picture of the availability for a certain route) with a date range (i.e. plus-or-minus a few days) and make sure to select nearby arrival and destination airports if available (e.g. SFO, SJC, and OAK for the Bay Area or ORD and MDW for Chicago) as well as farther away but potentially more competitive airports (like EWR instead of PHL when coming into Philly), to search for flights.

One thing to keep in mind, though, is that Southwest Airlines doesn’t let other websites scrape their fares — Southwest only allows bookings directly from their website — so I also make sure to check Southwest’s website to see if they can beat the common carriers before planning on booking the cheapest Google Flights or Kayak option.

5. Look at fare calendar and book as late as possible

Although I start looking at flights early, Google Flights has a nice calendar which gives a good visualization of just how far in advance one needs to book in order to get the best fares before the late booking premium starts to kick in. For the most part, it has seemed to have been three weeks (that’s when the numbers start looking red) so I’ll set an event in my calendar to book my flight then. I try not to book any earlier than I have to because if I end up changing my travel plans I’ll likely have to pay a hefty cancellation or change fee (unfortunately, I’m not Executive Platinum yet).

6. Loyalty is overrated

As I’ve traveled more, I’ve started accumulating miles in various airlines’ programs. Unfortunately, for casual, leisure travelers (like me), it’s pretty much impossible to reach even the lowest status tiers of airline mileage programs (American’s lowest tier, Gold, requires $3,000 of yearly spend), and on a cash basis, miles aren’t worth all too much other than for international or premium class flights (a cursory analysis on my end shows that miles redeemed for a PHL – SFO economy flight are worth approximately a cent each, while a first-class PHL – LAX – SFO award ticket had my miles worth almost five cents each). Since I always fly economy and don’t plan on spending $3,000 on flights this year exclusively with American (or any airline), I generally just buy tickets from whatever (normal) airline is cheapest. I haven’t tried Spirit yet, but their prices are pretty unbeatable, so I might give them a whirl on a short-haul OAK – LAX or OAK – SEA to test the waters (they don’t fly out of SFO — I guess the landing fee there is too expensive).

Regardless, despite my high price elasticity, I’m still sometimes willing to pay a premium for certain carriers — like for Southwest, for their generous change and bag policies, and for Alaska, because flying with them is consistently an overall pleasant experience (you’d know if you’ve flown American). But for the most part, the cash I save by buying the cheapest ticket available is more valuable than any amount of fantasy airline currency.

7. Just do it

I’m just starting to become financially independent, and I’ve had to make many decisions about how and where to spend and save my money. Plane (and train) tickets, unfortunately, can be quite expensive. But although I consider myself to be a frugal person, I have never regretted the purchase of travel. I don’t think you will either — bon voyage.

Leave a Comment  ·  Back to Home

Become a Natecation Member

Add your email to get access to my latest work before anyone else. I also send occassional special surprises (like free domains). I don't send spam, and you can stop at any time.

Recommended Posts

If you liked "The California Zephyr: From Chicago to San Francisco by Train in 52 Hours", you might also like:

Hello to All That?

Reflections on My First Summer in Tech

16 September 2019 · 26 min read

On moving to San Francisco at nineteen and my first summer in Silicon Valley. What I've learned and why I'm coming back.


by Nathan H. Leung

Hi, I'm Nate. I taught myself how to code before college, and I entered the University of Michigan in the fall of 2018, where I discovered interests in math, economics, and personal writing.

College was a serious step up from what I was used to in high school, so one especially late night my second semester, while working on a problem set in the math atrium — I decided I had enough. I needed a break from school.

I began planning a gap year in Barcelona and reaching out to old web design clients from high school for contract software work. Those plans went out the window, though, when I miraculously landed an internship at Google for the coming summer.

So, when school let out in May, I flew out to San Francisco and moved into a place in the Mission District instead. I soon realized that much of what I was looking for in my gap year — the unparalleled personal and cultural growth that comes from living alone in an iconic, bohemian city; a hungry market for entrepreneurial software engineers — was right where I was in San Francisco.

In August, I officially disenrolled from my sophomore year of classes. I got my travel fix in September, zooming across America and visiting Los Angeles, Ann Arbor, Boston, Philadelphia, and Chicago as part of a ten-state excursion, before heading back to San Francisco by way of 52 hours on Amtrak.

In October 2019, shortly after the founders completed YC S19, I turned down my Google return offer and joined Jupiter as their first hire. Outside of establishing a strong engineering organization and codifying our guiding development philosophies and practices, I've spent the last few months building end-to-end systems with TypeScript, React, Kotlin, gRPC, and Kubernetes.

I started this little blog to share some of these experiences — I hope you enjoy.