Pinned
Misha
Misha
@mkrl.xyz
Software Engineer / Developer Experience I will speak at your conference for food! Unpublished author, monthly host @warsawjs.com
263 followers301 following110 posts
I always wanted to recompile a browser and make arrays start at 1 to see how the web breaks. While an entire browser is a bit too much work, a compact JS engine is pretty doable. Meet Qu1ckJS - a JS engine where indexed collections start at 1! Play around with the REPL here: mkrl.xyz/qu1ckjs
Thanks to how portable the original QuickJS is (and to modern C tooling brought in by quickjs-ng) it turned into a fun weekend project. String indexing, arguments, atomics element positions, anything I could think of that used to start at 0. Get the binaries here: github.com/mkrl/qu1ckjs/releases
Listening to @danabra.mov on @syntax.fm talking about atproto gave me a mad idea I want to build a "community box" of sorts: a physical device that enables posting to a PDS that is contained on the device itself a low-powered shitty server that is only online during events, powered by a hand crank
It's live on the Web Store! chromewebstore.google.com/detail/hpmeg... Because a lot of the web is SPA those days, I sometimes forget I have this installed. Then, when my bank or GitHub starts spinning, I experience joy unlike any other.
Made a browser extension that randomly adds silly cross-document view transitions to all websites. Now it's time to create a collective repository of silly transitions for all of us to share.
@developer.chrome.com Web Store TBA, but you can play around with it unpacked here github.com/mkrl/transit... Safari may be added later as cross-document view transitions are supported, not yet fully landed to @webdevs.firefox.com
Turns out you can fit an entire snake game into a single <div> with CSS border-shape mkrl.xyz/border-snake/
My conference tech demo accidentally turned into capturing.website I always wanted to build a simple full-featured screen recorder based purely on web standards. Turns out, you can fit recording, processing and encoding in under 200kb (probably could have pushed it even lower).
It started with playing around with html-in-canvas, however the end product contains none at all. Videos are directly saved into a local folder (or OPFS for @webdevs.firefox.com and Safari). Encode into a bunch of cool formats with WebCodecs. You can even display an arbitrary floating window!
I took a picture of @twnsnd.com taking a picture of @jeremias.codes taking a picture of Richard taking a picture of his flat white.
I took a picture of @jeremias.codes taking a picture of @danielroe.dev taking a picture of his flat white.
I'm absolutely charmed and positively delighted by this talk @cydstumpel.nl @jsheroes.io All in on RFWS™
Just went to report a bug in @voidzero.dev formatter. Spent 30 minutes setting up a classic reproduction repo. Then discovered playground.oxc.rs. It has an option to compare with prettier directly and if there's a difference IT FILLS OUT THE ISSUE TEMPLATE FOR YOU. I absolutely love it
...just be sure it still has enough color contrast! While it does indeed look cool, it can break familiar cognitive patterns. Users can rely on selection visibility for many different needs.
Don't forget to style text selection! Add fancy styling when users select text on your website by using the ::selection pseudo-class ✌️
alright, #BadUXWorldCup is too fun to pass up how about a virtualized date picker? "virtualized" as in "virtual machine" surprisingly easy to operate, just write some bytes to input a date here's me entering the birthday of Internet Explorer, get creative with yours! mkrl.xyz/virtualized-...
📣 Attention internet 📣 The final Judge of the #BadUXWorldCup is @kevinpowell.co Kevin has spent the last decade teaching you all how to build great accessible websites with good UX. Now forget all that and build a horrible date picker! Submit your entry at: badux.lol
Today I had one of those dreams when you wake up and write your genius idea down. my notes: - hypothetical assertions in @vitest.dev - expect(n).toWouldHaveBeenCalled - expect(n).toMayHaveBeenCalled in my morning mind this was revolutionary, unlocking branching reality timeline API
This is so cool. One of the best explainers on this topic I've seen so far.
✨ Big O ✨ Let me take you on a visual introduction to what big O notation is in my new blog post: samwho.dev/big-o. With big O notation you can better understand how algorithms will perform in practice, finding orders of magnitude improvements often with very simple changes to your code.
you: vibecode the next billion $$$ saas with claude opus 4 max 20x me: javascript event loop book for kids with gemini g.co/gemini/share...
The time has come! After a long time off I'm looking for a new remote job. I do developer experience (perhaps a bit of devrel as well!). Design systems, SDKs, front-end tooling is my jam. You can see some of my work at mkrl.xyz.
It was an absolute pleasure to give a slightly chaotic JS ecosystem tooling overview talk at @jnationconf.bsky.social Full of fantastic people and packed with content, what a conference!
Speaking of awesome speakers in the @jnationconf.bsky.social JS track with have @mkrl.xyz with an history lesson
I have 1 ticket to @jsheroes.io to give away. If you are a student or simply someone who is on the verge of going - please DM me. DM me if you know someone who might need one. Very sad to miss this year due to a family emergency. Hands down, one of the best JS conferences in EU.
This video comes up every time I try to explain what is NotebookLM to anyone else. www.youtube.com/watch?v=gfr4...
In an attempt to comply with privacy concerns, Google made a mistake that collectively erased timelines for (possibly) thousands upon thousands of users. I might be late to the party to discover this, but it still hurts. Here's a longer read: www.reddit.com/r/GoogleMaps...
Incredibly proud day for myself and my co-founder @eric.vicenti.net. 🚀 Today we're launching a business that redefines lifes, brings soul back into AI and expands taps into the uncharted market of exclusive, premium-only handcrafted assistants. artisanal-ai.com
Loved being here for the first edition! The one and only international conference in North Macedonia, you simply can't afford to miss it.
🚨Call for Proposals is NOW OPEN for What The Stack 2025! Got an innovative web dev idea or a killer project to share? We want YOU! 😎 👏4 Stages ⭐️Awesome CFP Committee 😍 Inspire the Web Development Community For more info visit the website: wts.sh
I have just discovered a keygen music radio. This scratches the itch. keygenmusic.tk
I ended up with a simple @pnpm.io workspace setup. One tsconfig for each package extending the shared one. I thought I could never live without NX, but it turns out there is a rudimentary support for build order control with pnpm recursive run --sort [task] (works for a simple dependency tree)
This time I wanted to try Rslib @rspack.dev. @scriptedalchemy.bsky.social got me really excited when we met in Belgium. I LOVED the simplicity, but setting up @nx.dev was not pleasant. Hilariously enough, the "monorepo" section of the docs is a blank page lib.rsbuild.dev/guide/advanc...
There are numerous stable and proven ways to do it but nothing that can be considered easy to set up, modern and frictionless enough. I remember @mattpocock.com had a great gist gist.github.com/mattpocock/d... summarising pros and cons for most of the ways to go about it, really good summary.