Keith Cirkel

@keithamus.social

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

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)

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

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?

k9l.io

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

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?

k9l.io

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.

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

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...

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.

developer.mozilla.org

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

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)

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...

store.steampowered.com

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