Updated May 10nd, 2022

My girlfriend was out of town this weekend so it seemed a fine time to do a trip I’d been meaning to take for a while and check out the new Stadler GTW railcars on the eBART. I’d been a fan of the GTW railcar for a very long time. This dates back to a middle school assignment where I (somewhat halfheartedly) tried to convince a poor teacher to let me present to the county about replacing a stretch of derelict track with a commuter rail line. (Needless to say, it didn’t work, and line in question is being converted to a trail) [0]. I didn’t know much about railcars at the time but the GTW appealed to me because of its nature as a multiple unit and what I perceived as its relatively low cost to operate (as well as its aesthetics).

When I took a long trip to Europe after college, I had the opportunity to ride a KISS in Switzerland. I came away impressed and feeling like my early feelings about Stadler had been validated. I’d heard about the new eBART line had been meaning to ride it since I’d live in the bay area in 2018.

My original plan for the day was to ride BART from the mission district in San Francisco (where I live) to Antioch, stop for a late lunch, and then grab the San Joaquins back to Jack London Square. I then figured I’d walk down to the Oakland ferry terminal, take that back to SF and then hop on the 14 or BART home.

I started my day around 1:00 PM by leaving my house and walking up to 24th St. I was planning to walk, but there was a 14 right across the street so I hopped on for the quick trip to BART.



The 14 was easy and convenient and in 2 stops I was at 24th. The train to Antioch came within like 5 minutes and I was off!

03.jpeg 04.jpeg

It was one of the older A cars and the enveloping seats were comfortable for the ride through the transbay tube. I’d brought some reading material, but the ride through Oakland was surprisingly lovely. I hadn’t taken BART to the east bay recently and was pretty impressed by the views out over the port. I felt like I was flying above traffic as we crossed 580 and turned out towards Temescal. It was a clear day and you could see virtually all the way out to the bay.

MacArthur, Rockridge, and Concord came quickly, and I was quite comfortable enjoying the article I was reading about Jake Paul. A peeking view to the Golden Gate bridge greeted me as we edged into Berkeley. The train itself was quiet and uncrowded and the views over the hills continued to be expansive out as we passed walnut creek and edged closer to the San Joaquin rivers.


I was struck how suburban the BART stations out here felt, with the exception of Concord which was positioned next to a large office building. As we moved further east the stations seemed increasingly situated near the highway and away from other obvious transit. Based on the map, I was prepared to walk a bit in Antioch, but the reality of walking through exurbia didn’t entirely set in until I was looking out over nothingness past the freeway near Pittsburg.

Finally, we reached the eBART transfer platform!

06.jpeg 07.jpeg

The timed transfer was really quite convenient! A GTW railcar was right there next to me as I got off and I barely had enough time to snap a few shots of the exterior of the train as the operator started closing the doors. The train was lovely. The GTWs look brand new, extremely clean, and apparently well-maintained. Although they have space for what seemed like 100 people across two compartments, the train I was on to Antioch was nearly empty. It was just me, and two other guys on headphones. Signage is clear and I found the ride quite comfortable. I could nitpick that the screens weren’t showing any information, but it wasn’t actively annoying, just a bit disappointing.

The view is strangely beautiful. It’s certainly desolate, but I was surprised how green the hills looked to the south and the view over the edge of the bay gave way to miles of wind farms. Google maps tells I was looking at the Grizzly Island Wildlife area and the adjoining Montezuma Hills. They were empty empty and it’s strange to see vast green space beyond the delta freeway. The remoteness reminded me that 30 minutes ago I’d been in Oakland, and I’d boarded this train in one of the densest parts of San Francisco. Closer to the freeway strip malls and small churches line the access roads without any visible housing. It could be suburbia anywhere.

08.jpeg 09.jpeg 10.jpeg

Finally I was in Antioch! The station is a simple, hulking concrete thing which spans the freeway median. The egress routes are very clear and there’s an elevator for accessibility.

The most arresting feature of the station though, is the parking.


There. Is. So. Much. Parking. I’m sure the people who drive to BART from Antioch or further east appreciate it, but I found it hard to shake a vision of an alternate world where the eBART line was surrounded by dense housing. The exurban model of Tung Chung, or Tai Po this is not [1].


The road away from the station had a nice, comfortable sidewalk. An intersection close to the station had well-marked (if not protected) bike lanes even! I didn’t see anyone riding, and although I looked around, there was no bike share at the station. It’s not obvious where you’d even bike to or from? The lanes in either direction kind of abruptly ended and, I think, just turned into sharrows.

13.jpeg 14.jpeg

Oddly, there’s a heavy rail line that runs immediately behind the BART track. Looking at Google maps, it doesn’t appear that this is the same line that the San Joaquins corridor uses, although it seems to also go in the same direction towards Oakland. https://www.openrailwaymap.org/ tells me it’s the “Tracy Subdivision”. I’m not sure what this line is for, but it’s pretty unfortunate there’s no passenger heavy-rail connection here [2]. I imagine that a connection to Tracy would have pretty significant ridership and the BART connection would be a nice way to extend the system.

A guy I’d seen on BART and I were the only people intrepid people walking along the road. Presumably everyone else had gotten into their cars or grabbed one of the busses that met us at the station.

I meandered through the neighborhood, walking to the spot I’d picked for lunch. I was surprised how good the pedestrian infrastructure was here! I kind of expected to be walking on the street directly, but virtually all the streets had wide sidewalks and marked crosswalks with beg buttons.


The only sketchy part of my walk was the last half mile on Fulton Shipyard Road adjacent to the Antioch Dunes NWR. This street had no sidewalk and there were a number of cars and RVs parked along the side of the road. This was the only part of whole trip where really I felt concerned for my safety, if only because if I injured myself walking or my phone died there would be nobody really around to help me get back to BART or into town. Fortunately, nothing like that happened at all, and the three mile trip to the restaurant I’d picked - the thematically appropriate “Red Caboose Cafe” took about 45 minutes.


I’d kind of assumed, that given the vibes and the proximity to the Black Diamond Lines Model Railroad Club, the Red Caboose would be like… a foamer hangout or something. It wasn’t. An enormous “Thin Blue Line/Red Lives Matter” flew out front. I was the only person who seemed to have walked there. Several other diners had showed up in trucks, and a group of bikers (motorcyclists not bicyclists!) whipped through the parking lot midway through my meal. Most of the conversation I heard was about local high school football. It did live up to its name though! The interior is a fun, converted Santa Fe caboose.

Lunch, though, (a hamburger) was delicious and the Red Caboose seemed pretty lively. There were lots of families sitting inside and their tap menu looked great. I asked the waitress if it was possible to walk into town towards the Amtrak station and she mentioned a coworker did so pretty frequently. She offered me water to go “for my journey”.


At this point, I’d planned to walk into town, see the sights of Antioch, and wait around for the 5:09 San Joaquins train. As I was eating though, I checked the schedule I realized the Amtrak 715 train would be over 2 hours late. While 713 at 1:08 was also two hours late and I could have made it if I’d hustled, the road on the other side of the restaurant was flooded and impassible for cars and pedestrians. It didn’t seem like I was going to make it to the earlier train and waiting for 4 hours in Antioch didn’t seem super appealing to me so I opted to cut the Amtrak connection out and just head back to BART. Oh well, more time with the GTWs!

ALERT: Train 713 is currently operating approximately 40mins late due to rail congestion at Fresno (FNO). #SanJoaquins

— Amtrak San Joaquins (@SanJoaquins) November 6, 2021

I waited around on a nearby street corner for a bit for a TriDelta bus, but Google said the next arrival was in 45 minutes. I got bored after 10 and ended up just walking all the way back, another three miles. 18.jpeg 19.jpeg

The signs on the way back were very explicit about walking directions back to the station which I appreciated! A weirdly nice trail encircles the station and I found my way to the faregates with no problem. I hadn’t really planned on walking so far and was dead tired by the time I got back to BART.

20.jpeg 21.jpeg

The train this direction was a lot more crowded. At least 10 or 15 people shared my compartment. I was feeling the six mile walk and sank into my seat for the short trip back to the transfer platform. A quick timed transfer to a waiting D car and I was headed back towards Oakland!


The ride towards Oakland was comfortable and plodding. My phone was low on battery so I only took a few photos. It took most of my energy to avoid dozing off and I entertained myself with a book and the view out the window.


I hopped off at 12th street in Oakland and walked down Broadway to Jack London Square. I’d spent very little time in this part of Oakland previously and was sort of struck by the uneven land use. The area around Jack London Square has a number of cute restaurants, but seemed surprisingly low-density overall. Blocks alternate between cafes, restaurants, small housing developments, and warehouses. I rewarded myself for the long day with quick Ben and Jerry’s and headed to the ferry dock for the ride back to San Francisco.


I’d inadvertently timed this leg well: the ferry was about to depart as I walked down the pier and I was one of the last few passengers on the boat. I settled into a seat and charged my phone a bit as I waited for the ferry to depart. The view from the ferry is astonishing. We seemed tiny next to the massive container ships we passed sitting in port. I bought myself another treat on the boat, a Space Dust, and sat at the rear, watching us pull out past the old Naval Air Station on Alameda into the bay proper.

25.jpeg 26.jpeg 27.jpeg A quick twenty minute trip under the bay bridge and I was back at the Ferry Building! The sun was getting low in the sky and the bay bridge looked incredible in front of the darkening sky. After nearly 100 miles of transit and thirteen thousand steps, I was more than glad to be back on familiar turf in the city. I walked across the Embarcadero and caught a waiting 14 Mission home.

28.jpeg 29.jpeg

Overall, this was a mostly successful trip! Although I cut out the San Joaquins portion, I was still glad to spend a full day experiencing Bay Area transit. I was relieved I don’t have to do this commute more often and felt intensely privileged being able to work comfortably from home, given I know lots of other people do make a variant of this commute. I don’t know that I’ll be returning to Antioch soon, but a few takeaways for transit trips like this:

Bring a bike

A bicycle would have made getting to the cafe in Antioch far, far easier. I would have been way less tired if I’d cycled there and probably a bit more comfortable riding into town. I probably could have hit my original time schedule and caught the San Joaquins train without issue. However I would have had to figure out how to wrangle it on and off of BART and then onto Amtrak, so.. there’s that.

Check your timetables

The San Joaquins 715 and 713 were delayed even before I left San Francisco. In retrospect, I should have checked the Amtrak Twitter beforehand and could have pushed my schedule back or forward. Even so, I timed my trip awkwardly, and left myself far too much time in Antioch to catch the train I was aiming for. No restaurants or cafes were really open in town and I’m not sure where I would have waited for the train. I could have taken a slightly later BART train and risked missing the connection. I would have just ended up back on BART like I did.

Bring a power brick

Even in low power mode, my phone nearly died walking through Antioch which would have made getting home a huge pain. I knew where I was going and the transit to take, but if I’d needed help I wouldn’t have been able to call a Lyft or navigate successfully if I was lost. Careful battery use on the train back and a fortunate plug on the ferry saved my phone from totally dying. With the extra juice, I was still able to shoot some photos on the ferry.

The Oakland ferry is awesome

The Oakland ferry is just wonderful. The views are unparalleled for the price and the direct Ferry Building <> Jack London connection is extremely convenient. I will definitely be riding it again.

[0] Even in my adolescent estimations, it would have cost like a billion dollars, and I, as a thirteen-year-old, had no idea how to fund such an ambitious project. The estimated ridership would have like only been a few thousand people a day anyways. [1] These “new towns” are similarly far away from the action of Sheung Wan or Tsim Sha Tsui. The MTR stations there are surrounded by very tall buildings, and I assume people commute in daily to busier areas. Although, for what it’s worth, Hong Kong also has a housing crisis. [2] I did find this document from the City of Antioch that describes a possible refurbishment of the Tracy subdivision and a potential exploration of passenger rail “to/from Tracy if rail demand warranted it”. Given that Tracy is growing so rapidly it’s hard to imagine demand not warranting it. Still seems like a bit of a waste not to invest in this further.

Cream Cheese

Updated May 10nd, 2021

I tried making cream cheese over the weekend. I love cheese (all kinds, hard, soft, blue, green, stinky, you name it) and had been wanting to try and make it for a while. Everything online suggested starting with something like cream cheese as it’s not too precise and relatively forgiving. I started with a schmear recipe from The Gefilte Manifesto, a lovely book I won during an event with the Jewish organization at work. I ordered other supplies from New England Cheesemaking, specifically Mesophilic cheese cultures and Butter Muslin. I was able to find vegetable rennet at my local vegetarian coop.

Cream cheese is indeed fairly easy. I started on Sunday night when my partner had plans because I expected it to be involved, but it only took about 30 minutes to do the bulk of the work. First, you cook equal parts milk and cream together for a bit to warm it. I tried using a candy thermometer to measure but ours begins at 100 degrees and the mixture only needed to get up to 75:

01.jepg 02.jepg

Then, you simply add a rennet/water mixture and sprinkle a packet of the mesophilic cheese cultures on top: 03.jepg 04.jepg

I allowed it to sit overnight covered and transferred it to a ~cheesecloth~ butter muslin: 05.jepg 06.jepg

This worked great, although I had some difficulty hanging the cheesecloth. I’d made the mistake of sanitizing the cheesecloth immediately beforehand which made it pretty wet and hard to handle. I also have no good place in my kitchen to hook it to try, and had to tie it around the sink. I ordered some hooks for next time.

I lost a good deal of my yield as a result of this and cleaning it was gross, but ultimately it worked acceptably to dry the curds:


After about 12 hours I could take it out and transfer it to the fridge. It drained a bit more whey overnight, and was the right texture by the next morning!

It tasted great! Given my incident with the cheesecloth I was pessimistic, so I was a bit pleasantly surprised it turned out so much like I was expecting. In my opinion, every bit as good as the folks over at Philadelphia make: 08.jepg

The final product (for lunch)! 09.jepg

Hello Picoblog

Updated November 29nd, 2020

Hello Picoblog!

The world’s tiniest blogging platform

(maybe, I haven’t checked)

Blogging vs. blog setups

My name is Isaac. I’m an engineer at Stripe, where I worked on high availability, disaster recovery, and compliance with international data sovereignty rules. I’ve written a blogging platform. In fact, it’s where you’re reading this blog post right now.

It’s written in Go (you know, like):

func main() {
  fmt.Printf("hi there cruel world")

This blogging platform, called Picoblog, is extremely simple. Heavily inspired on a project by my coworker Seena, called Picofeed, it works by synthesizing a list of blog posts into an HTML file and optional RSS feed. Blog posts are written directly as Markdown, so they’re easy to draft in your favorite editor (or Dropbox Paper) and render out directly as HTML.

To specify a list of files to bloggify, simply write a file listing out the locations of blog posts and the dates at which they were published:

posts/Hello Picoblog.md, 2020-11-29

And point picoblog at it. It’ll generate HTML to stdout. Redirect it to a file to host it as a static site:

picoblog --list posts.txt > out.html

Post titles are set by the filename (without extension or path). The date is set by updating the date above using the same format. The order of posts is determined by their order in the file, making it possible to update the edited date without causing an ordering conflict. Originally, I was just going to use the modified time of the post, but this got annoying when fixing typos. Now you can set it manually.

At time of writing, Picoblog’s entire codebase is 279 lines of code, including the template (not bad if I say so myself) (also this cheats a bit because it uses Blackfriday as a renderer which is many more lines of code). That said, It’s pretty feature packed. It supports all of the syntax of Markdown, previews (by generating a preview using the ./picoblog CLI tool), and permalinks (by referring to the id of the post title).

A reasonable question you might be asking yourself is: “Why did Isaac choose to spend his time writing a teeny tiny blogging platform when so many great ones already exist, like Jekyll, Hugo, and hosted ones like Svbtle?”. I don’t have a good answer to that.

If you like the way picoblog looks and want to use it for yourself, the code is here: https://github.com/isaacd9/picoblog. I’d be happy to take any pull requests against it.