Reposted by Kenton Vizdoschloe 🐇 @sapphic.moe · 02/03/2026this is so cool haptics.lochie.mehaptics.lochie.meWebHaptics – Haptic feedback for the mobile web.Haptic feedback for the mobile web. 1322446
Kenton Vizdos @kv.codes · 26/02/2026Instead, create a browser extension that’ll show OTP codes sent to emails :-) 100
Kenton Vizdos @kv.codes · 14/02/2026Takeaway: when you want a targeted update, treat it like a file-level import. Use git restore, keep main clean, and keep the change set small and auditable. 000
Kenton Vizdos @kv.codes · 14/02/2026After running it, you still control what lands in main. Review the diff, run tests, then commit just that file change. 100
Kenton Vizdos @kv.codes · 14/02/2026Command: git restore --source branch_name -- file_path This replaces the file in your current branch with the version from the specified branch. 100
Kenton Vizdos @kv.codes · 14/02/2026Git can restore a file from another branch directly into your working tree. No cherry-pick, no merge commit, no rebasing gymnastics. 100
Kenton Vizdos @kv.codes · 14/02/2026Scenario: you updated a file in a branch, but main only needs to update that one file. Merging the branch would pull unrelated commits, risk conflicts, and expand the review surface. 100
Kenton Vizdos @kv.codes · 14/02/2026Needed one change from a feature branch, without dragging the whole branch into main? There is a clean Git move for that. Quick thread on copying a single file across branches, no merge required. 100
Kenton Vizdos @kv.codes · 13/02/2026Takeaway: avoid shadowing predeclared identifiers (`nil`, `len`, `new`, `make`). Go allows it, but it creates code that is correct and deeply misleading at the same time. 000
Kenton Vizdos @kv.codes · 13/02/2026Finally: ```go fmt.Println(x, nil) ``` prints something like: `<nil> a` `x` is still the real nil interface value. `nil` is your local string variable. Same token, different binding. 100
Kenton Vizdos @kv.codes · 13/02/2026That comparison is false. `x` is a nil interface value, not a string. So the `panic(nil)` never runs, even though it reads like it should. If it did run, it would panic with `"a"`, because `nil` is your string. 100
Kenton Vizdos @kv.codes · 13/02/2026So this line: ```go if x == nil ``` is no longer “is x nil?”. It is “is x equal to the string `a`?”. In other words, it becomes: ```go if x == "a" ``` 100
Kenton Vizdos @kv.codes · 13/02/2026After `nil := "a"`, every `nil` in that scope refers to your string variable, not the built-in `nil`. You did not change the language, you just hid the predeclared identifier behind a local name. 100
Kenton Vizdos @kv.codes · 13/02/2026In this program: ```go var x any nil := "a" ``` `x` is the zero value for `any`, which is a nil interface value. Then you create a new variable literally named `nil`, holding `"a"`. 100
Kenton Vizdos @kv.codes · 13/02/2026Go lets you do something that feels illegal: shadow `nil`. Yes, `nil` is not a keyword. It is a predeclared identifier, so you can redefine it in a scope, and the compiler will accept it. 100
Kenton Vizdos @kv.codes · 13/02/2026Web Share API enables native sharing from the browser, via `navigator.share({ title, text, url, files })`. It returns a promise, so you can log success vs cancel. Implement feature detection and fall back to copy-to-clipboard for unsupported browsers kv.codes/post/Web-Share-APIkv.codesWeb Share APIA quick dive into the Web Share API: how it works, when to use it, and why it's surprisingly useful for modern web apps (especially on mobile). Includes code, fallbacks, and a few UX tips. 000
Reposted by Kenton VizdosBruce Lawson @brucel.bsky.social · 22/12/2025Masonry Layout is now grid-lanes css-tricks.com/masonry-layo...css-tricks.comMasonry Layout is Now grid-lanes | CSS-TricksIt's settled! A new CSS display property keyword called grid-lanes will trigger a masonry layout mode. 1193
Kenton Vizdos @kv.codes · 31/10/2025I saw you’re post on self hosting Reddit, seems to have done well!! Congrats! 010
Kenton Vizdos @kv.codes · 26/09/2025I’d guess it’s people asking “what’s Bruno?” when they see it 😅 000
Reposted by Kenton VizdosFilippo Valsorda @filippo.abyssdomain.expert · 14/08/2025Just refreshed the whoami.filippo.io database. If you are one of the “lucky 10,000” who’s never heard of it, try $ ssh whoami.filippo.io 2426
Kenton Vizdos @kv.codes · 07/08/2025linecon was an experience 😆 8pm-8am eeesh. I’ll probably go in a tad later next year ;) 020
Kenton Vizdos @kv.codes · 02/08/2025try out just files next! make has a ton of useful stuff for detecting build changes, but with go, it’s not *as* big of a concern, so more simplistic justfiles work really well imo 110
Reposted by Kenton VizdosTib3rius @tib3rius.bsky.social · 30/07/2025Base64 encoding is everywhere on the web: in HTTP headers, JWTs, even in HTML. But what is it and how does it actually work? I break it down in my latest video! Watch now: youtu.be/8v4moossLXo 1205
Kenton Vizdos @kv.codes · 24/07/2025Charge for an API Key. Devs can scrape, at least an API key you can track usage and charge appropriately 😉 010
Kenton Vizdos @kv.codes · 14/07/2025The untold truth about Sentry? It's an amazing tool. Getting users to click the "Report a bug" button? Hardest challenge in life. 000
Kenton Vizdos @kv.codes · 11/07/2025Honestly dunno, I haven’t used either enough! 😅 I like the hands-on-code bit of motion canvas, though. 010
Kenton Vizdos @kv.codes · 11/07/2025Quite nice! I’ve always been curious about how to make those nice lines between things.. how are you making that happen? Is it a chart? 110
Kenton Vizdos @kv.codes · 09/07/2025ah yes, the big conundrum of using Snappify or code it up in motion canvas 😩 110
Kenton Vizdos @kv.codes · 09/07/2025Correlation events, because why not! 🤩 “What caused that massive spike in downloads? Oh, a spike in Bluesky refereed downloads that day” 100
Kenton Vizdos @kv.codes · 08/07/2025“Insightful” feels more actionable.. I can do things with insights; can’t do much with power (well…) 010
Kenton Vizdos @kv.codes · 08/07/2025I like the contrast of “yet”. But “simple and insightful” also works 😅 110
Kenton Vizdos @kv.codes · 08/07/2025I agree. Taking a closer look at the video, a few things are interesting: - it never finishes loading - even once loaded, a cache is used. Clicking refresh does a hard pull. I modified my internal user filter as a demo. Solution here is probably “let it load, then click reload if still persists” 020
Kenton Vizdos @kv.codes · 08/07/2025Somewhere, a Sentry (or ehm PostHog error capture) hopefully triggered 010
Kenton Vizdos @kv.codes · 08/07/2025I read up on a bunch.. I like how just is just a command runner, not a full build tool imo. I don’t believe Go gets much benefit from file-awareness. Might be helpful for building frontend? My prod is built in ci docker, though. Plus, “just run” is way more fun than “task run” 😝 000
Kenton Vizdos @kv.codes · 08/07/2025justfiles are so nice 😀 makefiles, but better. and more go. #golang 100
Reposted by Kenton VizdosRob Bowley @robbowley.net · 05/07/2025Every slide in @charity.wtf's deck "In praise of normal engineers" is a banger speakerdeck.com/charity/in-p...speakerdeck.comIn Praise of "Normal" Engineers (LDX3)The software industry is obsessed with hiring and recruiting “top talent”, “best of the best”, “10x engineers”, and so on. I think this obsession misund… 48522
Kenton Vizdos @kv.codes · 05/07/2025this seems like such a good conference, hopefully one year I’ll be able to go! 110