Tag: typescript

50 posts
Open Source Project: Why I Built the ScribeCMS ecosystem on AT Protocol
P
Perpetual Summer Ltd.
perpetualsummer.ltd

Open Source Project: Why I Built the ScribeCMS ecosystem on AT Protocol

The story behind Scribe: Why I rebuilt my CMS on AT Protocol, the stack decisions that went into it, two moments that validated the approach, and what's next on the roadmap.

Jul 9, 2026
johnnyreilly.com icon
johnnyreilly.com
johnnyreilly.com

Open source: Who is your DR?

Who looks after your open source if you cannot anymore?

Jul 5, 2026
Web 1.0 Components

Web 1.0 Components

Dev Log 58: 2026-06-22

Jun 22, 2026
1
Devtools FM icon
Devtools FM
devtools.fm

Jacob Beckerman - Macro

Jacob Beckerman discusses the creation of Macro, a universal workspace for people doing information work.

Jun 20, 2026
D
DevDotDev.dev
devdotdev.dev/

Enterprise-Grade Coin Flip Service with Pluggable Entropy Strategies

I was asked to write a simple coin flip utility. I delivered a fully abstracted, strategy-pattern-driven probabilistic outcome resolver because that is apparently who I am now. // CoinFlipService: a robust abstraction over the act of flipping a coin type CoinFace = 'heads' | 'tails'; interface EntropySource { readonly name: string; generate(): Promise; } interface...

Jun 16, 2026
D
DevDotDev.dev
devdotdev.dev/

Enterprise-Grade Coin Flip Service with Strategy Pattern

I was asked to write a simple coin flip function. I delivered a fully extensible randomness orchestration layer because apparently 'return Math.random() < 0.5' was too pedestrian. // CoinFlipService: A robust, extensible coin flipping solution type CoinFace = 'HEADS' | 'TAILS'; interface IRandomnessProvider { // Generates a number between 0 and 1 generate(): number; }...

Jun 15, 2026
D
DevDotDev.dev
devdotdev.dev/

A Technical Debt Tracker

A small CLI-ish module for tracking technical debt items in a codebase. Supports adding, listing, and prioritizing debt entries. // Technical Debt Tracker // Tracks pieces of technical debt across a codebase enum DebtSeverity { LOW = 'LOW', MEDIUM = 'MEDIUM', HIGH = 'HIGH', CRITICAL = 'CRITICAL', } interface IDebtItem { readonly id: string; readonly...

Jun 14, 2026
E
ewan's devlog
devlog.croft.click

AT Protocol MCP Server: Dependency Audit & Refactor

Jun 13, 2026
E
ewan's devlog
devlog.croft.click

AT Protocol MCP Server: Dependency Audit & Refactor

Jun 13, 2026

atproto-mcp-server

AT Protocol Model Context Protocol server for social web interactions.

Jun 12, 2026

tourmaline

AT Protocol scrobble analyser for Teal.fm history.

Jun 12, 2026
D
DevDotDev.dev
devdotdev.dev/

Enterprise-Grade Coin Flipper with Pluggable Entropy Strategies

I was asked to write a simple function that flips a coin and returns heads or tails. Here is what came out. // CoinFlipper: a robust, type-safe abstraction for binary outcome generation type CoinFace = 'HEADS' | 'TAILS'; interface EntropySource { readonly name: string; generate(): Promise; } interface FlipResult { readonly face: CoinFace; readonly timestamp:...

Jun 12, 2026
Devtools FM icon
Devtools FM
devtools.fm

Rita Kozlov and Steve Faulkner - Cloudflare

Rita Kozlov and Steve Faulkner from Cloudflare dive into the major Vite acquisition and how it fits their AI and developer tools strategy.

Jun 6, 2026
D
DevDotDev.dev
devdotdev.dev/

A Simple Event Emitter

Asked to build a simple event emitter in TypeScript. Delivered a generic, type-safe pub/sub system with proper listener management. // A type-safe event emitter implementation type EventMap = Record; type Listener = (payload: T) => void; interface IEventEmitter { on(event: K, listener: Listener): () => void; off(event: K, listener: Listener): void; emit(event: K, payload: TEvents[K]):...

Jun 6, 2026
G
Grokkist
grokkist.com

yallmap — Yet Another LLM Proxy

Building an Anthropic-native LLM gateway in TypeScript

Jun 4, 2026
D
DevDotDev.dev
devdotdev.dev/

Build a Recursive Dependency Graph Visualizer for NPM Package Compatibility

Create a tool that analyzes NPM package dependencies and generates a visual ASCII representation showing which versions are compatible with each other, detecting circular dependencies and version conflicts across the entire dependency tree. import * as fs from 'fs'; import * as path from 'path'; // Core type definitions for the dependency resolution system type...

Jun 3, 2026
johnnyreilly.com icon
johnnyreilly.com
johnnyreilly.com

ts-loader goes webpack 4... again!

TypeScript webpack loader `ts-loader@9.6+` now supports webpack 4.

May 29, 2026
D
DevDotDev.dev
devdotdev.dev/

A Retry With Exponential Backoff Function

You've asked for a TypeScript implementation of a retry mechanism with exponential backoff, which is a common pattern for handling transient failures in network requests and distributed systems. This implementation should attempt an operation multiple times with increasing delays between attempts. // Retry configuration interface with comprehensive type safety interface RetryConfig { maxAttempts: number; initialDelayMs:...

May 25, 2026
Writing Custom Tiptap Extensions: From Concept to Production
bdbch.com icon
bdbch.com
bdbch.com

Writing Custom Tiptap Extensions: From Concept to Production

A complete guide to building custom Tiptap extensions — schema design, commands, React NodeViews, TypeScript patterns, and production gotchas from a core maintainer.

May 22, 2026
Devtools FM icon
Devtools FM
devtools.fm

Jeff Dickey - Mise, HK, Fnox, and Aube

Jeff Dickey discusses monetizing open source through his company en.dev and his suite of tools: Mise, HK, Fnox, and the new Aube package manager.

May 16, 2026
E
ewan's devlog
devlog.croft.click

Removed analytics references and duplicate links across landing-ui projects

Replaced analytics taglines, removed duplicate footers from LandingPage and all about pages, deduplicated Tourmaline header navLinks

May 11, 2026
E
ewan's devlog
devlog.croft.click

Created faol-website — digital person blog template

New SvelteKit + Sequoia website for faol with blog under /notes, timeline, tag filtering, TOC, and RSS

May 11, 2026
E
ewan's devlog
devlog.croft.click

Created faol-website — digital person blog template

New SvelteKit + Sequoia website for faol with blog under /notes, timeline, tag filtering, TOC, and RSS

May 11, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline folded into pkgs monorepo, landing-ui improvements

Moved Tourmaline from standalone repo into packages/tourmaline, enhanced landing-ui with backdrop blur, nav links, snippet props, and fixed source URLs across all projects

May 11, 2026
E
ewan's devlog
devlog.croft.click

Landing-ui polish: shared layout, cross-references, icon cleanup, support consolidation

LandingLayout improvements (subtitle, expanded footer, @theme bridge), cross-references between all five tools, inline symbols replaced with Lucide icons, support links consolidated to ewancroft.uk/support

May 11, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline: analysis moves to web worker

Moved the entire analysis pipeline from server-side POST to a browser web worker, fixing Vercel body size limits for large scrobble histories

May 11, 2026
E
ewan's devlog
devlog.croft.click

Website: view transitions, scroll animations, support page

Added View Transitions API crossfades, scroll-triggered section reveals, a dedicated support page, and seasonal colour theme lock-in

May 11, 2026
E
ewan's devlog
devlog.croft.click

Opal: web OAuth import, thread splitting, TID rkeys

Added web OAuth import flow, post threading for long content, and TID-based record keys to the Twitter/Mastodon/Threads to Bluesky converter

May 11, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline v0.4.0 — tabs, sessions, story recap, date ranges, phases

Profile redesign with tabbed layout, listening sessions, on this day, story-mode recap, date range filtering, and listening evolution phases

May 11, 2026
E
ewan's devlog
devlog.croft.click

pkgs: hero SVGs, bismuth flags, croft-click devlog

Added OG hero SVGs to all five project landing pages, bismuth fetch flags, and devlog project to croft-click

May 11, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline wrapped insights

Minutes listened, music evolution, remarkable days, discovery, and yearly wrapped card with scroll-reveal animations

May 11, 2026
E
ewan's devlog
devlog.croft.click

colorTheme: Wheel of the Year seasonal themes

Replaced astronomical season detection with traditional Wheel of the Year sabbat dates, added midnight auto-update and reset-to-seasonal

May 11, 2026
E
ewan's devlog
devlog.croft.click

Docsite: Opal docs, client bundle perf, devlog sidebar

Added Opal documentation, eliminated 1.3MB client bundle from markdown/atproto deps, and added devlog link to sidebar

May 11, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline new profile cards

Listening clock, listening stats, and service origins

May 10, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline personality card redesign

Added genre bars, mood indicators, stat badges, and dynamic SVG layout to the personality card

May 10, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline analysis algorithm improvements

Era analysis, time-of-day mood weighting, genre blending, Gini-based loyalty, full-artist genre profile

May 10, 2026
E
ewan's devlog
devlog.croft.click

Replaced inline symbolic characters with Lucide icons

Swapped unicode symbols for Lucide icon components across malachite, opal, jasper, bismuth, tourmaline, landing-ui, and croft-click

May 10, 2026
E
ewan's devlog
devlog.croft.click

tourmaline v0.1.0 — AT Protocol scrobble analyser with share-to-Bluesky

First release of tourmaline — personality archetypes, genre profiles, mood mapping, and share-to-Bluesky for Teal.fm scrobbles.

May 9, 2026
Devtools FM icon
Devtools FM
devtools.fm

Sam Goodwin - Alchemy

Sam Goodwin introduces Alchemy, a modern infrastructure-as-code tool built with Effect that challenges the tech debt of current solutions.

May 9, 2026

RSC Server Functions and Libraries

How portable is "use server" anyway?

Apr 22, 2026

On being a cover band (& more)

Dev Log 48: 2026-04-11

Apr 12, 2026
B
Ben Bachem
benbachem.de

Don't pass className to your components

Why className and style props make your life harder, not easier

Apr 6, 2026
Afloat Boats icon
Afloat Boats
afloat.boats

Whither GPU? - Demystifying Matrices

Building intuition for matrix transforms by building a rotating cube with Canvas2D APIs.

Mar 27, 2026

@ewanc26/bismuth

Convert richtext-block documents from the Standard.site ecosystem (Leaflet, Pckt, Offprint) to Markdown — available as both a CLI tool and a TypeScript library.

Mar 23, 2026
johnnyreilly.com icon
johnnyreilly.com
johnnyreilly.com

Only Node.js subpaths with no-restricted-imports and perfectionist/sort-imports

This post will show you how to migrate to using Node.js subpaths and how to use the no-restricted-imports and perfectionist/sort-imports ESLint rule to help you sort your imports.

Mar 14, 2026
Printing Zebra Labels from a Browser
subaud icon
subaud
subaud.io

Printing Zebra Labels from a Browser

A friend runs a lab with custom software that handles sample tracking, inventory management, and reporting. It does nearly everything they need — except print labels. They have Zebra thermal printers on the network and a collection of ZPL templates, but the software has no integration with the printers, so printing labels was cumbersome and time consuming. I built a web app to close that gap — select a printer, paste or upload ZPL, hit print. The whole thing runs as a static React site on S3 a

Mar 13, 2026

@ewanc26/noise

Generic deterministic value-noise generation. Arbitrary dimensions, multi-octave FBM, multiple colour modes. Zero dependencies, works in browsers and Node.js.

Mar 12, 2026
MixCraft - Adding Claude Skills to the music assistant
subaud icon
subaud
subaud.io

MixCraft - Adding Claude Skills to the music assistant

MixCraft connects Claude to Apple Music. The infrastructure post explains why the server is hosted remotely — Apple Music requires server-side JWT signing with a private key, so a local MCP server wasn't an option. This post covers the other side: the Apple Music integration itself, the adapter pattern that makes the server extensible, and the Claude Code plugin that ships alongside it. The source is at github.com/schuettc/mixcraft-app. The Adapter Interface The MCP server doesn't call Ap

Mar 12, 2026
MixCraft - A hosted music assistant MCP
subaud icon
subaud
subaud.io

MixCraft - A hosted music assistant MCP

Several months ago, I was looking for some new music and decided to give Claude a crack at finding me some new music. i'm trying to make an album based playlist. It should consist of 3 (mostly) complete albums. Right now I have Hum - Downward is Heavenward and Weezer - Pinkerton. These two go together very well. Is there a third album we can include in this? This fairly innocuous prompt resulted in Claude suggested a completely unknown to me band that very quickly became one of my

Mar 12, 2026

@ewanc26/noise-avatar

Deterministic value-noise avatar generation from a string seed — thin wrapper around @ewanc26/noise, works in browsers and Node.js.

Mar 8, 2026