gloam
A dark, purple, terminal-flavored web design language — CSS, components, and a Claude Code skill to build with it. It styles this very page.
- CSS
- design system
developer · open source · go & rust
I build small, dependency-light tools and libraries — static analysis, project & format detection, MCP servers, and the gloam design language that ties these pages together. Mostly Go and Rust, always shipped.
25 open-source projects · all live, all documented
$ richard --whoami name Richard Wooding focus developer tools · libraries langs Go · Rust · Zig · C# · Java · TypeScript · JavaScript projects 25 open-source · all shipped $ richard --projects | wc -l 25
about
I'm a software engineer drawn to the unglamorous, reusable layer of the stack: the library, the CLI, the well-behaved server. I like giving a tool a sharp scope and a clean API, keeping dependencies few, and documenting it properly. Recently that's meant per-function complexity metrics, project and binary analysis, Model Context Protocol servers, and a dark little design system so all of it looks like it belongs together.
open source
Twenty-five things I've built and shipped — each with a live site and source on GitHub.
A dark, purple, terminal-flavored web design language — CSS, components, and a Claude Code skill to build with it. It styles this very page.
Per-function cyclomatic & cognitive complexity for 17 languages — a CLI, a GitHub Action, and a Go library with a standard-library-only core.
Detect a directory's project type(s) across 18+ ecosystems — Go, Node, Rust, .NET, Python and more — extensible via YAML/CEL. Pure Go, no cgo.
The Rust port of projectdetect — the same detection semantics, idiomatic and with no unsafe. Published on crates.io & docs.rs.
Extract strings from binaries — a format-aware, secret-scanning, archive-diving replacement for GNU strings, with JSON and triage output.
A Model Context Protocol server for RSS, Atom, and JSON feeds — lets an AI assistant read and search syndicated content.
A dependency-free Go client for ArcGIS Feature Services — automatic pagination, spatial filters, and cheap counts, in a struct or fluent API.
A comprehensive Model Context Protocol server for querying the City of Cape Town's open-data layers — wards, heritage, water quality, and more.
Cross-language code-symbol extraction for 17 languages — definitions, imports, call edges, and complexity from one parse (Go via go/ast, the rest via tree-sitter).
Package coupling metrics (Ca/Ce/instability) and circular-dependency detection across 9 ecosystems — from imports you already extracted, no parser needed.
Pure-Go C2PA / Content Credentials for JPEG & PNG — a fast unverified claim reader for triage, plus full cryptographic validation. No cgo.
Prevent SSRF in Go — validate outbound URLs and block internal addresses at dial time, after DNS resolution, so it's robust against DNS rebinding.
A per-host rate-limiting http.RoundTripper for Go — being slow to one host never throttles another, and it composes cleanly under other middleware.
Hash allow/deny lookup (MD5/SHA-1/SHA-256) for forensics and security — a fast in-memory store or a bbolt-backed one for NSRL-scale sets.
A minimal, zero-dependency SARIF 2.1.0 emitter for Go static-analysis tools — map findings to the document GitHub Code Scanning and other CI ingest.
Recursively walk zip/tar/gz/bz2/xz/zstd/deb containers in Go — stream every nested file by virtual path, with decompression-bomb guards.
String security triage in Go — Shannon entropy, content classification, and secret detection with redaction. Zero dependencies.
The Zig port of projectdetect — detect a directory's project type(s) across 28 built-in types, walk a tree for roots, resolve a file's project. Zero deps.
Fast per-file git metadata in Go — one batch scan, then constant-time last-commit / author / churn / tracked-ignored lookups.
The Rust port of gitmeta — per-file git metadata via one batch scan, with an optional async (tokio) API.
The C#/.NET port of gitmeta — per-file git metadata via one batch scan, with both synchronous and async APIs.
The Zig port of gitmeta — per-file git metadata via one batch scan, constant-time lookups, zero dependencies.
A zero-dependency Ollama embeddings client for Go — text→vector, plus vector math and a curated model catalog for semantic / RAG search.
Okapi BM25 keyword ranking and reciprocal-rank fusion for Go — the keyword half of hybrid search, zero dependencies.
SimHash text near-duplicate detection and perceptual image hashing for Go — small, and built for hybrid search.
toolbox