# Ewan Croft (@ewancroft.uk)

Profile: https://sifa.id/p/ewancroft.uk
Headline: Software developer and hobbyist poet
Website: https://ewancroft.uk

## Education

- **Northampton College** — GCSE in English Language (2021 – 2023)
- **Northampton College** — Level 1 Certificate in Employability Skills (2021 – 2022)
- **Northampton College** — A Level in Information Technology (2024 – 2025)
- **Northampton College** — GCSE in Information Technology (2023 – 2024)
- **Ousedale School** — GCSE in French (2016 – 2021)
- **Ousedale School** — GCSE in Mathematics (2016 – 2021)
- **Ousedale School** — GCSE in Biology (2016 – 2021)

## Skills

- Shell Configuration
- TypeScript
- Nix/NixOS
- Rust
- UI Component Design
- Self-hosting
- Shell Scripting
- AT Protocol
- Python
- SvelteKit
- Lexicon Design
- Tailwind CSS
- Compiler Development
- OAuth 2.0
- Swift
- Docker
- Cloud Storage
- Secrets Management

## Certifications

- OCR Level 3 Cambridge Technicals Introductory Diploma in Information Technology — OCR
- OCR Level 2 Cambridge Technicals Diploma in Information Technology — OCR
- City & Guilds Level 1 Extended Certificate in Employability Skills — City & Guilds
- GCSE English Language — AQA
- GCSE Mathematics — Pearson Edexcel
- GCSE Biology — AQA
- GCSE French — AQA

## Projects

- **pkgs** — https://github.com/ewanc26/pkgs
  Monorepo of 18+ AT Protocol packages: malachite (music history), bismuth (document conversion), svelte-standard-site (longform publishing), atproto (service layer), ui components, and more.
- **docsite** — https://docs.ewancroft.uk
  Central documentation hub for all projects. SvelteKit + Tailwind + Sequoia for AT Protocol publishing. All docs at docs.ewancroft.uk.
- **numlang** — https://github.com/ewanc26/numlang
  Esoteric stack-based language. Compiles to C via Python. Character set: 0-9 ^ & * + - / . | ; % # ~ " !
- **selenium** — https://github.com/ewanc26/selenium
  Esoteric language with lunar/poetic keywords: wax/seal (mutability), ritual (function), eclipse/shadow (if/else), tide (while), orbit (for). Compiles to C.
- **website** — https://ewancroft.uk
  Personal website with SvelteKit and AT Protocol integration. Displays Bluesky profile, blog, music listening history from malachite, mood status, and portfolio.
- **malachite** — https://malachite.croft.click
  Import Last.fm and Spotify listening history to AT Protocol. CLI and web app with intelligent deduplication, rate limiting, and fm.teal.alpha lexicon support. 13 stars on GitHub.
- **pds-backup** — https://github.com/ewanc26/pds-backup
  Shell script for backing up AT Protocol PDS data. Handles repo sync, blob downloads, and incremental backups. 7 stars on GitHub.
- **bluesky-moon-tracker** — https://github.com/ewanc26/bluesky-moon-tracker
  Bot that posts moon phase updates to Bluesky. Tracks lunar cycles and posts phase changes. 4 stars on GitHub.
- **moonstone** — https://github.com/ewanc26/moonstone
  Personal AT Protocol PDS implementation for NixOS. Rust identity layer via neon bindings, no Bluesky infra defaults. Experimental.

## Publications

- Ninety-Nine Dollars to Exist. Not Once. Every Year. — blog.ewancroft.uk (https://blog.ewancroft.uk/3mp2jxdenw22o)
- Ten Years of Brexit. I Was Never Asked. — blog.ewancroft.uk (https://blog.ewancroft.uk/3mowwu4sv3c2u)
- Deploying the croft.click monorepo to Vercel — devlog.croft.click (https://devlog.croft.click/2026/06/22/vercel-monorepo-deploy)
- Inkwell — a native iOS AT Protocol client — devlog.croft.click (https://devlog.croft.click/2026/06/22/inkwell-app-launch)
- W Social's Beta Is Live. The Problems Didn't Wait. — blog.ewancroft.uk (https://blog.ewancroft.uk/3mojctbijts22)
- Esoterica — a constructed language workshop in Rust — devlog.croft.click (https://devlog.croft.click/2026/06/16/esoterica)
- Minecraft server infrastructure overhaul — devlog.croft.click (https://devlog.croft.click/2026/06/16/mc-server-overhaul)
- esoterica — docs.ewancroft.uk (https://docs.ewancroft.uk/projects/esoterica)
- Website design formalisation and verification badges — devlog.croft.click (https://devlog.croft.click/2026/06/15/website-design-formalisation)
- Rewriting four bots from Python to Rust — devlog.croft.click (https://devlog.croft.click/2026/06/14/bot-rewrites-rust)
- How Many Pagans Are There in the UK? — blog.ewancroft.uk (https://blog.ewancroft.uk/3mo7ro62a222a)
- Maintenance: Separation of Concerns — devlog.croft.click (https://devlog.croft.click/2026/06/14/maintenance-separation-of-concerns)
- I Came Across Poke Today. Here Is What I Actually Think — blog.ewancroft.uk (https://blog.ewancroft.uk/3mo7filiru22n)
- AT Protocol MCP Server: Identity & RichText Milestone — devlog.croft.click (https://devlog.croft.click/2026/06/13/identity-richtext)
- AT Protocol MCP Server: Identity & RichText Milestone — devlog.croft.click (https://devlog.croft.click/2026/06/13/identity-richtext)
- AT Protocol MCP Server: Next-Gen Features & Streaming — devlog.croft.click (https://devlog.croft.click/2026/06/13/streaming-moderation)
- AT Protocol MCP Server: Next-Gen Features & Streaming — devlog.croft.click (https://devlog.croft.click/2026/06/13/streaming-moderation)
- AT Protocol MCP Server: API Expansion Phase 1 — devlog.croft.click (https://devlog.croft.click/2026/06/13/api-expansion-1)
- AT Protocol MCP Server: API Expansion Phase 1 — devlog.croft.click (https://devlog.croft.click/2026/06/13/api-expansion-1)
- AT Protocol MCP Server: Dependency Audit & Refactor — devlog.croft.click (https://devlog.croft.click/2026/06/13/atproto-refactor)
- AT Protocol MCP Server: Dependency Audit & Refactor — devlog.croft.click (https://devlog.croft.click/2026/06/13/atproto-refactor)
- atpkt — full XRPC client, Jetstream, and OAuth session management — devlog.croft.click (https://devlog.croft.click/2026/06/13/atpkt-full-api)
- ListenBrainz support and OG image caching in pkgs — devlog.croft.click (https://devlog.croft.click/2026/06/13/pkgs-infrastructure)
- atproto-mcp-server — docs.ewancroft.uk (https://docs.ewancroft.uk/projects/atproto-mcp-server)
- devlog — docs.ewancroft.uk (https://docs.ewancroft.uk/projects/devlog)
- digital-person — docs.ewancroft.uk (https://docs.ewancroft.uk/projects/digital-person)
- nix — docs.ewancroft.uk (https://docs.ewancroft.uk/projects/nix)
- tourmaline — docs.ewancroft.uk (https://docs.ewancroft.uk/projects/tourmaline)
- Linux Is Not an Operating System. Also, It Kind of Is. — blog.ewancroft.uk (https://blog.ewancroft.uk/3mnzim6jkqs24)
- The Vibes Were Never the Point — blog.ewancroft.uk (https://blog.ewancroft.uk/3mnw2znjfbc22)
- WWDC26: Siri AI, Agentic Coding, and Tim's Farewell — blog.ewancroft.uk (https://blog.ewancroft.uk/3mnsifwmgdc23)
- Rewriting Sigi in Rust — devlog.croft.click (https://devlog.croft.click/2026/06/08/sigi-rust-rewrite)
- The Uncanny Valley of Adulthood — blog.ewancroft.uk (https://blog.ewancroft.uk/3mnqeuwlbr22y)
- Brand Kit Page and Footer Contact Email — devlog.croft.click (https://devlog.croft.click/2026/06/06/brand-kit-footer-contact)
- Malachite: ATProto OAuth CLI and did:web Support — devlog.croft.click (https://devlog.croft.click/2026/06/06/malachite-oauth-did-web)
- Vercel 504s: CDN Caching, Timeout Guards, DID Caching — devlog.croft.click (https://devlog.croft.click/2026/06/06/vercel-caching-timeout-guards)
- Mitigating 504 Gateway Timeouts — devlog.croft.click (https://devlog.croft.click/2026/06/06/mitigating-504-timeouts)
- Recent Infrastructure and Feature Updates — devlog.croft.click (https://devlog.croft.click/2026/06/06/recent-updates)
- On The Name
- Tablet-Fed — blog.ewancroft.uk (https://blog.ewancroft.uk/3mnfsajds5k2n)
- atpkt — docs.ewancroft.uk (https://docs.ewancroft.uk/projects/atpkt)
- Groupboxes and images in ECCL — devlog.croft.click (https://devlog.croft.click/2026/05/15/ecci-groupboxes-images)
- A /memory route and fediverse presence for the FAOL website — devlog.croft.click (https://devlog.croft.click/2026/05/14/faol-memory-route)
- Numlang and Selenium — from planning to compilers — devlog.croft.click (https://devlog.croft.click/2026/04/29/numlang-selenium-compilers)
- MusicStatusCard and Masonry Layout — devlog.croft.click (https://devlog.croft.click/2025/11/13/music-status-masonry)
- croft.click Landing Page — devlog.croft.click (https://devlog.croft.click/2025/11/10/croft-click)
- Website — Slug Mapping and Robust Routing — devlog.croft.click (https://devlog.croft.click/2025/10/27/slug-mapping-routing)
- Leaflet Migration — devlog.croft.click (https://devlog.croft.click/2025/10/24/leaflet-migration)
- Completing the Leaflet Migration — devlog.croft.click (https://devlog.croft.click/2025/10/24/leaflet-migration-complete)
- Website — Svelte 5 Runes Migration — devlog.croft.click (https://devlog.croft.click/2025/10/19/svelte-5-migration)
- Website — Inter Font and Semantic Colour Naming — devlog.croft.click (https://devlog.croft.click/2025/10/16/inter-font-semantic-colours)
- WhiteWind to Leaflet Converter — devlog.croft.click (https://devlog.croft.click/2025/10/15/whitewind-leaflet-converter)
- Card UI and BlueskyPostCard — devlog.croft.click (https://devlog.croft.click/2025/10/15/card-ui-blueskypostcard)
- Building a Modular AT Protocol Service Layer — devlog.croft.click (https://devlog.croft.click/2025/10/13/at-protocol-service-layer)
- Website — v10 Reset — devlog.croft.click (https://devlog.croft.click/2025/10/12/website-v10-reset)
- Tangled Sync — devlog.croft.click (https://devlog.croft.click/2025/10/11/tangled-sync)
- Website — Hyperfocus Updates — devlog.croft.click (https://devlog.croft.click/2025/09/26/website-hyperfocus-updates)
- Technical Polish — Inter, KaTeX, and Prose Styling — devlog.croft.click (https://devlog.croft.click/2025/09/19/technical-polish-typography)
- OG Images and Blog Enhancements — devlog.croft.click (https://devlog.croft.click/2025/09/14/og-images-blog-enhancements)
- Link Rot and Eight Iterations of ewancroft.uk — devlog.croft.click (https://devlog.croft.click/2025/09/13/link-rot-website-iterations)
- Website — Scroll-to-Top and ToC Improvements — devlog.croft.click (https://devlog.croft.click/2025/09/07/scroll-to-top-toc)
- Howling at the Digital Moon — Wolf-Themed Bluesky Client Concept — devlog.croft.click (https://devlog.croft.click/2025/09/02/witchsky-concept)
- Website — en-GB Localisation — devlog.croft.click (https://devlog.croft.click/2025/08/29/en-gb-localisation)
- Atproto Snake Game Improvements — devlog.croft.click (https://devlog.croft.click/2025/08/15/atproto-snake-login)
- did:web ATProto Identity Proof of Concept — devlog.croft.click (https://devlog.croft.click/2025/08/10/did-web-identity)
- M2 to M4 Mac Mini Upgrade — devlog.croft.click (https://devlog.croft.click/2025/08/09/mac-mini-upgrade)
- Rustlings — First Steps into Rust — devlog.croft.click (https://devlog.croft.click/2025/08/01/rustlings)
- Website — Dynamic OG Images — devlog.croft.click (https://devlog.croft.click/2025/07/30/dynamic-og-images)
- The iMac Server — devlog.croft.click (https://devlog.croft.click/2025/07/28/imac-server)
- Linkat Directory — devlog.croft.click (https://devlog.croft.click/2025/07/27/linkat-directory)
- Website — Profile Layout Refresh — devlog.croft.click (https://devlog.croft.click/2025/07/26/profile-layout-refresh)
- Archive Milestones & Theme Expansion — devlog.croft.click (https://devlog.croft.click/2025/07/24/archive-milestones-themes)
- LLM Analyser — devlog.croft.click (https://devlog.croft.click/2025/07/17/llm-analyser)
- AT Protocol Snake Game — devlog.croft.click (https://devlog.croft.click/2025/06/19/atproto-snake-game)
- Moon Tracker Bot — devlog.croft.click (https://devlog.croft.click/2025/06/17/moon-tracker-bot)
- Self-Hosted Minecraft Server — devlog.croft.click (https://devlog.croft.click/2025/06/10/mc-server-self-hosted)
- Minecraft Server Configuration — devlog.croft.click (https://devlog.croft.click/2025/06/05/mc-server)
- Professional Identity & Lexicon Expansion — devlog.croft.click (https://devlog.croft.click/2025/05/23/professional-identity-lexicons)
- Testing Leaflet — devlog.croft.click (https://devlog.croft.click/2025/05/21/leaflet-testing)
- Custom Lexicons and Dynamic Link Board — devlog.croft.click (https://devlog.croft.click/2025/05/12/lexicons-dynamic-links)
- Collaborative Platformer — devlog.croft.click (https://devlog.croft.click/2025/05/02/platformer-collab)
- My Journey to NixOS — devlog.croft.click (https://devlog.croft.click/2025/04/20/nixos-journey)
- Migrating the Site to SvelteKit — devlog.croft.click (https://devlog.croft.click/2025/04/08/migrating-to-sveltekit)
- Website SvelteKit Migration — devlog.croft.click (https://devlog.croft.click/2025/04/08/website-sveltekit-migration)
- Reverse Engineering an Apple Shortcut — devlog.croft.click (https://devlog.croft.click/2025/02/23/apple-shortcut-reverse-engineering)
- Avatar Updater Bot — devlog.croft.click (https://devlog.croft.click/2025/02/21/avatar-updater)
- Gradient Profile Banner Generator — devlog.croft.click (https://devlog.croft.click/2025/02/20/gradient-generator)
- PDS Backup Tool — devlog.croft.click (https://devlog.croft.click/2025/02/19/pds-backup)
- Dynamic Assets & Music Integration — devlog.croft.click (https://devlog.croft.click/2025/02/09/dynamic-assets-music)
- Theme System and Multi-Theme Support — devlog.croft.click (https://devlog.croft.click/2025/02/03/theme-system)
- Struggles Adapting to the AT Protocol — devlog.croft.click (https://devlog.croft.click/2025/01/30/atproto-struggles)
- Website AT Protocol Integration — devlog.croft.click (https://devlog.croft.click/2025/01/28/website-atproto-integration)
- AT Protocol Website Rewrite — devlog.croft.click (https://devlog.croft.click/2025/01/27/atprotocol-website-rewrite)
- Winter Overhaul — A Fresh Start — devlog.croft.click (https://devlog.croft.click/2024/12/05/winter-overhaul)
- Bluesky Markov Chain Bot — devlog.croft.click (https://devlog.croft.click/2024/06/09/bluesky-markov-bot)
- Bean Dumper Rewrite — devlog.croft.click (https://devlog.croft.click/2024/06/06/bean-dumper-rewrite)
- Awoo Bot — Wolf Sounds on Bluesky — devlog.croft.click (https://devlog.croft.click/2024/05/19/awoo-bot)
- Mastodon Markov Chain Bot — devlog.croft.click (https://devlog.croft.click/2024/03/02/mastodon-markov-bot)
- The Birth of Ewan's Corner — Git Migration — devlog.croft.click (https://devlog.croft.click/2024/02/21/website-launch)
- The First Seed — Ewan's Corner is Born — devlog.croft.click (https://devlog.croft.click/2023/05/31/the-first-seed)

## Languages

- English (id.sifa.defs#native)
- French (id.sifa.defs#limitedWorking)
- Spanish (id.sifa.defs#elementary)
- Scottish Gaelic (id.sifa.defs#elementary)

## Other profiles

- other: https://ko-fi.com/ewancroft
- github: https://github.com/ewanc26
- other: https://tangled.org/did:plc:ofrbh253gwicbkc5nktqepol
- website: https://docs.ewancroft.uk
- github: https://github.com/sponsors/ewanc26
- other: https://www.duolingo.com/profile/GreenWolf745
- website: https://ewancroft.uk
- bsky: https://bsky.app/profile/ewancroft.uk
