Janis Jansen 🌳
banner
janis.me
Janis Jansen 🌳
@janis.me
Building the future of Music @ElevenLabs (and open source CSS tools @janis.me). Previously fluid simulations @dive.

Check out surimi.dev if you like CSS and typescript.

🔗 janis.me
🖥️ github.com/janis-me
📽️ youtube.com/@janis-me
We nominated some open source maintainers and tools to receive funding from the OSS Engineers Fund and will donate $22k to the projects we rely on at ElevenLabs! Some of these are my favorite tools I use daily that I think really deserve support like PostCSS, Graphite, ProseMirror and more.
December 15, 2025 at 7:36 PM
Beware, a linkedin-type post...

I'm super excited to share that I've joined ElevenLabs to work on the creative platform and music as a full-stack dev!

Music and next-gen software have been a passion for literally my entire adult life. Now I can combine them in the best way!
December 2, 2025 at 8:29 PM
November 23, 2025 at 8:58 AM
You can't stop me from playing Metroid Fusion on a GBA emulator on my modded Wii.

I do own a computer and I do own several other consoles. But this is the way you are supposed to play GBA games.
November 4, 2025 at 4:14 PM
We're getting there! Was a very productive week.
October 23, 2025 at 8:14 PM
Speaking of Vendor prefixes. These are the ones I found so far

Stopping with the "spam" now :) sorry
October 19, 2025 at 1:04 PM
I also got one for (I hope) every single pseudo class and pseudo element!

There are some edge-cases though. like `:matches()`. And it excludes vendor-prefixed ones. Couldn't be bothered.
October 19, 2025 at 1:00 PM
I'm learning so much more about CSS by building surimi (because I am forced to read the CSS specification).

For example, just wrote some types to figure out all possible @media query descriptors you can use.

It's 40 in total
October 19, 2025 at 12:55 PM
I'm in a deep `extends...infer` typescript hole again. And it's just awesome. Getting a lot done today!
October 17, 2025 at 8:46 PM
From the main Page, when I search for any domain and click on the search button, I am re-directed and get an error. If I then reload the page, everything works again.

I could re-produce it consistently by clearing the website cache.

I'm on the latest Firefox Mobile (android)
October 17, 2025 at 10:59 AM
The first version of the 🍣 surimi playground is live!

It runs the @rolldown.rs based compiler in a WebContainer, and updates the editor instantly!

Check it out! surimi.dev/playground
Compile times are bit slower than locally tho.

Also
- has type-hint support
- you can install new packages
- ...
October 15, 2025 at 10:39 AM
It's magnificent
October 14, 2025 at 8:13 PM
Outrageous!
October 3, 2025 at 6:02 AM
Oh, and yes: You can do everything typescript can do. Import externals, if conditions... save selectors to variables and share them across files.. mixins...

0 runtime as well. I made a vite plugin for it!
October 1, 2025 at 9:02 AM
It has full typescript hinting support as well.

You see what CSS will be built *inside* the type hints.
October 1, 2025 at 8:53 AM
Oh no, it's really happening
October 1, 2025 at 8:51 AM
I love this! On blueview.app, you can see who recently interacted with you, and much more insightful data!

Shout out! Don't want to tag all these busy people though :)

Thanks for making this @srsholmes.com
September 29, 2025 at 8:28 AM
You probably knew that a typescript enum, when compiled, adds extra runtime code.
But did you also know, that a `const enum` does not?

Might be worth using instead of string literals!
September 9, 2025 at 12:28 PM
Just discovered the "Xerox Alto" UI in the latest blog post by @bradfrost.com and it looks so damn good.
This aesthetic is exactly what I was going for with my website.. but I might have deviated too far.

Also, it's a brilliant blog post, check it out at bradfrost.com
August 29, 2025 at 11:53 AM
I updated my website! It now has:

- prettier, colorful dark scheme (below)
- a CV page
- a new blog post (for my CSS nerds)
- better accessibility, progressive enhancements etc.
- automatically generated PDFs (like the CV page).

Check it out at janis.me and tell me what theme you like the most!
August 28, 2025 at 6:29 PM
Here, fixed it.
August 15, 2025 at 7:52 AM
I love Sweden
July 3, 2025 at 7:34 PM
It's not easy to keep up with css features..😅 even though they are sooo great!

I loved taking the 2025 state of CSS survey. Give it a shot!

survey.devographics.com/en-US/survey...
June 23, 2025 at 4:30 PM
* specifically, using `comlink` by @surma.dev et. al. to create multiple instances of a class within the worker. That way, you can 'spawn' them easily.

And while we're at it: While digging through the source of squoosh.app, I found this gem of an example image:
(@jakearchibald.com sorry)
June 17, 2025 at 9:19 AM
Super hyped about an, admittedly, very tiny library:

handlery.dev let's you add awesome class-based event handlers for all kinds of emitters (like emittery, node's EventEmitter etc.) With the magic of decorators!

Now that TC39 decorators are stage 3 and moving forwards, let's start using them!
June 12, 2025 at 6:13 PM