./src/index.ts
import { describe } from "./utils/getProfile";
import { stack } from "../db/facts";
const jason = { name: "Jason" } as const;
const profile = describe(jason);
console.log(profile.species); // "goblin"
console.log(profile.desc); // "neurodivergent anarchosocialist goblin"
console.log(stack); // ["svelte", "bun", "go", "python", "claude"]
./src/utils/getProfile.ts
import { roles } from "../../db/facts";
import type { Profile } from "../lib/types";
function isJason(name: string): name is "Jason" {
return name === "Jason";
}
export function describe(user: { name: "Jason" }): Profile<"goblin">;
export function describe(user: { name: string }): Profile<"human">;
export function describe(user: { name: string }): Profile {
if (isJason(user.name)) {
return {
name: user.name,
species: "goblin",
desc: "neurodivergent anarchosocialist goblin",
roles: roles.jason,
};
}
return {
name: user.name,
species: "human",
desc: ["pro", "fullstack", "dev"].join(" "),
roles: roles.default,
};
}
./src/lib/types.d.ts
type Species = "human" | "goblin";
type Adjective = "pro" | "fullstack" | "neurodivergent" | "anarchosocialist";
type Noun = "dev" | "goblin";
type Tag = `${Adjective} ${Noun}`;
interface Role {
readonly org: string;
readonly role: string;
readonly level?: string;
readonly from: string;
readonly to?: string;
}
interface Profile<S extends Species = "human"> {
readonly name: string;
readonly species: S;
readonly desc: S extends "goblin"
? "neurodivergent anarchosocialist goblin"
: string;
readonly roles: readonly Role[];
}
./db/facts.ts
export const stack = [
"svelte", "bun", "go", "python", "claude",
] as const satisfies readonly string[];
export const roles = {
default: [
{ org: "@techStartUp", role: "innovation engineer" },
],
jason: [
{ org: "@TandemCreativeDev", role: "developer", from: "2026-06" },
{ org: "@foundersandcoders", role: "apprentice dev", level: "mid/senior (shhh)", from: "2025", to: "2026-06" },
{ org: "@foundersandcoders", role: "L6 AI apprenticeship mentor", from: "2025", to: "2026-06" },
{ org: "@FAC-31", role: "facilitator", from: "2025-02", to: "2025-07" },
{ org: "@foundersandcoders", role: "dev", from: "2024-09", to: "2025" },
{ org: "@fac30", role: "grad", from: "2024-09", to: "2024-12" },
{ org: "@FAC29A", role: "grad", from: "2023-09", to: "2023-11" },
],
} as const;
On Fire Right Now
what's eating my evenings
| Name | Description | Links | |
|---|---|---|---|
| ๐๏ธ | Urheimat | lead a people across the ages, then watch future scholars try to reconstruct what you actually believed | site / repo |
| ๐ | CHIRPdb | ingest maritime incident reports & serve them as a structured API | docs / org |
| ๐งญ | Drift | a CLI that fingerprints every repo a portfolio claims, plus the SvelteKit site it keeps honest | site / repo |
| โ๏ธ | The Work | write a thesis in one night whilst staving off existential angst | site / repo |
| ๐น | Goblin Mode | three goblins in a trenchcoat pretending to be a senior developer: Claude Code config shaped by ADHD, friction & spite | repo |
| ๐บ๏ธ | Historia | watch Britain's kingdoms shift across an animated map from 300 to 1066 CE | site / repo |
Receipts
shipped, used by actual humans
| Name | Description | Team | Year | Links |
|---|---|---|---|---|
| Iris | turn messy learner CSVs into validated ILR submissions that the ESFA will actually accept | 2026 | repo | |
| Michelle Guy | a site for an acting coach who deserves better than a Squarespace template | 2026 | site / repo | |
| Schema Forge | read XSD files & validate, map & generate the XML they describe | 2026 | npm / repo | |
| FAC Internal Platform | the internal engine that keeps Founders and Coders running: API, apps & workers | @Jaz-spec, @izaakrogan & @sofer | 2026 | |
| Guardrails | strip the PII out of your prompts before they ever reach an LLM | Ahmed Shatat, @mohmmadAyesh & Erica Gasparini | 2026 | org |
| Workwise | turn static accessibility surveys into dynamic evolving conversations | @AlexVOiceover | 2025 | repo |
| Things We Do | track your mood & build a personal toolkit for getting through the day | @jackcasstlesjones, @maxitect & @gurtatiLND | 2024 | repo |
| Sakura | a colour palette app where you can ask for "dark reddish purple" & it knows what you mean | @jackcasstlesjones & @JoshCodedit | 2024 | server / client |
Unreplied Texts
the code exists; I walked away
| Name | Description | Links | |
|---|---|---|---|
| ๐ | Wyrd | a terminal productivity system on a flat-file property graph: tasks, notes, habits & budgets, all connected | repo |
| ๐๏ธ | Those Who Came Before | try to understand a vanished culture by interpreting procedurally generated artefacts | site / repo |
| ๐ฃ๏ธ | The Tongue | grow a proto-language, then watch it drift, spread & fracture into daughter tongues | site / repo |
| ๐ก๏ธ | Bronze Remembers | a turn-based tactics RPG with a legacy spine, built in Godot | repo |
| โณ | Grand Chronicle | taking someone who witnessed a historical event & see what else they lived through | site / repo |
| ๐ง | Cogni | map your cognitive style across 17 compasses & find the dev methodology that fits | repo |
| ๐ณ | Kitchen Gremlin | replace Paprika with something that does meal plans & shopping lists properly | repo |
| ๐ค | Rhea | an LLM-powered assistant for democratic/peer-led learning cohorts | repo |
| โ๏ธ | Flyt | duel a Norseman through ritual insult poetry & defend your honour in verse | site / repo |
| ๐ฎ | Sparker | track observations about SEN students over time & surface the patterns a facilitator might miss | repo |
| ๐งต | Beacons | turn freeform journaling into a graph you can actually navigate & act on | server / client |
Odd Socks
toys, experiments & things built for one person
| Name | Links | Team | Year |
|---|---|---|---|
| Quiz Night | repo | 2026 | |
| Reach | site / repo | 2026 | |
| Explainers | site / repo | 2026 | |
| Tallywhack | repo | 2026 | |
| The World I'd Build You | site / repo | 2026 | |
| Grumble | site / repo | 2026 | |
| Top Girls | site / repo | 2026 | |
| Code Arcana | repo | 2026 | |
| Rimewarden | repo | 2026 | |
| Baby Names | repo | 2026 | |
| Sith Maker | repo | 2026 | |
| Nihilistic Onboarder | repo | 2025 | |
| Hat Recommender | repo | 2025 | |
| Psyche | repo | @Jaz-spec | 2025 |
| Commons Traybake | repo | @Jaz-spec, @nchua3012 & @JosephPotashnik | 2025 |
| ReDoT | repo | @JosephPotashnik & @FortyTwoFortyTwo | 2025 |
| The Forgotten One | repo | 2025 | |
| Petulant God | repo | 2023 | |
| Melonhead | itch.io | 2022 | |
| Prisms | itch.io / repo | 2021 | |
| My Brothers, Counting | itch.io | 2020 |
How Does It Behave?
- I'm looking to collaborate on useless-yet-interesting linguistics utilities & neurodivergent revolutionary digital infrastructure
- I'm looking for help with basic life skills
- Also I started by bimbling about with ink stories
- I wroted a book: here it is
What Is It Doing?
Daily drivers: TypeScript, Svelte, Bun & Python. I also build the agent tooling that the AI works inside: skills, hooks, subagents & orchestration workflows for Claude Code (see Goblin Mode).
I'm currently seriously learning about...
- Go (Bubbletea & friends, via Wyrd)
- Godot & GDScript (via Bronze Remembers)
- pgvector & semantic search (via CHIRPdb)
I'm also dabbling with...
- Obsidian plugins
- Docker



