Inklings: a tumblelog

How Jane Street Does Code Review

Apparently they have their own code review tool called iron (that repo is now empty) that comes from a very different set of basic principles from those the various forges use for their code review tools.

spr: stacked pull requests on Github

Easily manage stacks of pull requests on GitHub. git spr is a client side tool that achieves a simple streamlined stacked diff workflow using github pull requests and branches. git spr manages your pull request stacks for you, so you don’t have to.

With git spr each commit becomes a pull request, and each branch becomes a stack of pull requests. This allows for multiple commits to be stacked on top of each other in a single branch, avoiding the overhead of starting a new branch for every new change or feature. Small changes and pull requests are easy and fast to achieve. One doesn’t have to worry about stacked branches on top of each other and managing complicated pull request stacks. The end result is a more streamlined faster software development cycle.

This is maybe just a little bit too much like the way Gerrit works for my personal taste, but it’s at least an interesting tool.

Mergiraf

Mergiraf can solve a wide range of Git merge conflicts. That’s because it’s aware of the trees in your files! Thanks to its understanding of your language, it can often reconcile the needs of both sides.

You can teach Mergiraf a new language in a completely declarative way. It’s a nonviolent animal, so it prefers that over imperatives.

Where I think this would be useful is for some issues we hit at $DAYJOB merging configuration files, JSON in particular.

Web Components

Web Components is a suite of different technologies allowing you to create reusable custom elements — with their functionality encapsulated away from the rest of your code — and utilize them in your web apps.

Architectural Decision Record

Also see Documenting Architecture Decisions from a few days back.

Perses

It looks to be a less sucky alternative to Grafana.

From Linux to NetBSD, with SSH only

"Sealed Secrets" for Kubernetes

A Kubernetes controller and tool for one-way encrypted Secrets.

I have to take a look into how it works on the backend, but it at least looks promising as an alternative to using Vault and the likes.

Tenebra

Tenebra is an atmospheric puzzle game with rogue-like aesthetics. Guide the hapless protagonist to the exit. Poor guy is afraid of darkness and refuses to walk in the dark areas.

This is great wee game. I have the Spectrum copy on my TheSpectrum, and it’s available for quite a few platforms. It’s an ideal candidate for something like the Jupiter Ace too, but there’s no version for it.

Gaeltacht Ghaibhnigh Arís

“Reforging of the Gaeltacht”

The power of keeping a coding journal

Also, see jrnl. I think I’ve given it goes before, but I don’t think I’ve ever used it in anger.

Clock-Signal

A latency-hating emulator of: the Acorn Electron, BBC Micro and Archimedes, Amstrad CPC, Apple II/II+/IIe and early Macintosh, Atari 2600 and ST, ColecoVision, Enterprise 64/128, Commodore Vic-20 and Amiga, MSX 1/2, Oric 1/Atmos, early PC compatibles, Sega Master System, Sinclair ZX80/81 and ZX Spectrum.

It’s installable on Ubuntu as a snap. You need to get the ROMs however. I managed to get working for the Oric previously.

Manic Miner on ORIC

jAsm

[A] 6502, 65C02, 65CE02, 45GS02 and Z80 assembler. […] It is heavily geared towards C64 development, since that’s what it’s intended to be used for.

TIL: Restarting systemd services on sustained CPU abuse

Something like this would’ve been useful when we started seeing fluentd being misbehaving at $DAYJOB a while back.

I see, I can draw!

A brief reflection on learning drawing skills as an adult.

libgodc: Write Go Programs for Sega Dreamcast

Pretty cool, and the documentation looks really extensive. I can’t see myself using it ever, but it’s cool nonetheless.

Sequoia PGP

A modern PGP implementation that attempts to avoid the flaws of GnuPG, such as the lack of a proper underlying library (gpgme is just a CLI wrapper) and the poor UX.

While PGP in general has a lot of flaws, this looks like a promising alternative where there’s a necessity to use a PGP implementation.

Ruffle

A modern, open source Flash player written in Rust.

bomctl

bomctl is format-agnostic Software Bill of Materials (SBOM) tooling, which is intended to bridge the gap between SBOM generation and SBOM analysis tools. It focuses on supporting more complex SBOM operations on multiple SBOM files that represent systems by being opinionated on only supporting the NTIA minimum fields or other fields supported by protobom.

Saphyr

A YAML parsing library for Rust.

Etymological Dictionary Of Proto Celtic

Documenting Architecture Decisions

SecretSpec

Current secret management forces applications to answer three questions at once:

  • WHAT - Which secrets does the application need? (DATABASE_URL, API_KEY)
  • HOW - What are the requirements? (required vs optional, defaults, validation, environment)
  • WHERE - Where are these secrets stored? (environment variables, Vault, AWS Secrets Manager)

This coupling creates vendor lock-in, runtime failures, poor developer experience, and inconsistent practices.

SecretSpec solves this by separating secret declaration from secret provisioning. Your application declares what secrets it needs in secretspec.toml, but the actual secret values are retrieved at runtime from your chosen provider - never stored in configuration files.

Tutorial: How to Write a 1-Bit Music Routine

How to write beeper music, essentially.

Indexed Reverse Polish Notation, an Alternative to AST

Speeding up Terraform caching with OverlayFS

A speed up would be nice, but what I’m really looking for is making it safer to run terraform init in parallel for multiple projects.

Copier

Essentially a better cookiecutter.

pkgdiff

Package Changes Analyzer (pkgdiff) — a tool for visualizing changes in Linux software packages (RPM, DEB, TAR.GZ, etc).

Diffoscope

diffoscope tries to get to the bottom of what makes files or directories different. It will recursively unpack archives of many kinds and transform various binary formats into more human-readable form to compare them. It can compare two tarballs, ISO images, or PDF just as easily.

libyear

A simple measure of software dependency freshness. It is a single number telling you how up-to-date your dependencies are.

sbomdiff

This tool compares two Software Bill of Materials (SBOMs) and reports the differences.

Might solve a problem for me. Builds on lib4sbom, which I might just use directly.

Landlock-ing Linux

It’s a mechanism similar in intent to OpenBSD’s unveil(2) and pledge(2) to allow processes to opt out of access to things they don’t need, sandboxing themselves automatically without the need for the likes of SELinux.

Here’s the actual project website: landlock.io

Creating minimal Docker images from dynamically linked ELF binaries

I was wondering if ldd would be enough to deal with containerising some dynamically linked binaries, and apparently it almost is.

Pinta

Sometimes, all you need is Paint, and this is basically Paint.

Stacked Git

Stacked Git, StGit for short, is an application for managing Git commits as a stack of patches.

With a patch stack workflow, multiple patches can be developed concurrently and efficiently, with each patch focused on a single concern, resulting in both a clean Git commit history and improved productivity.

Omar S and Desire: Hard Times

Ink tutorial

Ink is a language for defining simple hypertext-based interactive fiction systems.

It doesn’t have the flexibility of the likes of Inform, but the choose your own adventure format is surprisingly flexible, and it has built-in flags and counters that help, along with a bunch of other tools for defining narratives.

RFC 6920: Naming Things with Hashes

Potentially a useful alternative to tag URIs and uuid URNs for something I’m looking do implement.

I found this by accident when looking for an alternative to this internet draft that attempted to defined a hash urn namespace. Unfortunately, that seemed to go nowhere, but this ni: URI namespace looks promising. I read some objections to it that objected to the use of ; (which is is generally used to introduce fragments at the end of a path), but this isn’t something to be parsed, only validated at most. It’s only if you’re actually trying to resolve a URN (in which case you should be able to recognise the pattern) that you need to detect that kind of thing.

Anyhoo…

"Notes on Nationalism" by George Orwell

Feels unfortunately timely.