Sign in

Keith Cirkel

@keithamus.social
2.3K followers 1.2K following 589 posts

Software Cyber Shepherd. Web platform engineer. Participant: WHATWG, CSSWG, ARIAWG, OpenUICG, WebComponents CG Website: keithcirkel.co.uk GitHub: github.com/keithamus Mastodon: indieweb.social/@keithamus

PostsRepliesMedia
Keith Cirkel @keithamus.social · 22/09/2026
I just released avash: www.keithcirkel.co.uk/avash/ It’s like blurhash but uses av1 frame data encode an image, resulting in a (typically) more readable image in the same bytes as a blurhash. github.com/keithamus/av...
keithcirkel.co.uk
avash encoder
3202
Keith Cirkel @keithamus.social · 21/09/2026
We're chatting about Declarative Partial Updates at the Web Frameworks Community Group. Want to join in? discord.gg/fXCngmSwHz
discord.gg
Join the WFCG Discord Server!
The Web Frameworks Community Group (https://www.w3.org/community/wfcg/) | 115 members
040
Reposted by Keith Cirkel
Keith Cirkel @keithamus.social · 19/09/2026
I want Custom Attributes to exist - think Custom Elements (Web Components) but Attributes. I've been working on a proposal, specs, and now a polyfill: www.keithcirkel.co.uk/custom-attri... More coming soon!
keithcirkel.co.uk
Custom Attributes polyfill
79723
Keith Cirkel @keithamus.social · 19/09/2026
I want Custom Attributes to exist - think Custom Elements (Web Components) but Attributes. I've been working on a proposal, specs, and now a polyfill: www.keithcirkel.co.uk/custom-attri... More coming soon!
keithcirkel.co.uk
Custom Attributes polyfill
79723
Reposted by Keith Cirkel
king lola 👑 @lolaodelola.bsky.social · 18/09/2026
Delving deeper into browser accessibility, I’ve begun the work of implementing role computation for HTML elements in the @servo.org browser. (fingers crossed I can merge next week 🤞🏾) github.com/servo/servo/...
github.com
Layout: Get Element Role Using AccessKit by lolaodelola · Pull Request #47339 · servo/servo
This is the first part to #43734. A relationship between a DOM node and an AccessKit node is created to allow for querying the AccessKit node for the role. We are passing the get_computed_role test...
1193
Reposted by Keith Cirkel
Matt Bors @mattbors.bsky.social · 14/09/2026
It was exactly ten years ago today, on my 33rd birthday, that I posted this comic online.
484297717665
Reposted by Keith Cirkel
IntentToShip @intenttoship.dev · 09/09/2026
Gecko: Intent to ship: Scoped Custom Element Registries
groups.google.com
Gecko: Intent to ship: Scoped Custom Element Registries
Gecko: Intent to ship: Scoped Custom Element Registries
2206
Keith Cirkel @keithamus.social · 06/09/2026
I'm still making 1 game per month. I'm counting this new one for the month of August and you can't stop me. Defrag: Time to defrag some disks. www.keithcirkel.co.uk/defrag/
keithcirkel.co.uk
Disk Defragmenter
Time to drefrag some disks
491
Reposted by Keith Cirkel
London Web Standards @londonwebstandards.org · 03/09/2026
We have no meet-ups for over a year and now there are 2 with the space of a month londonwebstandards.org/newsletters/... Tell your friends @browserchoicealliance.org #OpenWebAdvocacy #UncleBruce (aka @brucel.bsky.social) #MakeTheWebBetter
londonwebstandards.org
September 2026 Newsletter announcing 2 Meet-ups | London Web Standards
London Web Standards brings together web professionals who are working for a better web. Our bi-monthly meetups provide them with an opportunity to teach, inspire, learn, network and debate.
154
Keith Cirkel @keithamus.social · 31/08/2026
That feeling when your Yack Stack is so high that you're running out of disk space with the amount of git worktrees you have (yes this is Rust. Yes I am using cargo sweep).
020
Keith Cirkel @keithamus.social · 31/08/2026
I've been playing this all day, addicting as it is frustrating. Love all the little details like how satisfying it is to shoot the rocks. If you're looking for something to take out your rage on between compiles this is a good free web game. farfield.mttshw.com
farfield.mttshw.com
Farfield - a browser rail shooter with a new world every day
Fly a procedurally generated landscape of mountains, cities, deserts and open sea. Everyone flies the same world each day - race the daily leaderboard. Free and in the browser with nothing to install.
022
Reposted by Keith Cirkel
Firefox for Web Developers @webdevs.firefox.com · 24/08/2026
Intent to ship: JPEG XL! This will be on-by-default in Firefox 157, which should become the main release version at the end of September. This includes key JPEG XL features like progressive rendering. groups.google.com/a/mozilla.or...
groups.google.com
Intent to ship: JPEG XL
As of Firefox 157 I intend to turn JPEG XL decoding on by default on all platforms. It has been developed behind image.jxl.enabled, which today is on by default on Nightly only, and has had a Firefox…
1036096
Reposted by Keith Cirkel
Mitch Dyer @mitchyd.bsky.social · 21/08/2026
We have to go back
13593
Keith Cirkel @keithamus.social · 20/08/2026
Given <button><span>Foo</span><div popover>Bar</div></button> The popover is open, you hover it, does `<button>` match `:hover`? `:active`? We could break the association on the top layer (popover) boundary. Question is: is that useful? How do you work around either way?
540
Reposted by Keith Cirkel
Firefox for Web Developers @webdevs.firefox.com · 18/08/2026
Firefox 154 landed today, and brings with it some great web platform features: 🎉 CSS text-box 🎉 CSS sibling-index() and sibling-count() 🎉 JS Iterator methods like chunks, window, includes, & join 🎉 HTTP No-Vary-Search …And more! developer.mozilla.org/en-US/docs/M...
developer.mozilla.org
Firefox 154 release notes for developers (Stable) - Mozilla | MDN
This article provides information about the changes in Firefox 154 that affect developers. Firefox 154 was released on August 18, 2026.
312314
Keith Cirkel @keithamus.social · 17/08/2026
Web Frameworks Community Group discussed Declarative Partial Updates developer.chrome.com/blog/declara.... We’re getting feedback from framework authors to take to standards bodies. Have opinions? Want to be heard? Join the discord! discord.gg/fXCngmSwHz
developer.chrome.com
Declarative partial updates  |  Blog  |  Chrome for Developers
Learn about new out-of-order streaming capabilities and the renewed HTML insertion and streaming methods available for testing from Chrome 148
1379
Reposted by Keith Cirkel
Amy Hupe @amyhupe.bsky.social · 14/08/2026
Andy DON’T Burnham more like
2153
Reposted by Keith Cirkel
Igalia @igalia.com · 12/08/2026
BIG NEWS: Bocoup is now Igalia! The two worker co-ops have agreed to join forces, with several members of Bocoup coming aboard at Igalia, along with the brand assets and web site. More details in our official announcement: www.igalia.com/2026/Joining...
Igalia + Bocoup
412438
Keith Cirkel @keithamus.social · 12/08/2026
I really love my job. I thought I'd always be a web developer, but developing the web is so much more fun! Adding new features for ~4bn customers is such a satisfying feeling.
1661
Reposted by Keith Cirkel
Naomi Saphra @nsaphra.bsky.social · 10/08/2026
Tech Company: At long last, we have created the Vast and Trunkless Leg of Stone, Standing in the Desert from classic poem Ozymandias.
10055351134
Reposted by Keith Cirkel
Wordn't of the Day @wordnt.bsky.social · 11/08/2026
Wordn't of day 222: jupenter "noun the taste and/or scent of the first few minutes of a fresh rainstorm as it hits the roof of your mouth" Play today's word: k9l.io/wordnt See past words: k9l.io/wordnt-dfns?day=222 #wordnt #game
001
Reposted by Keith Cirkel
FFConf @ffconf.org · 31/07/2026
Current status. We're also closing tickets tonight until September. More details on tickets and the event: ffconf.org/articles/202...
A poster showing "early bird ends today"
002
Reposted by Keith Cirkel
Oliver Medhurst @honk.foo · 27/07/2026
Porffor officially goes alpha on August 11th with an in-person in San Francisco! It brings self-hosting and a complete rewrite, plus more: honk.foo/porffor-alpha/
honk.foo
Porffor goes alpha August 11th
A self-hosting and rewritten Porffor launches in SF next month!
37614
Reposted by Keith Cirkel
Yen-han Chen 陳彥翰 🇹🇼🇺🇸🇺🇦 @chen-yenhan.bsky.social · 25/07/2026
the good thing about a democratic society is that we don't have to guess at what taiwanese people think:
17806114
Reposted by Keith Cirkel
Wordn't of the Day @wordnt.bsky.social · 15/07/2026
Wordn't of day 195: suscod "noun A very suspicious cod" Play today's word: k9l.io/wordnt See past words: k9l.io/wordnt-dfns?day=195 #wordnt #game
001
Reposted by Keith Cirkel
Joey Arhar @josepharhar.bsky.social · 14/07/2026
Hi! I'm working on a new HTML feature: filterable select There are two proposed API shapes so far: 1. Nesting <input> in <select> 2. Sibling <input> for listbox <select> w/id ref Option 1 is more ergonomic, but would break selects in older browsers Thoughts? (Both currently in Canary w/flag)
2211623
Reposted by Keith Cirkel
Jake Archibald @jakearchibald.com · 29/06/2026
There's an ideal set of sizing constraints for custom <select>, but the CSS is a bit tricky. Here's how to make it work, and a tour of new CSS features along the way. jakearchibald.com/2026/goldilo...
jakearchibald.com
The Goldilocks customizable select height
The 'ideal' sizing is more complicated than you think…
1331055
Reposted by Keith Cirkel
Keith Cirkel @keithamus.social · 04/07/2026
Happy 4th July American friends! Consistent feedback from my JND game was people wanting to test their strength at specific hues; some claimed they were better at detecting reds, or blues. So I figured a special "Whats My JND 4th July Edition" could do just that! 🫡🫡🫡🇺🇸🇺🇸🇺🇸🫡🫡🫡 k9l.io/jnd-4th-july
k9l.io
What's My JND? - 4th July Edition
The 4th July edition. Old Glory Blue versus a creeping algae green. How small a colour difference can you actually see?
2126
Reposted by Keith Cirkel
Helen Hou-Sandí @helen.blog · 04/07/2026
Okay I’ll bite, who’s Taylor Swift?
0131
Keith Cirkel @keithamus.social · 04/07/2026
Happy 4th July American friends! Consistent feedback from my JND game was people wanting to test their strength at specific hues; some claimed they were better at detecting reds, or blues. So I figured a special "Whats My JND 4th July Edition" could do just that! 🫡🫡🫡🇺🇸🇺🇸🇺🇸🫡🫡🫡 k9l.io/jnd-4th-july
k9l.io
What's My JND? - 4th July Edition
The 4th July edition. Old Glory Blue versus a creeping algae green. How small a colour difference can you actually see?
2126
Reposted by Keith Cirkel
Keith Cirkel @keithamus.social · 01/07/2026
Better late than never, I've finished off my game for the month of June! Introducing "Wire Loop". A game where you drag a loop around a wire, and try not to touch the wire. It has a level editor for you to share new levels among friends! k9l.io/wire-loop
k9l.io
Wire Loop
Drag the loop along the wire without touching it.
2167
Keith Cirkel @keithamus.social · 01/07/2026
Better late than never, I've finished off my game for the month of June! Introducing "Wire Loop". A game where you drag a loop around a wire, and try not to touch the wire. It has a level editor for you to share new levels among friends! k9l.io/wire-loop
k9l.io
Wire Loop
Drag the loop along the wire without touching it.
2167
Reposted by Keith Cirkel
fesshole 🧻 @fesshole.bsky.social · 26/06/2026
In programming languages that do not use templates or generics, I use the Unicode symbols ᐊ and ᐅ as visual mnemonics, like MyTypeNameᐊint64ᐅ. Works for me but coworkers think I am Satan.
151239
Reposted by Keith Cirkel
Patrick Brosset @patrickbrosset.com · 25/06/2026
CSS `field-sizing` is now Baseline Newly Available! It replaces JS code we won't be missing. web-platform-dx.github.io/web-features...
web-platform-dx.github.io
field-sizing - Web platform features explorer
The field-sizing CSS property allows form controls such as <textarea> to be sized based on their content.
13210
Reposted by Keith Cirkel
Luca Casonato 🏳️‍🌈 @lcas.dev · 17/06/2026
What's this, a new HTML proposal? Built-in localized time formatting in HTML! github.com/whatwg/html/...
<time datetime="2026-06-17T08:13:41.099Z" format="datetime">
  fallback
</time>
1942657
Reposted by Keith Cirkel
Wordn't of the Day @wordnt.bsky.social · 14/06/2026
Wordn't of day 164: glefly "adj. In a dreamy fashion, gracefully, yet not present an grounded" Play today's word: k9l.io/wordnt See past words: k9l.io/wordnt-dfns?day=164 #wordnt #game
011
Reposted by Keith Cirkel
rich harris @rich-harris.dev · 10/06/2026
There are two ways to resolve the cognitive dissonance of being on Twitter while also caring about all the awful shit happening because of Twitter 1. Leave Twitter 2. Stop caring Profoundly disappointing how many people I like seem to have chosen the latter
1446180
Reposted by Keith Cirkel
Wordn't of the Day @wordnt.bsky.social · 07/06/2026
Wordn't of day 157: cirds "noun "in cirds", in cahoots with" Play today's word: k9l.io/wordnt See past words: k9l.io/wordnt-dfns?day=157 #wordnt #game
021
Reposted by Keith Cirkel
Wordn't of the Day @wordnt.bsky.social · 03/06/2026
Wordn't of day 153: swul "adj. To attempt to romanticise something or someone unintentionally." Play today's word: k9l.io/wordnt See past words: k9l.io/wordnt-dfns?day=153 #wordnt #game
021
Keith Cirkel @keithamus.social · 02/06/2026
Try it out, would love to hear feedback!
6315
Reposted by Keith Cirkel
Wordn't of the Day @wordnt.bsky.social · 02/06/2026
Wordn't of day 152: bloutude "noun an objectively beautiful turd" Play today's word: k9l.io/wordnt See past words: k9l.io/wordnt-dfns?day=152 #wordnt #game
021
Keith Cirkel @keithamus.social · 29/05/2026
Happy Friday everyone. Here’s the game I’ve created for the month of May; keithcirkel.co.uk/wordnt. It’s a daily nonsense word puzzle, with a meta game: a quest for the best new made up word. Guess the made-up word of the day. Then define it. Upvote other definitions.
keithcirkel.co.uk
Wordn't
Guess the made-up word of the day. Then define it. A daily nonsense word puzzle.
123
Reposted by Keith Cirkel
Firefox for Web Developers @webdevs.firefox.com · 19/05/2026
Firefox 151 is out now, and brings with it some tasty new web platform features: 🎉 Container style() queries 🎉 Web Serial API 🎉 Document Picture-in-Picture API 🎉 keyboardLock on requestFullscreen …and more! developer.mozilla.org/en-US/docs/M...
developer.mozilla.org
Firefox 151 release notes for developers (Stable) - Mozilla | MDN
This article provides information about the changes in Firefox 151 that affect developers. Firefox 151 was released on May 19, 2026.
610921
Keith Cirkel @keithamus.social · 17/05/2026
If you're ever wondering "hey I wonder what Keith is up to right now"... I'm just running the http-archive through csskit and making databases from it. Just normal stuff over here.
A screenshot of a commandline executing a sql query. The text reads:

sqlite3 -csv data/css.sqlite "SELECT value_text, COUNT(*) AS n FROM decls WHERE property = 'touch-action' GROUP BY value_text ORDER BY n desc;"
none,2929
pan-y,2207
manipulation,1544
pan-x,907
auto,195
pinch-zoom,112
"pan-x pan-y",112
"var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)",93
"pan-y pinch-zoom",57
pan-Y,46
"var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)",17
var(--tw-pan-x)var(--tw-pan-y)var(--tw-pinch-zoom),13
"cross-slide-y pinch-zoom double-tap-zoom",12
"var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)",11
"pan-x pan-y pinch-zoom",9
"var(--yarl__controller_touch_action,none)",8
unset,6
pan-up,4
pan-right,4
pan-left,4
pan-down,4
initial,4
var(--b-modal-custom--page-lock-touch-action),2
"pan-y pan-x",2
"pan-x pinch-zoom",2
inherit,2
"var(--tw-pan-x, )var(--tw-pan-y, )var(--tw-pinch-zoom, )",1
var(--t1ljxn-5),1
"pinch-zoom pan-y",1
pan-zoom,1
"pan-y, pan-x",1
"pan-y pinch-zoom double-tap-zoom",1
"pan-x pan-down pinch-zoom",1
"pan-x pan-down",1
"""pan-y pinch-zoom""",1
3360
Keith Cirkel @keithamus.social · 10/05/2026
Me: “I’m so bored of playing games where the protagonist is a middle aged white man. Give me something different!” Gamedevs: store.steampowered.com/app/3710850/... Me: “… not quite what I meant” (but I’m still definitely going to play it)
store.steampowered.com
Become on Steam
Become is a short single-player third-person adventure where you embark on life's most fantastical journey, as one of millions of sperm. Survive the perilous microcosm, wiggle, dash, and outcompete ri...
150
Reposted by Keith Cirkel
Daniel Appelquist @torgo.com · 07/05/2026
Reminder : if you live in England and you’re planning to vote in the local elections today, take an acceptable form of ID. www.gov.uk/how-to-vote/... 🗳️
gov.uk
How to vote
An overview of voting in the UK, including voting in person, postal and proxy voting, and voting if you're abroad.
033
Reposted by Keith Cirkel
IntentToShip @intenttoship.dev · 04/05/2026
Gecko: Intent to prototype: Opaque Ranges
groups.google.com
Gecko: Intent to prototype: Opaque Ranges
Gecko: Intent to prototype: Opaque Ranges
094
Reposted by Keith Cirkel
IntentToShip @intenttoship.dev · 04/05/2026
Gecko: Intent to Ship: field-sizing:content
groups.google.com
Gecko: Intent to Ship: field-sizing:content
Gecko: Intent to Ship: field-sizing:content
0266
Keith Cirkel @keithamus.social · 01/05/2026
The Web Frameworks Community Group now has over 60 members representing Alpine, Astro, Ember, Lit, Lustre, Marko, Preact, Qwik, React, Ripple, Solid, Stimulus, Svelte, Vue, Web Components, htmx, and more! Did I miss your favourite? Come join us and represent! discord.com/invite/fXCng...
A screenshot showing the icons of the frameworks listed in the post.
2335
Reposted by Keith Cirkel
Oliver Medhurst @honk.foo · 26/04/2026
I got hooked on self-hosting so I made my own entire framework and deployment stack running on my own hardware. porffor.dev and goose.icu have been running on it for a few days. no I wouldn't recommend doing this sort of thing for serious use (and no I won't release it) but it is very fun!
A Grafana screenshot showing:
- req/s and egress per app
- status code distribution
- response times
- power usage
- cpu and memory usage per replica
- porffor RSS per replica
- porffor memory details per appA terminal screenshot showing the command "porch deploy" being run:

deploying porffor-dev (20260426T152114Z) -> honk@192.168.18.104
building
  [1.01s]   compiling app
  [592ms]   reading host state
  [222ms]   uploading release files
  [1.33s]   building image

rolling out
  [11.10s]  replica 1/2: OK
  [11.12s]  replica 2/2: OK

finishing
  [386ms]   finalizing host config
  [197ms]   pruning release 20260426T145728Z
  [628ms]   settling compose project
  [593ms]   reloading prometheus

deployed porffor-dev (20260426T152114Z) in 27.18s
5573