Restarting my Micro.blog subscription

I restarted my Micro.blog this morning. I was feeling lonely all by myself here at baty.net, so I thought I'd revisit some old friends. I expect this will affect the types of things I post here in my daily notes, but I don't know in what way, yet.

Micro.blog is a great blogging service, and I've been using it almost continually since the original Kickstarter campaign. I sometimes put the account on pause when I'm feeling Subscription Fatigue or when I'm suddenly all into some new platform or if I just don't feel like sharing quite so much on social networks. It's usually some combination of those three.

I haven't decided about cross-posting yet. Micro.blog does a great job of cross-posting and I could easily use it to send posts to Bluesky or Mastodon, but I'm not sure I want to. UPDATE: I see that now I can configure cross-posting on a per-post basis, which I'd wanted forever, so I think I'll configure both accounts and decide as I go.

I'll be keeping the default jack.micro.blog domain name rather than my own. First, because I have no qualms about not "owning" what I post there (I own it enough). Second, the domain is perfect for what it's for. Oh, and I don't mind a bit of "advertising" for Micro.blog.

If you're looking for a calm, friendly, simple way to publish short or long posts, Micro.blog fits the bill.

UPDATE May 29, 2023: I've decided to withdraw from social media, so my Micro.blog is on hold.

Permalink #

Friends (ruby CLI)

Mike Hall wrote about friends, a personal CRM for the command line. It's a ruby gem that does most of the things I was trying to do using Emacs.

It seems worth a try, so I installed the gem and created a few shell aliases to make things faster:

alias faa 'friends add activity '
alias faf 'friends add friend '
alias fla 'friends list activities'
Permalink #

Why am I not taking photos?

I go through periods during which I don't feel much like making "art" with my cameras. This is normal, but lately I haven't felt like taking photographs at all.

For example, I met my parents yesterday to celebrate Mother's Day. This, being an Event™, prompted me to bring my two good cameras, one film and one digital. I wanted to be sure to make a nice record of the day in both formats. In the end, I took a single photo as we left. I took it with my iPhone.

Permalink #

Some old cameras I found in storage

While doing some spring cleaning this week, I ran into a box of old cameras that I had marked "To Sell" but forgot about. The box had an old Olympus digital and a bunch of beat-up OM-2n film cameras and accessories. This was neat, but what I was most exited about were two cameras in particular: An original Fujifilm X100 and an Olympus Stylus Epic.

Here's the Epic:

Olympus Stylus Epic

I bought this little camera for $75 in 2004. I bought another in 2012 because there were problems with the original. Still, I put a roll in it and so far, so good. I just love them. I hope the two that I have last for a while, because I refuse to pay the $200-$300 they fetch these days.

The second camera is even cooler: an original Fujifilm X100 from 2010. This was such a nice discovery because I couldn't remember selling it, but also couldn't seem to find it.

Fujifilm X100

The Internet says that the CMOS sensor on the OG X100 has some kind of magical qualities, but I've never really seen it. It's a wonderful little camera that still takes nice enough 12MP photos. It's pretty slow to focus compared to current models, but it's fine in most conditions.

I charged the battery but the camera wouldn't power on. I paid $12 for a replacement battery and the camera seems to work fine now. Can you tell I'm excited?

Self-portrait with newly-found Fuji X100

Permalink #

Snoop Dogg on AI risks

“I'm like, are we in a fucking movie right now, or what? The fuck, man?… Shit, what the fuck? I'm lost. I don't know.”

Snoop Dogg, Ars Technica

Me too, Snoop. Me too. This might be the first honest take I've read.

Permalink #

A couple of Mu4e improvements

I usually prefer reading my email using Mu4e in Emacs, but the Vim ("Evil") keybindings have been broken since upgrading to 1.10.x. (See this PR for background). This added so much friction that I went back to Mail.app and Notmuch. Recent changes in evil-collection have fixed the issue but weren't available yet when updating Doom. The fix for now was to (unpin! evil-collection) in packages.el. Much better!

Another snag I've run into while using Mu4e was that sometimes I also use Apple's Mail on macOS and iOS and any messages I delete there would only be flagged as "trashed" in Mu4e, so they would show up in the inbox, cluttering things considerably. The fix for this was to set Expunge Both in my .mbsyncrc file. Also much better! That one has been bugging me for a long time.

So the good news is that I'm back to using Mu4e for my email, and it's now better than ever.

Permalink #

Prepending creation date to selected files using AppleScript (macOS)

I try to name all of my files using the file's creation date as a prefix. For example:

20230504-MyNewFile.txt

If I forget, it's a pain to rename them, so I created a short AppleScript to do it for me.

-- Prepend Creation Date to selected files
-- Install Location: ~/Library/Scripts/Applications/Finder
-- Last Modified: 2023-05-04

tell application "Finder"
	set selectedItems to selection as list
	-- Loop through each selected item
	repeat with selectedItem in selectedItems
		set creationDate to creation date of selectedItem
		set fileName to name of selectedItem
		-- Prepend the creation date to the file name
		set newName to my stringFromDate(creationDate) & "-" & fileName
		-- Rename the file with the new name
		set name of selectedItem to newName
	end repeat
end tell


on stringFromDate(_date)
	-- yyyymmddhhmmss
	set _string to ""
	set _string to _string & my stringFromNumber(_date's year, 4)
	set _string to _string & my stringFromNumber(_date's month as integer, 2)
	set _string to _string & my stringFromNumber(_date's day, 2)
	return _string
end stringFromDate

on stringFromNumber(_number, _digitsToPad)
	return text -_digitsToPad through -1 of ("0000" & _number)
end stringFromNumber

I put the script into a Finder-specific folder, so it's made easily available when Finder is the frontmost app: ~/Library/Scripts/Applications/Finder. (I use FastScripts to make things, er, faster).

I've also created a version for use via Raycast, which is identical but not "compiled", as that seems to break things in Raycast.

Permalink #

Adding weather info to DEVONthink's daily journals

Since I use DEVONthink Pro (DTP) to index and store my notes and documents, I sometimes revisit the idea of using it to create notes.

DTP includes a variety of built-in scripts for creating new content. These are mostly written in AppleScript. I was interested in the "Daily Journal" template. By default, running the Daily Journal template would create a new Markdown document containing a random quote and a list of the 4 latest headlines from the New York Times website. I was OK with the headlines, but I didn't feel the quote was necessary, so I replaced it with the current weather.

This turned out to be simple. I edited the existing script and added a getWeather() function:

on getWeather()
	tell application id "DNtp"
		try
			set theWeather to download markup from "https://wttr.in/90210?0q&format=%c+%C+%t"
		end try
		return theWeather
	end tell
end getWeather

The script calls the wttr.in weather website using a few parameters and that's it. Here's what it looks like here today:

⛅️ Partly cloudy +53°F

Then, I replaced the random quote bits in the script so that it now reads[1]:

set theWeather to my getWeather()
set myNews to my getNews()
set theContent to "# " & theHeadline & return & theWeather & return & return & "# Headlines" & return & return
...

I'm not sure I'll continue to use DTP for daily journals, but it's nice that I can tweak it if needed.


  1. I've put a copy of my version of the script here ↩︎

Permalink #

I can't be trusted with powerful software

It's happening again. My love of powerful, complex software has overrun my ability to avoid tinkering.

For example, I've spent several hours this week working on my Org-mode agenda display. Configuring org-super-agenda is tons of fun. It can make one's Agenda absolutely sing and dance, which is not ideal for me because I've spent way too much time trying to teach it to sing and dance. I could have finished all of the tasks on my todo list in the time I've spent getting them to display just right.

I did the same thing with tweaking Elfeed for my RSS feeds and Notmuch for email. They're just so cool and they can do so much. But they're not really better than, say, NetNewsWire or Apple's Mail.app. They're just cooler.

Basically, I've been feeling like the more powerful the tool, the less effective I become. This seems counterintuitive, but it's real. I get so deep into the weeds that I have a hard time finding my way back to wherever I started.

I'm not sure how to fix this. I've been down this road before so I just want to talk it through.

At times, I fall back to Apple Notes and Reminders and Mail and THAT's IT! But nope, that frustrates me almost immediately. The ideal solution would be to find tools that are just right. But what? Probably Things, BBEdit, DEVONthink, and TheBrain. As much as I love Tinderbox, it's second only to Emacs on the Powerful Software scale, so I'm backing away from that for now, too.

Stay tuned.

Permalink #

I'm weary of all social media

Twitter was the place I liked to be from 2006 until 2022. Or more accurately, it was the place I liked to be from 2006 until around 2015. After that, it was the place I felt I needed to be. Still, I managed to curate my Twitter feed well enough to avoid most of the awful bits. I'm a CIS white male, which made it easier of course.

Then Musk happened. I gave him the benefit of much doubt, hoping that just maybe he would "fix" things. The opposite has happened so far, so I'm out. I visit every few days to see if I've missed anything from my friends still there, but otherwise, it's no longer a place I want to spend time or contribute to. It's quite sad, honestly.

Mastodon to the rescue, right?! Sort of. Mastodon is a great idea. It's distributed and federated and built on top of an open protocol. All good things. But it's the culture that has put me off lately. There are a lot of people who feel it's their job to police how everyone else uses the platform. "You need to CW things like that!". "Hey, you didn't add alt text to that image, shame on you!" In some cases, the scolding is justified, but who gets to decide? Not you, that's for sure.

I signed up for Bluesky a few days ago. I don't know why, really. I guess it's because I try just about every new service, whether I need it or not. Also, I have been lamenting the loss of early Twitter. Those were heady days. The last couple of days on Bluesky have felt a little like that, which is nice. It's currently like a calm Twitter.

It's already changing. The Bluesky app is brand new and was really only meant as a way to test the API/Protocol they're building. And yet, people sign up (for the beta, remember) and start demanding better blocking, GIFs, and whatever other flavor of Twitter they feel is missing. It's a bit like Mastodon in that half of the conversation is dedicated to discussing the service itself. This is typical but gets old quickly.

The other Mastodon-like behavior is the non-stop snarky anti-Twitter smugness. That, too, gets old quickly. We get it, you're all so above social media in general and Twitter in particular. I kind of want to tell everyone to get over themselves and just go back to sharing fun things they're doing instead of pointing and yelling "That's BAD!" at everything else.

Anyhoo, I'm just venting after reading a heated discussion (on yet another social network) about whether using Bluesky is "approved" because Jack Dorsey is loosely involved in the project[1]. Remember, Jack did a Bad Thing that one time, so if he even walks by the project it's contaminated. I disagree, but I sure as hell don't feel like arguing about it.

In fact, I don't feel like arguing about anything online. I don't know how to avoid that and remain on any of the current social media platforms. This is why I write here on my blog that almost no one reads, and which requires some effort if you want to fight me. (But how hard is it to write an email, honestly?)


  1. Jack wrote: "All I made happen was get a team focused on the idea." He's one of 3 people on the board. Mostly, though, he's on Nostr now anyway. ↩︎

Permalink #

Installing a new sprinkler system controller

I replaced our flaky sprinkler system controller this weekend. All by myself.

The unit I chose was the Rachio 3 Smart Sprinkler Controller. They offer 4, 8, and 16-zone versions. My system has 9 zones because of course it does. The good news was that Costco sells a version with 12 zones for the same price as the standard 8-zone model. Yay me!

I'm not a handy person, so it was with some trepidation that I even started this project. I was careful to remember to take lots of "before" photos to use as a reference.

Wiring in the old controller

Removing the old housing was a little tricky because it was nailed to the backing board rather than screwed.

The old controller, not-so-carefully removed

Three screws later and the new controller was in place. I used the reference photos to connect the wiring and it was time to test everything.

New controller wiring

The Rachio app walked me through getting everything set up. Of course nothing worked. I had missed one common wire. Once that was in place, the system was working. The next step was to go through each zone and indicate grass type, soil type, amount of sun, grade, etc. This took me about thirty minutes, after which a default schedule was created for me, using the information for each zone.

The Rachio app

It's pretty cool. The app knows my local weather conditions, and skips runs based on wind, temperature, and rainfall. My wife has access so she can start and stop things any time, right from her phone. I was excited to add it to HomeKit until I read that they'd recently abandoned HomeKit support. Well, crap. That would have been nice.

The first run ran as scheduled this morning. I received a text letting me know it was about to start. The run is timed to start so that it "ends before sunrise". The next run has been automatically postponed until next Wednesday, as it's supposed to rain tomorrow and Monday. Pretty cool.

Once in a while, I get a DiY project right. Feels good when that happens.

The new Rachio 3 controller, installed

Permalink #

Another Mastodon move

I decided that a single-player Mastodon instance isn't ideal. It's overkill for one person, and it's lonely! The #local feed is just me shouting to myself. That's no fun. What's the point in having a giant Rails app with all sorts of moderation tools, user management, and monthy costs if it's just me? That's what I thought, so I've moved.

First, I considered heading back to fosstodon.org. The vibe there is kind of what it's like to be in my head, but it also ends up feeling a little narrow-scoped, if that makes sense, so I decided against it.

Another choice was to join the new Medium instance, but if I did that I'd probably end up posting nothing but listicles about productivity tools and we need zero more of those in the world. So Medium is out.

I've ended up at @jbaty@social.lol. I've had an omg.lol account for a long time, and I get a kick out of the vibe. All those hearts and happy stuff. It's nice, ya know? Follow me there if you like.

Permalink #

Blot is just right

You may have noticed that once again things have changed around here. This time, it's due to switching from WordPress to Blot. We've been around this block before, but lemme 'splain[1].

I've switched from Hugo to Eleventy to WordPress within just the past several months. This is not surprising to any of you who've been following along. Sometimes I switch blogging tools because I'm mad at whatever I'm using. Other times I switch because I'm bored. This time it's a bit of both.

Mostly, I switched because I don't enjoy using WordPress. WordPress is powerful and easy and everywhere, but the editor is unpleasant and everything just feels heavy and overwrought. I also tire of plugins nagging me to "Upgrade to Premium!" all the time. I tell myself I can live with it, but in the end I never can. On the other end of the spectrum, my usual static site generators (e.g. Hugo) feel like too much work. They require maintenance and sometimes break for no reason I can see. They also require some form of deployment mechanism as well as hosting, etc. It's too much.

The decision between super-easy-but-icky WordPress and more-work-but-pleasant Hugo always trips me up. While debating this with myself earlier, I remembered Blot. You see, Blot is like an SSG but without all the dependencies and fuss. Put some Markdown (or HTML or Text) files in a Dropbox folder and boom, a nice blog appears. There's a little more to it than that, but still. With Blot, I can use any of my favorite text editors to edit posts. And there's no deployment or "Send to blog" steps. I simply save the file and the rest is taken care of.

I gravitate toward software that "thinks" like I do. Blot thinks so much like me that it's creepy. If I were going to build my own blogging tool, it would work like Blot works.

Another great thing is that Blot's developer, David Merfield, is preternaturally helpful. He's gone so far above and beyond what's expected when helping me that I almost felt guilty. He's just nice. Reading his News page shows how he's continually making improvements. And also how helpful he is.

So I'm back to using Blot for Baty.net. It's easy, and I get to live happily in plain text files. Thanks for playing along.

UPDATE May 29, 2023: Aaaand, we're back on Hugo. I wanted everything on my server.


  1. Again, like it's 2018 ↩︎

Permalink #

Must we become what we're near?

I’ve seen a number of thoughts similar to this from Shane Parrish:

We unconsciously become what we’re near. If you work for a jerk, sooner or later, you’ll become one yourself. If your colleagues are selfish, sooner or later, you become selfish. If you hang around someone who’s unkind, you’ll slowly become unkind. Little by little, you adopt the thoughts and feelings, the attitudes and standards of the people around you.

Shane Parrish, Farnham Street

I wonder if anyone’s considered whether the opposite could happen. Let’s assume that I’m, say, a kind person working with someone who’s unkind. Maybe, just maybe, the person I’m near will become more kind rather than the other way around. Must things always trend toward the negative? I’d like to think not.

Permalink #

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 AI’s 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.

Permalink #

My read-later service is made of paper

My 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.

Permalink #

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.

Permalink #

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 2006

Permalink #

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.

Permalink #