brandur.org

The Inaugural Issue, Portland, Flyknit, Go, and Digital Tulips

The details of most journeys are forgotten. It’s nothing intentional, but given enough time they stop coming up in conversation, we reflect on them more rarely, and they’re eventually swallowed by our fickle memories. Physical artifacts remain, but most of us are hopelessly bad at regularly sifting through a lifetime’s accumulation of photos and souvenirs.

For Christmas a few years ago, my grandmother gave me one of the best gifts that I’ve ever received. She presented my brother and I each with a book of memories. She’d hunted through her extensive collection of photos that she’d taken of us growing up, and carefully selected a key few dozen that in aggregate told the stories of our lives – from the weeks after our births, to early family vacations, and all the way through to proms and first cars. Each was annotated with a few poignant words from Grandma for flavor.

These volumes are special. It’s easy to casually pick one up and scan through a few pages looking at random pictures and letters. My grandmother had produced the perfect story-telling medium – light enough to skim, substantial enough to last.

This is what I’m trying to with this newsletter, Passages & Glass. It’s a curated collection for my friends and family of short, self-indulgent stories about what I’ve been doing, and some favorite things in products and software.

Glass

Passages refers to the routes that we use to get from one point to another, like Hannibal’s passage through the Alps, Magellan’s famous strait, or in the case of my far more mundane life, a favorite walking path from Friedrichshain to Kreuzberg. Glass is the material making up the face on my favorite products like the iPhone or Submariner, the window through which to watch the passing countryside by air or rail, or the intricate optics of my camera’s lens.

Passages & Glass is also about supporting the independent web. It’s sent via the only universal medium of communication that we have (email) in the most open formats available (plain text and HTML), and is my infinitesimally small way of pushing back against the continued centralization and confinement of our stories in closed platforms like Facebook.

I hope you’ll like it, but at any if time you no longer want to receive it, you can unsubscribe instantly by clicking here.

I visited Portland recently to celebrate the wedding of my friends Sam and Blake. The first thing that you notice about the town is how nice everyone was; I was reading a brochure on how to use the local rail system to get from the airport to downtown, when a MAX employee approached me, proceeded to explain everything there was to know about it, and helped me buy a ticket. (For comparison in San Francisco, you could stand next to a BART or Muni ticketing machine all week and you’d be lucky to have a transit employee notice, let alone help.) Everywhere you go, store clerks and strangers strike you up for conversation. While in the back of a rideshare, drivers tell meaningful stories about their lives in the area.

Portland

The city’s beautiful. Calm and well-maintained downtown streets spread out to become eclectic inner city suburbs where each house has a unique shape. Clusters of wild shrubbery grow out front instead of the usual lawn. The shops and sights offer an amazing variety; in the first few days we ate at Atsuri, a ramen shop whose only other location is in Tokyo, had espresso and Turkish delight on couches on top of a double-decker bus permanently parked behind a row of food trucks (ToV coffee & tea), and had the best hot wings of my life at Pok Pok.

The wedding took place outside the city in Hillsboro atop a hill overlooking a vineyard on one side, and a golden field of wheat on the other (later to be set ablaze by the setting sun). The ceremony was held within a grove shaded by a group of tall trees (which those of us wearing jackets on the hot day were very thankful for). Will officiated, using notes taped to the inside of a hardbound copy of Homer’s Odyssey. Dinner was accompanied by speeches from the fathers of the bridge and groom, and followed by dancing at sunset, enabled by special varieties of margaritas and mint julips specially designed by the bride and groom. We were eventually handed a breakfast burrito and loaded back onto a bus bound for our hotel. The couple in the seat next to us had managed to smuggle a 1.75L Costco size bottle of Bullitt (their bourbon) on board. The rest of the ride back whizzed by in a blur.

Salt & Straw is a hipster ice cream brand known for quirky flavors like “freckled woodblock chocolate”, “avocado and strawberry sherbet”, and the ever-decadent “black olive brittle & goat cheese”. They originated in Portland and have since spread to Los Angeles and San Francisco. Instead of waiting in the hour-long lineup back home in their new location on Fillmore St, we waited in the lineup in their home city – much more reasonable at a mere 45 minutes.

Salt & Straw

Keiko seemed a little agitated during our time in line. I assumed this was typical ice-cream-induced anxiety, but it turned out to be something else entirely. The man who’d been standing directly in front of us in line had been Hideaki Itō, a big movie star in Japan. The unlucky fellow had gathered his young family and traveled across the Pacific ocean for a little hard-won anonymity in suburban America, only to find himself in line next to one of the few other Japanese nationals in the city.

Keiko hadn’t said anything because she wasn’t 100% sure it was him (only 95%), which is roughly consistent with my experience seeing celebrities in the wild. A few years back, Peter and I sat down for some cocktails at Milk Tiger in Calgary. We looked next to us and just a few feet away was Kiefer Sutherland, having a drink alone at the bar. We spent the next hour debating heatedly (and very quietly) whether or not it was him, and which 24 quote we could use in case it was, when suddenly, and before we could say a word, he got up and walked out of the bar.

I said, “I wonder if it was him.” Peter replied, “You idiot. Of course it was him.”

Rating high on the list of things to do in Portland are bicycling and beer. An ambitious new city plan aims to have more than a quarter of all trips to be made by bicycle by 2030, and with a strong biking culture very visible on the city’s streets, it’s believable. Craft beer is also a core value for many Oregonians – just the Portland Metro Area sports more than 100 separate breweries.

We combined the two passions by taking a tour one one of their local party bikes (also known as pedibuses, cycle pubs, bierbikes, and megacycles). Open container laws are in effect in Portland, so rather than drink on the bike itself, we ranged around the downtown core and stopped at a few of its abundant breweries and bars.

Brewcycle

We loaded twelve people and a driver onto the thing. I’ve been known to bike on occasion, and in my mind’s eye I imagined us tearing up the streets of Portland; pausing at intersections only long enough to give the neighboring driver a sidelong look before accelerating on the green and racing to the next light.

Alas, I’ve never worked so hard to achieve so little. Not only were elderly citizens taking casual strolls down the street outpacing us by wide margins, but I’ve seen stationary bikes at my gym moving faster. Here’s a video of us taking the last corner on the thing. I’m recognizable on the far side as the only person who looks like they think they’re in a race.

The good news is that the beer was good, and I’d burned enough calories pedaling around an absurdly heavy object to feel only moderately bad about drinking it.

Before the wedding we’d done a little urban hike to see the Stone House and the epic view of Mount Hood and downtown Portland from the Pittock Mansion, but nothing substantial. As luck would have it, our friends Andrée and Simon, who had rented a car, invited us to come along with them for a day hike along the Trail of Ten Falls in Silver Falls State Park (Oregon’s largest state park at over 9,000 acres).

Waterfall

In terms of visible natural beauty on a per mile basis, this hike is one of the best you’ll ever find. The falls vary wildly in size, but there are ten of them, and the largest have a dreamy Middle-Earthian quality as they pour from tall cliffs into tranquil mountain streams.

Waterfall

After the trip, we stopped off for some much needed beers in Salem, the capital of Oregon which is located a little southwest of Portland. This penultimate destination was called Salem Ale Works (SAW), and our Bay Area instincts couldn’t comprehend that we were paying so little for beer this good. Back in Portland we did one final stop at 10 Barrel Brewing before saying our goodbyes and going to pack our bags.

Nike’s Flyknit technology is one of my favorite products of the last few years. I’m the type of person who’s too hot 90 seconds into any kind of moving (walking, biking, running, cleaning, etc.), and am always on the lookout for ways to stay cool.

Flyknit is an answer. Its woven fabric may not be very good for waterproofness, but is unbeatable when it comes to breathability. It also looks great with its scintillating colors, and I say that as someone who’s never thought that about a shoe before. I just ordered another three pairs of Flyknit Racers because I’m worried that I’ll never find footwear that I like this much again.

Flyknit Racers

It’s also my secret weapon when it comes to travel. When I take a trip, I don’t take any footwear beyond what I have on my feet, and save a corresponding amount of space in my luggage. Although not appropriate for every possible situation, they’ve got me covered for urban walking, running, and all but Alberta-length hikes.

(And I should probably point out at this point that it may be hard to believe, but no, Nike did not sponsor this newsletter.)

And now a brief note on software. Like my website, this newsletter is built and sent by a specially crafted Go executable (I talk a little more about the technical details here). This might sound a little crazy – software is degrading starting from the moment it’s written, and building custom software is a little akin to building a self-imposed maintenance hell, but so far my results with Go have been good.

The language has a few problems – a deep aversion to generics and dependency management, an equally powerful love for void pointers (interface{}), and a dictator that considers syntax highlighting juvenile – yet it’s still quite pleasant to work with. Compared to the family of dynamic languages (Ruby, Python, JavaScript, etc.) I like that the code I write isn’t so prone to rot, and even compared to my other favorite right now, Rust, it’s relaxing not having to chase a target whose syntax and core libraries never stop moving. The code I write today is still best practice a year from now, and my dependencies aren’t all pinned to special compiler pragmas and the nightly release channel.

Go has by far the best (fastest and most problem-free) edit-compile-debug loop of any language, bar none. I’m able to find a native library for any task that I want to accomplish – everything from CSS inlining to image resizing, and it’s nice not having to troubleshoot build failures for C extensions like in Ruby and Python. Lastly, the language’s stability is amazing. I’d bet that this project will still compile on the contemporary Go compiler of ten years from now.

I don’t know what the best modern tech stack is, but Go’s is one of the good ones, and with the recent release of Go 1.9, it’s as good of a time as ever to take a look at it.

Bitcoin is one of our best forms of entertainment in the valley, with plot twists so frequent and so dramatic that not even the best writers on Mr. Robot could have dreamt them up.

You may have heard that the preeminent digital currency recently forked a new currency called Bitcoin Cash (see this article for some good background information). Although this seems like it’ll be a relatively minor fork, so far staying pretty stable at around 10% of Bitcoin’s total mining power, a larger disaster was only narrowly averted.

In 2010 Satoshi Nakamoto (the creator of Bitcoin) added a 1 MB limit on Bitcoin’s blocksize to protect the network from attackers sending large fake blocks. This had the side effect of limiting the network to seven transactions per second in theory, but with the real number closer to 2.3 transactions per second. As Bitcoin’s popularity has increased, the limit has become a serious problem because there’s far more demand than capacity. Whereas previously the fee to settle a transaction may have been only a few cents, its since climbed to as high as $5, and with transactions taking days to be confirmed. Small and timely purchases became effectively impossible.

The debate on how to solve the problem has been raging heatedly for years. Originally more radical solutions were proposed like taking the blocksize to straight 20 MB, or BIP101, which suggested increasing to 8MB and having it further increase by 40% every year to keep pace with Moore’s Law. More recently, “Segwit” (“segregated witness”) was proposed, which moved signatures into a separate extension block to leave more room for transactions and increase the effective blocksize to 1.7 MB. Buy-in for Segwit was low at ~35% approval with most miners preferring a direct increase in blocksize instead. To build consensus, Segwit was revised to Segwit2x, which still segregates signatures, but also promised to double blocksize within three months of release.

Right up until Segwit was turned on (August 1st), competing ideological groups were still being formed around concepts like a “User Activated Soft Fork” (UASF), which wanted to implement Segwit without the blocksize increase, and a “User Activated Hard Fork” (UAHF) which promises a hard fork if Segwit2x reneged on their promise to double the blocksize. It doesn’t look like either will occur, but another project that wanted to solve the capacity problem through a straight up increase of blocksize to 8MB did fork the network. That’s Bitcoin Cash.

These sorts of close calls don’t give everyone down here tremendous confidence in the future of cryptocurrency. And even Bitcoin’s problems pale in comparison to alternatives like Ethereum, which forked in 2016 after a hacker penetrated their very libertarian-named “Decentralized Autonomous Organization” (the DAO), and made off with 3.6M Ether (a third of its total funds, ostensibly worth $50M at the time). The fork reversed the theft, but fractured the network forever.

My colleague Patrick McKenzie puts it best (when asked what subject he disagrees with others in the valley on):

I’d go with “The fundamental innovation in Bitcoin the social dynamics of the gold rush phase, which distribute cryptocurrency tokens widely for almost free. This creates a self-organized distributed boiler room to market Bitcoin. Bitcoin needs nothing else to get as big as it has; this is convenient because it has nothing else. Bitcoin has no utility as a means of transaction or a store of value. The blockchain is the world’s worst database. The long line of very smart people on the other side of this bet have been scammed, are scamming, or both. Bitcoin will, accordingly, go to zero with the inevitability of gravity.”

But with Bitcoin still trading at around $4,600 USD (up already from $2800 when I originally drafted this text!), so far I’ve been wrong at every turn. Maybe these tulips will stay in bloom forever.

If you can stomach a few more words by me, I’ve recently published how Stripe thinks about API versioning on our engineering blog; an in-depth look at how Postgres makes its transactions atomic which digs into MVCC, snapshots, the WAL, and commit log; and how Ruby allocates memory, which talks about why Ruby’s heap doesn’t mesh well with copy-on-write, and how a compacting garbage collector will help.

This one’s run a little long, so thank you for reading it! As many of you hace no doubt noticed by now, I’m not particularly good at staying in touch, so if you’re doing something interesting, I encourage you to reply to this message or email me at brandur@brandur.org in case I don’t get to you first.

– Brandur