By Casey Liss
Sending Files Securely but Quickly

Since I’m, well, me, I often find that I want to send multi-gigabyte files to others. I want to do this quickly, but also securely. About eleventy years ago, I got a deal on a lifetime Droplr account, and that works great for files up to around 15 GB. But what about even larger stuff?

I’ve found two approaches that work well for this, though I will concede, they’re both… a touch fiddly.

Both of these require using Homebrew to install them, and they must be run from the command line. Perhaps there are GUI wrappers for one or both of these, but I’m not aware of them.

Magic Wormhole

magic-wormhole was the first tool I used to do this sort of thing. It’s reliable and easy. magic-wormhole makes it quick and easy to send files between computers regardless of what network they’re on.

To send a file between computers/people:

  1. On the sender, start a session by selecting a file to send:
    wormhole send ~/path/to/some/file.mp4

  2. This will emit a text-base code, as well as a QR code. For example, in a test, I received the following:

     On the other computer, please run: 
    
     wormhole receive 8-virginia-beehive
    
  3. Guess what‽ On the other computer, you’ll run:
    wormhole receive 8-virginia-beehive

  4. Wait while the file is transferred; it shouldn’t take too long.

In my experience, magic-wormhole always uses a relay — the connections are rarely direct. However, the files sent via the relay are encrypted. Additionally, in order to make connections easy — and sharable using the brief numeral-word-word template — there’s also a “mailbox server” used to facilitate these connections.

All that said, magic-wormhole is great for novices, if they’re able to use the command line under direction from you.

Tailcat

Just announced this week, tailcat can best be summarized by the marketing line they’ve adopted:

Tailscale, without Tailscale, by Tailscale.

Perfect. No notes.

I’ve spoken about my love of Tailscale many times before on this blog. Tailscale is many things to many people, but in short, it answers the question of “what if I could connect to all of my devices, no matter where they are, or what network they’re on?”.

tailcat uses the underlying Tailscale technology to punch holes in firewalls and establish direct connections between two computers. You don’t need to run the full Tailscale client software. You just need to pass a [very unwieldy] code between two people.

To send a file between computers/people:

  1. On the receiver, start a tailcat session, and point to a destination folder:
    tailcat recv ~/Downloads
  2. The receiver will emit a very long string that is the “key”; use iMessage or some other out-of-band communication protocol to send this to the other person. The string will begin with tco.
  3. The sender will then send the file in question, using the long string:
    tailcat cp ~/path/to/some/file.mp4 tco[…]:
    Note that you need to add a : suffix to the long string that was passed.
  4. Wait for the transfer to finish. It shouldn’t take long.

There is a whole discussion about how this works under the hood, but the short-short version is that the connection starts by using a very aggressively throttled relayed connection through one of Tailscale’s servers. Note that your data is end-to-end encrypted, so they can’t see any of it; they simply carry it.

While the relayed transfer is happening, behind the scenes, tailcat is trying to establish a direct connection between you and your friend. Once that direct connection is established, tailcat stops using Tailscale’s relay, and simply sends the files from one computer to the other. At that point, you’ll see the transfer speed ramp up dramatically.

Trade-offs

If you want something that’s [mostly] easy to use — particularly for novices — then you should probably use magic-wormhole. It’s far easier for people to understand and interact with. However, it’s slower.

If you want to transfer files as quickly as possible — ease of use be damned — then tailcat is your answer. Doing some quick testing with a local friend, we found magic-wormhole topped out at around 5 MB/sec, where tailcat topped out at around 20 MB/sec.

No matter what, both tools are invaluable to have at your disposal.


Life has been quite busy lately — in the good way! — and as such it completely fell off my to-do list to post about an appearance from a couple weeks ago.

I was interviewed by Eric Schwarz on his podcast Magical & Revolutionary. In the show, we discuss ATP, Analog(ue), Callsheet, my other apps, tinkering, fast food, and cars. Eric also asked me his traditional seven questions, which I told myself to prepare for… and then forgot to. 🤦🏻‍♂️

The episode was fun to record, and Eric is a good interviewer. Come for the history discussion and stay for the fast food. 😏

Callsheet 2026.7

Callsheet 2026.7 is rolling out in the App Store now. If you aren’t offered the update, go to the App Store details and you should be offered to upgrade it there.

There’s a lot of fixes and some great changes/improvements in this version. Here’s some of the new or dramatically improved features:

  • The main search box has been embiggened slightly to make it a little easier to spot
  • Active Plex connections can show playback from all your servers, or, optionally, just one server.
  • If you use Infuse to play media off your Plex server, those sessions are now shown in Now Playing
  • On a cold start, Callsheet attempts to clean up temporary/cached files that are more than a day old
    • In Persnickety Preferences, you can also force a cleanup
  • The Control Center widget no longer has the redundant Search in the subtitle

And though the list of fixes is quite long, here’s a trio that are worth calling out specifically:

  • Fixed an issue where sometimes an actor’s height would disappear
  • Fixed an issue with Apple TV premieres that showed the wrong relative date, particularly for users on the west coast of the US
  • Fixed an issue where movie collections wouldn’t show if any of the movies didn’t have a release date

You can see the full release notes in the App Store.


 

Today, MasterCraft has announced it is adding CarPlay to some of its upcoming pontoon boats.

For those keeping score:

✅ Most new cars, at all sorts of price points
✅ Boats
❌ Rivian

What the hell are we doing here, folks?

It doesn’t have to be this way. I promise.


 

Today your pal and mine, Lex Friedman, released episode two of Your Daily Liss. Which is to say, I was a guest on Your Daily Lex, episode #1048.

Lex is traveling at the moment, and has both pre-recorded episodes of YDL, as well as had guests like me sit in.

Your Daily Lex is far more fun and interesting than a daily podcast about a middle-aged white dude should be; here’s hoping I didn’t besmirch the podcast’s good name. But even if I did, a little under five minutes won’t kill you. 😏


 

This week I was also on Clockwise. On the episode, I joined Aleen Simms, Dan Moren, and Mikah Sargent to discuss Apple’s recently-released public betas of 𝓍OS 27, how we read for pleasure, embracing multicolored smart lighting, and how we prepare for disaster both physically and digitally.

 
Affiliate links abound below. Make both of us rich by buying these books: your soul and my wallet.

I’ve become a prolific Goodreads user over the last several years. Reading a book is a commitment, and I like to record the completion of that commitment. Goodreads does that for me.

Goodreads also lets you rate books, on a ☆☆☆☆☆ → ★★★★★ scale. My personal rating system seems to be… stingier… than most:

  • ★☆☆☆☆ A truly terrible book that I regret reading.
  • ★★☆☆☆ A book that was not good, but was worth finishing.
  • ★★★☆☆ The default rating. Enjoyable.
  • ★★★★☆ Above average. More than just enjoyable; worth recommending.
  • ★★★★★ Truly excellent. One that made me think about things differently, and/or I would recommend to others without being solicited for a recommendation.

Of the 216 books I’ve read and logged on Goodreads, only five have earned ★★★★★. Of those, two were books about Apple, one was the absolute classic The Power Broker[1]. The other two were Upgrade and Project Hail Mary.

When I watched the film, I expected it to be a standard film treatment of a novel: the main points would be hit, but so much would be skipped. As it turns out, I don’t think that’s true at all. The film was astonishingly true to the novel, though particularly the last act got fast-forwarded quite a bit.

Last week, I was lucky enough to join Aleen Simms, Quinn Rose, Brian Warren and, of course, Jason Snell, to discuss the film on The Incomparable.

During the discussion, we discuss how the film stands as a film, how it compares and contrasts with the book, and how much we fell in love with Rocky. Forgive the spoiler, but we were all pretty effusive, and I think that comes through in the episode.

I had a blast recording this one, and if you’re a fan of the book or the film, I think you’ll have a blast listening.


  1. I feel like I rarely read non-fiction, but oddly, three of my five ★★★★★ books are non-fiction books. I stand by that I vastly prefer fiction to non-fiction, but, uh, apparently I pick my non-fiction reads well?


Callsheet Year in Review

Callsheet nears its third birthday, and as such, it’s time for me to post another Year in Review. I started doing this at the end of year one, and repeated it last year. I started making these posts mostly as a marketing/retention exercise. However, they quickly became posts I’m also writing for me, to remind myself of all the progress I’ve made over the last year.


To begin, it’s worth noting that pricing remains the same as it was in 2023, when things seemed… quite a bit more stable. As I sit here now, I repeat what I said last year:

I’m not saying that I’m planning to raise prices, but I’m also not… not-saying that.

I am more convinced than ever that Callsheet is incredible value for money, even if it was stagnant. Which it very much was not!


Here’s what kept me busy for the last year:

2025.8

  • Optionally show cast and crew credits in one list
  • Fixed a race condition that could occasionally prevent Now Playing from working properly
  • Fixed collection navigation (↑↓) not working properly when Callsheet was not in English
  • Callsheet shows native-language search results where possible
  • Fixed issue with shared TV episodes being off by 1
  • Fixed issue that prevents duplicates in “Known For”
  • Fixed rare issue with re-opening the TV episode you already have open by URL
  • Fixed rare issue where release dates weren’t shown
  • Fixed localization issue for French
  • Add Finnish localization

2025.9

  • Liquid Glass redesign
  • New search affordance which lets you quickly swap between searching globally or searching the screen you’re on
  • Moved Recent Searches to the Discover screen
  • Moved Search History to the top toolbar
  • When viewing a show or film, you can see a union of cast & crew credits
  • Clearer “no results” messaging
  • You can now swipe left-to-right on Search Results and return to Discover
  • Callsheet is more aggressive about clearing Now Playing items that… are no longer playing
  • Improvements to search results that contain curly quotes
  • Scrolling longer views downward will dismiss the keyboard
  • Bad data about a movie collection will no longer cause Callsheet to get confused
  • Improvements when switching between lists

2025.10

  • Discover sections can be toggled on or off in Persnickety Preferences
  • Removed a large visual glitch on TV shows
  • Improve the way Dynamic Type looks
  • Tightened up Search History presentation on Discover
  • Fix presentation for season carousel when Show Borders is enabled
  • Fix wonky presentation of the Theme picker in Persnickety Preferences

2026.1

  • Discover sections can now also be reordered in addition to added/removed
  • For people, the role of Self can now be filtered out via drop-down or context menu
  • TV shows will show approximate ages of cast/crew during the run where possible
  • Added a context menu for Search History on Discover
  • Visual tweaks to the search bar
  • Allow for more than 100 pins in a list; Recents are limited to 100 and Search History to 50
  • TV episodes released today show Today instead of how many hours it’s been since midnight
  • Added a More info… link to the integrations section
  • Fixed issue where opening a link in the system browser caused the search bar to disappear
  • The Upcoming section for people is consistently ordered
  • Fix some occasional wonkiness with the search prompt when in the local search scope
  • Movie collections now use chevrons instead of ↑↓ for better consistency
  • Fixed the URL scheme callsheet://activateInput which I accidentally broke
  • Keyboard dismisses interactively on Discover
  • Fix issue where the subscribe button would flash 0 for a moment when it was being hidden
  • Small tweaks to the Norwegian translation
  • Prevent edge case where the paywall could be avoided by loading items by URL
  • Reduce the size of the URLSession cache
  • Additional logging around Region Override

2026.2

  • Fix bug where age calculations were not shown for movies > 20 years old

2026.3

  • Improved Shortcuts support:
    • Get Media
    • Get Media Videos
    • Get Pins
    • Perform Search
  • Search pagination via infinite scroll
  • Japanese and Korean localizations
  • You can now eliminate Thanks (as you can Self) in a person’s credits list
  • New Persnickety Preference for Include Self & Thanks
  • Added place of birth as a popover when tapping on a person’s birth information
  • Added death information for people who were on a show during one year of their lives, but have since passed (the [Ron Glass][rg] bug)
  • Channels integration now works on IPv4-exclusive networks
  • Fix edge case where Self credits could slip through the filter
  • Fix edge case where popover for a person’s height wouldn’t show alternate units
  • Fix edge case where search scope button would disappear
  • Fix edge case where search via URL would perform a local rather than global search
  • Tweak system spoiler settings presentation on iPad/Mac
  • Performed audit on in-app purchase code mostly around gnarly edge cases
  • Add some missing localizations
  • Fix minor issues in Italian and Australian localizations

2026.4

  • All-new iPad landscape layout that is vastly improved; this also applies to visionOS and macOS
  • New integration for Jellyfin, so you can see your Jellyfin information in Now Playing
  • People’s names and role/jobs are now copyable via context menu
  • More clever/region-appropriate localizations for Johnny Appleseed & Botanist examples in Spoiler Settings
  • Hide Spoilers… button allows tapping the whole button, rather than just the text
  • No longer truncate titles/names in Discover wherever possible
  • Fix edge case where navigating a movie collection would fail

2026.5

  • Pins are now cached, hopefully avoiding iCloud issues being show-stoppers
  • Movie/episode details of items you’re currently playing will show progress meters and indicate end time rather than runtime
  • Bifurcate Plex connections into two approaches: legacy/Passive, and new Active connections
  • Errors are far less of an eyesore
  • On cold start, Discover layouts should dance around far less
  • Better handle missing posters on Discover
  • When copying an error report, the deep link URL is included
  • When viewing a show in Channels, jump to the episode when you tap on the item in Now Playing
  • Fix issue where Callsheet eagerly showed a cancelled error when it shouldn’t
  • Fix scroll position when switching between Cast & Crew on iPad/Mac
  • Fix edge case where Callsheet would consistently lose Discover section settings and/or Region Override and/or Language Override
  • Fix edge case where Callsheet was showing people as pinned who… weren’t pinned
  • Fix edge case where bonus free searches could be lost
  • Fixes for Australian localization

2026.6

  • Now Playing titles are hoisted to the top of Known For when viewing people
  • Plex Active connections now let you choose which of your servers to bind to
  • Improve contrast behind Now Playing progress bars
  • Backing from Search Results → Recent Searches clears the search box
  • Age ranges are redacted for shows where episode counts are hidden
  • Some improved logging for Active Plex connections
  • Active Plex connections no longer hang during setup when Callsheet is set to use the system browser
  • ⌘F works again on iPad/macOS

This is an immense amount of progress for just one person in just one year. I’m very proud of where Callsheet is today. If you’re an existing subscriber, I hope you’ll consider renewing. If you’re not, you should give Callsheet a chance; I think you’ll like it.


CarPlay is Additive

Back in March, Rivian’s Chief Software Officer, Wassym Bensaid, was interviewed by the excellent Nilay Patel for Decoder. If you’re not a Decoder listener, you should be. If you’re not a subscriber of The Verge, you should be. But that’s not what I’m here to talk about.

In this interview — which I greatly enjoyed! — Nilay grills Wassym on all manner of issues. The whole time, though, I was waiting for one topic: CarPlay.

CarPlay is a way to interact with your phone via your car’s infotainment. Our last three cars, the eldest of which was from the 2017 model year, have all had CarPlay. They make the experience of being in the car way way better. Any of the apps I really care about, and would want to interact with while on the road, have a bespoke CarPlay interface.

I literally will not buy a car that does not support CarPlay.

Most of the way through the episode, Nilay asked Wassym about CarPlay. The question was long, but the gist is this:

I hear from our readers every time I talk to a car executive that, “The reason I want CarPlay is because there’s 5,000 apps on my phone and no car OEM is ever going to support them in the built-in infotainment.”

This is when you would say, “Okay, project your phone to the center stack. The car’s driving itself. Have at it. Phone projection all day.” Do you think the tide is turning, or are you still absolutely committed to not having CarPlay in Rivian vehicles?

You can read Wassym’s full answer at the episode link, but here’s the part that stuck out to me:

The challenge with screen mirroring solutions is that they take over every single pixel in the car, and that’s not the way we see ourselves interacting with our users.

Let me help you, Wassym:

Animated GIF of a gigantic "NO" falling and leaving puffs of smoke upon impact

There exists a flavor of CarPlay — CarPlay Ultra — that does take over every screen of the car. Though even CarPlay Ultra has affordances for the manufacturer’s user interface to poke through. But nobody is asking for CarPlay Ultra. We’re asking for no-adjective CarPlay.

And CarPlay does not have to take up the entire screen.

Here, for example, is a photograph of my phone connected to my wife’s Volvo XC90:

Photo of an infotainment screen showing CarPlay on the top 80% of the screen, and Volvo UI below it.

See those bits above and below the CarPlay screen? That’s Volvo UI. CarPlay literally does not know that portion of the screen exists.

So, Wassym, try again.


Let’s say — for discussion — that CarPlay did take up the entire screen. No matter what. Let’s just live in Wassym’s fantasy world for a little bit.

I still have news for you: CarPlay is optional. CarPlay is additive.

Drivers don’t have to use CarPlay!!

If Rivian’s native UI is so great, then their customers… won’t use CarPlay. It’s that simple.

Nobody is asking for CarPlay to be mandatory. We just want to have it as an option.

If Rivian’s infotainment/software is that great, that’s swell! Then Rivian drivers won’t use CarPlay.

Well, unless they wish to use one of the thousands of apps that is optimized for CarPlay, but does not have a native version that can be installed directly to their Rivian.

Like, I dunno, Overcast, for example.


“But Casey, you see, the real problem is that you can use CarPlay for navigation. And fancy cars like Rivians have some of the best automated driving technology on the market. For the driver to have the best possible experience, the car needs to know the route the driver is driving.”

A fair retort! Conveniently, Apple is addressing exactly this in iOS 27.


Ultimately, the only thing I can control is myself, and I will not buy a car that does not offer CarPlay. I enjoy Rivian so much — both from afar and as someone who has driven both a R1T and R1S — that I really thought about getting on the waiting list for a R2. And I don’t even want a SUV!

But I won’t.

Because it doesn’t support CarPlay. CarPlay support is table stakes for me.

Stop being stubborn, Rivian. Stop being so intransigent and dogmatic. CarPlay is additive, and supporting CarPlay opens you up to an additional cohort of customers. Get off your high horse and ship it.

When you do, I’ll be there, waiting. I can’t wait to get in line for a R3X. 🤤


 

Way back in January of 2024, Daniel at uses this asked if I would be willing to be interviewed for the site.

Nearly immediately, I told him I’d love to.

In February of this year, I finally responded to Daniel’s [very easy] questions. 🥴

While I — thankfully — did not eclipse the all-time record, I do feel badly. Thankfully, Daniel never put any pressure on me, and was a tremendous sport about the whole thing.

If you’re interested in the equipment I use to get my jobs done, you can check out my brief interview.