I really appreciate that TRMNL allows you to bring your own server if you need or want to. I once had an air filter that bricked because the brand lost interest and turned off their server. What a waste of hardware!

Just set up my first TRMNL e-ink display. We’re using it to show a family calendar on the wall, but I’ll admit I’ve been snooping in the custom plugin APIs.

I finished reading: The Pragmatic Programmer by Andrew Hunt, David Thomas 📚I finished the 2nd ed audiobook over the course of a long weekend of yard work. Definitely worthwhile for a holistic approach to the craft. I’ll be going back to study the text again on some of the finer points.

There are two ways in which one can own a book. The first is the property right you establish by paying for it, just as you pay for clothes and furniture. But this act of purchase is only the prelude to possession. Full ownership comes only when you have made it a part of yourself, and the best way to make yourself a part of it is by writing in it.

Mortimer Adler

I need to get better at having the courage to mark up my books!

I started reading: The Pragmatic Programmer by Andrew Hunt, David Thomas 📚 The new second edition—I’d never read the first from 20 years ago.

Finished reading: Abundance by Ezra Klein, Derek Thompson 📚It was useful for showing how the same rules liberals introduced in the mid-century to solve climate change are now the getting in the way of building our way out of the climate crisis. Relevant to Canada too.

This gave me a chuckle:

Bloc Québécois Leader Yves-François Blanchet, asked by reporters if he had any tips for Alberta separatists, said for a nation to define itself, it requires its own culture. “I am not certain that oil and gas qualify to define a culture,” he said. “But it’s theirs to decide if they want to vindicate the right to self-determination.”

1Password in the shell

I’ve been digging into 1Password’s command-line client, op, lately. Back in the day, I’d have private shell configuration files where I’d export API tokens or export tokens into my shell as needed. This wasn’t a great situation. First, it was a security risk — if someone got access to my Macs or malicious code started scanning my environment. Second, it created security token management and provenance issues.

But now, by prefixing my shell commands with op run, I can run those commands with exactly the credentials that they need, with credentials that are stored and managed in 1Password.

Securing access for GitHub MCP

Today, I was trying out the GitHub MCP server in VS Code. The server needs a GitHub Personal Access Token, which is added to the server’s container through an environment variable. This is my VS Code configuration that sources the Personal Access Token through a field called GitHub MCP in my GitHub item in 1Password:

"mcp": {
  "servers": {
    "github": {
      "command": "op",
      "args": [
        "--account",
        "my.1password.com",
        "run",
        "--",
        "docker",
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "op://Private/GitHub/GitHub MCP"
      }
    }
  }
}

Using .env files

In our software repos, I’ve also started leaving .env files referencing passwords in our team’s vaults. Here’s an example in our Kubernetes deployment repository. With those .env files, which are shareable on GitHub because they only reference secrets, we can now streamline commands that need secrets, like:

op run --env-file="op/idfprod.env" -- phalanx secrets audit idfprod

These sorts of .env files are also helpful for setting up local development servers to use real credentials, like for the Ook application. Now I can spin up an Ook service for local development using secrets like this:

op run --env-file="./square.env" -- nox -s run

1Password is still worth it for me

For over a year, there’s been a lot of talk in the Apple community about dropping 1Password in favour of Keychain, especially now that Apple has spun it out into its own app. And for a lot of people, that’s probably the best choice. However, for a developer, 1Password’s CLI can make life much easier and more secure. Besides secret insertion in the environment, I also use 1Password’s SSH agent for things like signing my Git commits and authenticating with GitHub.

I’m not a vibe coder, but LLMs absolutely have changed my work for the better. Like yesterday I pointed Copilot/Claude 3.7 at my app’s SQLAlchemy models and asked for a Mermaid.js diagram I could drop into my technote. Absolute magic.

Yesterday a red Coast Guard helicopter was flying low over Georgian Bay and even landed to talk to some folks ice fishing near Beausoleil. I couldn’t quite understand it until a couple hours later I saw a Coast Guard icebreaker was making its way out of Midland harbour.

TIL you can concatenate highlights with Readwise.. What a clever feature for capturing the heart of a paragraph or two.

Today’s playlist brought to me by The Shins, The Constantines, The Weakerthans, John K. Sampson, Controller.Controller, and The Stills. The oughts. What a time for music.

We installed the LSST Camera on the Simonyi Survey Telescope of @VRubinObs@astrodon.social last week! I joined this project in 2015 and I can’t believe that our survey start is just around the corner. Ok, back to work!

A technicial works on the LSST Camera, seen through the reflection of the telescope mirrors

Severance S2E8: turns out we ate at that diner! It’s called Neil’s Yard in Bonavista Newfoundland! Lovely soup. (Photo from June 2016.)

A small flat roofed shack beside a gravel road with chairs out front, and two big picture windows framing the door in the centre.

Currently reading: Buried Deep and Other Stories by Naomi Novik 📚Short stories from the Temeraire 🐉, Scholomance 🧙‍♀️(and more) universes!

Finished reading: We Solve Murders by Richard Osman 📚 Our nighttime read, stretched out over a couple months because of the little guy. It was a cozy mystery thriller you’d expect from Osman.

I started kicking the tires on Hatch for a new personal Python project over the weekend. Not only does it supplant setuptools, but it also builds in tox-like functionality for running commands in virtual environments.

Finished reading: Plutocrats by Chrystia Freeland. 📚 It was a fascinating ride through the history of the 1%, how people have gotten rich, and what makes them tick. Interesting now to read the chapter where she recounts Mark Carney facing off with Jamie Dimon over bank capitalization.

“Even in low-compute mode, a single prompt on ChatGPT’s o3 model costs $20 to perform,” writes Dan Rasmussen of Verdad Research.

Ian McGugan, Globe & Mail February 22, 2025

Oh.

TIL Aeropress has a new glass/stainless steel/aluminum model. No more microplastics in my coffee! ☕️

Also there’s a matching drying rack.

If we can avoid flights to Florida because of Mr. Trump’s rhetoric, why can’t we avoid flights to Florida to prevent global warming?

— Kevin Yin, Globe & Mail, February 13, 2025.

Our little house, cozy in a thick blanket of snow.

Currently reading: Plutocrats by Chrystia Freeland 📚 — the next book in my Liberal leadership candidate book tour.

Values(s) is an especially interesting read in this the new US era. Many of the initiatives Carney wrote about in 2022 are now being rolled back. But I also get the sense that sustainability is inevitable — that America is now playing the wrong game and risks being left behind.

Finished reading: Value(s) by Mark Carney. 📚 After a 20 hour read, I love this book. In fact, I bought the hardcover that I’m going to reread and take notes on. It’s given me an appreciation for economics and a realistic (hopeful?) roadmap for how we’ll transition to a sustainable economy.

Judging from media, email fliers, and friends, it seems like we (Canadians) are just going ahead with a boycott of American brands — tariffs or not.

Apple’s new Invites app reminds me of the old iCards. Proof you can have a “social” app without the “media” part.

I’ve been wondering why Trump would make an own-goal with his trade war. This Globe & Mail piece by Turley-Ewart is the best lead yet by linking to a paper by a Trump economist that lays it out in its dangerous, illogical glory: A User’s Guide to Reconstructing the Global Trading System.

Started reading The you you are by Dr Ricken Lazlo Hale, PhD. 📚😉

I love my Patagonia Grade VII parka. I got it a few years back for half off in a spring sale, and I have no rights to own a belay parka, but man it’s nice to be out in -20C and feel totally fine.

What a time to be renewing a mortgage. Interest rates in Canada have been steadily going down with perhaps 50 to 75 basis points to go, making a variable rate look good. And this trade war could further reduce interest rates… Or! it could trigger inflation causing interest rates to go up.

🤷

Play version 2.4.1 added the ability to hide all shorts from its YouTube channels inbox. This is such a great feature because so many YouTube shorts seem to be empty derivatives of regular videos and don’t make sense when you’re trying to be deliberate about your YouTube viewing with Play.

I just finished my 50th Fitness+ session on the weekend (mostly rowing with my new bff Josh Crosby). I wish I got onboard earlier, but I’m so glad I’m here now. 🚣

For our respective birthdays we got each other a carpet cleaner and an electric snow shovel. We truly have become elder millennial parents.

I started reading Value(s) by Mark Carney 📚 My goal is to read Carney’s and Freeland’s books over the Canadian Liberal leadership race. Both are highly impressive, which bodes well for our future.

The snow banks are starting to get out of hand.

-21˚C and the furnace gave up last night. Thankfully we have some redundant forms of heating and some friends dropped off extra space heaters so we should be able to keep things going until a tech arrives.

Speaking of Krugman going indie, I find it curious that even established writers are offloading platform ownership to Substack in return for the benefit of its network and (I guess?) simple technical set up. What happens when Substack stops being cool or culturally palatable?

I was let down when I heard that Paul Krugman was retiring from the New York Times — this is until I found that he’s got a new home on Substack and is commenting with ever more frequency on economics and (of course) politics. Highly recommended and paywall free (for now?)

We watched Wild Robot last night 🍿 As new parents, the story line hit hard in a good way.

I appreciated the dystopian undertones of the movie — like the Golden Gate Bridge being underwater.

And if you’re an ecologist, just try to suspend belief for about an hour for best effect.