The ‘Rework’ Podcast Goes Dark 

Sorry, one more Basecamp link: Jason Fried and DHH (and other 37signals/Basecamp folks, allegedly) wrote a book called Rework about “the better way to work and run your business,” which has a spinoff podcast covering a mix of Basecamp behind-the-scenes and overall thought leadership, hosted by Wailin Wong and Shaun Hildner. It’s basically a nice business podcast that folks from Basecamp occasionally take over to talk about how great they are.

Or, rather, Rework did have a spinoff podcast. Wong and Hildner posted a 90 second “quick update” saying they are taking a hiatus in response to the company’s changes. And it’s a pretty intense clip: Hildner couldn’t even finish the show’s standard intro, and Wong admitted it would be weird to carry on as normal.

And one side note, from the “shoulda seen this coming” department: despite Wong and Hildner serving as regular, weekly hosts for this podcast, their names are nowhere to be found on the show website. But you can probably guess whose names are prominently mentioned:

Rework is a podcast by the makers of Basecamp about a better way to work and run your business. While the prevailing narrative around successful entrepreneurship tells you to scale fast and raise money, we think there’s a better way. We’ll take you behind the scenes at Basecamp with co-founders Jason Fried and David Heinemeier Hansson and bring you stories from business owners who have embraced bootstrapping, staying small, and growing slow.

There’s also this line:

REWORK is proudly hosted by Transistor Podcasting Company

They credit their hosting platform, but not their hosts.


What really happened at Basecamp 

In response to the Basecamp partners’ “full Coinbase” heel turn that I wrote about yesterday, Casey Newton spoke with Jason Fried, DHH, and numerous employees and reported on what’s been going on behind the scenes:

The controversy that embroiled enterprise software maker Basecamp this week began more than a decade ago, with a simple list of customers.

Around 2009, Basecamp customer service representatives began keeping a list of names that they found funny. More than a decade later, current employees were so mortified by the practice that none of them would give me a single example of a name on the list. … Many of the names were of American or European origin. But others were Asian, or African, and eventually the list — titled “Best Names Ever” — began to make people uncomfortable.

The series of events that led to yesterday’s policy change — which Newton confirms was not fully discussed internally before it was dropped like a bomb via the founders’ personal blogs — began with things like this, but grew to include a broader question of how the company is handling diversity and inclusion. Between the lines of it all, it sure seems like the “committees” Fried railed against refers to an employee-led DEI Council, as does the new ban against “societal and political discussions” on company forums.

As I called out yesterday, unlike most tech companies with enough of a public profile to trigger this much discussion, Basecamp is an LLC under the near-total control of its two managing partners. That in itself is not that unusual; with the rise of “founder friendly” equity structures in the last decade, there are plenty of VC-backed businesses that also have dictatorial leaders and toxic work environments. The main difference is that unlike (say) Coinbase’s CEO Brian Armstrong (who tweeted a high five at Basecamp yesterday), the Basecamp partners aren’t accountable to investors or a board of directors — the buck really does stop with them.

“There’s always been this kind of unwritten rule at Basecamp that the company basically exists for David and Jason’s enjoyment,” one employee told me. “At the end of the day, they are not interested in seeing things in their work timeline that make them uncomfortable, or distracts them from what they’re interested in. And this is the culmination of that.”


How the European Super League Fell Apart 

The NYT’s Tariq Panja and Rory Smith give a behind-the-scenes rundown of what exactly happened with the Super League — both how the plan came together, and how it spectacularly collapsed.

The whole scheme had serious “can’t we just have whiskey for dinner?” vibes — big money people taking the biggest-money parts of a big-money game for themselves to make more big money, without consideration for whether doing so would ruin the very relationships with fans (not to mention governments and international associations like UEFA and FIFA) that made elite football so lucrative.


Back to Basic at Basecamp

The company that wrote “It Doesn’t Have To Be Crazy At Work” responds to craziness at work

Basecamp (née 37signals) founder/CEO Jason Fried, posting on his personal HEY World blog/newsletter yesterday, announced some big internal changes for the company. Here’s a summary of his post, lightly edited for brevity:

Recently, we’ve made some internal company changes, which, taken in total, collectively feel like a full version change. It deserves an announcement.

As Huxley offers in The Doors of Perception, “We live together, we act on, and react to, one another; but always and in all circumstances we are by ourselves. The martyrs go hand in hand into the arena; they are crucified alone. Embraced, the lovers desperately try to fuse their insulated ecstasies into a single self-transcendence; in vain. By its very nature every embodied spirit is doomed to suffer and enjoy in solitude.”

Heavy, yes, but insightful, absolutely. A relevant reminder. We make individual choices. We all want different somethings. Companies, however, must settle the collective difference, pick a point, and navigate towards somewhere, lest they get stuck circling nowhere.

With that, we wanted to put these directional changes on the public record.

1. No more societal and political discussions on our company Basecamp account. Today’s social and political waters are especially choppy. Sensitivities are at 11, and every discussion remotely related to politics, advocacy, or society at large quickly spins away from pleasant. You shouldn’t have to wonder if staying out of it means you’re complicit, or wading into it means you’re a target. It’s not healthy, it hasn’t served us well. And we’re done with it on our company Basecamp account where the work happens. Update: David has shared some more details and more of the internal announcement on his HEY World blog.

Quick side note: this paragraph originally stated “No more societal and political discussions at Basecamp.” As edited, this is still a hugely divisive statement worthy of criticism. And at this moment, when all work is virtual (and at a company that’s been majority remote for ages), banning social discussions on the company account is the same as banning them at the company.

This has, predictably, been the graf that’s sparked massive outrage from the internet, more about which in a bit.

Jason continues:

2. No more paternalistic benefits. For years we’ve offered a fitness benefit, a wellness allowance, a farmer’s market share, and continuing education allowances. They felt good at the time, but we’ve had a change of heart. It’s none of our business what you do outside of work, and it’s not Basecamp’s place to encourage certain behaviors — regardless of good intention.

3. No more committees. For nearly all of our 21 year existence, we were proudly committee-free. But recently, a few sprung up. No longer. We’re turning things back over to the person (or people) who were distinctly hired to make those decisions. The responsibility for DEI work returns to Andrea, our head of People Ops. The responsibility for negotiating use restrictions and moral quandaries returns to me and David. A long-standing group of managers called “Small Council” will disband. Back to basics, back to individual responsibility, back to work.

4. No more lingering or dwelling on past decisions. We’ve become a bit too precious with decision making over the last few years. It’s time to get back to making calls, explaining why once, and moving on.

5. No more 360 reviews. Employee performance reviews used to be straightforward. Then a few years ago … we introduced 360s, which required peers to provide feedback on peers. The problem is, peer feedback is often positive and reassuring, which is fun to read but not very useful. … So we’re done with 360s, too.

6. No forgetting what we do here. We make project management, team communication, and email software. We are not a social impact company.

Who’s responsible for these changes? David and I are. Who made the changes? David and I did. These are our calls, and the outcomes and impacts land at our doorstep. Input came from many sources, disagreements were heard, deliberations were had. In the end, we feel like this is the long-term healthy way forward for Basecamp as a whole — the company and our products.

Basecamp (a company I’ve written about a lot over the years) is unusual among tech companies in several ways. They’re not only privately held, but very closely held by the two managing partners (Jason Fried and David Heinemeier Hansson), and with the notable exception of the one time they took venture money from Jeff Bezos, of all people, have been independent and self-funding since the 1990s. They’re based in Chicago, but have been majority remote (and, in fact, really fierce advocates for distributed work) for most of their history. They’ve invested a lot of time and resources into developing subscription-based services, but have also open-sourced a lot of their underlying technology, starting with the Ruby on Rails framework which DHH created and still oversees.

In short, the Basecamp founders and team made their name on being iconoclasts. They’ve written and published books about their “heretical” philosophies and working principles: Getting Real, Rework, Remote, It Doesn’t Have To Be Crazy At Work, and most recently Shape Up.

Given that, the thing that stands out first for me about this announcement from Jason — which, to be clear, I think was a bad, tone-deaf, and upsetting statement from a company I’ve admired — is how basic it is. All of these “changes” move Basecamp further away from its small company roots toward something more like business as usual.

Having worked in big companies for almost a decade, I’m all too familiar with managers seeing a little more churn and chaos in decision-making, and deciding the answer is that roles and responsibilities need clarifying, or that some hot topic needs a single responsible decision-maker.

Because I work for a company known for its generous perks and respect for individuals’ freedom to be themselves at work, I’m less personally familiar with companies paring back benefits or curtailing speech, but all of that too seems like an embrace of the kind of impersonal “corporate minimalism” that I associate more with a place like GE or IBM than a 50-person company that publishes books about making work better.

Basecamp has never been an explicitly mission-driven company — it’s a fair statement by Jason that “we’re a project management software company, not a social impact company” — but one could argue their brand was built on an implicit mission of making work a kinder, simpler, more humane place. Their products don’t simply make work more efficient, but help make information more comprehensible and usable by the human beings doing that work.

(Their newest product, the HEY email service, continues that tradition and broadens it into the consumer world, as if to say it doesn’t have to be crazy in your inbox.)

Their design-forward, user-centered approach to what is frankly enterprise software predated companies like Slack and Dropbox by almost a decade, and has inspired a generation of designers and developers.

I embraced Ruby on Rails and Getting Real for those humane qualities; 37signals’ work kickstarted my career. I wouldn’t be where I am if not for them.

So even if it’s not that surprising to see Jason and DHH pivot their company toward a hard-bitten, head-in-sand, back-to-basics focus on work, it is surprising to me to see them do it in a way that is so unkind.

And regarding Jason’s statement that “input came from many sources, disagreements were heard, deliberations were had,” I have to question whether that’s true given that at least one longtime employee tweeted their surprise and disappointment at the news.

Leaving aside the obvious problems with trying to keep “politics” out of work at a moment when social change and turmoil consumes our lives outside of work, every one of these changes is aimed at disempowering all the individuals who work at Basecamp, apart from the two partners, whose power and role has increased. Before yesterday, one could believe that Basecamp was an employees’ paradise, where people had a voice and would be heard.

The clear statement from the founders yesterday was: you have no voice, and we do not want to hear you. It’s possible that all of this is being taken out of context — years ago someone who works with both Jason and DHH told me their blunt writing style masks much friendlier personalities and nuanced viewpoints — but if so this was a massive, avoidable communications failure. And I question why, exactly, it needed to be public, except to signal (as Coinbase did months ago) that people who are concerned about “politics” or who want their employer to care about them as people should find employment elsewhere.

Historically, Jason and David have tended to dismiss internet criticism as “haters” and “dunk tweets,” and I have to wonder if they’ve started to look at their team’s feedback through that lens as well. If so, that’s a dangerous place to be. I’ve also worked on teams where it was obvious no one had a voice besides the person in charge and a few loyal cronies, and it sucks.

That said, I hope they listen to some of the pushback, and soften or walk back some of what they’ve said. It would be a shame for the Basecamp legacy to end this way.


Thoughts on Apple’s “Spring Loaded” Event

If you were hoping for Apple to sell you a $350 keychain, I have good news!

It’s that time again—Apple has announced products, and now we will talk about the products that were announced!!!

I did not watch today’s event live, because I had other things going on: my newly vaccinated in-laws are visiting, I had to pick up lunch carryout, the dog needed walking, and then I had a meeting. I kept one eye on The Verge‘s liveblog, and have spent a chunk of the afternoon catching up on everything, so I may have missed some stuff and, if so, will update this post with additions or corrections as needed.

AirTags

Finally. Apple’s Tile-like location tracking dinguses have been rumored for years, and now they’re here. I like that they’re relatively inexpensive ($30, or $99 for four), and I like that you can get them personalized. I’m less wild about how keychain or lanyard attachments cost extra — on one hand, it means you can choose how they attach to your stuff, but on the other, it’s more money on top of the cost of the tracker. (At least the battery is replaceable!)

Another way of looking at AirTags’ pricing and pitch: Apple will bring the “play a sound or look at a map to find that thing” feature from your iPhone to any object you can attach a small round puck to, for as little as $30, which seems like a bargain after the hundreds or more you’re already paying for a phone.

Tile’s trackers start at $25, and while they do have a lanyard loop, they are bigger, less personalizable, and more utilitarian-looking than AirTags. Not to mention, they aren’t nearly as well integrated into Apple’s ecosystem.

Before Covid, when I left the house regularly and there was a non-zero chance I might leave my keys at the office, I used to keep a Tile Pro on my key ring. It worked okay, but the Tile app had a bad habit of alerting me that I’d left behind my keys anytime I walked more than a block from my house without them. I told it that home was a normal place for them to be… but then it started to think that the keys were a few doors from my house because that was where my phone lost the Bluetooth signal.

If nothing else, I expect Apple to do quite a bit better at that, for only a bit more money, and an AirTag will look like a nice, engraved steel keychain to boot.

Speaking of nice steel keychains, check this out hiding at the bottom of the pricing page for the very affordable and accessible AirTags:

Confession time: I actually own an Hermès strap for my Apple Watch. It was over $300, and it’s easily the best watch band I own — the leather is supple, and unlike some other, far cheaper leather goods I own, it actually has gotten more supple and better looking with time and wear.

That’s to say, I’m willing to grant that a Hermès leather-encased AirTag with an exclusive Hermès engraving is something someone would pay $350 for. I’m not quite there — I think these look pretty hot, but it took four or five years for me to work up to wanting a luxury Apple Watch strap, and AirTags are -1 week old.

I did just pre-order Nomad’s AirTags glasses strap, because as ridiculous as I may look having a glasses strap (at all, let alone one with a tracker on it), I feel more ridiculous when I lose expensive sunglasses (again).

The next iPad Pro

I gotta hand it to Apple: they’ve now stuck with the same form factor and accessories for the iPad Pro for not one, not two, but three years. (Well, almost.) This is the fourth iPad model that works with the Pencil 2, and the third that will work with the Magic Keyboard. If you (like me) have spent $400 or more on iPad Air/Pro accessories, but worry that someday Apple’s designers will get bored and make you buy new stuff that’s only a millimeter larger or smaller, like they do with iPhone cases every year, well, we dodged that bullet for another year.

Apple’s big headline for these iPads is that they are powered by the same M1 processors as new Macs, and in fact support the same Thunderbolt 4/USB4 connectivity. They are, in essence, tablet-shaped Macs that run iPadOS—or are the new Macs laptop-shaped iPads that run macOS?!

It is unclear what Apple thinks we’ll do with all this power. They say the new iPads have “console-quality graphics”, but they’ve been saying that for years. It’s been true for years! But nobody is using an iPad as a PS5-replacement, even if it’d be fine at it. Maybe there’s something waiting in the wings, maybe Apple (as ever) is hoping the ecosystem will make fetch happen with these devices if the specs get good enough.

Currently, I’m using an 11″ iPad Pro from 2018. I’m a little bit interested in these new models, especially the extra-bright XDR screen on the new 12.9″ Pro. But I’m also quite happy with my 11″ — it’s plenty fast enough for me, and while I am certain this new iPad can do more than my current one, I have no idea if I need more. (Also, on the topic of those accessories I’d rather not buy again: I have a $299 sunk cost, in the form of the 11″ Magic Keyboard, incentivizing me to stay on the 11″ iPad.)

But you know, that’s probably fine. The iPad is what it is, and Apple seems to be OK with that.

The new M1 iMac

The other day I was thinking about what Macs, if any, Apple might announce now, with the Apple Silicon platform still very new, amid a massive global chip shortage.

And that got me thinking about the iMac, which started out as Apple’s flagship computer for families and everyday users, but has ended up their de facto pro model for most use cases, owing to the Intel-based ones having very robust specs (not to mention the only 27″ 5K Retina displays in the industry). Before the last big chip transition, anyone with any sort of demanding use case needed a Power Mac G5, and the rest of us could get by with an iMac. In the Intel era, eventually Mac Pros became absurdly high-end supercars, while iMacs gradually became powerful enough to do all but the most demanding work. The short-lived iMac Pro, which Apple apparently made as a stopgap to tide those highest-end users over until the current, absurdly powerful and expensive, Mac Pros were ready, was one of the best Macs Apple ever shipped.

Now, with these new M1 iMacs, we have a return to the original concept for the product: a simple, beautiful, impeccably designed computer for everyday use. That idea extends even to the display: it only comes in one size, around 24″, which is not big enough for the kinds of pro workflows iMacs had found themselves in, but perfectly fine for home use.

Like the other M1 Macs, the new iMac will probably be absurdly fast, but with something of a performance ceiling especially when asked to do sustained high-CPU work. They seem like great computers, which if anything only whets one’s appetite more for what kinds of true pro-level ARM Macs are coming later this year.

One of the most exciting, then disappointing, announcements today was the new Magic Keyboard that comes with these iMacs. The new keyboards have a feature I’ve wanted for a long-ass time: Touch ID. In theory, there’s no reason why Apple couldn’t put a Touch ID sensor on their keyboards and use it to allow users to unlock their Macs or pay for things while their laptop lids are closed. Microsoft sells a $130 keyboard with a built-in fingerprint sensor that works with any PC that supports fingerprint-based biometrics. I have one; it’s great. I want something like that for my Macs.

Sadly, these new keyboards are available only with the new iMacs, and as far as I can tell, only support Touch ID when paired with the iMac. (I guess if your color-matched keyboard, mouse, or trackpad breaks, AppleCare has to send you a new one. Likewise, if you choose a mouse over a trackpad and then change your mind, you’re stuck with a non-matchy trackpad later on.)

On the marketing page for the new iMacs, I find it interesting how much emphasis Apple puts on these being the 24-inch iMacs — both by way of comparison to the old 21.5″ models, and in contrast to the 27″ ones. It makes me think that Apple isn’t done with the iMac this year, but that they’re planning for a bigger-screened iMac to have more pro-level specs, in line with what higher-end users have come to expect from the bigger iMacs.

One more thing…

Well, a few more things:

There’s finally a new Apple TV remote! And you don’t even need to buy a new Apple TV to take advantage of it. (But given that a new Apple TV is $180, and the remote alone is $60… I mean, you decide.)

Apple Card now supports family accounts — not only shared cards between spouses, which had been a common request, but the ability to share a Card account with kids, teens, or anyone else in a Family Sharing group. This is a really interesting move that is Apple’s first truly differentiated feature in the world of money and payments. Banks like Chase offer kid accounts (either traditional or prepaid) that are somewhat integrated with parents’ banking, but nowhere near this sophisticated, and without the ability for the less credit-experienced users to rely on their parents’ credit to help bootstrap their own, while also giving parents tools to monitor and control kids’ spending on the account.

iPhones now come in purple. I mean, it’s a small announcement, but I think it’s the first non-PRODUCT(RED) new color announcement for the iPhone since the white iPhone 4 first dropped a decade ago. (There are purple cases too, if you already have an iPhone 12.)

Oh, and iOS 14.5 is coming sometime next week. When? Apple didn’t announce a date for the new update, but they did say that AirTags will ship on April 30 (next Friday), and that they require 14.5, so…

In addition to enabling AirTags, the new OS update will let you unlock your phone with a paired Apple Watch if you’re wearing a mask — I’ve been beta testing this feature for over a month and it’s a godsend — and will also include a revamped Podcasts app with support for paid podcast subscriptions, which, OK whatever.

What wasn’t announced? No new AirPods yet. No less expensive standalone Mac display. No AR goggles, ambient smart display, or FaceTime-on-the-TV gadget. No car, obviously.


How To Blog

Sometimes I wonder if I’ve simply forgotten how to blog. Little (shit)posts about whatever interested me used to come so easily — I’m sitting on over 1,000 entries from 2002-2008, from my original Movable Type blog, along with a few hundred from my old Tumblr. Most of those were gushing about some tech company or product I liked, or complaining about something petty, or some personal in-joke where I even don’t remember what it was about.

These posts weren’t great, but they were an accurate picture of what I was into at the time, and collectively they’re a chronicle of what and how I thought for almost 15 years. Why did I stop?

Continue reading

Let Me Tell You About My Boat

More than you ever wanted to know about my WFH setup.

[record scratch] Yep, this is me my desk. Perhaps you’re wondering how I got here.

Like everyone, I’ve been working from home for nearly a full year due to the COVID-19 pandemic. This past year hasn’t been my first go-around working remotely — I did it for the first six of my seven years working on Typekit, and before that as a freelance web developer in the ‘00s. Really, over my career, I’ve spent more time working from home than from offices. When COVID happened, and we all found ourselves having to set up ad hoc workspaces for what we hoped would be weeks, feared would be months, and will turn out to have been a year plus, I was in a better position than most.

I love gadgets, and I’m a perfectionist. I’ve tinkered with my desk setup regularly for years, and it’s not like I’ve had opportunities to do much else these days besides taking Google Meet calls and tinkering with stuff. I’ve replaced or tweaked almost everything on the desk since last March. Honestly, life would be easier (and cheaper!) if I could just buy some equipment and be satisfied with it, but that’s not how my brain works.

So here I am, with a boxful of keyboards, everything mounted on ergonomic arms that can be mounted, and a pro-level video setup. Let me tell you about my journey.

animation of Bill Murray as Steve Zissou

The Right Laptop for a Pandemic

My main work machine is a 16” MacBook Pro with 32 GB of memory and an upgraded graphics card. To be honest, I only need this much computer for Chrome tabs and Google Meet calls, and I don’t need the 8-core processor or enormous pile of RAM as much as I need a graphics card.

At the start of the pandemic, my main work laptop was a 2018 MacBook Air — an okay machine for working on docs on the train or presenting from a conference room, but less suited to serve as a long-term desktop replacement. The old Intel-based Air gets sluggish when you ask too much of it — it can do a Google Meet call, edit a Google Doc, and connect to an external monitor, but not all three at the same time, and sometimes even two is pushing it. (Also, as it happens, my Air had the old, bad keyboard, whereas the Pro has the new, better keyboard.)

USB-C Is Still Terrible

At my desk — which is an Uplift motorized sit-stand desk I bought with my company’s generous WFH gear stipend — I keep the laptop in a TwelveSouth BookArc stand. It’s connected to a CalDigit Thunderbolt 3 dock (the same model Wirecutter recommends and Apple sells) and from there to an HP Z27 4K display. That display is mounted to the desk with a Fully Jarvis monitor arm, which lets me position the screen higher when I’m standing and lower when I’m sitting.

Desk with Google Home, laptop, and monitor
My MacBook Pro docked on my desk

I am a stickler for only having to plug one wire into my laptop. Two wires are an annoyance; three are a failure. The Z27 has a built-in USB-C hub, and in theory, it should be able to connect directly to my laptop and do everything.

But USB-C, it should be said, is a hot, fiery mess. Even power delivery — USB-C’s most straightforward job — is problematic: different devices need different wattages, and when given the wrong wattage will charge slowly or not charge at all. And of course, none of this is labeled, so you just have to know that (for example) Apple’s newest iPhone cables will charge at full speed at 20W, but not 19W.

🔥 This is fine 🔥

Thunderbolt devices conform to higher, more consistent specs than generic USB-C ones, so my Thunderbolt dock’s performance has generally been more consistent and less flaky. Of course, the trade-off is that I had to buy an extra $200–300 device rather than use the free USB-C hub built into my display. Also, many Thunderbolt cables are annoyingly short, so I upgraded to Apple’s Thunderbolt Pro Cable — the longest high-performance cable on the market — which was another $130.

All that’s to say: USB-C is an annoying garbage fire that you can mostly fix by throwing money at it. I hope some company is working on bringing lower-cost Thunderbolt 4 gear to market because this is untenable.

BTW, also pictured above is Google’s Nest Hub Max, which I originally bought to help solve my MacBook Air video chat problems — it can connect to Google Meet or Zoom, though its camera has an absurdly wide-angle lens that makes calls look like a hip-hop video from the ‘90s — and now mainly use for controlling my office lights and watching WandaVision.

Video Conferencing

Lighting and camera equipment
elgato Key Light, Logitech Streamcam, Sony RX100 VA

Maybe I’m weird, but I’ve largely ignored the whole Twitch thing. Perhaps it’s part of my particular introversion, but I’m just not as into watching people’s random talking-head videos as other folks seem to be. I hadn’t really been exposed to all the ridiculous gear folks use to capture video of themselves sitting at their desks, ideally surrounded by colored accent lights. But then I read Michael Lopp’s essay about his video conferencing setup, where he writes:

I, like you, am stuck in this box on your screen—this [is] my life now. I still have all the same meetings with all the same people, but we’re all stuck in our respective boxes, and we’ve got work to do. Together. Right now. Remember in-person meetings? The audio-video quality of in-person meetings is excellent. It’s the quality bar. It allows us to see and hear subtle aspects of human interaction. It allows us to work better as a group. A well-run brainstorming meeting with a group of humans is comforting jazz. The equivalent meeting in a video conference is a master class in how technology gets in the way of humans effectively communicating, collaborating, and being creative at scale.

As a product manager for a distributed team, my work is almost all meetings, so beyond being yet another fun pandemic project, upgrading my AV setup is a way to bring more immediacy and life to interacting with folks and make hours of daily Meet calls a little less of a slog.

Like Rands, I started out with a fancy webcam — a Logitech StreamCam, which has a bigger sensor and lens than most other webcams — paired with a podcast-friendly USB microphone (Blue Yeti X) and wired Master & Dynamic MH40 headphones. This setup was fine and definitely an improvement over a laptop camera and AirPods combo.

But on the audio front, I started to get tired of having headphones on or in my ears all day and wanted to replicate the feeling of being in a conference room with excellent, full-duplex audio. I’m fortunate that I have a dedicated office space with a door that closes, so I bought a Jabra Speak 710 USB speakerphone, which has worked great for all my calls. (On the occasions when I have to share my office space with my six-year-old doing virtual school, I switch to my fancy AirPods Max.)

For video, the Streamcam is actually fine. But then Sony shipped a Mac app that allows any of their mirrorless cameras to be used as webcams, so I switched to using the RX100 VA I’d bought for traveling, and I got hooked. Right now, I have the Sony camera mounted on an elgato Flex Arm, keeping it positioned above my screen for maximum eye contact with people during meetings. The RX100 has a relatively fast built-in Zeiss lens; with good lighting, I can open it all the way up to f/2.4 and get great bokeh for a lovely natural background blur effect.

You might be wondering — if the Sony camera is so great, why do I still have the Streamcam sitting atop my monitor? Mostly laziness (its cord is in a cable-management thing that I don’t want to unwind), but also once a month I have a telemedicine appointment, and my doctor’s video chat app doesn’t work with the Sony webcam software. 🤷🏻‍♂️

Speaking of lighting: I bought the same lighting rig Rands uses — elgato’s Key Light, a desk-mounted LED panel you can control from your phone — to replace the random LED desk lamp I’d been using for years.

Though I am a naturally messy person, once I’d invested in a nice camera image (and once the holidays left me with a bunch of giant Lego sets that needed storage), I decided to work on improving what folks saw behind me. So I set up a row of IKEA KALLAX shelving units, neatly arranged behind my Peloton bike, with my Disney Castle and Diagon Alley sets displayed as an art piece I call “The Lost City of Orlando.” The shelf also has my copy of The Power Broker as an Easter egg.

Don’t Get Me Started About Keyboards

Seriously, don’t, we’ll be here all day.

Computer keyboard, mouse, and trackpad
Jabra Speak 710, Drop CTRL Keyboard, Logitech MX Ergo, Gather desk organizer w/ Baron Fig pens

At the moment, I’m using the Drop CTRL mechanical keyboard with Halo True switches. The CTRL is more or less identical to Input Club’s K-Type keyboard, which those two companies had co-produced before a falling-out that resulted in the keyboard and Halo switch designs being owned by Drop. My K-Type is still at Google’s NYC office, waiting for COVID rates to finally get low enough for them to let me come claim my stuff, so I bought a CTRL for my home office.

Being a keyboard fiend, I will sometimes swap in a different “fun” board for a few minutes (then get frustrated and switch back). Most often these are another Input Club keyboard, the Nightfox, or my latest acquisition, the Keyboardio Atreus.

As for my mouse, right now I am using both a Logitech MX Ergo Plus trackball — I don’t have RSI and I’d like to keep it that way — and an Apple Magic Trackpad 2, the latter mainly for gestures and sometimes for scrolling.

Just as important as my keyboard and mouse are pens and paper — I am terrible at taking well organized digital notes while talking to someone, so I jot down a lot of sticky notes. I keep a stack of Baron Fig Nomad dot-grid stickies close at hand, along with a couple of Baron Fig Squire pens, all neatly stored in Ugmonk’s Gather desk organizer (which also holds my phone charger and a stand for my AirPods).

Finally, another thing I keep on my desk are toys — both for decoration, and to fidget with during calls. If you’re ever on a meeting with me, know that while you’re speaking I am probably on mute, pressing random buttons on a Teenage Engineering Pocket Operator that makes Street Fighter sounds.

Don’t worry — I am totally paying attention.

Lastly, My 15-Year-Old Chair

A very messy home office
My first proper home office, summer 2006

Ladies and gentlemen of the class of ‘97buy a good chair. If I could offer you only one tip for the future, good chair would be it.

When I landed my first big freelance contract, I splurged on a brand-new Herman Miller Aeron chair for my first proper home office. This is the same chair I still use today, fifteen years later. (Technically it’s still true that I tweaked everything on my desk this past year, because the chair is not on my desk.) The Aeron’s signature feature, and what I like best about it, is that its seat and back are made of a highly supportive, breathable mesh. My attic office space isn’t hooked up to our central A.C., so the mesh helps me stay cool and get the benefits of the window unit I use during hotter times. Year-round it helps prevent sweatiness and is just super comfortable for long stretches of sitting.

Despite having been on the market since 1994, the Aeron is still good enough that Wirecutter has it as their runner-up pick. There are other $1,000-ish desk chairs that can compete with it, many of which are more adjustable or customizable.

But I’m very happy with the Aeron. It’s one part of my desk setup I never, ever think about changing.

Any table will work as a desk, but the wrong seat will have you hunched over your computer or leaned too far back, suffering from neck strain, back strain, eye strain, or all three. Spend whatever you need to, or whatever you can. Generally speaking, I recommend buying a used or refurbished Aeron (or Embody, or the like) over brand-new chairs in the same price range. These chairs last for years and years, and while several hundred dollars is a lot of money for most people, your back and butt (and your future self’s healthcare budget) will thank you for it.


Where The Web Fonts Go

Get those fonts out of Git

Self-hosting web fonts can be easy; just add the font files somewhere in your site’s directory structure and reference them from your CSS. But if your site’s source code is stored in a GitHub repo, and you want your code to be public (or just forget to make it private), you may accidentally be violating the fonts’ license terms! Roel Nieskens called GitHub “the web’s largest font piracy site” due to web developers storing font files in publicly-viewable repos:

Let’s use the Github search API and see if we can find the most ubiquitous commercial font on the planet: Helvetica. And yep, more than 100,000 copies are findable on Github

What if you search for MyFonts’ products on Github? That’s exactly what I did. I skipped generic names that could result in false positives: names like Black, Latin or Text and fed the rest to the Github search API. The result? Of the deduped list of 29,951 fonts, 7,617 were present on Github – that’s a quarter of the entire MyFonts collection. Of their fonts labeled “bestseller”, 39 out of 49 can be found on Github, as well as 28 of the 30 labeled “top webfont”.

For a while now, I’ve kept my site’s source code private (even though I’d prefer it be public) so that I can store fonts there — it’s just so simple and straightforward to keep fonts and other assets with my code, and by keeping the repo private I can stay in compliance with all my font licenses.

But beyond that, having fonts in a Git repo is an anti-pattern because font files are relatively big binaries, which Git is not super-efficient at tracking or storing. And, because Git remembers everything, every font file I’ve ever used in any version of the site will remain part of the repo forever. Any time I (or Netlify’s build servers) clone a fresh copy, it’ll have to pull down a megabyte or so of font files, only a fraction of which it actually needs.

IMHO, the best idea is to not store web fonts in Git if you don’t have to, but where should they go instead?

My friend Stephen Nixon — who made the excellent typefaces Recursive and Name Sanswrote up a nice post explaining why and how he securely hosts web fonts on AWS S3 :

With the S3 Buckets feature of Amazon Web Services (AWS), this is relatively easy & very inexpensive – unless you are making a hugely-popular website, perhaps. You can (and should) configure it to only work on specific web domains, so you don’t break your licensing or end up paying for other people to use your font hosting!

S3 is great — one of very few internet things that is fast, cheap, and good for most use cases, and it’s been that way for more than a decade. Amazon offers a powerful web control panel for working with S3 buckets and data, and there are also many excellent third-party and open source apps that can upload to S3. My favorites are Transmit, Panic’s venerable file-transfer client for macOS, and s3cmd, a Python-based open source command line tool.

For me, the main drawback to S3 is that it can be annoying to serve fonts or other files over SSL. All S3 buckets have default s3.amazonaws.com URLs that can be accessed over HTTP or HTTPS, which is great. But S3’s static website hosting features (which you may not need for this, but idk) are only available over regular HTTP, and if you want to leverage those or use a custom domain you’ll have to set up CloudFront, Amazon’s CDN service, which is extremely powerful but also complicated and rather expensive.

Another drawback to S3, less important for small projects but still worth thinking about, is that without CloudFront all your data is served from your chosen AWS datacenter, not from Amazon’s CDN. Some users may see latency or slower downloads, which is exactly what you don’t want with larger assets like fonts. Slow font downloads can block page rendering or exacerbate problems like FOUT.

So, for the fonts on this site, I decided to use DigitalOcean Spaces, an “object” (aka file) storage service that’s patterned after S3, and compatible with S3’s API so that apps like Transmit will work with it. It’s a lot simpler, both in the product itself (nice web UI, easy-to-understand settings) and in its pricing model (a flat $5/month fee), and it has a built-in CDN that can integrate with DigitalOcean’s DNS servers to effortlessly configure custom domains and SSL certificates.

DigitalOcean’s control panel makes it easy to set up and configure Spaces, including custom domains, SSL, and CORS rules

I keep all my fonts in the same directory of the same Spaces bucket, which I manage using Transmit:

My web fonts in their directory on my Spaces-powered CDN

Each subdirectory is named after the fonts’ CSS font-family name, so that my “API” for using the fonts is consistent. To enable the Söhne fonts, I add a link to fonts/soehne/index.css, and then I can use font-family: soehne, … in my CSS. Nice and simple.

Because these directory names and URLs follow a nice, regular structure, I can lightly automate adding these links in my Hugo templates, providing a list of family slugs that are turned into <link> tags. These are hard-coded, but could just as easily be set as front matter data on a page or post.

CDN-hosted web fonts, integrated into my site’s Hugo templates

Now that these fonts are up in The Cloud, I can easily reference them in test pages and experiments without having to copy them over from another project.


Parcel Post

Recapturing the magic of early web development with modern tools

I dunno about you, but I’ve been missing the old days when we could try out some new web technique or think through some code by just opening up an editor, making a fresh index.html, and getting to work.

I’m generally a fan of frameworks that let you get to work with a bare minimum of boilerplate code or setup, and I’m particularly fond of tools that leverage the filesystem and/or the native syntax of the web, so that web development feels like it did back when uploading PHP scripts to a FTP site felt magical.

This is a rare feeling these days; in order to give developers the power to make powerful, scalable web apps, it feels like we’ve neglected or even forgotten how to make web pages. I miss the simplicity and immediacy — the feeling of magic — that made web development so fun when I was starting out.

Next.js has some of this magic. It’s a React-based app framework that uses file and directory names to set up URL routes; given a file named about/index.js, Next will create a web page whose URL is /about. This isn’t quite the old web I loved in the 2000s, because React is involved. That file isn’t a web page, it’s a JavaScript file that exports a component, and there are things that are stupidly hard to do without layering on ever more libraries and boilerplate. But what’s nice about Next is that once you install it and its dependencies, you can just create a couple of files, run next dev, and you’re off to the races.


This weekend I wanted to play around with Chroma.js, a library for manipulating colors and scales. I started out trying it in CodePen and Glitch — both great tools for trying things out — but found myself wanting to write code in my favorite editor, not a browser.

Parcel made it possible for me to have my cake and eat it too — to write code like I was building a totally local, static web page, but enjoy all the benefits of modern build tools.

Parcel’s website describes it as “a compiler for all your code, regardless of the language or toolchain… (it) takes all of your files and dependencies, transforms them, and merges them together into a smaller set of output files that can be used to run your code.” All of which is true, but I think obscures the most important part: Parcel does all of this with little or no setup, configuration, or boilerplate code.

This may seem remarkable in different ways depending on your experience with the modern JavaScript world.

If you’re familiar with compiled languages or frameworks, or other bundler tools like Webpack, Parcel’s big pitch is that it can simplify your life. Whenever I use Webpack it usually takes me dozens of minutes to write (or rather copy-paste) a configuration file and install packages to make my code run. Even for an experienced JS programmer who’s used to this pain, Parcel is a valuable time-saver.

But what’s really great about Parcel is that it’s a Webpack-like tool that can be used without prior knowledge of Webpack-like tools, that uses your own code to configure itself.

Take an HTML document like this:

<!-- index.html -->
<html>
  <head>
    <title>A throwaway web page experiment</title>
    <link href="./styles.css" rel="stylesheet" />
  </head>
  <body>
    <h1>Time to code!</h1>
    <div id="vue-app"></div>
    <script src="./app.js"></script>
  </body>
</html>

In a bygone era, with all your HTML, JavaScript, and CSS code hand-crafted as static files, you could just load this into a browser and go. In fact, let me tell you a secret: that way of making web pages still works. The modern web platform still supports simple ways of working, it just doesn’t allow or make it easy for you to use preprocessors if you want to.

But Parcel does! Once it’s installed, just run this command:

parcel index.html

Reading your HTML, Parcel will see that it depends on two other assets — styles.css and main.js — and build those, preprocessing them according to the file extensions. It’ll (re-)build your HTML too, replacing references to these source code files to the built asset files it generates.

What’s more, these don’t have to be plain CSS or JS files. If you want to use (say) Sass and TypeScript, you could do this and it will Just Work:

<!-- index.html -->
<html>
  <head>
    <title>A throwaway web page experiment</title>
    <link href="./styles.scss" rel="stylesheet" />
  </head>
  <body>
    <h1>Time to code!</h1>
    <div id="vue-app"></div>
    <script src="./app.ts"></script>
  </body>
</html>

Beyond that, Parcel brings a web server and hot reloading to the party—you give it some files, it gives you a local development URL, and that URL will auto-magically refresh as you edit code. Hot reloading has been a revolution in how I approach web design — beyond just reloading pages, seeing code or style changes applied seamlessly in the browser makes designing in the browser responsive and delightful. Hot reloading with Webpack usually requires a framework or complicated setup; in Parcel that too Just Works.


So what’s the catch? Well, Parcel may make the JS ecosystem much simpler and easier to use, but it is still part of that ecosystem. Simple things tend to work very simply, but if you push the limits of what Parcel is good at it can require some know-how to get back on track.

For my color theming experiment I wanted to use a couple of my favorite libraries: Tailwind CSS to apply styles to a web page, and Vue to set up data-driven templates. But it turns out the current release of Tailwind, v2.0, requires PostCSS 8. Parcel 1.x doesn’t work with PostCSS 8, so I needed to switch to a nightly build of Parcel 2, which isn’t out yet.

Parcel 2, meanwhile, doesn’t support single-file components with the current version of Vue — for those I had to upgrade to the beta of Vue 3. For my “simple” web page to hack on, I had to use pre-release, bleeding-edge versions of two JavaScript tools just to get things to work.

BTW, this is the NPM incantation to install the stack I ended up using:

npm install --save parcel@nightly vue@next \
  tailwindcss@latest postcss@latest

Now, I did have another option, to stick with versions of these libraries that work together, and to only use features that work with those versions. Tailwind 1.x is nice, as are non-single-file Vue views. I’m the one who chose to live dangerously.

And even with the JS dependency whack-a-mole, it was and is nice to set up a project by just writing code and having it work. It’s nice because I don’t feel like I wasted an hour setting up a throwaway project, and the steps to get going with some code are simple enough to keep in my head.


Annus Horribilis-ish

Looking back on 2020

2020 was a heavy, dark, horrible year, an annus horribilis for almost every living person. But all told it wasn’t so bad for me and my family.

This is a privilege, I know, and the fact that my 2020 was more boring than painful — very chill apart from a deepening sense of existential dread — shouldn’t be taken as me believing 2020 was a chill year. It was not. (And as I write this on Jan 11, 2021 seems no more relaxed or relaxing.)

Instead of planned or hoped-for trips to Disney World, Munich, New Orleans, and Paris, I had a long weekend in the Catskills amid more than 300 days stuck at home. Instead of office parties and work-subsidized gym training, I bought a new standing desk and a Peloton and spent thousands of hours in my attic. 2020 was defined by a lot of things, but mobility and experiencing different places was not one of them.

Sheltering in place has served its purpose: none of the three of us have been infected with or exposed to COVID. And we’ve been pretty comfortable — my job has been stable and secure, we’ve watched lots of movies and built over a dozen big LEGO sets.

Working from Home

My last visit to my office in New York City was on Tuesday, March 4, 2020, and it turns out I will not be returning to that office even post-COVID; as far as I know we’re not renewing the lease on that space.

Unlike many of my NYC- and SF-based co-workers, I worked remotely full-time for over a decade and have always had a home office set up, and most of my day is video calls with California anyway. I think I transitioned to working from home much more smoothly than a lot of folks.

Last January, before the lockdowns, I was asked to lead product management for Google Fonts. In the fall I was asked to take on some more work leading Material Design adoption inside Google.

In March, we launched a major update to the Google Fonts website, featuring new ways to find and use variable fonts. A lot of my time this year went toward some big updates to Google’s brand typeface, Google Sans, including a new text optical size which you can see on the design.google blog.

I’ve been meaning to write about my WFH setup; to be honest a lot of my tips boil down to “have extra space at home” and “spend money on stuff.”

I will say that if you (or your employer) can buy only one expensive thing for working from home, make it an ergonomic chair. The Herman Miller Aeron I bought in my original first year of WFH in 2006 is still around, and has saved my ass (muscles, also my back) in these unusual times.

Traveling and Eating

In 2019 “traveling” included family trips to Disney World, Ohio, and Texas, and personal/work trips to Melbourne and San Francisco. In 2020, it basically meant “leaving the house.” (I haven’t even been to NYC since my last day of work on March 4.)

We went three places last year, all within 2 hours of home: the Hudson Valley (for a masked hangout with a friend), Asbury Park (for a beach day), and the Catskills (for “glamping”). The latter two trips were during the few weeks when New York and New Jersey had exceptionally low (for the U.S.) COVID rates, and even then we were as careful as could be.

We did almost all our pandemic dining-out during our Catskills trip (and all of it was outdoors). The best thing I ate this year was a burger and onion rings from Phoenicia Diner, pictured below. In our house these last few months, “support our local economy” has become a euphemism for “order takeout” — we’ve eagerly supported Jackie & Son, Miti Miti Latin Street Food, BGR, The Red Cadillac, Arturo’s and The Able Baker.

As a pandemic hobby — and not as self-medication amidst existential world horror! — I’ve been working to up my home mixology game, which I documented as a “cocktail of the week” feature in several of this summer’s newsletters. Where before I usually stuck to home cocktails consisting of such exotic ingredients as bourbon and frozen water, in 2020 I used a lot of fresh citrus and even made some homemade grenadine and blackberry shrub (the latter from David Lebovitz’s Drinking French).

Along the way I “invented” two drinks: the “Glover” (a Rob Roy with Japanese whisky and bitters, named for the first Google result for “famous Scotsman in Japan”), and a Paper Plane variation with St. George’s Bruto Americano and Bigallet China-China Amer instead of Aperol and Nonino.

Reading and Watching and Playing on Screens

Before COVID, my wife and I went to see one of the last stage performances (for now) of David Byrne’s American Utopia on Broadway, which was phenomenal. Spike Lee’s film of the show on HBO Max does it justice, but seeing it live was incredibly special.

We’ve watched a lot of “Nordic noir”-style British detective shows during COVID: Baptiste, River, Collateral, the first four seasons of Shetland. We burned through both seasons of What We Do In The Shadows, and loved Never Have I Ever, The Queen’s Gambit, Perry Mason, I May Destroy You, and The Good Lord Bird. Devs was all right, though it got a little extra toward the end. It’s hard to believe The Good Place finale happened in 2020. Oh and, of course, Ted Lasso.

As for many of you, for us this was the year of the crossing of the animals.

Writing

I spent a lot of this year redoing and re-redoing this site but not crafting new content. This site’s audience is practically nonexistent, so I really have no one to please but myself, but I’m a perfectionist, so I’m exceedingly hard to please.

In January, I started writing regular posts for a week or two, mostly in the “product management thought-leader” genre, e.g. On “authority” and People over work product. These posts are OK, but re-reading them now I think I was, amazingly, both half-assing it (both were written in short bursts while waiting for meetings to start) and trying too hard.

Last summer, looking for a COVID-era outlet, I jumped on the Substack bandwagon and revived my old newsletter. I had a decent run of sticking to my planned weekly schedule, until the fall/winter holidays and pandemic fatigue finally knocked me off my rhythm. All told I wrote 13 issues in 2020; my favorites were:

I haven’t decided yet if the next one will be issue #14, or the first issue of a new series, or if I’ll just focus on my website instead of a kinda creepy VC-backed content monetization platform. We’ll see how the year goes! 😅

One lightbulb moment I had this week: I miss writing technical posts. I did publish one good one this year — a tutorial on how to change your Git repo’s main branch name — and in the course of making four new iterations of this personal site I learned a ton and have some tricks to share. So watch out for more JavaScript, CSS, and static site generator content in this space.

My attic studio space in its latest WFH configuration, January 2021

Coding Through Crisis

Like a lot of folks, I made the mistake of trying to “use” the pandemic as an opportunity to take on side projects. On May 20, I wrote:

Like a lot of people, I started the lockdown times thinking I’d finally have time to take on and finish some side projects. First I thought I’d make that to-do list app I’ve always dreamed of making, then I thought I’d make my own headless CMS app. Most recently I’ve re-stacked and re-designed my personal site/blog for the millionth time.

I’ve now re-done this site on Gatsby, Next.js, Eleventy, and now Hugo, backed by Markdown files, WordPress, Contentful, and Ghost.

My wife is a knitter; she knits whenever there’s some down time, to pass the time. A nice thing about knitting is that you can practice a skill, and you get a sweater or hat out of it, an object whose purpose and use is simple and well-understood. The act of coding is, for me, a lot like knitting — the only problem is that you don’t end up with a hat, you end up with software or a web site. People need warm, handmade hats; I’m not sure anyone needs handmade software.

I was feeling bad about myself for obsessively re-coding the same website so many times, but then it hit me: it’s really fun to learn and try new tools, and each of these has tiny flaws that made them hard to fully accept. (Though my latest choice — Hugo — seems solid enough that it might stick.)

I learned a lot about all of these tools, and the ecosystems they’re part of. I feel like I’m a much stronger JavaScript coder now than I was a year ago, to the point that it’s now JavaScript and not Ruby I reach for if I have to write a script for something. Via Hugo I’ve started to (finally) dip my toes into Go, and in the course of trying to use TailwindCSS for everything I wrote my first Tailwind plugin.

Maybe I’ll pick one of those side projects back up — I rather liked the little analytics app I was working on — but I may also just keep re-doing this site’s tech stack for fun.

The One Good Thing

It can be hard to remember anything good related to U.S. politics in a week when right-wing goons stormed the U.S. Capitol in the name of the sitting president, and everyone is waiting for another shoe to drop.

But all this is happening because, two and a half months ago, we elected Joe Biden to the presidency. That day when it became real — Saturday, November 7 — was as indelible in a good way as last Wednesday was in a horrible way, a spontaneous explosion of honking car horns, cheering people, and good vibes across America and around the world. It helped that the weather was gorgeous here in New Jersey.

2021 likely has some horrors in store for us yet — COVID and its new progeny, the B.1.1.7 variant, are not done with us, nor are Donald Trump and his followers.

But a week from now the U.S. gets a new president, and in the coming months a lot more of us will get vaccinated, and eventually, gradually, we’ll get our old, socially-proximate world back.

Hopefully, by 2022 it’ll be safe again to wish for a new year full of travel and speaking opportunities and Galaxy’s Edge. For 2021, I’m just hoping for peace, safety, and for things to start getting better again. That doesn’t seem like too much of an ask.