A blog about everything, by Jack Baty

Printing daily.baty.net

At the end of each month, I convert my Org-journal entries into a nice PDF, print it, and put it into a binder.

It occurred to me that my daily.baty.net website content is just a bunch of markdown files that could be treated the same as my org-journal files and perhaps printed as well.

I started by concatenating March’s entries into a single Markdown file, like so:

cat 2023-03*.md >> ~/Desktop/202303-MarchBlog.md

The resulting file wasn’t in great shape for printing, so I had to clean it up. At minimum, I needed to do the following:

  • Convert the YAML titles into Markdown headings (e.g. “title: Saturday, March 4, 2023”)
  • Remove all YAML delimiters (“—“)
  • Remove all date lines (e.g. “date: 2023-03-31T05:59:55.10-4:00”)
  • Convert absolute image links to relative links

My first approach was to create a Text Factory in BBEdit. Text Factories are re-usable bundles of BBEdit’s text transformation commands constructed using a handy UI. Here’s what it looks like:

This worked fine, and I assumed I was finished, but I wondered if there might be an easy way to do the same thing in Emacs. I’m terrible at writing lisp, so I cheated and asked ChatGPT to write it for me. To create the prompt, I copied the descriptions out of the screenshot shown above and pasted them into my prompt. It was just a list of things like Search and replace ](/img/202” with ](./img/202”

ChatGPT wrote the function, added comments, and summarized what it did. The code was wrong about a couple of things, but it got me maybe 75% of what I needed in a couple of minutes. Say what you will about AI, but it’s darn helpful, even though it’s flawed. After some tweaking, I ended up with the following emacs function:

(defun jab/process-daily-blog-export ()
  "Converts Markdown file of concatenated daily.baty.net entries"
  (interactive)
  (save-excursion
    ;; Replace title: lines with ## heading
    (goto-char (point-min))
    (while (re-search-forward "^title: \"\\(.*\\)\"$"  nil t)
      (replace-match "## \\1"))

    ;; Remove YAML delimiters "---"
    (goto-char (point-min))
    (while (re-search-forward "---$" nil t)
      (replace-match "\n"))

    ;; Make image paths relative
    (goto-char (point-min))
    (while (re-search-forward "](\/img\/202" nil t)
      (replace-match "](./img/202"))

    ;; Remove lines matching "^date: "
    (goto-char (point-min))
    (while (re-search-forward "^date: .*" nil t)
      (delete-region (line-beginning-position) (line-end-position)))))

Like I said, I’m terrible at writing Lisp, and there may be a dozen better ways of approaching this, but this worked fine and was easy to do (with AIs help).

All that remained was to add my usual Pandoc headers and print using the same template I use for Printing web pages and the result is a nice, printed copy of my blog for the month. At some point I may try and automate the rest of the process, but this is good enough for now.

Wavelength Messenger

This is not a review, but I wanted to jot down some notes after a few days in a new app that I’m enjoying very much: Wavelength Messenger. You might like to read John Gruber’s post for details.

My wife believes that I have some kind of processing disorder that causes me to quickly become overwhelmed by too much simultaneous input. She discovered this after several visits to the local Costco. After a few minutes in a busy Costco, I sort of shut down and become surly. I can only think about leaving. I’m no fun in a Costco.

This disorder is probably why I dislike Discord. A few minutes in a busy Discord server and my eyes sort of glaze over the same way they do in a Costco. I can’t wait to get out of there.

I prefer old-fashioned web forums. Forums are calm. Even busy ones. People can gather around a topic, post threads, and then discuss them, in context, at their leisure. I can find a topic, then easily scan the whole conversation. Discourse does a great job of this. Discord recently added forum-like features, but they feel tacked on and not that different from the main areas.

When I’m visiting a product’s website and see a link to Community”, I cross my fingers, hoping that the link leads to a Discourse forum and not a Discord server.

Forums, however, can feel a little distant. Impersonal. It’s a challenge to find a good balance between real-time chat and more leisurely forums.

What about Slack? I’ve used Slack since the beginning. Loved it. But it feels heavy. The macOS app” still uses too much juice and the web app feels janky. Switching between Slack workspaces is cumbersome and it makes me feel too far away from the workspaces I’m not currently in. Slack channels aren’t lightweight enough to use as threads, and Slack’s threads still feel like the place conversations go to die.

Wavelength balances all this nicely. I can see every group I’m in, and which ones have new activity. I can quickly pop in and join the conversation threads I’m interested in. Creating a new thread doesn’t feel like a big deal the way it does in forums. Although so far in a few groups everyone is just using one long thread, so we’ll see how that plays out.

The AI integration feels trendy, but I’ve been surprised at how often I’ve used it. It’s handy having AI right there in my messaging app.

The big thing missing for me is the ability to search messages. I understand that end-to-end encryption creates challenges around searching, but if they can manage to magically move thread history from peer to peer, I bet they can manage search. We’re going to need it.

Wavelength is a good-looking, good-feeling app that is good at group discussions. I like it.

My read-later service is made of paper

My read-later backlogMy read-later backlog

I’ve tried so many read-later” services that I can’t remember half of them. They’re all basically the same: visit a website, click a button, and the article is saved to a list somewhere with all the other articles I’ve saved. Some newer services get fancy with recommendations, UI improvements, social integration, etc. but they all just gather a list of articles that I almost never end up reading. But, you know, just in case, right?

I started printing long-form articles that I wanted to read in 2020 and that continues today. It’s the first read-later service that has stuck with me. My process for printing articles works great. I love the concise, two-column format I get from my Pandoc template. The Pandoc->LaTeX->PDF typesetting is so good and makes long-form text super easy to read. That, along with double-sided printing keeps the page count nice and low (it’s less annoying for the forests).

The printed articles are stapled and stacked on my reading desk. When I feel like digging through them, I sit down, grab a pen and highlighter, and slowly and calmly read stuff. It’s low-tech, offline, and comes with zero distractions. The minor friction around collecting articles keeps me from dumping everything into the pile. I only keep what I actually want to read, instead of everything I might maybe (but probably not) get to someday.

It’s a good system.

DHH: Why is paid social media a bad idea?

I don’t think everything ANYONE does is great. Not my good friends, not my coworkers, NOT MYSELF. This preemptive distancing from controversial figures when they do something you actually agree with is just so performative and pathetic.

DHH: (world.hey.com)

Finally, I’m with DHH on something. Don’t feel like you need to distance yourself every time you reference a person or work that someone on Twitter told you is bad.

As for the rest of his post, I dunno, but watching what Musk does with (to?) Twitter is fascinating at the very least.

Nick Brandt on using a digital camera — I hated it

I brought a Hasselblad 60 megapixel medium format digital camera to Africa with me. I took photos side by side with my film camera. The digital camera’s images were sharper. They had more detail in both the shadows and the highlights. The digital camera made photographing very, very easy.

And I hated it. … In fact, had I photographed using a digital camera from the beginning, I’m not sure that I would have liked a single photograph that I had ever taken.

Nick Brandt, I am the Walrus

His animal photographs are astonishing. And he uses short (50-100mm equiv. on 35mm film) lenses on film cameras. Amazing.

NICK BRANDT. LION BEFORE STORM SITTING PROFILE, MASAI MARA 2006NICK BRANDT. LION BEFORE STORM SITTING PROFILE, MASAI MARA 2006

Leitz Elmar 9cm f4.0

This Leitz Elmar 9cm f4.0 is by far the worst lens I own.

Leica SL2 with Leitz Elmar 9cmLeica SL2 with Leitz Elmar 9cm

And yet, I’m drawn to it for that very reason. I’m feeling a pull toward low-fi digital. Or at least imperfect digital. I’m not tempted to go buy a 2003 digicam like the kids are doing, but I’m also not drawn toward the APO-Summicron-SL that I used to shoot with.

This Elmar is quite soft and has such low contrast that it seems like there’s something wrong with it. As an example, here’s a mirror self-portrait straight out of camera:

Self-portrait using the Elmar 9cmSelf-portrait using the Elmar 9cm

Awful, right? Gloriously, satisfyingly awful!

This lens has been sitting on a shelf for years because I didn’t see the point, when so many better lenses are readily available. But now I’m thinking that maybe I’ll find a few shitty” lenses to shoot with and see how it goes.

It’s time to get back to work

After a two-year sabbatical, I’m ready to head back to work.

I wrote a few notes about how that might look: Hire Me.

Roll-104 (Leica M3/HP5)

It’s always surprising to me how many frames I don’t screw up when using the meterless M3.

Arrows on roadArrows on road

AliceAlice

Self-portrait in mirrorSelf-portrait in mirror

Fence and roadFence and road

Garage and Founders BrewingGarage and Founders Brewing

More like everyone else

I’m wondering if I should become more like everyone else. Should I post 5 Tips to improve your workflow right now!” articles on Medium? Should I be super excited” to humblebrag about myself on LinkedIn? Should I fire up my Instagram account and splash gaudy stories” all over it throughout the day? Should I buy some neon background lights and work on an unnecessary 90-second musical intro to my upstart YouTube channel?

No, I shouldn’t.

Is AI short for Albert?