ewan's avatar

ewan

@ewancroft.uk
a british poet and programmer who is unreasonably into werewolves. I water the Yew trees.

@ewanc26/noise-avatar

Deterministic value-noise avatar generation from a string seed — zero dependencies, works in browsers and Node.js.

Mar 8, 2026

@ewanc26/supporters

SvelteKit component library for displaying Ko-fi supporters, backed by an ATProto PDS.

Mar 8, 2026

@ewanc26/pds-landing

Composable Svelte 5 components for an ATProto PDS landing page — terminal aesthetic, live status fetching, zero config to drop in.

Mar 7, 2026

nix-config-tools

Rust CLI tools for managing nixos/nix-darwin configurations — now part of the @ewanc26/pkgs monorepo.

Mar 6, 2026

@ewanc26/pkgs

Ewan's personal package monorepo — language-agnostic workspace with TypeScript, Rust, and Python packages.

Mar 6, 2026

@ewanc26/pkgs

Ewan's personal package monorepo — the canonical home for @ewanc26/tid, @ewanc26/atproto, @ewanc26/ui, and @ewanc26/utils.

Mar 6, 2026

There Is Nuance, Nae a Binary

You can see the post above. Not a manifesto, not a hot take designed to perform – just a fact I'd been sitting on and finally decided to say out loud, with a quote attached that felt relevant.

Mar 6, 2026

@ewanc26/atproto

AT Protocol service layer extracted from ewancroft.uk — profile fetching, Standard.site documents, Bluesky posts, music/mood status, Tangled repos, and a built-in in-memory cache.

Mar 5, 2026

@ewanc26/ui

Svelte UI component library extracted from ewancroft.uk — pluggable layout, card, SEO, and UI primitive components alongside Svelte stores and a multi-theme config system.

Mar 5, 2026

@ewanc26/utils

Shared utility functions extracted from ewancroft.uk — date formatting, number formatting, URL helpers, validators, RSS generation, and locale detection.

Mar 5, 2026

Silver Fire – Commissions Are Open (and Half Off)

I've been meaning to open commissions for a while now. Today I'm finally doing it, and to mark the occasion I'm running a sale: everything is 50% off for the next two weeks, until 19th March, under the name Silver Fire.

Mar 5, 2026

@ewanc26/tid

Zero-dependency, spec-compliant AT Protocol TID generation for Node.js and browsers.

Mar 3, 2026
The Stranger in the Mirror

The Stranger in the Mirror

Last year I wrote a poem called Slipping Away. It ended like this:

Mar 3, 2026

We Were Promised a Future. We Got a Spreadsheet.

i have a mouth and all i can do is scream.

Mar 1, 2026

Malachite

Import your Last.fm and Spotify listening history to the AT Protocol network using the fm.teal.alpha.feed.play lexicon.

Mar 1, 2026

I Made a Ko-fi (And I'm a Bit Embarrassed About It)

i have an income now???

Feb 23, 2026

atproto-shortlink

A server-side AT Protocol link shortener powered by your Linkat board. No database required.

Feb 23, 2026

atproto-snake

Classic Snake with AT Protocol OAuth login and high score saving to your PDS.

Feb 23, 2026

bean-dumper

An early Python experiment — unmaintained and kept for historical interest.

Feb 23, 2026

bluesky-avatar-updater

Automatically update your Bluesky avatar (and banner) every hour based on the time of day.

Feb 23, 2026
Loading more posts...