Skip to content

Work

The platforms I architect and build for clients, and the record behind them: four GitHub organisations, counted from the log rather than described.

Client projects

Five platforms, each built for someone else: two data platforms and three products. Each card opens the live site.

data platform

TerraPulse

A platform for measured climate and earth-science data. It holds readings from public instruments, never models, forecasts or estimates. AI assistants can query the same records through a public, read-only connection. I am its architect.

PythonFastAPIPostgreSQL + PostGISParquetMCP

AlsoThe MCP serverResearch notes, here

terrapulse.info (another site, opens in a new tab)

data platform

Campaign Brain

Custom data tools for small and mid-size political campaigns. One shared platform replaces a tangle of vendors: voter files, outreach, analytics and workflows in one place, with quick custom dashboards on top. I architected it and build it.

PythonFastAPIDuckDBMCPcampaignbrain.dev (another site, opens in a new tab)

web app

tinychase

Small AI models on measured public data, running entirely in your browser. It reads the data straight from files on the server, and an experimental hurricane model runs on your own graphics card. I engineered it.

DuckDB-WASMWebGPUtinygradPWAtinychase.com (another site, opens in a new tab)

search platform

Nominate.AI

The political web, searchable. Websites, broadcast transcripts, county filings and scanned documents, gathered into one collection you can ask questions of. Every answer comes with its source document. Built on the SysForge platform and served from this machine.

PythonFastAPIOCRVector searchMCPnominate.ai (another site, opens in a new tab)

productproduction-ready

MyFinalWishes

A digital estate-planning platform, shipped through SysForge. I rebuilt it from an earlier prototype into a single application. Each person's identity data and stored files are encrypted with their own key. Live at mywishes.com as My Wishes.

TanStack StartReact 19SQLite + DrizzleAES-256-GCM

AlsoThe build, on the resume

mywishes.com (another site, opens in a new tab)

The record

Four GitHub organisations, January 2025 to now: 283 repositories and 43,491 commits. Each is counted from my first commit in it (how). Work before 2025 is on the resume.

Last 52 weeksto 26 Oct 2026
OrganisationReposCommitsPer weekLatest commit
Nominate-AI17734,077Nominate-AI, commits per week, 2025-10-28 to 2026-10-26: 34,077 in total, busiest week 2,470. Values, oldest first: 45, 23, 34, 38, 62, 88, 134, 232, 175, 130, 290, 268, 329, 470, 474, 387, 486, 451, 371, 432, 451, 394, 560, 483, 770, 572, 409, 599, 557, 940, 912, 715, 876, 1,013, 845, 611, 686, 960, 990, 686, 663, 1,235, 1,755, 2,470, 1,830, 1,014, 675, 1,973, 884, 1,395, 744, 491.26 Oct 2026
tinymachines884,663tinymachines, commits per week, 2025-10-28 to 2026-10-26: 4,663 in total, busiest week 652. Values, oldest first: 19, 69, 47, 114, 74, 27, 7, 24, 2, 3, 40, 5, 2, 8, 3, 34, 20, 23, 28, 31, 2, 1, 12, 4, 9, 9, 16, 127, 139, 135, 192, 23, 68, 74, 41, 33, 14, 7, 10, 14, 17, 101, 286, 247, 216, 181, 266, 226, 237, 270, 454, 652.26 Oct 2026
isenbek161,533isenbek, commits per week, 2025-10-14 to 2026-10-12: 1,533 in total, busiest week 201. Values, oldest first: 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 11, 26, 9, 1, 13, 29, 2, 8, 2, 22, 1, 6, 18, 16, 2, 8, 71, 6, 201, 78, 51, 12, 33, 120, 0, 126, 145, 112, 187, 43, 2, 0, 136, 31.10 Oct 2026
Sysforge-AI2299Sysforge-AI, commits per week, 2025-10-28 to 2026-10-26: 299 in total, busiest week 22. Values, oldest first: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 19, 22, 4, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 5, 6, 6, 7, 7, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 15, 9, 13, 7.26 Oct 2026

One line per organisation, each filling its own height: the shapes compare, the commit column carries the size.

Nominate-AI

A platform that finds and gathers information with AI: data pipelines, search and agents. This section names none of its repositories. Its list of services is on /mcp.

Activitysince 14 Apr 2025
Commits
35,514since 14 Apr 202520252,298202633,216
Last 52 weeks
34,077on 364 of 364 days
Repositories
177
Latest commit
26 Oct 2026
Commits by day and month, and languages
Commits per day, last 52 weeks

One cell is one UTC day, 2025-10-28 to 2026-10-2601 to 2425 to 5253 to 8586 to 143144 to 793commits

Commits per day, last 52 weeks, by month
MonthcommitsActive daysDays in window
2025-103044
2025-111673030
2025-126643131
2026-011,3193131
2026-021,8462828
2026-031,7943131
2026-042,4593030
2026-053,1283131
2026-063,6933030
2026-073,5843131
2026-086,3873131
2026-095,7823030
2026-103,2242626

The calendar opens at the newest week; scroll it sideways for the earlier ones.

Commits per month, Apr 2025 to Oct 2026
tallest 6,387 commits
Commits per month, Apr 2025 to Oct 2026
Bucketcommits
2025-04205
2025-05128
2025-06107
2025-0796
2025-08320
2025-09167
2025-10444
2025-11167
2025-12664
2026-011,319
2026-021,846
2026-031,794
2026-042,459
2026-053,128
2026-063,693
2026-073,584
2026-086,387
2026-095,782
2026-10 (this month so far)3,224
Languages
10one per repository, as GitHub records it; 6 of 177 have none
Repositories by primary language
Python116 repos
TypeScript30 repos
Shell7 repos
HTML6 repos
Rust3 repos
Other (5)9 repos

nominate-ai-timeline.json, generated 2026-10-26 09:10 UTC. Commits by UTC day, 2025-04-14 to 2026-10-26.

tinymachines

The garage lab, where hardware meets AI: wireless sensor networks, software radio, true random numbers from radioactive decay, and aircraft-tracking receivers. Since August 2026 the chip work lives here too: transistor-by-transistor simulations of the MOS 6502 and the chips of the NES, published at tinymachines.ai. The instruments on this site (Hotbits, Dragonfli) are built from code in this organisation.

Activitysince 11 Mar 2025
Commits
6,128since 11 Mar 202520251,85020264,278
Last 52 weeks
4,663on 286 of 364 days
Repositories
88
Latest commit
26 Oct 2026
Commits by day and month, and languages
Commits per day, last 52 weeks

One cell is one UTC day, 2025-10-28 to 2026-10-2601 to 23 to 56 to 1112 to 2526 to 149commits

Commits per day, last 52 weeks, by month
MonthcommitsActive daysDays in window
2025-101144
2025-113102830
2025-12641831
2026-01481031
2026-02651328
2026-03851931
2026-04421630
2026-055413131
2026-062722930
2026-07663131
2026-086573131
2026-099773030
2026-101,5252626

The calendar opens at the newest week; scroll it sideways for the earlier ones.

Commits per month, Mar 2025 to Oct 2026
tallest 1,525 commits
Commits per month, Mar 2025 to Oct 2026
Bucketcommits
2025-0342
2025-04162
2025-0532
2025-06104
2025-07351
2025-08342
2025-09188
2025-10255
2025-11310
2025-1264
2026-0148
2026-0265
2026-0385
2026-0442
2026-05541
2026-06272
2026-0766
2026-08657
2026-09977
2026-10 (this month so far)1,525
Languages
9one per repository, as GitHub records it; 9 of 88 have none
Repositories by primary language
Python33 repos
TypeScript13 repos
C8 repos
HTML7 repos
Rust7 repos
Other (4)11 repos
Most recently active12 of 88, newest commit first
  • hotbits

    TypeScript44 commits

    14 Oct 2026 to 26 Oct 2026

  • public

    TypeScript1,115 commits

    22 Aug 2026 to 25 Oct 2026

  • nes-bench

    Python325 commits

    7 Sep 2026 to 25 Oct 2026

More repositories (9)
  • nes

    Rust98 commits

    5 Sep 2026 to 21 Oct 2026

  • 6502

    JavaScript409 commits

    12 Aug 2026 to 20 Oct 2026

  • 2c02

    Rust40 commits

    2 Sep 2026 to 27 Sep 2026

  • ntsc-crt

    Rust37 commits

    2 Sep 2026 to 27 Sep 2026

  • 2a03

    Rust34 commits

    3 Sep 2026 to 27 Sep 2026

  • nes-bus

    Rust13 commits

    2 Sep 2026 to 27 Sep 2026

  • halfphi

    Rust19 commits

    17 Aug 2026 to 4 Sep 2026

  • vectl

    C++18 commits

    29 Mar 2025 to 26 May 2026

  • esp32

    Python50 commits

    10 Feb 2026 to 18 Feb 2026

Each bar runs from a repository's first commit to its last, on a line from 11 Mar 2025 to 26 Oct 2026. Not shown: 18 older public repositories, all on github.com/tinymachines, and 58 that are counted and not named: private repositories, a fork of ripgrep and one imported project. Descriptions are each repository's own, from GitHub.

tinymachines-timeline.json, generated 2026-10-26 09:13 UTC. Commits by UTC day, 2025-03-11 to 2026-10-26.

isenbek

The solo namespace. This site lives here (its source, the pipelines that write its data and the script that ships it), and so does House Calls.

Activitysince 15 Jan 2025
Commits
1,550since 15 Jan 202520252020261,530
Last 52 weeks
1,533on 102 of 364 days
Repositories
16
Latest commit
10 Oct 2026
Commits by day and month, and languages
Commits per day, last 52 weeks

One cell is one UTC day, 2025-10-14 to 2026-10-1201 to 23 to 45 to 1112 to 2728 to 125commits

Commits per day, last 52 weeks, by month
MonthcommitsActive daysDays in window
2025-103218
2025-110030
2025-120031
2026-010031
2026-0239728
2026-03521231
2026-0434830
2026-0543731
2026-063221630
2026-072491931
2026-083921531
2026-09232830
2026-10167812

The calendar opens at the newest week; scroll it sideways for the earlier ones.

Commits per month, Jan 2025 to Oct 2026
tallest 392 commits
Commits per month, Jan 2025 to Oct 2026
Bucketcommits
2025-011
2025-020
2025-030
2025-040
2025-050
2025-060
2025-070
2025-0811
2025-095
2025-103
2025-110
2025-120
2026-010
2026-0239
2026-0352
2026-0434
2026-0543
2026-06322
2026-07249
2026-08392
2026-09232
2026-10167
Languages
5one per repository, as GitHub records it; 8 of 16 have none
Repositories by primary language
TypeScript3 repos
Python2 repos
CSS1 repo
Rust1 repo
C1 repo
Most recently active4 of 16, newest commit first
  • bradley.io

    TypeScript1,381 commits

    13 Aug 2025 to 10 Oct 2026

  • housecalls

    no language14 commits

    8 Sep 2026 to 2 Oct 2026

  • housecalls-harness

    The House Calls local backend: one Rust engine (DuckDB store, seed-phrase crypto, zero-knowledge stash) for the free trades tools at housecalls.bradley.io

    Rust4 commits

    7 Sep 2026

More repositories (1)

Each bar runs from a repository's first commit to its last, on a line from 15 Jan 2025 to 12 Oct 2026. Not shown: 12 that are counted and not named: forks I kept of other people's projects, and a few small repositories that are not mine to list. Descriptions are each repository's own, from GitHub.

isenbek-timeline.json, generated 2026-10-12 09:15 UTC. Commits by UTC day, 2025-01-15 to 2026-10-12.

Sysforge-AI

SysForge.ai is the consulting firm I founded in 2024 (it is the first line of the resume). Its organisation holds one private repository, the firm's own site. The hand-written work there was February 2026; since March every commit is an automated nightly catalog refresh, which is the even row the calendar shows.

Activitysince 15 Feb 2026
Commits
299since 15 Feb 2026
Days with a commit
238of 254 days since the first
Repositories
2
Latest commit
26 Oct 2026
Commits by day, and languages
Commits per day, since 15 Feb 2026

One cell is one UTC day, 2026-02-15 to 2026-10-26012 to 12commits

Commits per day, since 15 Feb 2026, by month
MonthcommitsActive daysDays in window
2026-02531014
2026-03282831
2026-04303030
2026-05303031
2026-06262630
2026-07292931
2026-08313131
2026-09303030
2026-10422426

The calendar opens at the newest week; scroll it sideways for the earlier ones.

Languages
2one per repository, as GitHub records it
Repositories by primary language
TypeScript1 repo
HTML1 repo

sysforge-ai-timeline.json, generated 2026-10-26 09:13 UTC. Commits by UTC day, 2026-02-15 to 2026-10-26.

How this is counted

A pipeline reads every repository in the four organisations through the GitHub API and counts every commit in every log. It does not look at who wrote them, and that matters in three ways.

Read more
  • Forks and imports. A fork arrives with its whole history: tinymachines holds a fork of ripgrep whose log starts in 2016, and isenbek holds forks that go back to 2014. So each organisation here starts at the first commit under my name: 15 Jan 2025 for isenbek, 11 Mar 2025 for tinymachines, 14 Apr 2025 for Nominate-AI and 15 Feb 2026 for Sysforge-AI. The 8,714 commits dated before those are in no number or chart on this page.
  • Scripts. A commit made by a script counts the same as one made by hand. This site's deploy script writes a version bump and a build stamp every time it ships, and those are more than half of its log, and Sysforge-AI's nightly refresh is the other case.
  • Other authors. Inside the period the logs still hold commits under other names: fork and import history dated after my first commit, and other authors. The published data has no author field, so the charts cannot take them out. The panel below is the one time it was measured.

Repositories are named only where they are public, not forks, and mine. Private ones are counted and not named. Days are UTC days.

Author checkall four, 2 Oct 2026
In the four logs that day47,394
before each start, left out8,714
in the period, counted38,680
under my name33,881
under Claude's name845
under other names3,954

Counted once, by author name, from the pipeline's cache, and it does not update: the files on this page were generated 26 Oct 2026 and hold 52,205 commits.

public/data/*-timeline.json: four files, newest generated 2026-10-26 09:13 UTC. Author check: pipeline cache, 2026-10-02.

Anti-cloud. Host local, think global.

Terminal
/terminal