Skip to content
View ewanc26's full-sized avatar
🐺
🐺

Block or report ewanc26

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
ewanc26/README.md

hi, i'm ewan

programmer, poet, and pagan from the UK.

i build things around AT Protocol, compilers for esoteric languages, and self-hosted infrastructure.

ewancroft.uk · docs.ewancroft.uk · devlog.croft.click

GitHub Tangled

ko-fi


what i build

AT Protocol ecosystem — tools, bots, and infrastructure for the decentralised web:

project what it does
malachite · 🧶 import Last.fm & Spotify history to AT Protocol (OAuth, CLI + web)
opal migrate Twitter, Mastodon, Threads, Nostr → Bluesky (OAuth, CLI + web)
jasper import Instagram posts to AT Protocol as Grain/Spark (OAuth, CLI + web)
bismuth convert site.standard.document records → Markdown (CLI + web)
website · 🧶 ewancroft.uk — personal site powered by AT Protocol records
azurite · 🧶 experimental Bluesky client (keychain auth, timeline, compose)
moonstone · 🧶 experimental PDS in Rust (WIP)
socialsync · 🧶 Minecraft mod — sync stats & achievements to AT Protocol
atproto-snake · 🧶 snake game with AT Protocol OAuth and score submission
atproto-shortlink · 🧶 shortlink service for AT Protocol handles and DIDs
linkat-directory · 🧶 Linkat-powered user directory
pds-backup · 🧶 back up your AT Protocol PDS data

Bots:

project what it does
bluesky-moon-tracker · 🧶 daily moon phase posts (Rust, atrium-rs)
bluesky-awoo-bot · 🧶 wolf sounds on Bluesky
bluesky-markov · 🧶 markov chain bot for Bluesky
bluesky-gradient · 🧶 gradient profile banner generator
bluesky-avatar-updater · 🧶 scheduled avatar updates
bluesky-ollama · 🧶 LLM-generated posts via Ollama
mastodon-markov · 🧶 markov chain bot for Mastodon

Compilers & esoteric languages:

project what it does
selenium · 🧶 lunar/poetic syntax, strong typing, compiles to C
numlang · 🧶 stack-based, numbers + punctuation only, compiles to C
sigi · 🧶 pure symbolic stack language, all punctuation, compiles to C

NixOS & infrastructure:

project what it does
nix-starter · 🧶 NixOS config for 3 hosts (PDS, Caddy, Tailscale)
docsite · 🧶 Sequoia-powered documentation site
devlog automated changelog published to AT Protocol
pkgs · 🧶 monorepo — 16+ TypeScript packages, 1 Rust, 1 Python

Other:

project what it does
tangled-sync · 🧶 sync repos to Tangled knotwork
mc-server · 🧶 NixOS Minecraft server config
platformer-collab · 🧶 collaborative 3D platformer (Godot)
website-comm-template · 🧶 SvelteKit template with Resend contact form

Full docs at docs.ewancroft.uk. Devlog at devlog.croft.click.


about me

  • AT Protocol: did:plc:ofrbh253gwicbkc5nktqepol · handle: ewancroft.uk · PDS: eurosky.social
  • Code hosting: GitHub · Tangled
  • Location: England, United Kingdom
  • Heritage: Anglo-Scottish
  • Learning: Scottish Gaelic (Gàidhlig na h-Alba) — "Tha mi Pàgannach" (I am Pagan)
  • Music: Powerwolf Top 0.03% globally
  • Crypto: XMR 44yH2LpkSsrSmWQC3SVmrABw2MUhNjNCE365hG7Rr7veJYNPBD1f6dNgXNr2nc6ZcP3jEyj9vXnqmg7VBBPeS8uwMhJ4yXW · BTC bc1qp3l6e9pjc5jan7ulpd58av8wfdtyhrchj84clh · ETH 0x4B8c9d62ff89bc7199a197C55dac2abef1808B77

Stack:

TypeScript Svelte Tailwind Python Rust Nix Shell

Also work with: C (compiler targets), AT Protocol lexicons, Godot (GDScript)


digital sovereignty

I believe in owning your data. AT Protocol lets me host my own PDS, control my identity, and take my content anywhere. My site runs on AT Protocol records. Last.fm and Spotify data flows through malachite into the same ecosystem. Instagram exports go through jasper. Twitter and Mastodon history through opal. All roads lead back to the same PDS.


moon phases • AT Protocol • compilers • wolves

Pinned Loading

  1. website website Public

    my website at ewancroft.uk

    Svelte 9 1

  2. linkat-directory linkat-directory Public

    a Linkat frontend

    Svelte 3

  3. atproto-snake atproto-snake Public

    a snake game integrated with ATproto

    Svelte

  4. atproto-shortlink atproto-shortlink Public

    a shortlink service using Linkat.

    TypeScript

  5. nix nix Public

    My nix-darwin and NixOS config

    Nix 1

  6. pkgs pkgs Public

    my pkgs monorepo

    TypeScript 6