Unison file synchronization directly via the WSL bridge

Background For years and years now, I keep all of my work, including my checked-out source code, in some form of file synchronization system. The advantages of having all of your files always up to date on all of the comptuters you work on are considerable. More practically, I often get up from my work computer, and then continue on my laptop, or on my home computer, without having to think about it, and especially without having to abuse git commits purely to be able to transfer to another machine.

Modify md-roam for frontmatter-less operation

Background My notes database consists primarily of Emacs Org mode files, interspersed with a small number of markdown files, some of them from previous note-taking systems (for example, I went through a Gollum stage early in 2014, according to my notes then), and some of them for easier mobile consumption and production. I recently discovered nobiot’s md-roam Emacs package which makes it possible for these markdown files to show up (in sheep’s clothes, as it were) amongst all of my usual org-roam nodes.

Conservative rendering and liberal parsing of ISO 8601 timestamps in Python

You’ll see in Python bug 37962 that datetime.isoformat() and datetime.fromisoformat() use a restricted subset of the ISO 8601 timestamp formatting standards. This is similar to the subset followed by W3C. Recently, we ran into the specific issue that fromisoformat() rejects inputs where the timezone is specified as +hhmm instead of +hh:mm. Both are allowed by ISO 8601, but only the latter is part of the restricted subset. Following the Robustness principle (also known as Postel’s law) in the design of our APIs, we would prefer to

TypeScript development with Emacs, tree-sitter and LSP in 2022

In this post, I show how to setup Emacs for TypeScript and React (tsx) development, with tree-sitter for syntax highlighting and indentation, and LSP with the TypeScript compiler (including a plugin for faster eslint), via eglot, for code intelligence. Update on 2022-12-27: emacs 29 has tree-sitter built-in! Tree-sitter was merged into Emacs core on November 23 of 2022. The post below is for the situation BEFORE the merge. If you’re running Emacs 29 or later (as I am at the end of 2022), you should be using the built-in tree-sitter.

Connecting the Shelly 1 to an ET Systems gate motor for Apple HomeKit control

This post shows how you can connect a Shelly 1 unit to an ET Systems gate motor so that you can open your driveway gate via internet. In my case I opted to flash the Shelly 1 with the brilliant shelly-homekit firmware so that my whole family can control the gate via Apple’s HomeKit, but you could just as easily make use of the Google Assistant or the Home Assistant integrations.

Using Kubernetes for development containers

In this post I show how you can setup a Kubernetes pod for reproducible development purposes on a single-node Kubernetes cluster using Rancher Desktop on Linux or Docker Desktop for Windows. What are devcontainers? At my quasi-hypothetical workplace, we are fans of Visual Studio Code’s development containers idea, or devcontainers for short. In short, you add a specially crafted devcontainer.json file (and some docker yamls) to your repo, and the next time a new dev opens the project, they will be prompted by their VSCode whether they would like to have the whole development environment setup automatically.

Developer experience setting up a minimal API in Go, C# and Python

Imagine the following possibly hypothetical situation: You work in an organization or team that is heavily Python-focused, primarily due to operating in application domains where scientific computing is important. The Scientific Python ecosystem, of which machine learning is just one admittedly major theme, is brilliant for this. However, you would like to evaluate development stacks outside of the Python world for the implementation of small and higher-performance services, which don’t need SciPy, to augment your architecture.