By Casey Liss
MacBook Keyboards

Good news everyone! I’ve found the appropriate tool to fix the it’s-not-a-problem except-maybe-it-is MacBook keyboards!

Me using a garage air compressor to blow out my MacBook keyboard

As we did last year, my pal _David Smith and myself decided to record a podcast within the WWDC podcast studio. The episode we recorded — entirely Dave’s idea — was ostensibly a behind-the-scenes about taking photographs of ATP Live and Relay Live. In actuality, it was an accidental Analog(ue) about getting yourself outside of your comfort zone.

Us in the studio

The episode is one I’m very proud of. Dave opening up about his concerns about doing something scary and different was fascinating, and also relieving to hear. Turns out, I’m not the only one that gets scared. Plus, I almost never record with Dave, so it’s nice to have an excuse to do so. 😊

Taking Risks

This past Tuesday, I woke up as I would any other Tuesday. I got ready for work like any other Tuesday. I went to work, met with my boss, and spoke two words that will dramatically change my life.

“I’m resigning.”

It’s funny, really. I can think of only a couple other pairs of words that have had similar impact on my life. Coincidentally, they were both spoken by Erin:

  • “I do.”
  • “I’m pregnant.”

Tuesday, I was the one speaking them, and I hope like hell I’m not making a huge mistake.

In around a month, I will no longer have a traditional job. I will be focusing my energy most especially on my family, with my two podcasts and side projects like Casey on Cars following behind. I do have some other things in the hopper, other than Casey on Cars, but I’m reticent to announce them before I know they’re ready.

I’m also entertaining other kinds of work. The impetus for this change is about being around for my family, so I don’t want to take on a 40 hour per week gig. However, if you need a hand with something interesting — especially if it involves either teaching or leveraging RxSwiftlet me know.

Regardless, I’m super excited. My whole family is exceptionally, indescribably lucky to be able to attempt me going independent, no matter how long it lasts. I’m so excited to be able to shift the balance of my time from predominantly-work to predominantly-family. I’m so overjoyed to be able to spend time with Erin, Declan, and Mikaela.

In fact, I’m making this leap in no small part because Declan will be in school full-time in a few short years. Mikaela will follow shortly thereafter. There is no better time than now. If I can somehow make this work for the next five or so years, I’ll be overjoyed. If it goes even longer, well, I’ve hit the lottery.

Today, Myke and I released a very special episode of Analog(ue), which is focused on my decision, my thought process arriving there, and my future as an independent worker. Even if you don’t much care for Analog(ue), I’d love it if you gave this episode a shot. I’m really happy with it.

In many ways, this is the resolution of a story arc that is as old as the show. When we started this show, both Myke and I had “real” jobs. A couple episodes from now, we’ll both be independent workers.

I know that, on my death bed, I would regret not giving this a shot. I know that I would say “why did I work, rather than just trying to make it by myself”. I don’t want to make that mistake.

All in all, it’s a really odd thing. Tuesday will go down as either one of the best decisions I’ve ever made in my life, or one of the worst. Only time will tell. Sitting here now, where ignorance is Liss, I couldn’t be more excited or hopeful. I’m so pumped to be able to concentrate on all of the once-extracurriculars that I’ve wanted to get done, but haven’t been able to. With optimism pushing me forward, I can’t help but feel like this is the start of something amazing.

In my life, I’ve never been one to take risks. However, when I do, I’ve always been rewarded, regardless of the eventual outcome. The well-traveled road brings less surprise, but is paved with the regret of poorly trodden forks not taken.

I would be remiss to write this post without mentioning you. It is expressly because of the people that read this website — like you — and the people that listen to my podcasts — like you — and the people that watch my videos — like you — that I’m able to make this leap. Without you giving me your attention, my family would not be afforded this amazing opportunity.

And without the support of my family, and most especially my amazingly patient and brave wife Erin, none of this would be possible.

Sitting here now, I’m not planning a membership or Patreon or anything, but, do me a solid and keep an eye out, would you? And do be sure to use the ATP and Analog(ue) coupon codes. Or get a Relay membership. Hell, do all of the above! But more than anything else, wish me luck.

This week, I’m the guest on the Swift Teacher Podcast. On this episode, Brian and I discuss my history as a developer, my toolchain at work, the transition from C++ → C# → Swift, and, of course, RxSwift.

I had a lot of fun on this episode, as the show is not the kind of show I am usually asked to participate in. Definitely check it out, as well as the other episodes. I particularly liked episode #3, with the founders of Workflow.

Food in Richmond Virginia

I occasionally get asked for recommendations for good food in the Richmond, Virginia area. This is a big ask, because Richmond has a lot of really good food options, which seem to always be changing.

This is my list. There are many like it, but this one is mine.

I’ll cover Richmond proper, as well as the yuppie-central West End / Short Pump area. I don’t often stray south of the river, so, you’ll have to figure that out yourself.

The below is not a definitive list. There are a zillion restaurants in Richmond that I haven’t tried yet. These are some that I endorse, but there are many many others that are just as good, if not better.

Additionally, I’ll probably quietly update it over time, as I find new places, old ones close, etc. This is going to be a living resource.

  • Breakfast
    • Downtown
      • Early Bird Biscuit Company – Yelp
        Really great and varied biscuits, naturally. The line is long, and they do eventually sell out. Get there as early as you can muster.
      • Millie’s – Yelp
        Perfect hangover food. Basically a mess of eggs and other sundries. I fancy the Castro’s Mess. Very small, so it also falls victim to lines.
    • West End
      • Rise Biscuits and Donuts – Yelp
        Delicious biscuits and donuts. Go figure. Try the hashpuppies.
      • Duck Donuts – Yelp
        An Outer Banks staple, you choose your toppings to make ridiculous concoctions like French Toast, or Maple Bacon. Go nuts.
      • Cupertino’s – Yelp
        This half-Jew from New York approves of these bagels. 'Nuff said. You could also try the chicken salad club if you get there over lunch.
  • Lunch/Dinner
    • Downtown
      • Kuba Kuba – Yelp
        The lines are long and the kitchen is open. If you go, you’ll need to shower and do laundry once you leave. But my word, the food is great.
      • Kitchen 64 – Yelp
        Hilariously large portions, and near-ish some really great museums. If you’re in this area, also check out Maymont Park.
      • Sticky Rice – Yelp
        Inventive sushi. Get the bucket of tots.
      • Citizen Burger Bar – Yelp
        Truly delicious burgers, as artisinal and ridiculous as you’d like them.
      • Maya – Yelp
        Upscale Mexican. Get the queso fundido to start, and you’ll think things cannot possibly get any better. Then get the chipotle bourbon tacos, medium rare, realize you were wrong, and expect to dream about the tacos for the rest of your life.
      • Can Can Brasserie – Yelp
        I’ve never been, but I’ve heard universally phenomenal things about this cute French restaurant.
      • Boathouse at Rocketts Landing – Yelp
        An impeccable location right on the river, with food that’s almost as good as the view. However, you’ll pay for it, quite literally.
      • Legend Brewing Company – Yelp
        The food is okay, but being just off the river, opposite the city, the view is tremendous. Go just before sundown and sit on the deck; you’ll see a killer view of the city and river as the sun sets.
    • West End
      • Kuba Kuba Dos – Yelp
        Like Kuba Kuba above, but without the lines, and without the open kitchen.
      • Two Guys Pizza – Yelp
        The best pizza in town. They sell by the slice, and you need to fold them to eat them. Between Two Guys and Cupertino’s, this former New Yorker can call Richmond home.
      • Hutch – Yelp
        Get the prime rib poutine if it’s available; if it isn’t, ask.
      • Burger Bach – Yelp
        Pronounced “batch”, not “bock”, you can get all sorts of delicious, if expensive, burgers. On the down side, the fries cost extra. On the plus side, you can choose from many different dipping sauces to have with them.
      • Capital Ale House – Yelp
        The food is good but not great. The beer selection, if that’s your kind of thing, is tremendous. They have something like 50 taps and a shedload of bottles.
    • Also Consider
      • Q Barbeque – Yelp
        North of town, my favorite BBQ in Richmond. Get the ribs.


I always prefer to receive bad news first, so here goes: there is not a new design this year for ATP shirts.

The good news, however, is copious:

  • The wildly popular //////ATP design returns for another year
  • We have more than just T-shirts this year:
  • The pins are available for purchase right now, and if you act fast, will ship soon.
    • If you want your pin before WWDC, you should absolutely buy now, as quantities are limited for this first run. (We’ll get more once these sell out though)

You can browse all of these products at our store over at Cotton Bureau.

We’ve also got some other interesting and fun things in the works, so keep an eye out for more products in the future.

As always, buying merch benefits the three of us directly, and we deeply appreciate whatever money you’re willing to part with to show your support.

Plus, all apparel comes with a guarantee of a high five from me if I see you wearing it. Which, let’s be honest, is worth the price.

The Trashy Ferrari

Nobody seems to be able to agree on the exact definition of a millennial.

Having been born in the early 1980s, by most — but not all — definitions, I am a millenial. Nevertheless, I find myself with a leg in both worlds. I remember a time before the internet. I remember paying for long distance. I remember having to buy a calling card to call my long-distance high school girlfriend.

Unlike your stereotypical millenial, however, I could not wait to get my driver’s license.

In Connecticut, where I was living at the time, you could get your permit at sixteen. Which I did. On my actual birthday. To get your license, you needed to either enroll in driver’s ed and wait 4.5 months, or eschew formal driver’s education and wait six months. At that point, you could take your driving test at the local DMV. My high school didn’t offer driver’s ed, and I did not opt for the program run by Sears (yes, seriously).

Thus, at around sixteen years and seven months, I scored a driver’s license. I was finally on the road to adulthood. I was finally able to exert some amount of control over my own life.

One evening, shortly after getting my license, I returned home from a friend’s house. I came home at a reasonable hour, and approached my driveway. Our house had a very steep drive that would cause slight concern for your average family sedan, and great concern for an average sports car.

On this particular evening, sitting at the bottom of the drive, in the dark, was an even darker, black, Ferrari F355. As soon as I saw it, I knew who was visiting.

My parents had some friends that had really gone places. We all lived in the generally unremarkable small town of New Fairfield, Connecticut. Despite a population of around 10,000 people, we had a few notable residents. Until his unfortunate passing, my parents were quite close with the man who coined “Pepsi Generation”, for example. But surprisingly, it wasn’t his Ferrari — he preferred Jaguars. The Ferrari instead belonged to Jimmy Galante.

Jimmy was a larger-than-life fellow. He owned Automated Waste Disposal, a trash collection service in the neighboring “big city” of Danbury. Being of Italian descent, and in trash disposal, in a town that neighbored New York state and a mere hour from the outskirts of New York City, we always chuckled about Mr. Galante. But we never really suspected anything.

Nonetheless, I came waltzing in, as only a cocksure sixteen year old can, and told Jimmy I liked his car. Without batting an eye, he asked me if I wanted to go for a ride.

In my 36 years, this is the only time I’ve ever been offered a ride in a Ferrari. You bet your ass I said “yeah, sure!”.

The next thing I knew, I was on the road in Jimmy’s Ferrari. Our neighborhood was just off a mostly-straight, nearly two mile stretch of road. Jimmy took me down that road, mostly behaving himself. Despite it being a rather pedestrian journey, nothing is pedestrian when you’re in a quarter million dollar Italian sports car.

We made chitchat, as much as a sixteen year old can with an extremely successful business mogul who owns a Ferrari. I remember being at the Galante’s not too long before, and noticing that in their garage, Mrs. Galante had the enviable burden of choosing between a Jeep Grand Cherokee, a Jaguar XK8 convertible, and an E46 BMW M3. Note that this is just Roseanne; Jimmy had his own stable as well. And a race team to boot.

As we chatted, he asked me about taking my test, and whether or not I knew how to drive a stick. I proudly told him I had in fact taken my driver’s test in my Dad’s Saturn SL2, which was a five speed.

At the end of the road, Jimmy turned the car around, pointing it back toward my house. But just as he completed his turn, he stopped dead in the middle of this not-seldom-traveled road. He opened his door, unbuckled his seatbelt, and stepped out of the car. As he did so, I heard him say something over his shoulder, but I only caught two words. It was the two words that matter.

Your turn.

With considerable trepidation, I climbed out of the passenger seat. With a quickness, I jumped into the driver’s seat. I buckled up, adjusted the seat a bit, depressed the clutch, and slotted the gated shifter into first gear. Immediately, I noticed that the pedals in the Saturn were arranged like country houses to the Ferrari’s row houses. There must have been space between the pedals, but it was indistinguishible.

I very gingerly let off the clutch, opening the taps of the Ferrari’s V8 ever-so-slightly. I was quite lucky, as I was able to successfully launch the car with nary a bog nor a chirp of the wheels.

Before long, I had executed shifts into second, and third, and was cruising down this 45 MPH road. I felt like a million bucks. We continued to talk on the cruise home, with my responses coming late and disjoint; I was quite distracted. Eventually we had a beat or two of lightly uncomfortable silence. It was then that Jimmy asked a question, which took me a moment to process:

How fast do you think we’re going?

Having only been driving for a few weeks at this point, I wasn’t sure, but I was confident I was keeping it to within ~10 MPH of the limit. I stammered, with no confidence, “Not too fast, I don’t think…?”, and then looked to verify my assertion.

I got distracted by the prancing horse shown in the speedometer.

Once I regained my composure, I looked at the speedometer more closely. My speed was indicated to be 70 MPH. In a 45.

No part of me could believe that. I felt like I was crawling.

Turns out, Ferraris handle their speed better than Saturns do.

We made it back safely, with an increased awareness of my speed through the remainder of the trip. Jimmy was a great sport about it all. He knew that 10 minutes of his time would lead to a memory that I’d cherish for a lifetime.

He was right. Here I am, literally twenty years later, retelling it, publicly.

It was a hell of a night. And a hell of a kind gesture from a man who owed me precisely nothing.

Fast forward a few years, and I’m in college. Suddenly, I hear the name Galante being talked about again. Which is weird, because I wasn’t at UCONN or some local school. I was nearly 600 miles away in southwest Virginia. Yet, I was hearing the name of not only Jimmy, but his son, AJ.

As it turns out, AJ — then a senior in high school — was now the general manager of the Danbury Trashers, a minor league hockey team that Jimmy had just purchased. This was quite the amusing story to many, including ESPN; it briefly made national news.

Nonetheless, I didn’t hear much more about Jimmy for a couple years. Until the [is-it-really-though?] unexpected happened: Jimmy was indicted for running his businesses dirty, in association with the Genovese crime family. He was charged with, among other things, racketeering.

Jimmy ended up serving some time in prison. While that isn’t surprising, it is a little odd for me to square that Jimmy with the one that let me take his Ferrari for a spin. In the dead of night.

All of these memories came flooding back to me today because my mother pointed me to an article chronicling the rise and fall of the Danbury Trashers. It’s a fun and fascinating read, but it’s doubly weird for me, as I knew at least some of the players. Beyond the Galantes, a dear family friend of ours, a woman my age, spent some time working for Jimmy and the Trashers when they were still around.

What an odd web life weaves.

Regardless, if you want to hear about a shrewd businessman who made some parenting choices many would consider suspect, read Rich Cohen’s article. But do remember the family friend, who did a punk kid a solid, just for the hell of it.

And if you’d like to hear me retell it verbally, there’s always Neutral.

UPDATE 2018-04-02 20:00: Though I used this adapter with a non-Nintendo power supply with Switch software 5.0.0, I’ve heard many reports of these adapters bricking Switches on 5.0.0 and 5.0.1. I can’t tell if this is due to using foreign power supplies, or because of the adapter itself, but, use with extreme caution.

A few weeks ago I was browsing Twitter and saw that Scott Hanselman had posted about the Nintendo Switch over on his blog. Scott’s very informative post details some of the travel accessories he likes to use with his Switch. Among them was the thing I have been waiting for: a portable HDMI adapter.

The Nintendo Switch is magical in that you can… ahem… switch between handheld play and TV play by dropping it into a special dock that comes with the system. The Dock Set is hilariously expensive at $90, but even more egregious is that the dock doesn’t collapse in any way. It’s not particularly heavy, but it’s big. Bringing all that along with me when I travel is not fun.

However, the Switch’s one port (sound familiar?) is a standard USB-C port. So, when I first got it, I tried to use my USB-C → HDMI adapter that I use with my MacBook. No dice. I had assumed that there was some sort of “DRM” within the dock that allowed only it to output HDMI.

Scott found what I was looking for: a USB-C → HDMI adapter that works with the Switch! I just got one, and confirmed that it does work on my TV at home with my Switch (software version 5.0). Moreover, the dongle works great with my MacBook, even having a more reliable USB-A connection than my previous adapter.

USB-C → HDMI dongle

Now, I can replace my previous adapter with this one, and use that with either my MacBook or my Switch. I can plug my Switch into, say, a hotel room TV without having to worry about bringing the entire dock. Moreover, the Apple 29W USB-C Power Adapter seems to be enough to power the whole setup.

Now, who wants to play Mario Kart?


This week I joined Sam and Dan on their wonderful car-themed podcast Wheel Bearings. We discussed the Stelvio Sam and I tested, what it’s like to test a Giulia Quadrifoglio in a foot of snow, the ridiculously named Mini Cooper S E Countryman ALL4.

After discussing cars we’d been driving, I have a bit of a mea culpa about Volvo’s Sensus system. We round out the episode with some pipe dreams from Dan and myself about potential future cars.

As I’ve said before, Wheel Bearings is like Neutral, but by people who actually know what they’re talking about. If any part of you liked Neutral, you’re sure to love Wheel Bearings.

Apple Pwn3d my Free Space

It all started when I was ripping a BluRay:

Only 60GB free‽

I have a 1 TB iMac. I should not be running this low on space.

Things were, alarmingly, confirmed in the terminal:

casey@iMac ~> df -h
Filesystem     Size   Used  Avail Capacity
/dev/disk1s1  932Gi  866Gi   65Gi    94%  

Only 65GB free‽ This is a problem.

Whenever I need to diagnose what’s going on with free space, I turn to DaisyDisk. It is my preferred way to drill into where space is being consumed.

Unfortunately, outside of some very large iPhone backups, nothing was out of the ordinary. Until I noticed this:

300GB of 'unreadable'‽

Something is amiss.

Having learned from my HFS+ days, I thought I should try to do First Aid using Disk Utility. I even went so far as rebooting in recovery mode and performing First Aid there. (Old HFS+ habits die hard.)

However, even after a recovery, Disk Utility had no good news for me:

Disk Utility makes me sad

In speaking with the oracle about this, he led me in the right direction: the issue is APFS and its snapshots.

In short, snapshots allow for the entire filesystem’s state to be marked. This could allow a user to easily and quickly throw away subsequent changes and roll back to a prior state. This is particularly useful if an OS update is attempted but fails; you can quickly go back in time to the way things were before the update was attempted.

The way to determine what snapshots are around is to use tmutil. This tool covers more than just snapshots, but with the listlocalsnapshots option, can show us what snapshots are around:

casey@iMac ~> tmutil listlocalsnapshots /

That’s… a lot.

Curiously though, Finder showed me some good news:

Finder shows 300GB free‽

What. The. What.

I decided to take a step back and do a little research about the problem online. Eventually that led me to this Apple support document (emphasis is mine):

Snapshots older than 24 hours are automatically deleted. And to make sure that you have storage space when you need it, snapshots are stored only on disks that have plenty of free space. When storage space gets low, additional snapshots are deleted, starting with the oldest. That’s why Finder and Get Info windows don’t include local snapshots in their calculations of the storage space available on a disk. That’s why Finder and Get Info windows don’t include local snapshots in their calculations of the storage space available on a disk.


Lesson learned: Do not trust anything but Finder to tell you how much free space you have on an APFS formatted drive.

Given the dates on those snapshots above, I expect they will be cleaned up in the next couple days, and everyone will agree that I have a ton of space remaining.

UPDATED 2018-02-18 8:30 PM: Other than snapshots, there is another kind of free-but-not-really-free space in Sierra and beyond: purgeable space. This is space that has things that may, for example, also exist in iCloud. Should Apple decide your local device needs the room taken up by these local copies, it will automatically (hopefully) delete them. Jason Snell has a great writeup at Six Colors that covers all this.