In an article about Tab diet cola ending production, I learned Odwalla has also entirely stopped production. I think I’ll actually miss it.

A lot of iPhone nerds seem to be dithering about choices this year: the Pro phones have both gotten marginally bigger, while there’s a new smaller option. Coming from the iPhone XR, though, for me the 12 Pro is a no-brainer.

First world podcast addict problems: I really dig Castro’s inbox/queue model for organizing and triaging episodes, but Overcast is equal or better at literally everything else. (Especially CarPlay, which I use a lot.)

There are persistent rumors that Apple will make portless iPhones next year that only charge wirelessly—but the port is there for data, too. A lot of cars have CarPlay, and most (like mine!) need those cables.

If you can’t shake the HomePod Mini and have its display light up with ALL SIGNS POINT TO YES or REPLY HAZY, ASK AGAIN LATER, a huge opportunity has been wasted.

Mini-rant: whenever people want to mock audiophiles they joke about “gold cables.” Y’all, there ARE crazy expensive cables, but gold ones are like five bucks. And gold contacts resist corrosion. (You don’t think that’s important, you haven’t lived in Florida.)

A brief chat about Chuck Wendig, the Internet Archive, and bad information spread in good faith

Because I’ve got a bug up my butt about this again, let’s briefly dig into a social media myth that Will Not Die:

“Chuck Wendig is suing the Internet Archive!”

No. No, he is not.

There are two important bits of background here.

First, the Internet Archive. If you know them, you probably know them because of the “Wayback Machine” that archives millions of web sites. They do a lot of other archive-ish stuff, though, including collecting and scanning books. A while ago, they decided to create a digital “library” of those books: anyone could “check out” as many copies of those books at one time as the IA had physical copies of. This is more or less the way digital lending works from your local library: they pay for, say, three copies of a given ebook title, and now three library users can “check out” that book at once.

Well, that’s the “more” part of “more or less”; the “less” part is that the IA was doing that with physical books and technically lending digital copies is not the same thing under copyright law. Even so, publishers mostly looked the other way.


At the start of the Great Pandemic, the IA decided they were now running the “National Emergency Library” and lifted the per-copy limit. If they had ten copies or a book or two or one, it didn’t matter, however many people wanted to check out a copy at once could. And the IA sent out press releases about this. They wanted everybody to know!

I’m not going to argue about the ethics of modern copyright law, but as a legal matter, this is not a gray area, kids. It just isn’t. The Internet Archive was all but sending out notarized letters to publishers saying “we dare you jerky jerks to come after us with everything you’ve got,” and golly gee, they got sued by the Authors’ Guild and several publishers. Who could possibly have predicted that outcome other than, you know, fucking everyone.

You will notice, perhaps, that the IA was not sued by individual authors over this. They were sued by publishers and a writing guild.

Second, Chuck Wendig. Wendig is a science fiction, horror-ish author who runs a popular blog and has a freewheeling, gonzo, over-the-top style—I’d argue more in his non-fiction than his fiction—that, well, you could call polarizing. (I enjoy it, most of the time, but I could see how many might be driven far away at high speed.) He also wrote a couple Star Wars novels, famously introducing the saga’s first major gay character in Star Wars: Aftermath.

And this was not popular with a predictable loud subset of reactionary fans, who carried a hate-on for Wendig that culminated in the trolls getting him fired from Marvel’s “Shadow of Vader” comic book, ostensibly because of his “vulgarity” in expressing what Quartz calls, with delightful understatement, “his unabashedly left-wing political views.”

So if Wendig didn’t sue the IA over the Emergency Library, how did he get involved in all this?

Well, he called it a “pirate site,” which he pretty quickly apologized for, but also wrote a much longer statement on the subject.

The problem with bypassing copyright and disrupting the chain of royalties that lead from books to authors is that it endangers our ability to continue to produce art—and though we are all in the midst of a crisis, most artists are on the razor’s edge in terms of being able to support themselves. Artists get no safety net. We don’t get unemployment and aren’t likely to be able to participate in any worker bailouts. Health insurance alone is a gutpunch cost, not to mention the healthcare costs that insurance wouldn’t even cover. I’m lucky enough (currently, at least), that I can weather a bit of that storm more easily, but most can’t, particularly young authors, debut authors, and marginalized authors who are already fighting for a seat at the table. I’m also not alone in calling this site out—others like Alexander Chee, NK Jemisin, Neil Gaiman, and Seanan McGuire have noted their concerns over this.

I am all for access to information and entertainment, and remind folks that libraries here already allow you to take out e-books, even while their brick-and-mortar locations are closed. I used to work for a library system here in Pennsylvania, and libraries all around the country deserve their time to shine in this crisis, as we realize what vital institutions they are, both intellectually and as a service to the community.

Come on, how could anyone read that and, in anything even approaching good faith, take major offense at it? This is empathetic to authors and libraries. Yes, it’s (gasp) making a claim that copyright does have value, and maybe you don’t see that. But I hope you at least see why a lot of authors feel they should be the ones to make the choice about how their books get distributed. I’m not against giving my own work away for free, but I am against you telling me that you’re going to give my work away for free and I have no choice in the matter.

In fact, I don’t think the people who started this “Wendig sues the IA, film at 11” bullshit did so in good faith. I think many people spreading it are doing it in good faith, but bluntly, I think they’re being used by trolls relying on it being way easier to click “like” or “retweet” than to do fact-checking. (Frankly, I despair at how often I see left-leaning friends gleefully retweeting the most dubious shit that confirms their biases, but that’s a bridge I won’t burn today.)

While this whole nonsense is months old, I’m seeing another new thread floating around today fisking an older book of writing advice from Wendig, inviting us all to mock how weird and bad his writing is and how awful his advice must be and oh yes remember he sued the Internet Archive!, and I’m out of patience nuggets for this one. If that’s your image of Chuck Wendig and what he’s like and what he writes, let me offer a different one, from “Follow the River, No Matter Its Rapids, No Matter Its Turns”:

It’s a lot right now.

I think if we can agree on anything, anything at all between us, it’s that everything is a whole lot. It’s too much. If you’re not screaming into a couch cushion soaked with gin right now, who even are you?

But here’s what I’m thinking.

I’m thinking all of this is a river. It’s a dark, fast river. It crawls serpentine through the earth, through the forests. Sometimes it moves slow, other times it’s all rapids. Sometimes it is eerily serene, and sometimes it’s rough enough to knock your teeth into your knees and draw blood. It’s waterfalls and eddies, it’s deep and it’s cold. Like all rivers, it can soothe you, and it can betray you.

This river, the river we’re in and on now—it’s harder, meaner, a river after a flood, a river whose waters are not sated, who will not abate. It’s mudded up and frothing like the muzzle of a rabid wolf.

You can fight against that river.

We often do, in writing. We often go against our own moods, against the news of the world, against bad reviews and against poisoned thinking. Our work is often an act of anchoring our boots against the soft slick weeds and the water-smoothed stones and move against the current.

Upstream, stories can be born.

Sometimes, though, I think you gotta do the other thing.

Sometimes, you go the other way.

You go with the flow.

You run with the river, not against it.

And what that means, practically speaking, is you let it happen. What you’re feeling, what you’re seeing, sometimes those elements demand to be seen in the work. Sometimes the river is the channel that feeds the narrative sea, and that means you need to put it in there, out there, all over it. You don’t escape. You confront. You ride the turns, you rough out the rapids, you take all your fear and your anger and your confusion and you put it on the page. And not even in a way of trying to write something that’s marketable or sellable—but just trying to speak honestly about who you are, about the world in which we’re living, and about your grappling with all of it. It’s not even about writing a cogent book or a collective piece. It can be about taking the time to punch that keyboard and scream onto the page—if only to clear the water and find time to climb back onto shore to write something else. It can be the thing you’re writing, or it can be a way to get to the thing you’re writing.

I don’t mean to suggest this as good “advice”—it’s certainly no requirement. You have to do what feels best and right—and, further, what feels most productive in the direction you need to be going. I’m only saying that, if it’s that much of a slog, if the slow churning march upriver and against the current feels like you’re fighting too hard and losing to the pressure, turn around and go the other way. Sometimes we want to, even need to, write about what’s going on inside our heads and our hearts. Sometimes we can’t ignore the room on fire. Sometimes we can’t get out of the river or go against it. And in those cases, let the waters take you. Write what needs to be written. Write what the river tells you to write. Follow the water, and see where you go.

You may still hate that writing, but if you do, who even are you?

I have enjoyed having lots of craft beer to support local breweries during the Plague Year, but it is time to replenish the vermouth and garnishes and do some more manhattans and martinis.

Ever so slightly alarming that when I search for “panic nova review” in both Duck Duck Go and Google (in incognito mode) my own review appears to be the first hit. I don’t know if it’s just me, or if it just hasn’t gotten that many other reviews yet.

Ah: I hadn’t realized “Ted Lasso” was co-created by Bill Lawrence, of “Scrubs” fame. Anyway, this Variety column is terrific:… (And yes, I will keep stanning for this show.)

The local Rock Bottom Brewery has re-opened with a LOT of patio seating. It’s sort of odd: they’re a chain and not even my favorite as far as chains go, but their closure felt like a huge hole in this neighborhood somehow.

Well, the new speakers sound terrific if I stuff foam into their rear ports, but is this an acceptable condition for greatness? If Klipsch had the EQ-adjusting app they’ve apparently been promising for months ready, it’d be a different story, but…

It seems like the same Catalyst apps are better on Big Sur than they are on Catalina, like the TV app and the official Twitter client. (I’m hoping against hope Twitterrific or Tweetbot will take a chance on supporting Twitter’s new API, assuming it’s possible, though.)

“Ted Lasso” is, at least three and a half episodes in, not only a needed injection of cheer but almost shockingly well-written for such a brazenly fluffy comedy series. 📺

Now that macOS Big Sur is almost out, I guess it’s okay to update my iMac to Catalina.

I really shouldn’t buy new things as a way to relieve stress, because the way this year is going I’m going to end up with two new cars, nine computers, 28 smartphones and, I don’t know, a microbrewery near Arcata or something.

After a bit of hammering, I have tentatively concluded that in fact I can’t make an Intelephense PHP plugin for Panic Nova, but I’m not sure if the problem is Intelephense, Nova, or me.

Panic's Nova text editor (a review)

Panic, the long-established makers of Mac utility software, seems fully aware that introducing a new, commercial code editor in 2020 is a quixotic proposition. Is there enough of an advantage to a native editor over both old school cross-platform editors like Emacs and explosively popular new editors like Visual Studio Code to persuade people to switch?

I’m an unusual case as far as text editor users go: my primary job is technical writing, and the last three jobs that I’ve worked at have a “docs as code” approach, where we write documentation in Markdown and manage it under version control just like source code. The editor that works best for me in tech writing is the venerable BBEdit. When it comes to editing code, though, BBEdit lags behind. My suspicion is that BBEdit’s lack of an integrated package manager has hurt it here. Also, BBEdit’s language modules don’t support extending one another, making it effectively impossible to do full highlighting for a templating language like JSX or Jinja.

When I was a web programmer, I was one of many who moved to TextMate, and used it for everything for a while. When the Godot-like wait for TextMate 2.0 became unbearable, I wandered the text editing wilderness, eventually splitting my loyalties between BBEdit, Sublime Text, and more recently VS Code. At this point, I suspect nothing will pull me away from BBEdit for technical writing, but for programming I’m open to persuasion.

So: meet Nova.

A screenshot of Nova's main window, showing its sidebar and a Ruby file.

I’ve been using Nova off and on in beta for months. I’ve reported some bugs, although I may mention a couple here that I didn’t catch until after 1.0’s release. And, I’m going to compare it to the GUI editors that I’ve been using recently: BBEdit, Sublime Text, and VS Code.

Nova is a pretty editor, as far as such things go, and with files of relatively reasonable size it’s fast. With stupid huge files its performance drops noticeably, though. This isn’t just the ridiculous 109MB, nearly 450,000-line SQL file I threw at it once, it’s also with a merely 2MB, 50,000-line SQL file, and Nova’s offer to turn off syntax highlighting in both files didn’t help it much. This may sound like a silly test, but in my day job I’m occasionally stuck editing an 80,000-line JSON file by hand (don’t ask). This is something BBEdit and VS Code can do without complaint. Panic wrote their own text editing engine for Nova, which is brave, but it needs more tuning for pathological cases like these. They may not come up often, but almost every programmer has one stupid huge file to deal with.

Nova has an integrated terminal and an integrated SSH client, and even an integrated file transfer system based on Panic’s Transmit. In fact, if you have Transmit and use Panic Sync, it knows all of those servers out of the box. Nova has a task workflow system for automating building and running. You can associated servers, tasks, and more with individual projects; Nova’s project settings are considerably more comprehensive than I’ve seen in other editors. You can even set up remote tasks. Nova has a serviceable Git client built in, too. Like VS Code, Nova uses JavaScript for its extension API, and it has built-in Language Server Protocol support—it’s a superbly solid foundation.

Beyond that, some smaller features have become table stakes for modern GUI editors, and Nova handles them with aplomb. “Open Quickly” can jump to any file in the open project, as well as search by symbols or just symbols in currently open files; it has a command palette; you can comprehensively edit keybindings. It has multiple cursor support for those of us who like that, and a “mini map” view for those of you who like that, although know that you are wrong. Nova’s selection features include “Select all in scope” and “Select all between brackets,” a command I often use in BBEdit and miss dearly in Code. (Both Nova and BBEdit select between brackets and braces, although BBEdit also selects between parentheses.) This effectively becomes “Select between tags” in HTML, a nice touch. There are a few other commands like “Select all in function” and “Select all in scope” that I didn’t have any luck in making work at all; a little more documentation would be nice.

That’s worth an aside. Panic has created a “library” of tech note-style articles about Nova sorted by publication date rather than an actual manual, and it’s not always easy to find the information you want in it. I know this is just what a technical writer would say, but I’d dearly like to see a human-organized table of contents starting with the editor basics and moving to advanced topics like version control, server publishing and extension authoring.

The Zen of Language Servers

A lot of Visual Studio Code’s smarts depend on the implementation of a “language server” behind the scenes: language servers offer almost spookily intelligent completion. For instance, take this PHP snippet:

if ($allowed) {
    $response = new Response(405);

If you have the Intelephense PHP language server plugin, Code understands that $response is an instance of Response and, after you type the > above, offers completions of method names from the Response class.

Right now, Nova’s mostly limited to the language servers completion systems Panic provides, and they’re… not always so smart. In that snippet above, Nova starts by offering completions of, apparently, everything in the open project, starting with the variables. If I type “s,” it narrows things down to methods that begin with “s,” but it’s all methods that start with “s” rather than just the methods from Response. The “Jump to Definition” command shows a similar lack of context; if I highlight a method name that’s defined in multiple places, Nova shows me a popup menu and prompts me to choose which one to jump to, rather than introspecting the code to make that decision itself. (Edit: Panic said on Twitter that they’re not using LSP in any of their built-in languages yet!)

But, this is a solvable problem: there’s (I think) no reason someone couldn’t write an Inteliphense plugin for Nova. If Nova’s ecosystem takes off, it could be pretty formidable pretty quickly.

Walk like a Mac

Even so, LSP support isn’t Panic’s biggest selling point. Unlike Sublime Text or VS Code, Nova isn’t cross-platform: it’s a Mac-only program written to core platform APIs. Is that still a huge draw in 2020? (Is it instead a drawback?)

You can definitely see a difference between Nova and BBEdit on one side and Sublime and Code on the other in terms of resource usage. With the two Ruby files shown in the screenshot above loaded, I get:

  • VS Code: 355 MB, 6 processes
  • Sublime Text: 338 MB, 2 processes
  • Nova: 101 MB, 2 processes
  • BBEdit: 97 MB, 1 process

Code is an Electron-based program, although Microsoft famously puts a lot of effort into making it not feel like the black hole a lot of Electron-based apps are. Sublime uses its own proprietary cross-platform framework. In fairness, while us nerds like to harp on research usage a lot, if your computer’s got 16G or more of RAM in it, this probably isn’t a big deal.

You notice Nova’s essential Mac-ness in other ways. Its preference pane is, like BBEdit’s, an actual preference pane, instead of opening in another tab like Code or just opening a JSON file in a new tab (!) like Sublime. And while all editors better have first-class keyboard support—and Nova does—a good Mac editor should have first-class mouse support, too, and it does. You notice that in the drag-and-drop support for creating new tabs and splits. Nova’s sidebar is also highly customizable, possibly more so than any editor I’ve regularly used. (Yes, Emacs fans, I know you can write all of Nova in Lisp if you want. When one of you does that, please get back to me.)

Unlike BBEdit, though, Nova doesn’t have a Mac-like title bar, or a Mac-like outline view of the project files, or Mac-like tabs. (Well, BBEdit doesn’t have tabs at all, which turns out to be a great UI decision once you have a dozen or more files open, but never mind.) This isn’t necessarily bad; people often say BBEdit “looks old,” and it’s hard not to suspect that what people mean by that—whether or not they know it—is that it looks like the long-established Mac program it is. Nova is relying less on “we have a Mac UI and the other guys don’t” than on “we have Panic’s designers and the other guys don’t.” Make no mistake, having Panic’s designers counts for a lot.

What may be more disappointing to old school Mac nerds is AppleScript support: none whatsoever. It doesn’t even have a vestigial script dictionary. Again, this may not be something most people care much about; personally, I hate having to write AppleScript. But I love being able to write AppleScript. BBEdit’s extensive scriptability is one of its hidden strengths. Nova’s Node-based JavaScript engine is probably more powerful for its own extensions and certainly more accessible to anyone under the age of 50, but it may be hard to call it from external programs.

So is it worth it?

That probably depends on where you’re coming from.

If you loved—or still use—Panic’s older editor, Coda, this is a no-brainer upgrade. If you used Espresso, a Coda-ish editor that always seemed to be on the verge of greatness without ever reaching it, Nova may also be a no-brainer for you.

If you’re a fan of Sublime Text, BBEdit, TextMate, or another editor that doesn’t have native Language Server Protocol support, you should definitely try Nova. Sublime and TextMate have more plugins (especially Sublime), but many extensions seem to be languishing (especially TextMate). BBEdit never had a great extension ecosystem to start with. All of these editors have strengths Nova doesn’t, but the reverse is also true, and Nova may catch up.

If you’re an Emacs or Vim power user, we both know you’re just reading this out of academic interest and you’re not going to switch. C’mon.

If you use Visual Studio Code, though, it’s way tougher to make the case for Nova. Code has a vastly larger extension library. It has the best support for LSP of any editor out there (LSP was developed for Code). Despite being Electron-based, it’s pretty high-performance. Code doesn’t have an integrated SSH or FTP client, but it does have an integrated terminal and task runner and Git client. If you don’t object to using an editor that isn’t a “perfect fit” with the Mac UI, Code is very, very good… and it’s free.

I don’t object to Nova’s pricing model—$99 up front including a year of updates, $49 for future years of updates—but I can’t help but wonder if Panic should have gone with super aggressive introductory pricing. Also, I saw more than a few suggestions on Hacker News about how there should be a Code-to-Nova extension translator; I’m not sure automatic conversion would be practical, but a guide on manual conversion seems like an excellent idea.

For my day job of technical writing, I’m going to stick to BBEdit. (One day I’ll write up an article about why I think it’s the best “documentation as code” editor on the market.) For programming and web editing, when I was working on both a Ruby and a PHP project—the former a Rails learning exercise, the latter an obstinate “I am going to write a modern PHP app without using a framework” exercise—I kept trying Nova’s betas and then switching back to Code for Inteliphense and, I swear to God, MacVim for Tim Pope’s amazing rails.vim plugin. I suspect Nova could duplicate both of those, but I’m not sure I want to be the one to do it. (Also, while Panic has decent reference documentation for writing extensions, I’d like to see a few simple end-to-end walkthroughs for those of us who look at a huge list of reference topics and don’t know where to start.)

But Nova isn’t just pretty, it’s powerful, and has a lot of promise. The editors I’ve been comparing it to have been around since 2015 for VS Code, 2008 for Sublime Text, and 1992 (!) for BBEdit; it’s not reasonable to expect Nova to blow past them in every respect right out of the starting gate. Even so, they are Nova’s competition. Catching up fast is an essential requirement.

So: yes, I’ve bought Nova, and I’m rooting for Panic here. I’ll come back in a year and report if I’m willing to stay on the update train.

The air is clear for the first time in nearly two weeks and I am going to Shake Shack, dammit.

I feel like writing up a review of Panic’s Nova code editor, but I have to decide if I’m really that motivated.

Switched back to my old desktop speakers to see whether the new ones really sound better to me. And they do, but the old ones (Audyssey’s sadly short-lived “media speakers”) still actually pack a heck of a punch. I should really see if I can find a good home for them.

Well, it’s sure nice that the high temperatures today came in about ten degrees lower than predicted thanks to [checks notes] smoke from the wildfires thick enough to block out the sun.

I keep toying with the idea of buying a Linux laptop, then remind myself that the chance of me actually using it, let alone moving to it as a daily driver, is still very small.

Blue Apron has been good for kicking me in the butt a bit for cooking again, after many years, but it’s nice to be doing dishes they’d never do—like pork slow roasted in apple cider for eight hours.

The new desk is here, and—I’m conflicted. It’s pretty but clearly not well-built, and right now I kind of wish I’d stuck with the old desk and just gotten speaker stands. I’ll see if it grows on me, I guess.