Sign in

Steven Vandevelde

@tokono.ma
590 followers 437 following 722 posts

Creator of diffuse.sh | Distributed + malleable tech & user agency advocate | Web engineer | github.com/icidasset | tangled.org/tokono.ma | tokono.ma | 🇧🇪 Available for work, contract or full time.

PostsRepliesMedia
Steven Vandevelde @tokono.ma · 29/09/2026
Beautiful! Reminds me of:
A park in somewhere in Lisbon.Close up of the path in the park.
111
Steven Vandevelde @tokono.ma · 16/09/2026
Quite liking this setup ✨ Niri (compositor) + Noctalia (shell) + Vicinae (launcher) MacOS icons + cursor Adwaita Sans is quite good! Not gonna attempt to restyle window decorations anymore, there's always an application where it doesn't work.
Screenshot of desktop, shows customised Noctalia bar + Vicinae launcher.
000
Steven Vandevelde @tokono.ma · 26/08/2026
It's alive 🎉 Good stuff @dholms.at! It doesn't have the ability yet to invite others to the space. Are all the pieces for that already in the alpha SDK?
Atmosphere, space edition, facet for Diffuse. Allows for playlists, tracks and other data to be stored in on a space.
120
Steven Vandevelde @tokono.ma · 14/08/2026
So cool that I can just generate this interface without interfering with the rest of the software.
A generated interface for Diffuse that interacts with the data and components already enabled on your Diffuse dashboard. This one checks the selected playlist for which tracks cannot be found in your audio collection and then renders a list with a preview button which plays a preview for that track from Deezer.
020
Steven Vandevelde @tokono.ma · 21/04/2026
That said, we're getting closer to the goal though. Have LLMs generate working UIs in minutes on top of your user-data and the malleable platform underneath it. Just generated this UI, it just borks the code because regular Claude isn't allowed to fetch code without explicitly linking to it.
210
Steven Vandevelde @tokono.ma · 20/04/2026
(4) There's a default configuration for the web components which enables communication across tabs. Makes it easy to use in the "interfaces" and "features" we talked about earlier. Also allows for different state groups, eg. see screenshot, Deck A + Deck B; which have separate audio, selection, ..
Screenshot of the same interface but configured with a different group so they have different state.
140
Steven Vandevelde @tokono.ma · 20/04/2026
(1) + (2) = (3) These two things together give us a malleable and cooperative platform to build audio playback software and anything related. Though I guess you can build anything you want on this platform, it doesn't need to use the Diffuse audio-related components tbh.
Screenshot that captures a split view of various Diffuse interfaces.
240
Steven Vandevelde @tokono.ma · 01/04/2026
Diffuse has turned into this malleable cooperative software environment and I wonder if this should be its own thing. Not crazy complicated I guess, it’s basically a “software loader” that loads html/js/css and injects it into itself. That code is a set of “features” (logic) and an “interface”.
Build your own software, pick the features and interfaces that you like. Toggle to add or remove.Build your own software, pick the features and interfaces that you like. Dashboard to edit your features and interfaces, code too.
261
Steven Vandevelde @tokono.ma · 09/03/2026
One of the solutions I built recently is what I call "facets", you just open web pages (which talk to each other) that present the features you like. Because they consist out of web components, you can then also recombine them into a full web app (if need be). Or use both, at the same time! 🧵2/4
Screenshot of Diffuse facets page, shows a "app store" kind of interface. But instead of apps you download, it's features you can use in your software.
110
Steven Vandevelde @tokono.ma · 28/02/2026
Doing this while we wait for private records on atproto. Optional Passkey PRF encryption for individual record properties. Context: I needed some way to hide potentially sensitive authentication details (eg. s3 secret). Only thing I don't like about this is that it's now tied to a specific domain.
Screenshot of a PDS record with an encrypted property.
3336
Steven Vandevelde @tokono.ma · 16/01/2026
Curious if people think this needs to go even more of a granular progression (learning curve). Also, for the people that want some more context on what a "theme" and "constituent" is:
Themes are element compositions and provide a traditional browser web application way of using them. In other words, pretty much the whole thing, besides your data, lives inside a single browser tab.

Each theme is unique, not just a skin; each one might have a totally different feature set.

Constituents are various interface components each loaded in their own web page. Every used component is configured so that it operates in broadcast mode, making all the pages communicate with each other.

It also allows non-browser web environments, such as WebViews, to display UI components separately. For example, to enable moveable web views on the desktop.
120
Steven Vandevelde @tokono.ma · 16/01/2026
I think I've started to figure out that gentle slope the malleable software essay from @inkandswitch.com talked about (where the user gradually becomes an editor or creator). www.inkandswitch.com/essay/mallea... I'm comparing Diffuse (a set of components and tools) to food, copy need work tho 😅
Take control

Diffuse ranges from “eating out at a great restaurant”, all the way to “making your favourite meal at home”.

Level 1: Pick your restaurant, food comes in all shapes and sizes. The equivalent of choosing a Diffuse theme.

Level 2: Take out food from various places, eg. cheese shop + bakery. You choose how you combine the foods and from where you order them. That's constituents.

Level 3: Now that you know which food is good and how to make combinations, you might make a slight customization, add a little something of your own. For example, add some spice. However, you're not quite confident enough which spice to pick, so you hire some help.

This can be done using the constituents loader which allows you to build on top of a familiar foundation. You can load custom constituents using this. You can use snippets from other people or use an LLM to generate something for you (eg. an album art gallery)

Level 4: You learned a bit from watching and talking to the help you hired, so you decide to take things in your own hands.

You continue to use the constituents loader but learn a bit of HTML, Javascript and CSS; so you can write your own constituent.

Level 5: At this point you're confident enough to make a meal from scratch. You can start very simple, eg. just throwing a steak in the pan with some butter and some salt to it. Then later add some baked potatoes and go from there. You use a friend's kitchen with all the necessary tools.

A similar tool comes into play here, the themes loader. Same concept as the constituents loader, but now you need to specify the foundation yourself, the connecting tissue.

Level 6: You were inspired by your friend's kitchen and get yourself a fully equiped kitchen.

You can self-host Diffuse, it's open-source!
291
Steven Vandevelde @tokono.ma · 13/01/2026
Kendrick for me www.discrepancy-records.com.au/kendrick-lam... What about you?
Kendrick Lamar Good Kid, M.A.A.d City Vinyl 2 LP
010
Steven Vandevelde @tokono.ma · 29/10/2025
Nostalgia level: 💯 (yeah this is a working music player & browser) Basically the idea of Diffuse, chopped into custom components so you can hook it up, and style it, however you want. Here's multiple audio inputs (subsonic & aws s3) fed into some processors (search, metadata, etc) + webamp.org
Custom Windows 98 desktop environment with a bunch of Diffuse tools. Thanks to 98.css and Webamp!
3124
Steven Vandevelde @tokono.ma · 03/09/2025
I went a bit crazy with Rogue’s modular system. Not everything is in the picture, also got some dumbbells which you can put the olympic plates on.
Garage gym with a bunch of Rogue gear.
110
Steven Vandevelde @tokono.ma · 08/07/2025
Here's a diagram of all the weird applet stuff I've been talking about. Gets even more complex in some scenarios but that's a story for another time. This seems to be working okay, but needs more testing. The goal here is: spread work cross-origin, but avoid blocking main thread as much as possible
120
Steven Vandevelde @tokono.ma · 15/06/2025
I think this web applet experiment is almost at its end, pretty sure this'll be the next version of Diffuse. This "deck" applet here can be used standalone (web page on the right) where it automatically inserts tracks from your collection into the queue; or use it in a DJ theme (left side, wip).
Splitscreen shot of two web pages, two instances of the web applet on the left, and a single instance opened as a web page on the right.
1102
Steven Vandevelde @tokono.ma · 06/06/2025
Something something files and the cloud 🎈 Can’t tell if you’re holding the balloon or a needle to pop it.
Jess and a bunch of balloons. Hard to say if he’s holding a balloon or eager to pop them using a needle.
130
Steven Vandevelde @tokono.ma · 23/05/2025
Getting somewhere with this web applet edition of Diffuse. This is a custom setup of Webamp connected to various Diffuse applets. The applets generate a list of tracks with a unique URI, process the metadata from the tracks if needed, and cache the list + metadata in a location of choice.
Screenshot of custom webamp setup.
140
Steven Vandevelde @tokono.ma · 22/05/2025
Initial stickers for the new laptop. Thanks again @mosh.bsky.social 🙏 Coincidentally I just rewatched Back to the future, great CAR choice 👌
New stickers on laptop. IPFS, Subvert, Framework, Tangara & Storacha.
240
Steven Vandevelde @tokono.ma · 17/05/2025
Bye old laptop 👋 No more touchbar 🎉😂 Framework laptop has been less stable than I hoped it would be though, but most likely a Linux issue? The whole thing would freeze up after a while when 4k monitor is connected and I would play video 🤷 Somewhat better after changing some bios & kernel stuff.
Laptop cover with a bunch of stickers.New Framework 13 laptop with translucent bezel.
130
Steven Vandevelde @tokono.ma · 20/11/2024
My installed theme doesn’t nearly look as good as in the screenshots 😩 Primarily the bar at the top 🤔 raw.githubusercontent.com/vinceliuice/...
Screenshot of Whitesure GTK theme setup.
010
Steven Vandevelde @tokono.ma · 17/09/2024
Congrats @dholms.xyz & team 🙌 ATProto is an amazing protocol and thing to have, glad people are seeing what it brings to the table.
#88 on Bluesky 🙌 Joined on 18th of January 2023.
1190
Steven Vandevelde @tokono.ma · 02/09/2024
If you see this, quote post with a beach photo from your gallery.
Helicopter and boat on a beach.
010
Steven Vandevelde @tokono.ma · 25/04/2024
Ugh, it really is 🙈
100
Steven Vandevelde @tokono.ma · 26/02/2024
The Bluesky (PDS) federation stuff has got me thinking again about WNFS. What should be the language we use around data agency and syncing in web apps? (see images) I see two approaches available in the same app: 1) WNFS bytes stored on a server of the app dev's choosing. Every account = 1 FS
130
Steven Vandevelde @tokono.ma · 19/11/2023
Didn't realise I could export this as a PNG, might be easier.
000
Steven Vandevelde @tokono.ma · 04/11/2023
I'm mostly familiar with UCAN & WNFS, and I feel like that's one good way to go about it in the current browsers. But we're stuck with permission dialogs. And from your post, I assume these are to be avoided at all costs? Here's two paradigms I have in mind.
110
Steven Vandevelde @tokono.ma · 24/04/2023
DJ Shadow - Endtroducing Was hanging out with my favourite person on earth at that given time, talking, smoking and listening to music all night long.
140
Steven Vandevelde @tokono.ma · 08/02/2023
Here’s some pictures, tried to hide the mess 🙈
120
Steven Vandevelde @tokono.ma · 18/01/2023
Obligatory cute animal picture
051