Hi, I'm ; here are a few projects I am / have been working on, and notes from the hours that went into them.

* Still being put together. Older notes are stitched from commit messages for now.

01Pinnedfeb 2025 — present

Docket

Your computer is organised around applications. Your work isn't. Docket reorganises your interface around activities you define yourself: the meaningful units of work you return to over days and weeks. Each carries a flexible time goal, and a lightweight daily plan draws from them, so the day's short-term decisions advance your longer-term intentions. Ad hoc tasks can begin straight away and be named, or formalised as an activity, later. Time and activity logs are captured within each activity, building a continuous record of how your work unfolded, one you can revisit to plan, reflect, and adjust.

I'm currently redesigning the tool around agents, which offer many exciting opportunities to relieve users of the context switching and overload that typically come with computer work. This site will soon be rendered straight from its data, so what you see here will be a live view of the work.

Open →
source ↗design file ↗
Recent sessionslast, 2 days ago
  1. 20 sep2h 40m

    Sketched the agent loop for drafting a daily plan from open activities. Had a hard time determining how much it should propose versus ask. I settled on suggesting two or three activities with rough durations and letting the user confirm or reshuffle before the day starts.

  2. 19 sep1h 55m

    First session back in over two weeks. I moved session storage to a single event log, so activities, switches and captures now share one timeline. Ad hoc sessions are just events without an activity ID, which made naming them after the fact almost trivial.

  3. 03 sep3h 10m

    Rebuilt the menu bar switcher and made capture pause automatically when idle. That should close the gaps I kept finding in my own records whenever I forgot to switch to Away. Ironically, I forgot twice today.

all 7 sessions →
switching between activities
03apr 2026
03

Literature semantic search

02nov 2025 — jan 2026
02

Protein pipeline

A distributed protein analysis system spread over a small cluster: one controller and four workers, provisioned with Terraform and configured with Ansible. Analysis is dispatched as Celery tasks over RabbitMQ, while Redis holds the state of each run so progress and failures can be watched while the work is still going. Every worker queries its own local copy of the proteome, and a finished run writes out aggregated CSVs of best hits, per-protein statistics and failures. A Streamlit interface sits on top for submitting runs, following them and downloading results, with Prometheus watching the machines underneath.

Most of the work went into failure handling: one protein that dies shouldn't take the run down with it. Results are idempotent, so a run can be resubmitted and will only redo what is actually missing.

Open →
source ↗
From the commit loglast, jan 2026
  1. 26 jangit

    Added a role for swapping in a custom FASTA and reverting it, kept a snapshot of the default proteome, and made analysis idempotent so completed results survive a re-run.

  2. 25 jangit

    Reworked the orchestration around Celery chords, per-run state and a controller finalisation step, so soft and hard failures no longer break a run's completion.

  3. 23 jangit

    Added Redis for run state, refactored the orchestrator into a runctl command, and set it up to run as a service.

all 35 commits →