Caleb Owens' Website

Font size

Last updated

Projects

A list of stuff I’ve worked on. Often they’re not particularly useful or really production ready, but I enjoy solving small quality of life problems.

Patc

Status: Useful

Patc is a little CLI tool for cloning and applying patches to a given git repository.

The reason I built this was to manage the suckless tools that I use in debian. Namely dwm and st. These tools are typically configured by applying .patch files on top of their git repository which make code changes to the project.

Often people will fork and commit these changes, but I’m quite fond of using a monorepo, so I built patc to clone and apply patches stored in a given configuration. patc also has tooling for generating patches from code changes you’ve made.

Empower learn

Status: Work in progress

This is a mathematics learning application that I’m working on. I’m building it as an ionic react application with redux toolkit, with a rails backend.

Aptfile

Status: Useful, but without guardrails

This is a little tool that functions similar to Brewfiles which I use to manage the packages installed in my debian laptop.

It’s a bit more primitive. Currently the Aptfile itself is just a long list of packages, but I would like to expand it to support meta-packages.

Project Cloner 2

Status: Useful

This is a little rust program which I use to clone external projects into my monorepo’s projects folder.

It reads from a cloned.json which it iterates over, cloning and adding the projects to the .gitignore.

I find this works nicely because I can expect that both my machines will have the same projects cloned, but I don’t have to deal with submodules or subtrees.

Deploy deploy

Status: Useful & in need of a better name

I like to deploy my projects on a miniPC as docker compose services. This way my deployed services can have their own databases or whatever other dependencies they may need.

I am aware of tools like portainer, but I do like the simplicity of having my own deploy scripts that I understand fully.

deploydeploy aims to simplify the management of docker compose by having a folder that contains many sub-folders which represent services. Each service is defined by a compose.yaml, optionally a config.json which lets you define other artifacts relevant to building the project, and any other misc files.

It currently has just up, down, and status sub-commands.

I wrote this with the bun ECMAScript runtime making use of the shell API which was inspired by Google’s zx project. It was a good devex, though, I would want .quiet() to be applied by default. My configset for installing deploydeploy uses bun’s standalone executable tooling which worked well out of the box.

Puzzle Planner

Status: Work in progress

Puzzle Planner is a private leaderboard project written in rails. The main functionality is in place, but just lacks some scoring mechanisms.

The idea is to create a leaderboard for friends and family which lets you manually enter your start and finish times - allowing competition to be asynchronous.

Website 4

Status: Useful

My website is often a bit of an experimentation ground that I like to play around with. I was previously using Angular to get a feel for the framework. I really liked Angular, but I wanted to move to something that let me use MDX, and Astro looked nice with its component setup and idea of “islands of interactivity”.

Previous versions can be found here and here.

And much more!

I never want to lose code, so I always commit my stuff to my monorepo which you can check out.

You can also check out my slightly crazy set of makefiles that I use to sync my computer’s configurations.