Sign in

🍥kvndy

@kvndy.bsky.social
59 followers 88 following 595 posts

Unaffiliated ex Mondo Kim’s. Called “Unemployable” by Marc Maron. Writing a chess web app for you and your robot friend

PostsRepliesMedia
🍥kvndy @kvndy.bsky.social · 28/07/2026
A.I. generated images with obvious latent space artifacts, of chess pieces and the word vibe of varying legibility
020
🍥kvndy @kvndy.bsky.social · 21/07/2026
Sunflower Lecithin dramatically reduces the frequency and severity of iatrogenic seizures
010
🍥kvndy @kvndy.bsky.social · 17/03/2026
You are an expert artist from the Japanese collective Jikken Koubou. Form follows function. The medium is the message. Be curious
000
🍥kvndy @kvndy.bsky.social · 17/03/2026
Chess notation doesn’t just predate the personal computer, it predates the Leyden jar chess-teacher.com/history-of-c...
000
🍥kvndy @kvndy.bsky.social · 16/03/2026
There is no Relative Animation skill 😥 There is no Relative Animation skill 😍
The bus passengers meme
000
🍥kvndy @kvndy.bsky.social · 16/03/2026
Kind of embarassing to admit but I only just recently replaced `execCommand` for textarea undo/redo with my own undo management library. Works well except I still haven’t figured out how to preserve scroll position after the window is resized
001
🍥kvndy @kvndy.bsky.social · 14/03/2026
Our blessed frontend / their barbarous backend
000
Reposted by 🍥kvndy
Adam Argyle @nerdy.dev · 07/03/2026
how to make #CSS view transitions swoop or have motion blur or how I learned to help view transitions not always go in straight lines ⤷ nerdy.dev/swoop-there-...
nerdy.dev
View Transitions can swoop‽ · March 7, 2026
How to make View Transitions not always a straight line
56811
🍥kvndy @kvndy.bsky.social · 05/03/2026
“Right side of history” www.einpresswire.com/article/8973...
einpresswire.com
Supermajority of American Voters Support Health and Medical Freedom, New Poll Reveals
A New Zogby Poll Reveals a Nation in Revolt against Mandates
000
🍥kvndy @kvndy.bsky.social · 02/03/2026
Apple intentionally sabotaged the pattern by changing clamping order from post to pre compositing after I spoke of it publicly. It’s still broken on the web today codepen.io/kvndy/pen/Ea...
000
🍥kvndy @kvndy.bsky.social · 02/03/2026
Fifteen years of forbidden animation openradar.me/12085417
openradar.me
rdar://12085417: Explicit Additive Animation - Bounds and Opacity
100
🍥kvndy @kvndy.bsky.social · 25/02/2026
www.chess.com/blog/Chessab...
chess.com
Rating Your Moves: Guess the Elo, Move by Move
When a chess game ends the outcome is simple: your rating goes up or down. The thoughtful buildup, rush decisions, small inaccuracies and big blunders are all condensed into one number. However, chess...
000
🍥kvndy @kvndy.bsky.social · 14/02/2026
I hope your robot likes the software I’m writing for it
A still from the movie "Interstellar" (2014) of a spaceship falling into a singularity
000
🍥kvndy @kvndy.bsky.social · 12/02/2026
Just published an update to undo-manager on NPM. Send your robot friend over if you want to preserve and restore presentational state (appearance) through the undo stack www.npmjs.com/package/@kvn...
000
🍥kvndy @kvndy.bsky.social · 09/02/2026
Memories. You’re talking about memories.
A still from the movie "Blade Runner 2049" (2017) showing a dimly-lit birthday party
000
🍥kvndy @kvndy.bsky.social · 08/02/2026
epoch.ai/benchmarks/c...
epoch.ai
Chess Puzzles
100 novel puzzles, generated programmatically with a chess engine. Each puzzle has a single best next move.
000
Reposted by 🍥kvndy
Bramus @bram.us · 29/01/2026
🎉 Yay, I got the glitches fixed! (*) The solution was to do less. No more copying of animations from one element onto the other, I simply directly apply them on the ::view-transition-group(box). (*) In Firefox. Both Chrome and Safari already were (and still are) glitchy :-/
1103
🍥kvndy @kvndy.bsky.social · 30/01/2026
I would rather they stick around, as with my preferred animation technique. Conservation of UI energy: to stop an animation, run an equal and opposite one in the other direction (only half joking)
000
🍥kvndy @kvndy.bsky.social · 29/01/2026
Sorry for the logorrhea. A long-running CATransaction used to block rendering. Had to start using backwards fill when Apple fixed it. Animation start time may have somehow been after the current time. It rendered in a new location without an animation to put it back where it came from, for one frame
000
🍥kvndy @kvndy.bsky.social · 29/01/2026
I didn’t realize it was possible to handle VT retargeting with Javascript, especially for additive and relative. Long ago I fixed Core Animation flickering with a backwards fill. To this day I superstitiously use backwards with Web-Animations. (Behavior is slightly different, unsure if it helps)
000
🍥kvndy @kvndy.bsky.social · 28/01/2026
Retargetable View Transitions might become reality! I’ve sort of slacked off on my attempt, but now it’s getting the attention it deserves. Absolute best news ever:
030
🍥kvndy @kvndy.bsky.social · 28/01/2026
Best news ever! The flickering is the pattern’s Achilles Heel. Animations must be applied at the same time property values change since they’re added together, but getting the timing right is implementation dependent
010
Reposted by 🍥kvndy
Bramus @bram.us · 27/01/2026
Here’s an updated version of that first demo, using a technique @kvndy.bsky.social taught me: relative animations. The path the dot follows is much smoother now as it doesn’t get interrupted at its mid-flight location but, instead, the new animation gets added to the existing ones. However …
161
🍥kvndy @kvndy.bsky.social · 28/01/2026
The probability distribution of Todo List applications
000
🍥kvndy @kvndy.bsky.social · 19/01/2026
Two pixels to the left
A screenshot from the movie "Blade Runner 2049" of the character named Luv getting a manicure
000
🍥kvndy @kvndy.bsky.social · 11/01/2026
You are an expert prompt engineer
000
🍥kvndy @kvndy.bsky.social · 03/01/2026
Status update: yak shaving
A still from the cartoon "Ren & Stimpy" of a yak shaving
010
🍥kvndy @kvndy.bsky.social · 24/12/2025
Some chess apps insert a delay before replying with the next engine move, to align with user expectations and not bruise their ego
000
🍥kvndy @kvndy.bsky.social · 18/12/2025
Animation is a UI diff
000
🍥kvndy @kvndy.bsky.social · 17/12/2025
Once upon a time, the expected pattern for animating transforms was to start at zero instead of end, then set new values on completion. To prevent jumping to new start values on interruption, the workaround was to block or queue events just like with View Transitions today
000
🍥kvndy @kvndy.bsky.social · 11/12/2025
Do the old rasterized layers have to be blown away on interruption, and why?
010
🍥kvndy @kvndy.bsky.social · 11/12/2025
I think the reason all elements get rasterized even when not exiting is the root pseudo acts as a shared ancestor for reparenting to avoid stacking issues. Swapping out rasterized layers on completion seems unavoidable, but will it be possible to animate those layers relatively?
100
🍥kvndy @kvndy.bsky.social · 10/12/2025
The former is now an antipattern. The latter is now an industry-backed best practice
100
🍥kvndy @kvndy.bsky.social · 10/12/2025
Imagine the code smell
000
🍥kvndy @kvndy.bsky.social · 09/12/2025
Once upon a time, the expected pattern for animating transforms was to start at zero instead of end, then set new values on completion. On interruption, devs would block or queue events to avoid jumping to new start values, just like what’s done with View Transitions today
000
🍥kvndy @kvndy.bsky.social · 17/11/2025
Earlier experiments with a new property `discrete-state` that always returned discrete values for both getComputedStyle and getBoundingClientRect gave mixed results. Functionally separate layout and rendering path, but ultimately more beneficial to me as a learning experience
010
🍥kvndy @kvndy.bsky.social · 17/11/2025
Added an optional boolean parameter to getComputedStyle in (my local copy of) Firefox that returns discrete, non-animated values when true. Next up is getBoundingClientRect but will be much harder gitlab.com/kevindoughty...
100
🍥kvndy @kvndy.bsky.social · 16/11/2025
All properties instead of just transforms. No out-of-bounds keyframes. Superior blending than “Faster Reversal”. CSS Transitions and Animations. Emergent physics. Drag easing from one to one. Discrete collection animation. Could View Transitions be improved too? Still waiting. Until then, JavaScript
impl Procedure {
    /// Returns this procedure as a pair of weights.
    ///
    /// This is useful for animations that don't animate differently
    /// depending on the used procedure.
    #[inline]
    pub fn weights(self) -> (f64, f64) {
        match self {
            Procedure::Interpolate { progress } => (1. - progress, progress),
            Procedure::Add => (1., 1.),
            Procedure::Accumulate { count } => (count as f64, 1.),
            Procedure::Blend => (1., 1.),
            Procedure::Subtract => (-1., 1.),
        }
    }
}
010
🍥kvndy @kvndy.bsky.social · 16/11/2025
Finally, there’s a use case for non-relative additive animation. Please also consider the possibilities if we had `transition-composition: blend` and `animation-composition: blend`, which use a subtract operation internally
impl Procedure {
    /// Returns this procedure as a pair of weights.
    ///
    /// This is useful for animations that don't animate differently
    /// depending on the used procedure.
    #[inline]
    pub fn weights(self) -> (f64, f64) {
        match self {
            Procedure::Interpolate { progress } => (1. - progress, progress),
            Procedure::Add => (1., 1.),
            Procedure::Accumulate { count } => (count as f64, 1.),
            Procedure::Blend => (1., 1.),
            Procedure::Subtract => (-1., 1.),
        }
    }
}
000
🍥kvndy @kvndy.bsky.social · 15/11/2025
Has localized change descriptions and coalescing for continuous inputs like sliders, unlike most of the other packages on NPM. Has a solution to preserve appearance and presentation unlike all of the other packages on NPM. Also signals 😘
000
🍥kvndy @kvndy.bsky.social · 15/11/2025
Updated undo-manager to use up-to-date dependencies www.npmjs.com/package/@kvn...
000
🍥kvndy @kvndy.bsky.social · 11/11/2025
If I remember correctly, every element gets rasterized instead of just exiting ones. Don’t know why they did it this way. So many design decisions that run completely counter to everything I tried to establish with Relative Animation. There must be a reason, I’ll find out soon
000
🍥kvndy @kvndy.bsky.social · 11/11/2025
I’ve read in several places that “View Transitions are like FLIP animations” but that is in no way correct. They start from identity instead of end at identity. Now I get to figure out why they were implemented this way
100
🍥kvndy @kvndy.bsky.social · 11/11/2025
View Transition animation starts from a transform of “None” and ends at a positive or negative value! Now I need to figure out how to reverse this. Pseudos need to be positioned at destination values. Exciting progress
100
🍥kvndy @kvndy.bsky.social · 11/11/2025
It’s possible to set the animation-composition of a View Transition to add or accumulate, which only gives nonsensical results. This reinforces my assertion there is no useful non-relative pattern for additive animation
000
🍥kvndy @kvndy.bsky.social · 10/11/2025
First deep dive into the Firefox View Transitions implementation. Pretty sure my math is correct re: subtract op, but elements scale to zero. First thought is pseudos have no layout/graphics transform, it’s entirely determined by animation, i.e. nothing to animate relatively to
100
🍥kvndy @kvndy.bsky.social · 10/11/2025
An entirely new way of animating interactions!
000
🍥kvndy @kvndy.bsky.social · 10/11/2025
An easing made from a log spiral around one is good for dragging codepen.io/kvndy/full/b...
A graph of a spring easing with y = 1 at t = 0 and y = 1 at t = 1, with many plots shaded from green to red, which extend y above 1, then below, then above, settling at 1 when green, and the opposite when red
000
🍥kvndy @kvndy.bsky.social · 09/11/2025
Can someone help me fit this into my header?
A still from "Le Voyage dans la Lune" (1902) of the crew asleep under the stars, moon, and planets represented as people
000
🍥kvndy @kvndy.bsky.social · 09/11/2025
That’s actually a well written Signals library for React, Preact, Solid, Svelte 4 stores, and Vue shallow refs. There’s a hooks implementation too but it’s bunk
000