2024–W20 #

Mostly: I went to Halifax, Nova Scotia, by sleeper train.

This makes this update less of a "what I got done" week notes, I'm afraid 🤷


The Train:

  • Good: The food, the general experience, seeing Canada.
  • Good: The station is right down town!
  • Bad: (for me) sleeping in a car which starts and stops is surprisingly unpleasant.
  • Bad: The train was hours late due to freight having priority. Obviously: if you're taking a 23 hour train you are not in a hurry, but also what is the point of scheduled arrival times under this system?

I've never liked a city as quickly as I liked Halifax. The climate feels a bit closer to growing up in Ireland (over on the other side of the Atlantic), but is still definitely Canadian. There's Irish on signs occasionally, and on billboards. It's about half the size of Ottawa and has a heavily used (and seemingly sensible) transit system.

H and I enjoyed staying in an apartment, and really thought about the burden having hobbies which require so much space and material creates. We have both started serious clear-outs of our stuff and reprioritizing of hobbies since coming home. I'd rather enjoy doing 2 or 3 things well than be stressed by the ~10 things I could be doing, all of which I am bad at. The most obvious way this manifests is in tools, especially infrequently used ones like the welder. I don't want a huge heavy piece of equipment (and attendant safety gear) because once every year or two I want to join two pieces of steel. It's silly.


I have the longest gap in my GitHub history since leaving work, I think. I brought a computer with me on vacation, but aside from processing some photos, I didn't push anything anywhere or take part in any for-fun programming.

Speaking of which: I have my cameras set to using a high-contrast black and white filter and have Shotwell using the camera's RAW developer. As much as possible I am trying to commit to shooting 4:3 or 1:1 monochrome this year. I took more photos on vacation than for months before that; I'd really like to shoot more.

Finally: I cracked my rib removing the tumble dryer so our washing machine could be replaced. It sucks: it's a small enough issue to not need treatment or painkillers (yay) but a big enough issue to stop you doing things and it's still, you know, a bit painful.

2024–W19 #

It's a new week!

I racked that really big server and I am really impressed and pleased with it. It has quite a few quality of life features that weren't common the last time I was dealing with rack mount gear (which was almost always Dell): internal USB and even an internal SD card slot -- although I don't know if that works as a boot device.

This particular machine has onboard hardware RAID but also has an external hardware RAID in the only currently-usable PCIe slot. The RAID card as a 1GiB NVRAM pack installed, so writes are super-quick. I had forgotten that disks can be fast when you have a battery backed write cache ahead of them. Lovely.

I re-learned some libvirt/virsh stuff at an accelerated pace. Last time I did this, at iWeb, we used libvirt directly for a while before switching over to CloudStack as a management layer. Gotta say: CloudStack hasn't really moved on, it seems, since I last used it. Maybe that's because it's mature? But also maybe that's because it's legacy. Maybe those things mean the same thing 😀

I've also tried out SFTPGo which is a neat piece of open-source software that does most of what iWeb FTP did. (We had to write iWeb FTP, but now anyone could host basically the same thing for free, as long as they adhere to AGPLv3. Progress!).

I caught up with friends at the weekend so there's less to show on GitHub, but between migrating my OmniOS hosts to VMs and testing out live migration between machines in my home rack; I think I've done enough computering. (Also: we're playing House of Ashes from the Dark Pictures Anthology at home, so that's taking up most of the evening after dinner-time).

This is the week I go to Halifax! I'll update this to be in the past tense, after it happens.

Misc:

  • Set up PostgreSQL replication for the first time in a long time.
    • Just physical so far, logical is up next.
  • Put blank Windows 10 installs on the ThinkCentres ahead of selling them.
  • Added an RSS feed to thymesheet.
  • Moved up to OmniOS r151050 -- exciting because it supports VirtIO SCSI. I'm not using the SCSI driver yet (still virtio-blk) but now that it's possible I'll probably move over.
    • Theoretically this could allow hot-adding devices to a running OmniOS VM, although quite a few pieces need to be joined up for that to happen.
  • Set up an IPFS node for pinning files.
    • I'm interested in the tech, although it is a little cryptobro-adjacent.
      • Especially in how it could be used for serving media attached to fediverse posts, instead of the current paradigm of copying them to every server's cache folders.

2024–W18 #

  • Played with local AI via ollama -- Mistral and llama3 models, specifically.
    • Running it locally makes me feel less icky, not sure why?
  • Glued up the "rows" of 2x4s for my chopping block, in sets of two.
  • Not going to lie: played a fair bit of Fallout 4 this week.
    • The new update came with new Enclave quests!
    • But it also came with many new bugs.
      • Bethesda giveth, and Bethesda taketh away.
  • I have a compiling, but not working, version of my LCD code and some other stuff is messed up.
    • Just compiling caused an OOM kill until I updated Rust. sigh.
    • Update: I figure out that blocking on a future from sync code which was, itself, waiting for async task to complete somewhere else will never work.
      • So I basically reverted the top commit, but at least I understand why I had to do that.
        • I have come full circle: Embedded HAL is good, actually. 😀
  • Looked at async Python and IRC bot writing
    • Wrote a little Python to backup an old old blog and move it to Zola. but also thinking about buying servers and about a MySQL proxy because of a conversation with PD.
  • Fixed lemonbar multi-monitor support when using mirrored displays!
  • Made twm look and act nice, as a cope for the fact GNOME is totally broken on my Thinkpad 440p for ... some ... reason.
    • This has taken the place of 9wm and mwm as my "window managers for very constrained machines". For now, hah.
  • Deployed thymesheet -- you're swimming in it.
  • Did some CAD with Plasticity: just a little design to cover the lightbulb sconces in my en-suite.
    • It kind of sucked? Like it was easy to get the shape I wanted, but getting it dimensioned like you would with CAD was frustrating. It made me think about using OpenSCAD, tbh.
    • Then I took that STL and did CAM to it with PyCAM. The output was pretty poor.
    • I think PyCAM fundamentally wants to work either in a spiral (with square edges) or back and forth rastering over the design. I'm not confident that would ever produce the results that I want, even with a crazy high step-over?
    • I'm trying again with Fusion 360.
      • Shocker: this was much better.
  • Did some Rust exercism. Solving the problems once and then getting to see others answers and going for second or third iterations is a great feature. AoC doesn't encourage you to make your solution nicer; once you have the right answer you're done.
    • Of course, AoC is for a different purpose, but I personally know a lot of people who use it as an excuse to learn a new language. Might as well learn it well?
    • Also: first time writing a macro and I nailed it.
  • One thing off the long-term project list: used those 433MHz modules to both receive and clone a simple OOK transmitter.
    • I wrote the code in Rust using the rp2040-hal and embedded-hal!
      • And I ported it to the Trinket M0 crate with minimal code changes (most of the time went on getting uploads to flash working with cargo embed)

2024–W17 #

  • More or less "finished" Thymesheet, in that it's usable.
    • Ripped out diesel and replaced it with sqlx and I am much happier.
    • Did a reasonable refactor and also use DI to pass in a database.
  • Met up with three friends this week; a really nice time.
  • Set up the CCTV at Stevenage
  • Made OSM contributions!
    • One of which felt like a subversive act (moving City View)
  • Wrote an ActivityPub implementation which works well enough to DM myself with.
  • Disk usage dropped on ttw as turning off versions kicked in (it starts a 7 day countdown, I suppose to stop it being a footgun?)
  • Hobby machining with conductive materials.
  • Skinned Thymesheet with regular CSS. I think this is another case where people are scared to write CSS so they write ten times as much HTML? idk, I just don't get it.
  • Set up a local LLM server (ollama)
    • I don't feel guilty using this in the way I would paying for ChatGPT?
    • It's mostly a curiosity, but it is kind of compelling and surprisingly "lucid"

2024–W16 #

  • I waxed a pair of jeans with a hot air gun and a double boiler. I wasn't thrilled with the results but tried again using a crock-pot (for melting) and an iron with parchment paper (for setting) and it was miles better.
  • I made a weight?
    • It's basically a piece of steel with an M8 tapped into it and an eye hook but it was cool to tap a material that was so hard.
    • I had to expand the hole with the metal mill.
    • I painted it, but hated the paint job.
    • So I sandblasted it clean again.
      • It was a lot of work for one weight!?
  • Added markdown to thymesheet and learned a bit more about how to use Map<> in Rust.
  • Tapped a 1/4-20 hole into two different bases for lights that I have around my office.
    • One for a fill light Shopify provided.
    • One for a little mini-spot that's usually camera mounted.
    • Pleased with these little modifications.
  • Dyed the armchair cover black.
    • It came out purple.
      • Rit is not magic.
  • Wrote a Solarized GL shader and customized my colour setup, a little unproductively.
    • But I had fun!
  • Sandblasted some stuff.
    • Thinking that the space vs. usefulness trade-off of the sandblaster is not good.
  • Lunch with CL while I was in the city at coworking.
  • Back to some Tailwind and DaisyUI
    • I am not loving it.
    • For now I went back to just writing CSS. CSS is easier?!?
  • Got injected Config working in Rocket for Thymesheet.
    • It's kind of nice how you can do dependency injection, even if I initially complained about it
      • Update from the future: it continues to rock!
  • I reworked my desktop / office computer situation. Have a terrible Windows machine ("of last resort") and will work on simplifying what I do until it fits into a Linux-only world.
    • Reaper on Linux is a pretty great step in that direction. I have a few plugins set up there and it's actually nice not to have the overwhelming setup that I had on Windows.
    • No two ways: I am going to miss Fusion 360. If not for modelling, then for CAM. (But also for modelling).

2024–W15 #

  • Watched the eclipse!
  • Learned about Traefik and deployed it on merked and ruxton. I really like it so far. So much smaller config than nginx was.
  • Started working on Thymesheet from co-working.
  • Installed Navidrome and I like it, too. Gives me my own music with almost the convenience of streaming platforms.
  • I looked into ARIN registration. Seems like there's a "Catch 22" of needing to show you'll immediately need resources before you are allowed to have any?
  • Tried different Bittorrent clients because Transmission was semi-broken on pk but they all had their downsides. Just decided to not use Bittorrent for now as that side-path was a time-sink.
  • Bought (from KJP) and laminated (with glue?) some wood, for carving two-tone plaques.
    • Lamination turned out well!
  • Burned time on SQLite3 on Windows. Got there in the end. Second time I've done this?
  • Burned time on setting up Tempo and a local S3 server (Garage) -- decided to park this.
    • Maybe Pyroscope is more appropriate?
    • Maybe I should finish building a slow thing before I need distributed tracing for it.
  • Processed all of those twisted 2x4s for a chopping block.
  • Figured out MiniDisc uploading from Chrome via WebUSB!
  • Found an 11 million file leak in my Mastodon media: it was having multiple versions of files enabled.
  • Ported some of Dith to Rust. It was enjoyable.
    • Implemented traits on other people's types! A mind expanding moment.
    • Return a Box<dyn Error> which makes ? operator more useful for scrappy scripts.
    • I am starting to accept that I can't understand all of Rust all at once, and that's not necessary to be productive in it. I need to accept some of it is magic (although, arguably, less magic than Rails is).
  • I made enchiladas with my own recipe and they rocked.
    • I'll never be able to make them the same way again, probably.
  • I designed and CNC-cut molds for wax cylinders that knitting machines need.
    • Then I did the pour and had to cut the other side of the wood to free the wax.
      • But ultimately it worked really well! Even if it destroyed the mold in the process, I made nine.
  • I made firelighters with sawdust and beeswax.

2024–W14 #

I saw this freewheeling dev log and was inspired by that. Something like that, mixed with eightbitraptor's week notes seems like something I want: something to keep track of what I actually do in a week, with a bend towards creative things that might otherwise get forgotten.

(So I wrote a little CMS in Rust as an exercise. It took basically two weeks, on and off, but I've not written a non-trivial Rust app from scratch so most of that time was learning.)

I thought about what programming languages are aesthetically pleasing and actually pleasurable to write in. I read Devin's thoughts about uxn and framed as: a language I can potentially use for the rest of my career that I don't pick for outside pressures.

The language(s) that fit that, for me, are Python and Go. Despite this, I convinced myself to learn Rust. It just has so much potential to unify the types of programming I do. I could stop writing C if I can do Rust from microcontroller to monolith.

I am still strongly prefering Go to Rust, although I've not written much of either in a week. I went back to my Go version of Whap (note: an internal app I was working on porting to Rust) and felt literal relief at how simple it is. But I did get my embassy version of the LCD code written, I guess.

The CTF I went to with tahnok made me aware that Python is still my quick-and-dirty-prototype language. Will Go get to the point that I enjoy it or find it fast enough for that quick and dirty development? Will Rust?

Random Stuff:

  • Treated the steps and bench with linseed oil
  • Rearranged the garage
  • Thought a bit about canvas waxing
  • Renovated my Panavise