{
  "meta": {
    "name": "David Williams",
    "title": "Tech Lead / Principal Engineer",
    "focus": "Distributed Systems & Applied AI",
    "location": "Bath, UK · BA2 0PS",
    "availability": "Available — comfortable across European working hours",
    "yearsExperience": 30,
    "agenticSince": "Late 2024",
    "hero": {
      "currently": "Applied AI · Founder Engagements",
      "mostRecent": "First Databank · 2020–2025",
      "location": "Bath, UK",
      "stack": "C# · TS · Elixir · Python· Go"
    },
    "description": "30 years of production software engineering. Two AI coding agent runtimes from scratch. Live products with real users.",
    "canonicalUrl": "https://me.davewil.dev/"
  },
  "contact": {
    "email": {
      "value": "davewil1973@gmail.com",
      "visibility": "public"
    }
  },
  "summary": "30 years of production software engineering, the last 15 inside teams navigating architectural inflection points where the platform had to keep running while it was being replaced. Since late 2024 — in parallel with platform work at First Databank, then full-time after — I've been building agentic systems hands-on, including two AI coding agent runtimes from scratch in Python and Go.",
  "links": [
    {
      "label": "Hexis Golf",
      "href": "https://golf.davewil.dev",
      "note": "AI-driven feel-based golf practice planning"
    },
    {
      "label": "Slackex",
      "href": "https://chat.davewil.dev",
      "note": "Elixir/Phoenix team chat"
    },
    {
      "label": "Email",
      "href": "mailto:davewil1973@gmail.com",
      "note": "davewil1973@gmail.com"
    }
  ],
  "roles": [
    {
      "id": "applied-ai",
      "org": "Personal Builds & Advisory",
      "role": "Applied AI — Agentic Systems",
      "from": "Nov 2024",
      "to": "Present",
      "tags": [
        "Python",
        "Go",
        "Elixir",
        "Phoenix",
        "LLMs",
        "Agents",
        "TUI",
        "Bubble Tea",
        "LiteLLM",
        "Anthropic",
        "Claude Code",
        "Homelab",
        "Proxmox",
        "Docker",
        "Tailscale"
      ],
      "headline": "Two AI coding agent runtimes from scratch, plus shipped products with real users.",
      "bullets": [
        "chapgent (Python) — TUI-based coding agent. 26 built-in tools (filesystem, git, search, shell, testing, web, scaffolding), multi-provider LLM support via LiteLLM (16 providers), session management with persistence, parallel tool execution, LRU result caching with TTL, permission system with risk classification, project context detection.",
        "claudego (Go, Bubble Tea TUI) — streaming Anthropic client with goroutine-based agent loop, channel-mediated permission requests, context cancellation propagation through the tool layer. Same problem in two languages with different concurrency models, deliberately, to think through runtime trade-offs first-hand.",
        "Hexis Golf — AI-driven feel-based golf practice planning. Live with trial users, PGA professional contacts engaged.",
        "Slackex — Slack-style team chat in Elixir / Phoenix on my own infrastructure. Working artefact and stress-test of agentic workflows on a non-trivial codebase.",
        "grocery_planner — Phoenix / Elixir + Ash framework, Python OCR service for receipt processing; JSON:API across inventory, recipes, meal planning, shopping, notifications, analytics.",
        "kuma_san_kanji — Phoenix / Elixir kanji learning application; the originating project of this journey.",
        "Pocket Pro / Fleetwood — currently engaged on a voice-driven AI golf coaching product; working through founder brief and product discovery.",
        "Homelab: Proxmox cluster running Debian LXC, Docker, Caddy reverse proxy, Cloudflare DNS, Tailscale, Pi-hole. Claude Code as primary development environment throughout."
      ],
      "visibility": "public"
    },
    {
      "id": "fdb-pharaoh",
      "org": "First Databank",
      "role": "Building Pharaoh",
      "from": "2020",
      "to": "2025",
      "tags": [
        "C#",
        ".NET",
        "React",
        "SPA",
        "Event-Driven",
        "Azure",
        "DDD",
        "Trunk-Based Dev",
        "BDD",
        "TDD",
        "Feature Toggles",
        "Healthcare",
        "Regulated"
      ],
      "headline": "Replaced a Silverlight + .NET platform in flight, without freezing delivery, in a clinical-safety regulated environment.",
      "bullets": [
        "Sphinx was a Silverlight-fronted .NET middleware platform with regulatory and clinical-safety obligations and a lot of tribal knowledge concentrated in a few long-tenured heads. Silverlight was reaching end-of-support — the platform had to move regardless.",
        "We took the move as acceleration, not a freeze: Pharaoh was the replacement we built alongside Sphinx, prioritised by features most valuable to the business, with continuous delivery throughout.",
        "Event-driven messaging in place of point-to-point calls; React SPAs alongside the Silverlight UI until decommissioning; mature monitoring and alerting from day one; trunk-based delivery with BDD/TDD; pair and ensemble programming as default; feature toggles end to end.",
        "Response times, infrastructure footprint and platform stability all materially improved on the Pharaoh side. Production alerts and time-to-fix dropped through better observability and event-driven boundaries.",
        "Held strong views and argued for them — the ones that landed did so because the team genuinely owned them by the time they went live."
      ],
      "visibility": "public"
    },
    {
      "id": "fdb-analyserx",
      "org": "First Databank",
      "role": "AnalyseRx Rules Engine",
      "from": "2020",
      "to": "2025",
      "tags": [
        "C#",
        ".NET",
        "Rules Engine",
        "Azure",
        "PaaS",
        "DDD",
        "Bounded Contexts",
        "GitHub Actions",
        "TeamCity",
        "Octopus",
        "Healthcare"
      ],
      "headline": "2M+ patient records processed daily through an extended rules engine, against the reliability bar healthcare imposes.",
      "bullets": [
        "Argued for and shaped the PaaS cloud architecture along DDD lines with explicit bounded contexts.",
        "The team released major product extensions: new rule types, patient trend monitoring.",
        "Established the CI/CD pipeline (GitHub Actions, TeamCity, Octopus) that let us release confidently into a regulated environment."
      ],
      "visibility": "public"
    },
    {
      "id": "fdb-pop-analytics",
      "org": "First Databank",
      "role": "Population Analytics Platform",
      "from": "2020",
      "to": "2025",
      "tags": [
        "React",
        "Azure Functions",
        "Service Bus",
        "CosmosDB",
        "BDD",
        "TDD",
        "Power BI",
        "Tableau",
        "Multi-tenant"
      ],
      "headline": "Greenfield clinical-analytics platform for NHS Clinical Commissioning Groups.",
      "bullets": [
        "React + Azure Functions + Service Bus + CosmosDB.",
        "Multi-CCG deployment model — each commissioning group as a logical tenant on shared infrastructure.",
        "Pushed for BDD/TDD instilled from day one; team delivered clinical-intervention analytics into Power BI and Tableau with that discipline carried through the lifecycle."
      ],
      "visibility": "public"
    },
    {
      "id": "kantar",
      "org": "Kantar Worldpanel",
      "role": "Grocery Market Share Modernisation",
      "from": "2016",
      "to": "2020",
      "tags": [
        "C",
        "Oracle",
        "COBOL",
        "Azure",
        "Serverless",
        "Azure Functions",
        "Logic Apps",
        "Data Factory",
        "Databricks",
        "Event Hubs",
        "SQL DW",
        ".NET",
        "SOLID",
        "TDD"
      ],
      "headline": "Legacy C / Oracle / COBOL stack carrying a 5-year rolling dataset across 40,000+ panelists, modernised to Azure serverless.",
      "bullets": [
        "SQL Data Warehouse optimisation — ~60% query time reduction.",
        "Azure Data Factory pipelines for the Oracle-to-Azure migration.",
        "Reverse-engineering proprietary file formats to preserve data continuity.",
        "Business-rule engine API in C# wrapping InRule for mobile shopping data.",
        "Azure Functions + Logic Apps orchestrating the data plane.",
        "Python packages on Databricks for Event Hubs processing.",
        "Per-PR environment provisioning in Azure DevOps.",
        "The work was the team's; the practices that made it stick (Azure, .NET, SOLID, TDD) came in part from sustained mentorship and the introduction of better engineering norms."
      ],
      "visibility": "public"
    },
    {
      "id": "bbc-2012",
      "org": "BBC Future Media",
      "role": "Software Developer / Tech Lead",
      "from": "Oct 2012",
      "to": "Mar 2015",
      "tags": [
        "Azure IaaS",
        "PowerShell",
        "IaC",
        "ASP.NET MVC 4 Web API",
        "WCF",
        "SpecFlow",
        "BDD",
        "i18n"
      ],
      "headline": "Led migration of user-generated-content services from physical hardware to Azure IaaS.",
      "bullets": [
        "PowerShell-driven IaC for VM provisioning.",
        "ASP.NET MVC 4 Web API replacement for core social-media services.",
        "WCF REST services for comments, reviews, moderation across BBC platforms.",
        "Internationalisation for World Service multi-language commenting.",
        "Introduced BDD with SpecFlow across the team; integrated CI with Java and PHP platforms across BBC ecosystem.",
        "Stepped back from engineering management deliberately — preferring to manage process and delivery over career goals."
      ],
      "visibility": "public"
    },
    {
      "id": "bbc-2012-em",
      "org": "BBC Future Media",
      "role": "Engineering Manager (contract)",
      "from": "Jan 2012",
      "to": "Jul 2012",
      "tags": [
        "Leadership",
        "Agile",
        ".NET",
        "Java",
        "PHP",
        "Ruby"
      ],
      "headline": "First contractor Engineering Manager in Audience Facing Services. 17-person multi-language team.",
      "bullets": [
        "Cut in-flight project count by 50% to make delivery predictable.",
        "Established Agile health checks and Definition of Ready/Done across the group.",
        "Delivered a live-blogging product on top of the existing stack."
      ],
      "visibility": "public"
    },
    {
      "id": "itv",
      "org": "ITV Technology",
      "role": "Development Manager / Test Manager",
      "from": "Mar 2011",
      "to": "Dec 2011",
      "tags": [
        "Leadership",
        "VOD",
        "Trunk-Based Delivery",
        "SOLID",
        "TDD",
        "CI"
      ],
      "headline": "Ran the VOD content pipeline (excluding transcoding) feeding ITV.com and ITV Player.",
      "bullets": [
        "Absorbed Test Manager responsibility when the role went vacant rather than wait for a backfill — 10-person agile team across delivery and quality.",
        "\"Always releasable\" trunk-based delivery; SOLID/TDD/CI as house style.",
        "Established developer career paths; ran a 100+ person hack day across 12 teams."
      ],
      "visibility": "public"
    },
    {
      "id": "bbc-2004",
      "org": "BBC Future Media",
      "role": "Senior Software Developer / Tech Lead",
      "from": "Sep 2004",
      "to": "Mar 2011",
      "tags": [
        "WCF",
        "REST",
        "XML",
        "JSON",
        "RSS",
        "Atom",
        "JavaScript",
        "Flash",
        "Java",
        "PHP",
        "Scrum",
        "TDD",
        "CI"
      ],
      "headline": "Technical lead for user-generated-content services across the BBC — at BBC scale.",
      "bullets": [
        "WCF REST services in multiple formats (XML, JSON, RSS, Atom), integrated with iPlayer and clients across JavaScript, Flash, Java and PHP.",
        "Line-managed an 8-person team with focus on TDD, continuous integration, code quality.",
        "Established Scrum processes; led release planning across multiple stakeholder teams."
      ],
      "visibility": "public"
    }
  ],
  "earlier": [
    {
      "org": "Reed Business / FlightGlobal",
      "year": "2016",
      "note": "Aviation analytics; C# / Web API / AngularJS / Amazon Redshift."
    },
    {
      "org": "Neilson Financial Services",
      "year": "2015–2016",
      "note": "CRM modernisation; ASP.NET MVC 5, Web API, SignalR, EF6. Introduced Octopus / TeamCity continuous delivery and Selenium browser automation."
    },
    {
      "org": "SPSS Ltd",
      "year": "1999–2004",
      "note": "C++ / COM components for multimedia survey software; ASP.NET CATI applications."
    },
    {
      "org": "MCT Europe",
      "year": "1997–1999",
      "note": "Modernised legacy Unix / AS400 advertising applications to Windows C++ / COM."
    },
    {
      "org": "SN Systems",
      "year": "1995–1997",
      "note": "PlayStation / Saturn dev tools, CD emulation, 16→32-bit migration of DOS tooling."
    }
  ],
  "skills": {
    "Cloud & Platform": [
      "Azure Functions",
      "Azure Event Hub",
      "Azure Data Factory",
      "Azure SQL",
      "Service Bus",
      "CosmosDB",
      "Logic Apps",
      "API Management",
      "Key Vault",
      "Container Services",
      "Databricks",
      "ARM",
      "PowerShell",
      "Azure CLI",
      "GitHub Actions",
      "Azure DevOps",
      "TeamCity",
      "Octopus Deploy"
    ],
    "Agentic & Applied AI": [
      "Two AI coding agent runtimes from scratch (chapgent / Python, claudego / Go)",
      "Production discipline applied to agentic workflows",
      "Claude Code as primary dev environment",
      "LiteLLM multi-provider",
      "Anthropic streaming",
      "Bubble Tea TUI",
      "Homelab Gen AI infra (Proxmox, Docker, Caddy, Tailscale)"
    ],
    "Languages & Frameworks": [
      "C# / .NET Core",
      "TypeScript / JavaScript",
      "Python",
      "Elixir / Phoenix",
      "Go",
      "React",
      "Angular",
      "REST APIs",
      "Microservices",
      "Domain-Driven Design",
      "WCF",
      "ASP.NET MVC / Web API",
      "SQL Server",
      "Oracle",
      "Amazon Redshift",
      "CosmosDB"
    ],
    "Leadership & Practices": [
      "Trunk-based development",
      "Pair & ensemble programming",
      "TDD",
      "BDD",
      "Continuous delivery",
      "Feature toggles",
      "Expand/contract",
      "Parallel change",
      "Observability & alerting from day one",
      "Lean flow",
      "Agile / Scrum / Kanban",
      "Team leadership",
      "Mentoring",
      "Coaching",
      "Technical hiring"
    ]
  },
  "builds": [
    {
      "name": "chapgent",
      "badge": "AI",
      "desc": "Python TUI coding agent — 26 built-in tools, multi-provider LLM via LiteLLM (16 providers), parallel tool execution, LRU cache, permission system with risk classification.",
      "meta": "Python · TUI · LiteLLM",
      "visibility": "public"
    },
    {
      "name": "claudego",
      "badge": "AI",
      "desc": "Go streaming Anthropic client with Bubble Tea TUI — goroutine-based agent loop, channel-mediated permissions, context cancellation through the tool layer.",
      "meta": "Go · Bubble Tea · Anthropic SDK",
      "visibility": "public"
    },
    {
      "name": "Hexis Golf",
      "badge": "Live",
      "desc": "AI-driven feel-based golf practice planning. Live with trial users and PGA professional contacts engaged.",
      "meta": "golf.davewil.dev",
      "link": "https://golf.davewil.dev",
      "visibility": "public"
    },
    {
      "name": "Slackex",
      "badge": "Live",
      "desc": "Slack-style team chat in Elixir/Phoenix, deployed on my own infrastructure. Working artefact and stress-test of agentic workflows on a non-trivial codebase.",
      "meta": "chat.davewil.dev",
      "link": "https://chat.davewil.dev",
      "visibility": "public"
    },
    {
      "name": "grocery_planner",
      "badge": "WIP",
      "desc": "Phoenix / Elixir + Ash framework with Python OCR service for receipt processing. JSON:API across inventory, recipes, meal planning, shopping, notifications, analytics.",
      "meta": "Elixir · Phoenix · Ash",
      "visibility": "public"
    },
    {
      "name": "kuma_san_kanji",
      "badge": "WIP",
      "desc": "Phoenix / Elixir kanji learning application — the originating project of this whole journey.",
      "meta": "Elixir · Phoenix",
      "visibility": "public"
    },
    {
      "name": "Pocket Pro / Fleetwood",
      "badge": "Brief",
      "desc": "Currently engaged on a voice-driven AI golf coaching product, working through founder brief and product discovery.",
      "meta": "Discovery phase",
      "visibility": "public"
    },
    {
      "name": "Homelab",
      "badge": "Infra",
      "desc": "Proxmox cluster running Debian LXC, Docker, Caddy reverse proxy, Cloudflare DNS, Tailscale, Pi-hole. Claude Code as primary dev environment throughout.",
      "meta": "Proxmox · Docker · Tailscale",
      "visibility": "public"
    }
  ],
  "education": [
    {
      "school": "University of Bristol",
      "qual": "BEng (Hons), Electronic Engineering",
      "years": "1991–1995"
    }
  ]
}