I finally got to spend some more time on my command-line micropub publisher app. I am making improvements to prepare for publishing to crates.io. I structured my crate into a library plus a binary. GitHub Copilot helped a lot with that, but I am still trying to unwind some weird things it did.

Hello, world!

Hello, world!

Hello, world!

One thing that I have decided I like about my job recently is that it gives me an excuse to use computers. It sounds pretty basic, but I find enjoyment just doing stuff on computers sometimes. I think the reason is that I have huge screens, a weird keyboard that I love, and a brand new trackball.

I signed up for paid search service Kagi while I was on vacation earlier this month. I am very happy so far with the $5/mo plan. It’s now the default search on my Linux laptop (via Firefox) and on my macOS desktop (via a Safari plugin).

Does everyone start a bunch of different projects and never finish them, or is it just me?

Today, my son and I started to learn how to code GUI apps in Rust. We followed a GTK tutorial and used Copilot (with limited success) to help us add buttons and a textview to our app. It was fun.

I stayed up too late coding a data validator using DuckDB. It is stupidly fast!

The Plucky Squire

I started playing The Plucky Squire recently. This week, it has been my late-night escape after my nighttime session at work. The game is absolutely adorable. I wanted to play it on the original Switch, but the game has framerate issues on that platform. It plays perfectly on the Nintendo Switch 2, however, which is what I am playing it on.

Back to work in data engineering mode

Today I went back to work after a two-week vacation and an all-day drive home yesterday. My family returned home at midnight, I didn’t get to sleep until nearly 2:30, I set up my home office for almost an hour this morning, and I didn’t start work until noon. My work tasks for today were all data validation-related. It’s nearly 23:30 and I have just finished configuring and kicking off 15 data validation jobs on my PC. Some of these jobs may run 24 hours or more, though I hope not, because that is terrible. I hope to have time to rewrite my data validators to use DuckDB—for speed—before the next data call cycle begins.

Yesterday my family made its annual visit to Santa’s Village, a theme park in Jefferson, New Hampshire. I was worried that my kids were getting too old for it, but I was wrong; they had a great time. My daughter even asked to go for two days next year instead of one.

Releasing my command-line micropub publisher app

I am still working to finalize the initial release of my command-line micropub publisher. The source code is currently available on GitHub. Here’s what is holding me up: I would like to distribute it as a binary, but I don’t know how to do that yet.

It’s a Rust app, so it could be distributed in a crate. However, I don’t know how to make a binary crate yet, so I am reading the docs. Plus, the current project name, “mp”, is already used by another crate on crates.io, so I may have to change it.

I don’t know how to distribute binaries on Linux, which is the platform that my app fits best in. It would be nice to generate .deb and .rpm packages (or even other package formats like flatpak). I don’t have a clue how to do those things at this point.

Additionally, the app should work on all platforms that Rust supports. Before I can compile and test the app on macOS or Windows, I need to get home to my other computers.

Tonight we watched the world premiere of my father-in-law’s concert band arrangement of “Moonlight in Vermont” in…Vermont!

I am implementing error handling in my micropub publisher tool. At this point, I don’t know Rust well enough to make the code concise. There is always something to unbox, unwrap, or match! Fortunately, my app is small and not complex.

I am testing out my command-line microblog posting app. So far it works!

We ate dinner last night at this charming Mexican restaurant in Bethlehem, NH.

Rust is the first programming language I am learning in the vibe-coding (🤮) era. Having GitHub Copilot automatically spew out entire functions as I am trying to figure out how to write simple things (like figuring out how to get the user’s home directory path) is pretty jarring.

Learning Rust

I have finally decided to give Rust programming a try. One reason is that I can’t stop hearing about it on tech podcasts or reading about it in tech news. The main reason is to give me something fun and useful to do on my Linux laptop. I started reading The Rust Programming Book a few days ago to learn the basics. What’s nice is that my 8-year-old son was inspired by me to give it a go, too. He has been reading through the book and doing the exercises, too. So far, I like the book and am enjoying learning about the Rust compiler and package manager. I wish Rust syntax looked as nice as Swift (or at least how Swift looked five years ago), but if I can code in PowerShell (which looks awful) and like it, I could certainly do the same in Rust.

Just chilling at the lake beach.

This is wild. You can try out Linux distros in your browser using DistroSea. You don’t have to install anything!

Linux PCs

This year I spent more money than I should have on computers. Of course, I am happy about that.

First, I bought a Beelink mini PCs with two NICs so I could set up an OPNsense router. My primary goal was to have a router/firewall that was up-to-date with security patches. That has been a rousing success. OPNsense, if anything, updates too often. My secondary goal was to have something I could set up as a VPN or proxy server so I could access my own stuff while I am away form home. I am unhappy to report that I could never get Wireguard working properly, and have given up on it for the time being.

I liked that PC so much that I bought another one to use as an app server. I installed Proxmox on it and have been having fun setting up numerous services in LXC containers using Proxmox VE Helper-Scripts. I set up LXC containers for Jellyfin (a media server and streamer), Paperless-ngx (a document manager for scanned papers), and several tools for downloading Linux ISOs and the like. It has been pretty easy to set up. The hardest part was getting all the LXC containers to connect to my NAS file shares, but even that was not very hard. (I do have many years of basic homelab-style Linux administration under my belt.)

The experience has been so good that I decided to buy a laptop to mess around with Linux on the desktop. I bought a 5-year-old used Thinkpad. It cost way less than $500, was in like-new condition, and runs Fedora 42 Workstation perfectly. I have been having more fun computing than I have for a long time.

I found the pst app! It’s a command-line tool for publishing to Micro.blog, written by @chrishannah in Rust, that runs on Linux! I used it to publish this post. Pst is open source, so I can learn from it! Very nice.

Microblogging on Linux

I’m running Fedora 42 Workstation on the “fun” laptop I bought myself at the start of the summer. I’m surprised to find out that there is practically no desktop blogging software available at all for it. Even the old, no-longer-supported apps I find online do not support publishing to Micro.blog. It might be fun to build a simple, publish-only tool that fills that gap. I will have to learn how to make an app for Gnome first, though, which may be difficult (I have no idea).

After a couple years away from micro.blog I decided to return. Let’s see if this sticks.