Tag: development

47 posts

local-thirst: But Linear…

Dissecting Linear as a local-first app.

Jul 24, 2026

local-thirst

I'm on a path to reclaim my sanity by taking a step back and exploring modern web architectures. Join me!

Jul 23, 2026
Bunnies in space icon
Bunnies in space
amybunny.offprint.app

Set up stoat.chat for local development

And things to look out for when contributing upstream

Jul 23, 2026

Self hosting a PDS isn't hard (so far)

Due to my compulsive need to self-host whatever I possibly can, I decided to set up a self-hosted PDS. All that's on it so far is my Bluesky profile data, but it was a surprisingly painless process.

Jul 17, 2026

Photopad: Encrypting Text with JPEG Files

A picture is worth a thousand pads™

Jul 17, 2026
Nora Bell icon
Nora Bell
snowebell.cc

Where to even start?

So I found the phone I was looking for, funny how as soon as I complain online it remembers it's supposed to exist and re-enters the physical plane. It was in a crate with some old documents, idk how it got there. I'd like to build a custom OS for it, specifically I wanna build...

Jul 16, 2026
Nora Bell icon
Nora Bell
snowebell.cc

I’ve been looking for my smartphone for 5 months

It's in my apartment... somewhere. Because if it isn't I have to accept that the simplest other solution is that my friend stole it when we were jamming. I don't think he'd do that, just doesn't seem like him. I don't miss the phone. I've been using a Sunbeam F1 Horizon Wren. It meets every...

Jul 15, 2026

Somewhere, I'm online and listening to music

For a while now, my home page has shown whatever song I'm listening to (or, if idle, the last one I played). Initially, it was powered by last.fm. As I've built my own scrobbler, I populated the element from my own data. The static implementation is straightforward: I store each listen as a record. When a listen is inserted, the cache is cleared and warmed, and an update is displayed.

Jul 14, 2026
Is my ATProto app actually decentralized?
Herve Family icon
Herve Family
herve.bzh

Is my ATProto app actually decentralized?

A few days ago I wrote about rolld, the little board game tracker I built on the AT Protocol. As I mentioned then, this is very much a learning experiment for me, a way to play with ATProto and learn about it. In this post, I'd like to come back to a few of my struggles and the things I learned while designing it.

Jul 13, 2026
A
Adam DJ Brett's blog
adamdjbrett.com/

Remote Development from Any Browser with blit.sh and moo

How to pair blit's browser-based terminal streaming with moo's local-first agent workbench for remote development, 11ty site work, and accessible document and transcript conversion.

Jul 11, 2026
C
Conasg
conasg.com

Reinventing a city simulator

Libreopolis began as an attempt to understand an old game and became a compatible city of its own.

Jul 10, 2026
C
Conasg
conasg.com

Modern warfare in a world made of blocks

Why Minecraft turned out to be such an interesting home for radar, missiles, drones and all the systems between them.

Jul 10, 2026

Designing a listen later pipeline

I've had this long, long running relationship with bookmarking and read it later services. I'll commit to one, excited about whatever feature set it offers and then, without fail, my list grows and grows and grows and grows. I archive things to reset, repeat and then move to a different service. The only thing that's ever worked has been listening to articles as audio when I have a spare moment. Sometimes it's background noise but, generally, I absorb things better as audio.

Jul 10, 2026
Animating Element with Only CSS
Austin Gil icon
Austin Gil
austingil.com

Animating Element with Only CSS

This post provides the most straightforward and minimum way to animate the HTML detials element using only CSS.

Jul 10, 2026
rolld: I put my board game logs on AT Protocol
Herve Family icon
Herve Family
herve.bzh

rolld: I put my board game logs on AT Protocol

For years my board game log lived in a little WordPress plugin I wrote. rolld is my next small experiment: the same log, rebuilt on the AT Protocol, where each play is a record on your own PDS. Give it a try!

Jul 8, 2026

Implementing standard.site on a nonstandard site

Now that this site is written in Go, I've turned to restoring and adding more features connecting it to the open web. While I maintain a healthy skepticism of Bluesky the company, I'm enamored with open protocols and ATProto falls under that umbrella.

Jul 7, 2026

Git Compare Ref Open, a small extension for a thing I do 100 times a day

I'm in a file. I want to see it against main, or against yesterday's commit, or against the branch I'm rebasing. Not the whole repo in a web UI. Not a custom diff panel. The normal VS Code diff, the one that already feels right.

Jul 5, 2026
B
Broonix Rants
rants.broonix.ca

Brooksmarks July 1st

Jul 1, 2026

Suburban sprawl, urban density, and property taxes

Jun 30, 2026
AT Mot: I rebuilt Wordle on the AT Protocol
Herve Family icon
Herve Family
herve.bzh

AT Mot: I rebuilt Wordle on the AT Protocol

Introducing AT Mot, a small ATProto experiment, and a daily word game. Give it a try!

Jun 24, 2026
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
L
Lieb's Log
paullieberman.org

Slow recovery

5 weeks since my bike crash. I would have thought I'd be putting this time to better use but no such luck. Time off the bike means more time to work on development projects. Problem is my brain's. been in a bit of a fog and my vision has made computer work less fun. So I've been avoiding the computer. But now a heat spell is upon us and I can't handle the outside work that has been keeping me busy. So here I am, my second blog post in a month. I'd like to update my atproto_standard_site Drupal module. This is the module that will publish this blog post as a atproto post using the site.standard lexicon. Leaflet will display these and I understand Bluesky will now display then also. However Bluesky is not displaying mine so I may have to change something about the format. So I'm hoping I can stay focused on the computer to get this done today or tomorrow. Also I'm reconsidering using ECA for publishing the new posts. Its very slow and I can't figure out why. Previously I just used my own custom hooks and it was much faster. Much to investigate.

Jun 14, 2026
Putting the WordPress block editor on the AT Protocol
Herve Family icon
Herve Family
herve.bzh

Putting the WordPress block editor on the AT Protocol

What if your ATProto content was a WordPress block tree? I built a long-form editor where the standard.site "content" field is just Gutenberg blocks, no PHP anywhere. I'm playing with ATProto, even though I'm still not fully sold on it as a web old-timer. 🙂

Jun 11, 2026

The Vibes Were Never the Point

My thoughts on the push-and-pull of AI usage.

Jun 10, 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
John Beales icon
John Beales
johnbeales.com/

Developer headaches meet real-world applications.

May 26, 2026
Radical Speed Month, and a new Reader
Herve Family icon
Herve Family
herve.bzh

Radical Speed Month, and a new Reader

During Automattic's Radical Speed Month, Matthias and I built Reader Everywhere: a new way to follow Bluesky, Mastodon, and the Fediverse from the WordPress.com Reader. 90-second demo below. :)

May 22, 2026
B
Broonix Rants
rants.broonix.ca

Creating an AI Worklog

May 22, 2026

Lifting Mastodon rate limits

I'm a reluctant Bluesky user and a new Bluesky user. I expanded my site's syndication implementation to support Bluesky and updated my links implementation to support tagging authors on Bluesky. Why join now? I'm not totally sure. Indigo launching was a factor. It looked like (and is) a lovely app.

May 20, 2026
Feature Workflow Updates: Driving Features on Autopilot and More
subaud icon
subaud
subaud.io

Feature Workflow Updates: Driving Features on Autopilot and More

Three patch releases in one evening — how using my own plugin on a real project surfaced a confusing schema field, an internally inconsistent verdict, and the case for state as a first-class concept.

May 20, 2026
B
Broonix Rants
rants.broonix.ca

Migrating my blog to Astro (with Claude)

May 20, 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
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

Ribbon - a linkding client

I built a native iOS client for linkding and launched it, as I usually do, with a sarcastic-ish Mastodon post. I'd been using my instance as a PWA (inasmuch as PWAs are supported on iOS) and found it to be ok but not terribly satisfying. I appreciated the existing clients, but didn't love them. I'd tried them all, but ended up generally using a Safari extension and the web app in Safari.

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

Elio Struyf - Front Matter CMS, Demo Time

Elio Struyf showcases Front Matter CMS for VS Code and Demo Time, his tool for creating flawless presentation demos and talks.

Apr 18, 2026
V
Vale.Rocks
vale.rocks

It's All Just Trees With Web Origami

Thoughts on the wonderful Web Origami project, which can be used as a static site generator but is also capable of very much more. It can be used in the shell to handle all sorts of data transformations and interactions, making it a valuable part of any developer's toolbox.

Apr 16, 2026
L
Lieb's Development Website
dev.paullieberman.net/

Atmosphere 1

Just testing. Still testing. Testing continues.

Apr 14, 2026
L
Lieb's Log
paullieberman.org

Working with the Atmosphere module for Drupal

After creating my own ATproto suite [1] of modules for Drupal I was excited to see Affinity Bridge [2] had ported the Wordpress Atmosphere plugin to Drupal [3]. While there are some major differences they both achieve the same goal of publishing Drupal content as both Bluesky posts and Standard Site documents. Here are some of the key differences.  ModuleATprotoAtmosphereStructureModular. Several modules with dedicated functions.One module does it allAuthenticationApp password. Drupal can re-authenticate in the backgroundOauth. Requires user to re-authenticateTrackingUses the Indieweb Syndications entityExtends the content types with additional fieldsBackfeedTracks posts for likes and replies. Uses Indieweb Webmentions.Not implemented in initial releaseExecutionDefines Plugin Actions for use with ECAUses hook_insert, hook_update, etc.FeaturesLimited support for facets and images in initial releaseGood support for facets and images. As my modules are somewhat tied to my custom Drupal installation, I see the Atmosphere module better positioned for general consumption on Drupal.org and I hope to be able to contribute to it. [1] https://github.com/lieb77/atproto [2] https://github.com/affinitybridge [3] https://github.com/affinitybridge/drupal-atmosphere/tree/main

Apr 13, 2026
L
Lieb's Development Website
dev.paullieberman.net/

Working with the Atmosphere module for Drupal

After creating my own ATproto suite of modules for Drupal I was excited to see Affinity Bridge had ported the Wordpress Atmosphere plugin to Drupal. While there are some major differences they both achieve the same goal of publishing Drupal content as both Bluesky posts and Standard Site documents. Here are some of the key...

Apr 13, 2026

Personal site infrastructure, diagrammed

That I even need and have made a diagram of the infrastructure for this site speaks to how over-engineered it is. Yet, while it is ostensibly a personal site, it's a personal site that's replaced many services that I previously used.

Apr 7, 2026

Battling bots

I've already blocked entire countries to combat scrapers , I update my robots.txt for well-behaved bots (and 403 any included in the list that access anything other than my robots.txt ). In addition to these steps, I've started blocking traffic from IPs contained in Spamhaus ' DROP and DROPv6 lists.

Apr 6, 2026
Adversarial Coding — Using Competing Models as Code Reviewers
subaud icon
subaud
subaud.io

Adversarial Coding — Using Competing Models as Code Reviewers

Three months ago I wrote about a feature-workflow plugin that added structure to how I work with Claude Code. Capture ideas, plan them, implement them, ship them. The structure helped — I stopped losing track of what I was building mid-session and started actually finishing things. But the review step was weak. The plugin had its own internal review skill, and Claude was reviewing its own code but it was too agreeable. The same blind spots persisted across features. I'd work on something and i

Apr 3, 2026
V
Vale.Rocks
vale.rocks

Stay Away From Accessibility Overlays

Accessibility overlays are poor solutions to accessibility issues and in the majority of cases, inflict more problems than they solve. They don't provide legal protection and overall harm the usability of websites. They should not be used and must be avoided, with focus instead being placed on addressing the core problems.

Apr 2, 2026
L
Lieb's Log
paullieberman.org

New ATproto Suite for Drupal

I have been working on various ATproto integrations for Drupal over past few months, and have now combined them into a single suite. The code is available on Github [1]. Much of this is tailored to my custom Drupal content types and would only server as an example to others, however you should be able to use the atproto_client as is and write your own code on top of it. The individual modules provide Action Plugins for use with ECA. There are recipes for installing the ECA models. Some of the modules also depend on the Indieweb Webmention module which provides the entity types for Syndications and Webmentions. I set the Drupal core requirement to 11.3 because that is the environment I'm working in, but I'm sure most of it would work with earlier versions if you just changed that. This is Alpha level code - use at your own risk.  [1] https://github.com/lieb77/atproto

Apr 1, 2026
L
Lieb's Log
paullieberman.org

New ATproto Suite for Drupal

I have been working on various ATproto integrations for Drupal over past few months, and have now combined them into a single suite. The code is available on Github [1]. Much of this is tailored to my custom Drupal content types and would only server as an example to others, however you should be able to use the atproto_client as is and write your own code on top of it. The individual modules provide Action Plugins for use with ECA. There are recipes for installing the ECA models. Some of the modules also depend on the Indieweb Webmention module which provides the entity types for Syndications and Webmentions. I set the Drupal core requirement to 11.3 because that is the environment I'm working in, but I'm sure most of it would work with earlier versions if you just changed that. This is Alpha level code - use at your own risk.  [1] https://git@github.com:lieb77/atproto.git

Apr 1, 2026

Migrating infrastructure off Coolify

I've spent a while recently migrating my personal infrastructure off Coolify . Coolify 's an excellent tool and one that helped manage the initial learning curve of managing and deploying things when I started to self host things. As I got more comfortable with the process, issues and details I found myself wanting to remove it as an abstraction on top of what I had become comfortable managing.

Mar 27, 2026
L
Lieb's Log
paullieberman.org

Bridging the Web - Part 3

In my continued effort to syndicate my blog posts far and wide I have implement Standard Site [1]. This is an AT Protocol Lexicon for long form publishing. A Lexicon is a schema for structured data. Basically fields with strict definitions of what can go in these fields. Bluesky is also based on an AT Protocol Lexicon. The difference is that Bluesky's lexicon limits posts to 300 characters. Standard Site expands that to 3,000 characters allowing for longer essays.  The problem with this is that Bluesky cannot display posts published with the Standard Site lexicon. There are however a number on new sites that do: leaflet.pub [2] and pckt.blog [3] among others. Simply publishing my posts with Standard Site lexicon syndicates them to these sites automatically, but if I want them to show up on Bluesky I also have to publish them in their lexicon (which I was already doing). The hope is that Site Standard does indeed become a standard and becomes widely implemented. Time will tell. So now my Blog posts are available over Indieweb, Bluesky, ActivityPub (Mastodon), and now Standard Site. Noticeably absent from this list is Facebook. Facebook as I'm sure you know, is not a team player and is not interested in participating in the Open Web. a.k.a. A walled garden. This is unfortunate, because that's where all my friends are. While I may have followers on these other platforms, very few of them are people I actually know. I hope this changes. I hope I can convince more of my friends to move off of Facebook [1] https://standard.site [2] https://leaflet.pub [3] https://pckt.blog/

Mar 26, 2026