You are browsing as a guest. Sign up (or log in) to start making projects!

Kvin

@Kvin

Joined June 9th, 2026

  • 9Devlogs
  • 4Projects
  • 2Ships
  • 0Votes
Open comments for this post

11h 36m 43s logged

What if you could create a universe from your favourite words?

What loads is a universe. Your universe. A galaxy of stars nobody has ever flown through, scattered over nebulae nobody has ever seen, because none of it existed until the moment you pressed Enter. Type a different word and the old one is gone, replaced by another entire cosmos waiting to be explored.

That is Aether.

And here is the part that’s surprising: there are no images in it. None. Not a single texture, model, photo or downloaded file. Every star, every ringed gas giant, every drifting smear of colour is pure maths, generated live from your word. The whole thing is light enough to run on your phone, because there is nothing to load. It is all conjured on the spot.

This is the first build, and you can already travel. You start above a galaxy map, an endless field of stars you can drag and zoom through, drifting over layered clouds of gas. Each star is coloured by its real stellar class, from hot blue-white giants down to dim red dwarfs, and each carries a name. Hover one and it tells you what it is called. Pick one and you warp in, starlines streaking past.

Inside a system, planets swing around their star on live orbits, rocky worlds and banded gas giants, some having rings. Choose one and you fall towards it. It turns slowly under its own sunlight, wrapped in a thin halo of atmosphere, its rings passing in front and behind. A scan panel reads out the world: radius, gravity, surface temperature, atmosphere, the length of its day, its moons, and a line or two of lore about the place.

Then you can leave, and the whole universe is still sitting exactly where you left it.

Every world has an address. Hit share and you get a link holding the seed and your exact position, down to the planet you were staring at. Send it and the other person opens the same cosmos, in the same spot, on the same world. Try a different name, and watch a completely different universe assemble itself.

Next, I am deepening every layer: richer terrain and weather on the planets, binary stars and asteroid belts, more believable names and histories.

What if you could create a universe from your favourite words?

What loads is a universe. Your universe. A galaxy of stars nobody has ever flown through, scattered over nebulae nobody has ever seen, because none of it existed until the moment you pressed Enter. Type a different word and the old one is gone, replaced by another entire cosmos waiting to be explored.

That is Aether.

And here is the part that’s surprising: there are no images in it. None. Not a single texture, model, photo or downloaded file. Every star, every ringed gas giant, every drifting smear of colour is pure maths, generated live from your word. The whole thing is light enough to run on your phone, because there is nothing to load. It is all conjured on the spot.

This is the first build, and you can already travel. You start above a galaxy map, an endless field of stars you can drag and zoom through, drifting over layered clouds of gas. Each star is coloured by its real stellar class, from hot blue-white giants down to dim red dwarfs, and each carries a name. Hover one and it tells you what it is called. Pick one and you warp in, starlines streaking past.

Inside a system, planets swing around their star on live orbits, rocky worlds and banded gas giants, some having rings. Choose one and you fall towards it. It turns slowly under its own sunlight, wrapped in a thin halo of atmosphere, its rings passing in front and behind. A scan panel reads out the world: radius, gravity, surface temperature, atmosphere, the length of its day, its moons, and a line or two of lore about the place.

Then you can leave, and the whole universe is still sitting exactly where you left it.

Every world has an address. Hit share and you get a link holding the seed and your exact position, down to the planet you were staring at. Send it and the other person opens the same cosmos, in the same spot, on the same world. Try a different name, and watch a completely different universe assemble itself.

Next, I am deepening every layer: richer terrain and weather on the planets, binary stars and asteroid belts, more believable names and histories.

Replying to @Kvin

0
Open comments for this post

6h 43m 9s logged

Focus Totem — Devlog #2

I changed the board from a rough cluster to a proper routed PCB now, and every error i had before is pretty much cleared. Both LED-chain labels were quietly landing on the exact same point, so I re-spaced them to each own their stub, and the dangling chain-end output got a proper no-connect flag instead of sitting there as a one-pin net. The bigger job was the footprints. I built accurate ones from scratch for the XIAO (7 pads a side, 2.54mm pitch, 0.6” rows) and the SK6812 MINI-E, added a footprint library so nothing looks like its floating, and switched the switches over to the correct stock footprints. After that it routed cleanly: 70 × 72mm, two-layer, ground pour both sides, M3 corner holes, and the XIAO’s USB sat on the bottom edge ready for the case cut-out. The ratsnest is completely gone. On top of that the firmware’s now actually a timer instead of a stub. I added the set → run → pause → done plus the break presets. The encoder sets the minutes, the OLED shows FOCUS / BREAK / DONE / SET with a live mm:ss countdown, and the two LEDs do the thing I wanted from the start, amber while idle, green while running, red in the final minute, then flashing when you’re done. It’s the first time it’s felt like the actual desk totem I pictured rather than a wiring diagram.

Focus Totem — Devlog #2

I changed the board from a rough cluster to a proper routed PCB now, and every error i had before is pretty much cleared. Both LED-chain labels were quietly landing on the exact same point, so I re-spaced them to each own their stub, and the dangling chain-end output got a proper no-connect flag instead of sitting there as a one-pin net. The bigger job was the footprints. I built accurate ones from scratch for the XIAO (7 pads a side, 2.54mm pitch, 0.6” rows) and the SK6812 MINI-E, added a footprint library so nothing looks like its floating, and switched the switches over to the correct stock footprints. After that it routed cleanly: 70 × 72mm, two-layer, ground pour both sides, M3 corner holes, and the XIAO’s USB sat on the bottom edge ready for the case cut-out. The ratsnest is completely gone. On top of that the firmware’s now actually a timer instead of a stub. I added the set → run → pause → done plus the break presets. The encoder sets the minutes, the OLED shows FOCUS / BREAK / DONE / SET with a live mm:ss countdown, and the two LEDs do the thing I wanted from the start, amber while idle, green while running, red in the final minute, then flashing when you’re done. It’s the first time it’s felt like the actual desk totem I pictured rather than a wiring diagram.

Replying to @Kvin

0
Ship

Mission Control - a NASA/space command centre for Slack

Mission Control is a Slack bot that pulls real space data straight into the workspace. Four slash commands, all prefixed mc:
/mc-apod - NASA's Astronomy Picture of the Day, the actual image with a trimmed caption and credit
/mc-iss - live position of the International Space Station: latitude, longitude, altitude and velocity, with a link to see it on a map
/mc-mars - the freshest raw photos off the Perseverance rover
/mc-crew - everyone who's currently in space right now, with their craft and agency

Felt very on theme for a NASA-backed event, so I leaned all the way into it. Everything's built with Block Kit - headers, image blocks, context lines - and posts in-channel so the whole feed gets the photos, not just plain text.

What was challenging: the APOD command. It kept failing intermittently with a 503 and I couldn't work out why at first, since the other three commands were fine. Turned out NASA's endpoint just has transient hiccups. The fix was adding retry-with-backoff to the HTTP layer so a one-off upstream wobble retries quietly instead of showing an error. The other detour was /mc-mars: the classic api.nasa.gov Mars photos endpoint is dead right now (returns a Heroku "no such app"), so I switched to pulling Perseverance's latest raw images straight from NASA's own mars.nasa.gov feed.

What I'm proud of: that it actually renders real space imagery live in Slack and feels like a little mission console. Watching the ISS tick along at 27,000+ km/h, or APOD dropping a full nebula photo into the channel - it came together into something I like actually using. To test it: it's live in the Hack Club Slack - just type any of the commands in a channel. Try /mc-iss first and you'll get the live position right away. /mc-crew shows who's in orbit, /mc-apod drops today's NASA photo, /mc-mars pulls the latest rover shots!

Try project → See source code →
Ship

SynthwaveOS - an 80s neon OS

SynthwaveOS is my own little webOS with an 80s outrun theme. You boot it up and you've got a proper desktop: an animated grid scrolling off toward a sunset, scanlines, neon glow on everything, draggable windows, desktop icons, and a live clock ticking away in the top bar.

The centrepiece is a Winamp-style music player with a live visualiser. The bars react to whatever's playing through the Web Audio API - and the three built-in tracks (Neon Drive, Midnight Run, Afterglow) are generated live with oscillators, so there's nothing to download and no copyright mess. Each one is its own pattern with different basslines, drums, tempos, so the bars take on a clearly different shape for each.

You can also load your own MP3 off disk and watch it react to that instead.

What was challenging: the visualiser. Getting bars to genuinely react to the audio meant wiring up the real web audio pipeline (AnalyserNode → frequency data), and the first version was janky and flickered every time you paused and replayed. Most of the final stretch was spent fixing that and smoothing the draw loop rather than adding new stuff, but it's what made it feel finished.

What I'm proud of: that it actually looks and feels like an OS and not a website. The grid, the glow, the visualiser reacting in real time - it comes together into something I genuinely enjoy just clicking around in.

To test it: open it in the browser, click the Player icon, and hit Play - the bars should start moving immediately. Switch between Neon Drive / Midnight Run / Afterglow to see each one move differently, or hit Load MP3 and pick your own song. Drag the windows around, stack them, click between them to raise each to the front, close them with the ×, and reopen from the icons.

Turn it up!!

Try project → See source code →
Open comments for this post

1h 13m 43s logged

SynthwaveOS - Devlog #3
It is finished. Most of the time was spent fixing the some issues rather than adding brand-new features. The biggest change i added was the music player, so that you can now load any MP3 from disk, the player remembers it for the whole session, updates the track label to the filename, and lets you switch away to the synth tracks and back again without losing it. I also expanded the built-in tracks so they feel more like real songs. Neon Drive, Midnight Run and Afterglow now run through longer chord progressions with 32-step patterns, and Afterglow has a slow filter sweep drifting over the top so it evolves over time. I also optimised the drawing code so it runs more smoothly. At this point all is in place and done.

SynthwaveOS - Devlog #3
It is finished. Most of the time was spent fixing the some issues rather than adding brand-new features. The biggest change i added was the music player, so that you can now load any MP3 from disk, the player remembers it for the whole session, updates the track label to the filename, and lets you switch away to the synth tracks and back again without losing it. I also expanded the built-in tracks so they feel more like real songs. Neon Drive, Midnight Run and Afterglow now run through longer chord progressions with 32-step patterns, and Afterglow has a slow filter sweep drifting over the top so it evolves over time. I also optimised the drawing code so it runs more smoothly. At this point all is in place and done.

Replying to @Kvin

0
Open comments for this post

55m 3s logged

SynthwaveOS - Devlog #2

The whole thing actually looks like an OS now instead of a wireframe. I dropped the full synthwave theme on top of the previous skeleton: an animated perspective grid scrolling toward you, a sunset sun, scanlines, neon magenta/cyan glow on everything, and proper retro fonts (Orbitron + VT323). Now each track is its own little pattern - Neon Drive is a busy sawtooth lead with a square bass and hats on every beat, Midnight Run is punchier with offbeat hats and gaps, and Afterglow is a slow soft triangle with a filter sweep and no drums. I also split the visualiser so the bass drives the left bars, the lead and harmonics the middle, and the hats the right. I also added MP3 support with a Load MP3 button that picks any file off disk, so the visualiser reacts to your own music too.

SynthwaveOS - Devlog #2

The whole thing actually looks like an OS now instead of a wireframe. I dropped the full synthwave theme on top of the previous skeleton: an animated perspective grid scrolling toward you, a sunset sun, scanlines, neon magenta/cyan glow on everything, and proper retro fonts (Orbitron + VT323). Now each track is its own little pattern - Neon Drive is a busy sawtooth lead with a square bass and hats on every beat, Midnight Run is punchier with offbeat hats and gaps, and Afterglow is a slow soft triangle with a filter sweep and no drums. I also split the visualiser so the bass drives the left bars, the lead and harmonics the middle, and the hats the right. I also added MP3 support with a Load MP3 button that picks any file off disk, so the visualiser reacts to your own music too.

Replying to @Kvin

0
Open comments for this post

2h 45m 44s logged

Focus Totem — Devlog #1
I started building Focus Totem, a little Pomodoro/study-timer macropad. The idea is a small desk totem you twist to set your focus minutes, press the knob to start, and it counts down on a tiny OLED while two LEDs breathe amber → green → red so you can feel the time going from the corner of your eye. I built it because I doomscroll the second studying gets boring, so I wanted a physical thing sat on my desk that I have to deliberately start. I’ve set up the whole skeleton from scratch: the KiCad schematic fully wired (13 symbols), a rough PCB with all the parts placed, and a QMK keyboard folder that compiles. Pinout’s locked in and the schematic and firmware agree pad-for-pad: three keys on D0–D2, the encoder on D3/D6/D7, the OLED over I²C on D4/D5, and the SK6812 data line on D10. I wanted the whole thing wired and testable before I touch routing, so that if something breaks later I know it’s the layout and not the connections. Ran the first round of checks though and the PCB threw up a fair few errors when I opened. Nothing fatal, looks like footprint and outline gremlins from the skeleton stage. Next up: sorting those errors, routing the board, drawing the Edge.Cuts outline, and building the actual Pomodoro state machine with the OLED countdown and the LED breathing.

Focus Totem — Devlog #1
I started building Focus Totem, a little Pomodoro/study-timer macropad. The idea is a small desk totem you twist to set your focus minutes, press the knob to start, and it counts down on a tiny OLED while two LEDs breathe amber → green → red so you can feel the time going from the corner of your eye. I built it because I doomscroll the second studying gets boring, so I wanted a physical thing sat on my desk that I have to deliberately start. I’ve set up the whole skeleton from scratch: the KiCad schematic fully wired (13 symbols), a rough PCB with all the parts placed, and a QMK keyboard folder that compiles. Pinout’s locked in and the schematic and firmware agree pad-for-pad: three keys on D0–D2, the encoder on D3/D6/D7, the OLED over I²C on D4/D5, and the SK6812 data line on D10. I wanted the whole thing wired and testable before I touch routing, so that if something breaks later I know it’s the layout and not the connections. Ran the first round of checks though and the PCB threw up a fair few errors when I opened. Nothing fatal, looks like footprint and outline gremlins from the skeleton stage. Next up: sorting those errors, routing the board, drawing the Edge.Cuts outline, and building the actual Pomodoro state machine with the OLED countdown and the LED breathing.

Replying to @Kvin

0
Open comments for this post

2h 13m 23s logged

SynthwaveOS - Devlog #1

I started building SynthwaveOS, my very own web-based operating system with an 80s synthwave theme. The idea is a little neon command centre you can boot up in the browser with a Winamp-style music player with a visualiser that reacts to the audio. I’ve set up the whole skeleton from scratch - three windows (Welcome, Player, Tracks), a top bar with a live ticking clock, and three desktop icons that select and open their windows. For now, the windows drag around, close with the x, and raise to the front when you click them, with the top bar always staying on top. I wanted the whole thing working and testable first, so if something breaks later I know it’s the styling or the visualiser. Next up: the full synthwave with animated perspective grid wallpaper, the sunset gradient, glow everywhere, a proper retro font, and the gradient magenta→cyan visualiser bars.

SynthwaveOS - Devlog #1

I started building SynthwaveOS, my very own web-based operating system with an 80s synthwave theme. The idea is a little neon command centre you can boot up in the browser with a Winamp-style music player with a visualiser that reacts to the audio. I’ve set up the whole skeleton from scratch - three windows (Welcome, Player, Tracks), a top bar with a live ticking clock, and three desktop icons that select and open their windows. For now, the windows drag around, close with the x, and raise to the front when you click them, with the top bar always staying on top. I wanted the whole thing working and testable first, so if something breaks later I know it’s the styling or the visualiser. Next up: the full synthwave with animated perspective grid wallpaper, the sunset gradient, glow everywhere, a proper retro font, and the gradient magenta→cyan visualiser bars.

Replying to @Kvin

0
Open comments for this post

2h 4m 20s logged

Mission Control - Devlog #1

Well, I messed up with the projects, so I had to delete my devlogs. The actual time logged for this 1st devlog was 29m 44s
I Started creating a Slack bot called Mission Control.
The idea is a little space-themed command centre that pulls NASA + ISS data right into Slack.
Felt very on theme for a NASA-backed event so I went for it.
I’ve set up the Slack app from scratch, grabbed the two tokens, and registered four slash commands, all prefixed mc- so they don’t clash with the dozen other bots already in the workspace: /mc-apod → Astronomy Picture of the Day /mc-iss → live ISS position /mc-mars → Mars rover photos /mc-crew → who’s actually in space right now.
Right now every command just replies with plain text. I wanted the whole thing wired end-to-end and testable first, so if something breaks later I know it’s the API layer. Tested all four in Slack and they all replied (screenshot below). So commands register, the bot connects, and Slack and the bot are talking. Next up: splitting the commands into their own modules and actually hitting the APIs - NASA’s APOD, wheretheiss.at for the ISS, the Mars rover photos endpoint, and rebuilding the replies with Block Kit so they show real images instead of placeholder text

Mission Control - Devlog #2

All four commands now reach live data and render proper Block Kit instead of placeholder text, so the replies actually look like something now.
Each command’s wrapped in try/catch too, so if an API has a wobble it posts a friendly note instead of taking the whole bot down.
/mc-iss is my favourite right now, it pulls the live ISS position from wheretheiss.at and lays it out : latitude, longitude, altitude, velocity, plus whether it’s currently in daylight or eclipsed. /mc-crew lists everyone actually in space right now with their role, agency and craft. /mc-mars gave me a detour. The classic api.nasa.gov Mars photos endpoint is dead at the moment (just returns a “no such app” error), so I switched to pulling Perseverance’s freshest raw images straight from NASA’s mars.nasa.gov feed instead. The one that’s not happy yet is /mc-apod. NASA’s Astronomy Picture of the Day is the one I most want working since it’s the best output, but right now it’s hitting the catch block: “Couldn’t reach NASA’s picture of the day just now.” So the error handling is doing its job, but something in that request path is off.

Actual time logged - 54m 19s

Mission Control - Devlog #1

Well, I messed up with the projects, so I had to delete my devlogs. The actual time logged for this 1st devlog was 29m 44s
I Started creating a Slack bot called Mission Control.
The idea is a little space-themed command centre that pulls NASA + ISS data right into Slack.
Felt very on theme for a NASA-backed event so I went for it.
I’ve set up the Slack app from scratch, grabbed the two tokens, and registered four slash commands, all prefixed mc- so they don’t clash with the dozen other bots already in the workspace: /mc-apod → Astronomy Picture of the Day /mc-iss → live ISS position /mc-mars → Mars rover photos /mc-crew → who’s actually in space right now.
Right now every command just replies with plain text. I wanted the whole thing wired end-to-end and testable first, so if something breaks later I know it’s the API layer. Tested all four in Slack and they all replied (screenshot below). So commands register, the bot connects, and Slack and the bot are talking. Next up: splitting the commands into their own modules and actually hitting the APIs - NASA’s APOD, wheretheiss.at for the ISS, the Mars rover photos endpoint, and rebuilding the replies with Block Kit so they show real images instead of placeholder text

Mission Control - Devlog #2

All four commands now reach live data and render proper Block Kit instead of placeholder text, so the replies actually look like something now.
Each command’s wrapped in try/catch too, so if an API has a wobble it posts a friendly note instead of taking the whole bot down.
/mc-iss is my favourite right now, it pulls the live ISS position from wheretheiss.at and lays it out : latitude, longitude, altitude, velocity, plus whether it’s currently in daylight or eclipsed. /mc-crew lists everyone actually in space right now with their role, agency and craft. /mc-mars gave me a detour. The classic api.nasa.gov Mars photos endpoint is dead at the moment (just returns a “no such app” error), so I switched to pulling Perseverance’s freshest raw images straight from NASA’s mars.nasa.gov feed instead. The one that’s not happy yet is /mc-apod. NASA’s Astronomy Picture of the Day is the one I most want working since it’s the best output, but right now it’s hitting the catch block: “Couldn’t reach NASA’s picture of the day just now.” So the error handling is doing its job, but something in that request path is off.

Actual time logged - 54m 19s

Replying to @Kvin

0

Followers

Loading…