jb… a weblog by Jonathan Buys

For the Future

It’s been a busy couple weeks in the Mac community. From horrendously serious topics like Apple taking on child sexual abuse material (CSAM) by scanning photos uploaded to iCloud to drastically less serious topics like an upcoming OmniFocus redesign and 1Password switching to Electron. But first, a follow up to Switcher Season 2021.

After seriously considering my motivations I’ve come to the decision to stick with the Mac and my Apple gear for the foreseeable future. It would be a massive and expensive effort to replace everything, even piecemealing it one bit at a time, and it would disrupt my life and my families lives. Like I said before, when Apple’s devices work as advertised it’s like pulling a bit of the future down into the present. And that’s what I want, I want to live in that optimistic, solarpunk future. Apple has, so far, done well with their green initiatives, like building Macs out of recycled iPhones, and running all their data centers off of renewable energy. Apple is massive now, but at their core I think they still want to do the right thing. Not that they always get it right, or that they always wind up on the right side of a debate, but over all I think I can still support the company because they are still, in general, working towards being a force for good in the world. We need more of that.

Of course, being one of the biggest companies in the world comes with additional scrutiny and responsibility. One of those is doing their part to stop the spread of CSAM, while at the same time protecting the privacy of their customers. I won’t get into it too much here, other than to say I think they could do more and it’d be fine. Otherwise I’ll just point you to John Gruber’s excellent take on the matter. Also, if this is a necessary step to end-to-end encryption for iCloud Documents, I’m all for it.

On a much, much lighter note, I’ve been using the new OmniFocus for iOS beta, and while it’s not nearly as bad as what’s going on with 1Password I’m not sure I’ll be upgrading. After using the beta for a while now, I can’t imagine I’ll stick with OmniFocus if they don’t make some significant changes to the UI before they ship. Which is sad, because I’ve been an OmniFocus user for a long time. I suppose I could see how long I can stick with v3, but it probably won’t be long.

I really miss the main dashboard screen, and how large the touch targets are in v3. In v4 I find the outline to be a big step back in usability and just how pleasant the application is to use. The checkboxes are too small, they are on the wrong side, the Forecast view doesn’t have the week calendar at the top, and I can’t swipe to go back to the dashboard. Instead I’ve got to find that little outline button on the bottom left, or just know that you can tap on the name of the perspective.

Some folks might really love how this works, but it’s not for me. The Omni group is using SwiftUI to build a single cross-platform application, and I suppose we should just be grateful they aren’t switching to Electron.

Because that’s exactly what 1Password is doing. I registered for 1Password Early Access and downloaded the new version and it’s like it was built by an entirely different company. ⌘ \ is no longer the default keyboard shortcut, which is crazy because they had t-shirts made for it.

I’ve been a supporter and advocate for 1Password for years. I led my team to use it at work in 2016 because I’d been using it and loving it since it was 1Passwd. It’s a web app in a frame. v7 was a best in class, completely solid Mac experience. v8 I wouldn’t give a second thought to if I wasn’t already so invested in the app. I know the AgileBits team gave this a lot of thought, but my opinion is that this is a mistake.

Man, AgileBits used to be such a great little indie Mac company, till they tasted that sweet, sweet enterprise money, then they took millions in investment funding.

One of the founders made a good argument for why they eventually decided to go this route:

@shepstl There is a bit of a truth here. I think the business/enterprise side is important for us.

You can see over that over the past few years every major vendor — Google, Apple, Microsoft have built their own password manager. Once something becomes essential, there will be a free option. Remember when Netscape used to sell the web browser and now it is something that we all expect to be free?

If we want to survive, we have to provide something more. Support for businesses (and families!) is a big part of it.

Now, both Dave and I are still using 1Password everyday. We are Mac users and we want to have the best experience for ourselves.

We agonized over the Electron choice and how it will be received by the community. Yesterday wasn’t easy and some of the feedback did hit our team pretty hard. I still think/hope we could pull it off and people will come around 🤞 I know I did — while there is still work that needs to be done, I can’t imagine using the old app today.

I understand. I don’t agree, but I understand. I think they could have continued to ship a first-class native citizen on each platform without resorting to Electron, but that’s the choice they made.

So where does this leave me? The thing is, all of these changes are happening at a time when Apple is also making pointed improvements to their native apps. Reminders is getting pretty good in the next version, it’ll support tags and smart lists that I could configure to be similar to Perspectives in OmniFocus. There’s also enhancements to the built-in password manager in Safari, most notably support for MFA, that make it an attractive native option. It won’t be nearly as full-featured as 1Password, just like Reminders will never be OmniFocus, but for my personal use case, maybe 80% is good enough. That, and Reminders deep integration into the Apple ecosystem will probably be what it takes for me to move.

I’m always looking for ways to simplify, reduce. To use less and do more. OmniFocus and 1Password are just reminding me to take a close look and see if I really need them in my life or not. I’m suspecting in the next couple of months I’ll wind up with not.

1Password 8 for Mac is now in Early Access! 🎉

Our new 1Password apps are built in Rust, a secure systems programming language famous for its performance and safety. 🦀 You won’t see this change but you’ll feel it.

What I can feel is that this is going to be a problem.

Jump to Post

Making a Tiny Mac From a Raspberry Pi Zero

Making a Tiny Mac From a Raspberry Pi Zero

This is adorable.

Jump to Post

Habits, UI changes, and OS stagnation | Riccardo Mori

Riccardo Mori posting last month on how macOS has stagnated roughly since Lion.

And with Mac OS it feels like its journey is over, the operating system has found a place to settle and has remained there for years. Building new stuff, renovating, rearranging, etc., but always on site, so to speak.

This reminds me of a post I wrote in 2018 about some features I’d love to see in the Mac. I’m still waiting for anything I wrote about to be shipped.

Jump to Post

Switcher Season 2021

system76-thelio

Years ago Alex Payne wrote “Switching Season”, about how he thought about switching from Mac to Linux. I know how he feels. From time to time I get the idea in my head that I’d like to move away from all things Apple and diversify my investment in technology. This normally manifests itself when I’m in the market for a new computer (which I am), and often in the form of a Unix workstation on my desk. The past few days I’ve been eyeing the System 76 Thelio.

To be accurate, this is not a “Unix” workstation, since it ships running a weird version of Ubuntu Linux. I wouldn’t run Linux on it though, I’d run a minimal install of FreeBSD combined with the XMonad tiling window manager. Inside XMonad I’d have half the screen taken up by Firefox, and the other half be a terminal, most likely split with tmux. I could keep Vim handy for running Vimwiki and all my other text editing needs, play music in cmus, keep up to date with the news with newsboat, and handle email with mutt.

When I did need Linux or Windows for whatever reason, I’d keep a virtual machine image handy to spin up in bhyve.

It could be a quiet, extremely focused work environment. Zero alerts, no notifications, no extraneous applications to pull me away from what I’m doing.

But… I’d also be closing the door on some future possibilities. I’ve been working on a new Mac app for bookmarking lately, and it’s actually very close to being ready for the App Store. A few things left undone yet, and it’s a little buggy in places, but overall it’s getting close. With my focused Unix workstation I’d be saying to myself “this part of your life is over.” And, that’s hard to say because the Mac and I go way back.

Apple was on the rebound when I bought my first Mac in 2003 or so, but I’d been eyeing them for years from overseas. Very similar to how I’ve been eyeing the System76 box, come to think of it. They were on the rebound, but they still weren’t anything close to what they are now. They were still the scrappy underdog, not literally the world’s most valuable company. The community around the Mac was a lot of fun, we kept getting blown away by the amazing technology that came out of Cupertino.

Following Apple as a hobby has been a spark of joy for many years. The thing is though, as they’ve grown and focused more on services and integrating themselves deeper and deeper into my everyday life, I’ve stared to feel a little uncomfortable. Like maybe I’m not completely ok with the world’s biggest company being my desktop computer, my laptop computer, my phone, my watch, my tv box, my workout companion, my cloud storage, my email, my music, my photos, my headphones, my speakers. So much.

There’s still enough rebel in me that wants to root for the underdog. The little guy trying to do the right thing. System76 ticks the right boxes for me. Aesthetically pleasing design, small company, manufacturing in the US. If I were to do this, I’d eventually want to wean myself off the rest of the Apple ecosystem. Replace my Apple Watch with a Garmin Forerunner. Replace my iPhone with a Light Phone II and a Kobo ereader. Replace the Apple TVs with Rokus. Replace my HomePods with a couple more Sonos speakers. It’d be a long process.

And honestly, it’s a process that I’m not sure I’m up for. Especially when living in the Apple ecosystem is so good. There are tangible benefits from living inside Apple’s walled garden, and when it all works together it really feels like living in the future. And that’s when I love it all again. Despite Apple’s many faults, there’s still just nothing better out there.

The System76 box would be super cool, but I’d be stuck on the Intel platform while Apple speeds ahead with the M1. I’d have to abandon any biometric authentication and go back to typing my password for everything. What I think I’d miss the most though is the trackpad. I’ve had a Magic Trackpad for a few years now and I can’t imagine going back to a mouse. Multitouch is a revelation on any platform its used on, and the Mac is no different. It’s good for RSI issues, it’s amazing for gestures, and I love being able to long-click on words to get their definition. Of course, with an XMonad setup I wouldn’t be using the mouse much, but I’d still need it for navigating the web and the odd task in the window environment.

I don’t want my choice of computer to be making some kind of weird political or lifestyle statement, but then again, when you vote with your wallet what else can it be? I wish Apple had never become the behemoth that it is today, but it still makes the best computers.

Maybe I’m talking myself into that workstation, maybe I’m talking myself out of it. I honestly haven’t decided yet.

Setting up BBEdit 14's Python Language Server Protocol

Bare Bones released the new version of BBEdit recently and it’s packed with features that teach the old dog some modern IDE tricks. When programming I mainly work in Python these days, so I obviously wanted to take advantage of BBEdit’s new Langage Server Protocol support. This lets BBEdit start a daemon for you in the background that you install separately, and the daemon takes care of things like code completion, error highlighting, and documentation. However, how to set this up specifically for Python development was a bit unclear to me. Here’s how I got it working.

First, and you’ve probably already got this setup, install python3 with Homebrew and use it to install a virtual environment.

brew install python3
python3 -m venv ~/Unix/env/lsp

Next, activate the new virtual environment and install the Jedi Language Server. Once installed, copy the full path to the executable:

source ~/Unix/env/lsp/bin/activate 
pip install -U jedi-language-server
which jedi-language-server | pbcopy

Finally, open the preferences for BBEdit, find the Languages section, and towards the botton add a Language-specific setting for Python. Under the Server tab, make sure you’ve checked the box to “Enable language server”, and paste the path copied from the previous command.

bbedit-python-lsp-prefs

If BBEdit finds the executable at the path, there will be a green dot at the bottom labeled “Ready to start server”. Otherwise, you’ll see a red dot that says “absolute command path not found”. If you see that make sure the commands above completed successfully.

Now, whenever you open a Python file BBEdit will automatically start the LSP daemon in the background and start working it’s magic.

MKBHD's iPadOS 15 Review

Marques as always has a great overview of what’s coming next in iPadOS 15. I recommend you watch the entire thing, but I did take issue with what he said starting here.

They didn’t become a two-trillion dollar company by being bad at business. They’re not going to cannibalize their own products.

I think the opposite, I think Apple would love for the iPad to cannibalize the Mac. I’ve seen other youtubers try (poorly) to make the case for making the iPad into a computer replacement. But where Apple is coming from takes a more nuanced approach. Apple isn’t trying to recreate a computer, with the iPad they are trying to redefine computers.

Steve Jobs said the iPad fit between the iPhone and MacBook. Tim Cook said “We believe that iPad is the perfect expression of the future of personal computing.”. They’ve been trying to remove all the things that make computers difficult to use for people who aren’t Mac Power Users, while at the same time make the overall system more powerful and capable for people to get their work done. With varying degrees of success for each.

There are definitely shortcomings to the system that make it an unlikely candidate for me as a computer programmer to do my job on, I won’t argue that. However, I would argue that it might be possible to rethink how I do my job that might make my personal workflows more flexible and better overall. A workflow built around how a computer works must change when how the computer works changes.

Apple is trying to merge the future and the past, and that’s given us a bit of a jumble with iPadOS. I want them to keep going, I’m looking forward to the future where the only computing device I really need is a single pane of glass. I don’t think Apple needs to worry about cannibalizing Mac sales with the iPad, I think if they could do that they’d love to. That’s what they do, build devices that eat into the old devices sales till the old devices are no longer needed. What they are trying to do with iteratively reimagining the future of computing now needs… more iterations.

As for cannibalizing their own products, Apple has been doing that for years… that’s how they became a two-trillion dollar company.

Jump to Post

MacSparky and DEVONthink

Yesterday I had the pleasure of chatting with David Sparks about an upcoming Field Guide he’s doing on DEVONthink. He had asked for power users of the app, and given that I’ve been going back and forth with it for years I sent him a screenshot and let him know I’d be happy to help. He responded and here we are. If you’ve ever listened to David on one of his podcasts, he’s just as personable and friendly speaking with him one on one.

I’m looking forward to the new Field Guide. My part in it will be as a kind of power user addendum where a few existing users give a glimpse into what their setup looks like. I hope David can get something useful out of my rambling, overall I felt like I barely scratched the surface of what I wanted to say about DEVONthink. I didn’t get into the custom CSS for Markdown display, or the Sorter menu extra, or how you can import a webpage from Safari as Markdown and strip all the adds and other junk out of it. I didn’t get into backup and restores of the databases, or my Take Note hotkey (^space), or how I integrate RSS into my research database to stay on top of new developments in AWS. Ah well, there’s only so much you can do in 15-20 minutes. I’m sure David already covered all of this in his Field Guide anyway.

Also, since DEVONthink is so good at search and discovering additional data, I closed all but my research database during the recording so I didn’t accidentally surface any proprietary or personal information. One of the biggest reasons I use DEVONthink is because it can keep all my personal data private and secure between machines, but that wouldn’t do much good if I just showed the world my bank account numbers or details about our AWS environment in a search result.

Hopefully David can work some magic in editing. If I’m honest I’m a little nervous about how my section is going to turn out, or if it’ll be included at all. Overall though, I think I’ll be in good company, and that the Field Guide is going to be a great success. I’ve got a lot more to say, maybe I should revisit that podcast idea I’ve had for a while. No matter how my part tuns out, it was great to talk to someone who’s work I’ve been following online for years. David’s work with OmniFocus and Paperless have been foundational, and I hope he has the same success with DEVONthink in the upcoming months.

Inner-Document Markdown Reference Links

I’m writing a fairly large document for internal use at work, and instead of using something like Word I’ve generated a bunch of markdown files that I’m stringing together with the excellent Pandoc to generate a very nice PDF file with LaTeX. The resulting PDF is beautifully formatted, thanks to the Eisvogel template. A key part of the PDF is a functional table of contents outline in the sidebar of Preview, and the ability to link to different parts of the PDF from arbitrary text.

Pandoc generates header identifiers for each section of the document automatically, which you can use as normal markdown-formatted links. The documentation states:

A header without an explicitly specified identifier will be automatically assigned a unique identifier based on the header text. To derive the identifier from the header text,

  • Remove all formatting, links, etc.
  • Remove all footnotes.
  • Remove all punctuation, except underscores, hyphens, and periods.
  • Replace all spaces and newlines with hyphens.
  • Convert all alphabetic characters to lowercase.
  • Remove everything up to the first letter (identifiers may not begin with a number or punctuation mark). If nothing is left after this, use the identifier section.

So, the header Header identifiers in HTML becomes #header-identifiers-in-html. I did this manually exactly once before I was certain that it was going to be far too tedius and something that could be easily solved by awk, or so I thought.

It turns out that the BSD version of awk included with macOS doesn’t support the flag needed to convert to lowercase, so instead I grabbed a quick perl command and sandwiched it between two awk commands:

sed s/\ /-/g | perl -p -e 'tr/A-Z/a-z/' | sed s/^/\#/g

Then all I needed to do was drop that in a file with a shebang header and mark it executable, move the file into BBEdit’s “Text Filters” folder and it was made available to BBEdit from the Text menu. Now I just highlight some text I want to format as a link, and select the menu option.

I suppose I could get even fancier and muck with the clipboard, and work all the other Pandoc rules into the script, but I imagine this will take care of %95 of my use cases for what I’m doing. That’s more than enough.

Your Wild and Precious Life

Jump to Post

Another great video find by Kottke, what are you going to do with your one “wild and precious life”?

The days are long but the years are short.