|
14747
|
GoatOS by @sal2x | Stardance
|
sal2x
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T18:51:23Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made GoatOS, a goat themed web operating system. Since I’m just learning coding for the first time, the project took a while but I’m really proud of how it turned out! GoatOS features goat photos and a lot of educational information about goats.", "repo": "https://github.com/sclaireloucks-arch/veryfirstwebsite", "demo": "https://sclaireloucks-arch.github.io/veryfirstwebsite/"}]...
|
[{"post_id": 14561, "ts": "202 [{"post_id": 14561, "ts": "2026-06-23T18:44:48Z", "hours": 0.0, "text": "4th devlog- I finished the README for GoatOS, and completed my GoatGallery app. It took me a little while to sync all my changes, but now GoatOS is complete! You can now access it in the demo url, and I’ll be shipping this project."}, {"post_id": 14203, "ts": "2026-06-23T06:17:13Z", "hours": 0.0, "text": "3rd devlog- I made an app! GoatFacts-It’s a text-based app where you can see facts about goats by clicking on categories. I think I was coding faster than I was before, because it didn’t take super long. It was a lot of trial and error for me though, and I had to change the style of it about 4 times to try to get something I liked. I think I am satisfied with the results now! GoatGallery- also began working on a second app that shows pictures of goats, along with some information about the breed. It has been going smoothly, as I mostly just had to remember what I did for the other app, and then adjust. All that’s left mostly to do is to finish GoatGallery and tweak a few things, and then it’s basically finished! Hopefully last devlog 🤞 and then I’ll be shipping GoatOS!"}, {"post_id": 11069, "ts": "2026-06-18T03:19:03Z", "hours": 0.0, "text": "2nd devlog- Today I changed the welcome page to fit more to the vibe of the website, created it to be draggable, as well as open and close. I made the top bar it’s own color and used js to track the time, updating it. Some challenges I found while doing this was that it was hard 💀 I’ve never coded, except a little bit of Python so all of this was a learning experience for me, but it began to get faster as I learned. A lot of the hours were changing things to look different, or fixing errors. Hopefully the next devlog I’ll have worked faster and have learned more as well. The next thing to do is to create apps to make it look more like an official OS, and I hope to be able to ship it soon after that!"}, {"post_id": 10263, "ts": "2026-06-16T22:06:06Z", "hours": 0.0, "text": "Yesterday I began working on GoatOS. So far, I have created a welcome page with a desktop background, and a top bar that shows the date and time. In the welcome page I stated the purpose of the site, to serve as your go-to Goat operating system. Some challenges I found while doing these were that centering the welcome page was difficult, but after a few minutes of researching I was able to figure it out. It was also a struggle to figure out how to make it look more like an OS rather than a plain website. The next steps I plan to take are that I’ll create multiple different windows that will be draggable, have a random-goat picture generator, and create goat themed apps."}]...
|
Title: GoatOS by @sal2x | Stardance
Devlogs:
Yest Title: GoatOS by @sal2x | Stardance
Devlogs:
Yesterday I began working on GoatOS. So far, I have created a welcome page with a desktop background, and a top bar that shows the date and time. In the welcome page I stated the purpose of the site, to serve as your go-to Goat operating system. Some challenges I found while doing these were that centering the welcome page was difficult, but after a few minutes of researching I was able to figure it out. It was also a struggle to figure out how to make it look more like an OS rather than a plain website. The next steps I plan to take are that I’ll create multiple different windows that will be draggable, have a random-goat picture generator, and create goat themed apps.
2nd devlog- Today I changed the welcome page to fit more to the vibe of the website, created it to be draggable, as well as open and close. I made the top bar it’s own color and used js to track the time, updating it. Some challenges I found while doing this was that it was hard 💀 I’ve never coded, except a little bit of Python so all of this was a learning experience for me, but it began to get faster as I learned. A lot of the hours were changing things to look different, or fixing errors. Hopefully the next devlog I’ll have worked faster and have learned more as well. The next thing to do is to create apps to make it look more like an official OS, and I hope to be able to ship it soon after that!
3rd devlog- I made an app! GoatFacts-It’s a text-based app where you can see facts about goats by clicking on categories. I think I was coding faster than I was before, because it didn’t take super long. It was a lot of trial and error for me though, and I had to change the style of it about 4 times to try to get something I liked. I think I am satisfied with the results now! GoatGallery- also began working on a second app that shows pictures of goats, along with some information about the breed. It has been going smoothly, as I mostly just had to remember what I did for the other app, and then adjust. All that’s left mostly to do is to finish GoatGallery and tweak a few things, and then it’s basically finished! Hopefully last devlog 🤞 and then I’ll be shipping GoatOS!
4th devlog- I finished the README for GoatOS, and completed my GoatGallery app. It took me a little while to sync all my changes, but now GoatOS is complete! You can now access it in the demo url, and I’ll be shipping this project.
Ships:
I made GoatOS, a goat themed web operating system. Since I’m just learning coding for the first time, the project took a while but I’m really proud of how it turned out! GoatOS features goat photos and a lot of educational information about goats....
|
1793127261.2130246
|
1793213661.2130246
|
|
14757
|
ov0OS by @Ikira | Stardance
|
Ikira
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T17:57:39Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A website or a small introduction. Similar to a website I make before but it was all HTML. Besides the guide, I added spotify playlist embled in the window, extending, buttons at the bottom (not sure if that’s in the guide or not). I’m proud of it, making things work after they wouldn’t work is like solving a puzzle! This is so entertaining, thank you for the opportunity.", "repo": "https://github.com/Nananoovo/Webos", "demo": "https://nananoovo.github.io/Webos/"}]...
|
[{"post_id": 15791, "ts": "202 [{"post_id": 15791, "ts": "2026-06-25T17:48:27Z", "hours": 0.3125, "text": "SHIP! Image from before is too blurry, changed some font and more! That will be it"}, {"post_id": 15269, "ts": "2026-06-24T20:02:05Z", "hours": 0.8569, "text": "Finishing up"}, {"post_id": 10491, "ts": "2026-06-17T07:24:39Z", "hours": 0.4525, "text": "FINAL UPDATE ON THE WINDOWS LOGIC Basically now I finalized how to open and close window (buttons at the bottom) and it’ll be way easier now for me do make a window that is draggable, open and closable, but not adjusting the size.. But I don’t want to use classic red, yellow green dots and etc so I”M FINDING cute faces as the dragging functions and make my buttons more like a “app” so people will know when they see it. Let me copy Apple (jk) And that’s about it for the logics, next update will prob be content (windows) and aesthetics (the emoji faces and diff picture other than the cute cat) ! Next project I’ll be more clear on what I want…Currently I’m thinking about…recipe book!"}, {"post_id": 9704, "ts": "2026-06-16T03:46:09Z", "hours": 2.5389, "text": "QiwenOs! Okay perfecto I have some basic functions…Now I just gotta edit the entire thing to match “UI” and make more webs! Since it’s about me..I’ll add a Spotify player, pictures of me in a gallery, more and etc, and make it prettier…but thats for tmr!"}, {"post_id": 9104, "ts": "2026-06-15T06:58:11Z", "hours": 0.9608, "text": "Progress Another around 50 min… SO basically I ctrl c ctrl v the dragging script and got it to work but then it crashes with the open and close window function….boi ANYWAYS at the same time I updated some color, background, and I figured that I’d use those emoji faces from pinterest as the ‘button’ to drag my screen! but i have no clue why the dragging is not working in the actual web cuz I copied everything exactly the same from codepen (stimulator) and somehow it doesn’t work dont do this to me…"}, {"post_id": 8572, "ts": "2026-06-14T07:50:41Z", "hours": 0.7428, "text": "MY WEB So basically i tried to link a background image but kinda failed…give me a few days been busy working so only spent 15 min ish per day for 3 days here is how it look so far… maybe I’ll add a few more windows and a diff function (pending)! thank you…"}]...
|
Title: ov0OS by @Ikira | Stardance
Devlogs:
MY WE Title: ov0OS by @Ikira | Stardance
Devlogs:
MY WEB So basically i tried to link a background image but kinda failed…give me a few days been busy working so only spent 15 min ish per day for 3 days here is how it look so far… maybe I’ll add a few more windows and a diff function (pending)! thank you…
Progress Another around 50 min… SO basically I ctrl c ctrl v the dragging script and got it to work but then it crashes with the open and close window function….boi ANYWAYS at the same time I updated some color, background, and I figured that I’d use those emoji faces from pinterest as the ‘button’ to drag my screen! but i have no clue why the dragging is not working in the actual web cuz I copied everything exactly the same from codepen (stimulator) and somehow it doesn’t work dont do this to me…
QiwenOs! Okay perfecto I have some basic functions…Now I just gotta edit the entire thing to match “UI” and make more webs! Since it’s about me..I’ll add a Spotify player, pictures of me in a gallery, more and etc, and make it prettier…but thats for tmr!
FINAL UPDATE ON THE WINDOWS LOGIC Basically now I finalized how to open and close window (buttons at the bottom) and it’ll be way easier now for me do make a window that is draggable, open and closable, but not adjusting the size.. But I don’t want to use classic red, yellow green dots and etc so I”M FINDING cute faces as the dragging functions and make my buttons more like a “app” so people will know when they see it. Let me copy Apple (jk) And that’s about it for the logics, next update will prob be content (windows) and aesthetics (the emoji faces and diff picture other than the cute cat) ! Next project I’ll be more clear on what I want…Currently I’m thinking about…recipe book!
Finishing up
SHIP! Image from before is too blurry, changed some font and more! That will be it
Ships:
A website or a small introduction. Similar to a website I make before but it was all HTML. Besides the guide, I added spotify playlist embled in the window, extending, buttons at the bottom (not sure if that’s in the guide or not). I’m proud of it, making things work after they wouldn’t work is like solving a puzzle! This is so entertaining, thank you for the opportunity....
|
1793238581.9414864
|
1793324981.9414864
|
|
14762
|
Theory Machine by @yo | Stardance
|
yo
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-27T09:52:08Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What if gravity was stronger or light traveled slower? Theory Machine lets you create entirely new universes by tweaking the laws of physics and exploring the consequences.", "repo": "https://github.com/focused-asshu/Theory-Machine", "demo": "https://theory-machine.vercel.app/"}]...
|
[{"post_id": 6378, "ts": "2026 [{"post_id": 6378, "ts": "2026-06-10T18:54:32Z", "hours": 0.3469, "text": "made the basic structure and deployed it"}]...
|
Title: Theory Machine by @yo | Stardance
Devlogs: Title: Theory Machine by @yo | Stardance
Devlogs:
made the basic structure and deployed it
Ships:
What if gravity was stronger or light traveled slower? Theory Machine lets you create entirely new universes by tweaking the laws of physics and exploring the consequences....
|
1793141574.1669064
|
1793227974.1669064
|
|
14773
|
Time on Screen by @Matthew | Stardance
|
Matthew
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T01:22:37Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a basic digital clock for the Arduino GIGA R1 WiFi Display! It has the time from the Network Time Protocol, Light and dark mode, display of a home assistant sensor, and support for 24 hour time! I was originally going to use the National Weather Service API, however, I ran in to some security issues and instead decided to go with Home Assistant. To use it, you have to download the repository and open it in the Arduino IDE, then upload it from there.", "repo": "https://github.com/matthew0112/timeOnScreen", "demo": ""}]...
|
[{"post_id": 7206, "ts": "2026 [{"post_id": 7206, "ts": "2026-06-12T01:08:56Z", "hours": 1.1281, "text": "I added my final touches to my digital clock! Here is what I Improved: Centered Text on the Screen Military time support The ability to disable the home assistant sensor And documentation"}, {"post_id": 6666, "ts": "2026-06-11T05:30:17Z", "hours": 2.8503, "text": "I added the date and temperature. I sadly could not get the National Weather Service API working, so I switched to the Home Assistant API to get the value of a sensor. I also added light mode support, alongside dark mode."}, {"post_id": 6341, "ts": "2026-06-10T17:51:40Z", "hours": 1.1325, "text": "I got the local RTC time working and centered the text"}, {"post_id": 6070, "ts": "2026-06-10T06:14:04Z", "hours": 1.35, "text": "I added basic support for getting the time from the Network Time API, and then display it on the screen. I still want to add Support for: The local Real Time Clock (RTC) and adding a small weather “widget” below the time via the National weather service API"}]...
|
Title: Time on Screen by @Matthew | Stardance
Dev Title: Time on Screen by @Matthew | Stardance
Devlogs:
I added basic support for getting the time from the Network Time API, and then display it on the screen. I still want to add Support for: The local Real Time Clock (RTC) and adding a small weather “widget” below the time via the National weather service API
I got the local RTC time working and centered the text
I added the date and temperature. I sadly could not get the National Weather Service API working, so I switched to the Home Assistant API to get the value of a sensor. I also added light mode support, alongside dark mode.
I added my final touches to my digital clock! Here is what I Improved: Centered Text on the Screen Military time support The ability to disable the home assistant sensor And documentation
Ships:
I made a basic digital clock for the Arduino GIGA R1 WiFi Display! It has the time from the Network Time Protocol, Light and dark mode, display of a home assistant sensor, and support for 24 hour time! I was originally going to use the National Weather Service API, however, I ran in to some security issues and instead decided to go with Home Assistant. To use it, you have to download the repository and open it in the Arduino IDE, then upload it from there....
|
1793274614.9471285
|
1793361014.9471285
|
|
14785
|
ManhwaOS by @ElliotsLittleWave | Stardance
|
ElliotsLittleWave
|
1
|
11.0
|
79
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T05:18:46Z", "hours": 11.0, "multiplier": 7.24, "payout": 79, "blessing": "neutral", "text": "i made a manhwaOS for all novel and manhwa users to use and save timee. Currently its at the beta stage so most of the actual TIME SAVERS are being added on webOS2 since if i add it rn i maaayyy just have no more ideas for WEBOS2 The most challenging was the design. I actually tried drawing hahahhaah to no avail :( welp atleast it looks okay now since i added leaves and godrays", "repo": "https://github.com/Maxwell7779/ManhwaOS", "demo": "https://manhwa-os.vercel.app/"}]...
|
[{"post_id": 9680, "ts": "2026 [{"post_id": 9680, "ts": "2026-06-16T02:56:09Z", "hours": 0.3944, "text": "LAST LAST DEVLOG#idk THANK YOU FOR EVERYTHINGG this is my first ever project and im so happy and proud that it was shipped HERE IN STARDAANCEEE~!! BYE BYEEE"}, {"post_id": 9133, "ts": "2026-06-15T09:00:10Z", "hours": 0.4122, "text": "LAST DEVLOG #8 FINISHED LAST GOAL AND WILL SHIP added it where when you drag a window over another it prioritzes the window youre dragging and obscues the other windooww will be pushing then submitting BYE YALL"}, {"post_id": 9116, "ts": "2026-06-15T08:04:23Z", "hours": 1.7992, "text": "Devlog#7 ADDED FALLING LEAVES AND GODRAYYSSS!!! i thought what would make it look better? ITS LEAAAVESSS however the main challenge was making it look the same on mobile. I WAS GENUINELY STUCK FOR AN HOUR on making the god rays on mobile not stick to the top while making it look the same on desktop and found : isMobile - i added these to change stuff on mobile aka the responsiveness and all while keeping the desktop UI the same as before!! next devlog ill be making the obscurity of windows change when overlapping to enhance readibility and user-friendliness BYEEE"}, {"post_id": 8775, "ts": "2026-06-14T16:12:42Z", "hours": 2.9244, "text": "DEVLOG#6 possibly last devlog now IMPROVED APP AESTHETIC. Andd YOU CAN NOW DRAG ON MOBILE also improved mobile responsiveness for my mobile viewers to rate highlyy. ALSO finally made it look good, and work across all zoom sizes both mobile and pc YEHEYY hope yall rate this highlyy bye byee"}, {"post_id": 8145, "ts": "2026-06-13T16:14:19Z", "hours": 1.8044, "text": "DEVLOG #5 ADDED A VISITOR COUNTER!! sooo what did i do? i ADVERTISED IT ON REDITT AND DC BTWW i did this and took 2 hours just to leave a good impression on you viewers so plsss rate it highly hehehe THANKSS!! BTW i use supabase for the database and getting the VISITOR COUNT it took me so long its so tricky with the sql editor and stuff BUT I DID ITT"}, {"post_id": 7536, "ts": "2026-06-12T16:11:42Z", "hours": 1.8386, "text": "DEVLOG#4 WHATS NEW!! NEW BACKGROUND search bar seperated for the text not to bleed on mobile better mobile responsiveness change the fonts to MANGA MASTER for that added subtle details into this OS since its a manhwaOS GOAL NEXT DEVLOG add a last feature where when cursor is hovered to the left it opens setting then right you can change the wallpaper ALRIGHT BYE YALL!! NOTE: there was this bad gateway problem so i couldnt update thats why theres a pretty drastic change cuz i was stuck in this computer basically uhh ever since 10 hours ago lol"}, {"post_id": 7418, "ts": "2026-06-12T11:01:33Z", "hours": 0.7914, "text": "DEVLOG #3 BABYY!! YOU CAN SEARCH FOR ANY MANHWA ONLINE!! UPDATE: I SPENT LEGIT 30 mins on LAW cuz it turns out i cant have manhwa on this website because of copyright issues. SO instead i linked it to my manhwa page and my website became a sort of middle man also i feel bad that i didnt accomplish my main goal i added a search bar to open the apps ANDDD ANY MANHWA ONLINEE!! also fixed the issue where the apps open on the same places"}, {"post_id": 7335, "ts": "2026-06-12T07:21:13Z", "hours": 0.6242, "text": "sadly i lost my other file and now i have to redo it which i can but sadly i did commit in time in GIT but had to clone it so my time spent coding went back to 20 minutes"}, {"post_id": 7305, "ts": "2026-06-12T05:24:33Z", "hours": 0.7842, "text": "Im currently making a WebOS to read Manhwas on and i thought itd be possible to read from webtoon adn others inside my webpage? working on it currently"}]...
|
Title: ManhwaOS by @ElliotsLittleWave | Stardance
Title: ManhwaOS by @ElliotsLittleWave | Stardance
Devlogs:
Im currently making a WebOS to read Manhwas on and i thought itd be possible to read from webtoon adn others inside my webpage? working on it currently
sadly i lost my other file and now i have to redo it which i can but sadly i did commit in time in GIT but had to clone it so my time spent coding went back to 20 minutes
DEVLOG #3 BABYY!! YOU CAN SEARCH FOR ANY MANHWA ONLINE!! UPDATE: I SPENT LEGIT 30 mins on LAW cuz it turns out i cant have manhwa on this website because of copyright issues. SO instead i linked it to my manhwa page and my website became a sort of middle man also i feel bad that i didnt accomplish my main goal i added a search bar to open the apps ANDDD ANY MANHWA ONLINEE!! also fixed the issue where the apps open on the same places
DEVLOG#4 WHATS NEW!! NEW BACKGROUND search bar seperated for the text not to bleed on mobile better mobile responsiveness change the fonts to MANGA MASTER for that added subtle details into this OS since its a manhwaOS GOAL NEXT DEVLOG add a last feature where when cursor is hovered to the left it opens setting then right you can change the wallpaper ALRIGHT BYE YALL!! NOTE: there was this bad gateway problem so i couldnt update thats why theres a pretty drastic change cuz i was stuck in this computer basically uhh ever since 10 hours ago lol
DEVLOG #5 ADDED A VISITOR COUNTER!! sooo what did i do? i ADVERTISED IT ON REDITT AND DC BTWW i did this and took 2 hours just to leave a good impression on you viewers so plsss rate it highly hehehe THANKSS!! BTW i use supabase for the database and getting the VISITOR COUNT it took me so long its so tricky with the sql editor and stuff BUT I DID ITT
DEVLOG#6 possibly last devlog now IMPROVED APP AESTHETIC. Andd YOU CAN NOW DRAG ON MOBILE also improved mobile responsiveness for my mobile viewers to rate highlyy. ALSO finally made it look good, and work across all zoom sizes both mobile and pc YEHEYY hope yall rate this highlyy bye byee
Devlog#7 ADDED FALLING LEAVES AND GODRAYYSSS!!! i thought what would make it look better? ITS LEAAAVESSS however the main challenge was making it look the same on mobile. I WAS GENUINELY STUCK FOR AN HOUR on making the god rays on mobile not stick to the top while making it look the same on desktop and found : isMobile - i added these to change stuff on mobile aka the responsiveness and all while keeping the desktop UI the same as before!! next devlog ill be making the obscurity of windows change when overlapping to enhance readibility and user-friendliness BYEEE
LAST DEVLOG #8 FINISHED LAST GOAL AND WILL SHIP added it where when you drag a window over another it prioritzes the window youre dragging and obscues the other windooww will be pushing then submitting BYE YALL
LAST LAST DEVLOG#idk THANK YOU FOR EVERYTHINGG this is my first ever project and im so happy and proud that it was shipped HERE IN STARDAANCEEE~!! BYE BYEEE
Ships:
i made a manhwaOS for all novel and manhwa users to use and save timee. Currently its at the beta stage so most of the actual TIME SAVERS are being added on webOS2 since if i add it rn i maaayyy just have no more ideas for WEBOS2 The most challenging was the design. I actually tried drawing hahahhaah to no avail :( welp atleast it looks okay now since i added leaves and godrays...
|
1793112526.217515
|
1793198926.217515
|
|
14791
|
Weierstrass by @lf | Stardance
|
lf
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T05:22:44Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "made a game", "repo": "https://github.com/der1py/Weierstrass", "demo": "https://der1py.github.io/Weierstrass/"}]...
|
[{"post_id": 11669, "ts": "202 [{"post_id": 11669, "ts": "2026-06-19T00:40:14Z", "hours": 3.2778, "text": "-designed new levels and added new attacks to make gameplay more fun -ui and ux improvements -bug fixes -win screen after level 3"}, {"post_id": 8952, "ts": "2026-06-14T21:48:42Z", "hours": 0.9544, "text": "-added waves, leve, and hp system -refactored slideshow to advance with a specific button to avoid spam clicking accidentally skipping slides"}, {"post_id": 7822, "ts": "2026-06-13T01:50:57Z", "hours": 1.6781, "text": "added enemies + info/tutorial slides"}, {"post_id": 6682, "ts": "2026-06-11T06:05:34Z", "hours": 2.3517, "text": "-fixed phaser physics bug with bullet spawn -added sprites -refactored attacks to be handled in gamescene and not by the hotbar ui element"}, {"post_id": 6050, "ts": "2026-06-10T05:08:58Z", "hours": 1.4814, "text": "made base project setup and simple momement script"}]...
|
Title: Weierstrass by @lf | Stardance
Devlogs:
ma Title: Weierstrass by @lf | Stardance
Devlogs:
made base project setup and simple momement script
-fixed phaser physics bug with bullet spawn -added sprites -refactored attacks to be handled in gamescene and not by the hotbar ui element
added enemies + info/tutorial slides
-added waves, leve, and hp system -refactored slideshow to advance with a specific button to avoid spam clicking accidentally skipping slides
-designed new levels and added new attacks to make gameplay more fun -ui and ux improvements -bug fixes -win screen after level 3
Ships:
made a game...
|
1793130827.0937738
|
1793217227.0937738
|
|
14824
|
MAK_OS by @M_Ahmed | Stardance
|
M_Ahmed
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-19T10:47:15Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Introducing MAK.OS! A tiny WebOS designed to run in your Web Browser! It has all those features you expect a webOS to have. A smooth window grabbing system made from Javascript. A welcome/login screen, a working username input to carry your name into the OS!(this is the 1 new feature that the guide didn’t list). You also have a calculator, a settings app to change wallpaper and two URL controllers for the two Web Viewer Apps. the Web Viewer apps run a website address like a app in the OS! The start menu shows your name, MAK.OS info, and Logout and Sleep buttons! The taskbar clock is on far right, start menu button on far left. in the middle is windows11 inspired taskbar app icons displayer. Try the project now!", "repo": "https://github.com/Ak-Web-Dev/CatOS", "demo": "https://mako-s.netlify.app"}]...
|
[{"post_id": 31155, "ts": "202 [{"post_id": 31155, "ts": "2026-07-19T10:21:03Z", "hours": 1.9186, "text": "🎉🎉 MAK.OS , is finally COMPLETED and LIVE! ✨✨ MAK.OS, a web based OS, is all done and ready to use! Seriously this time all the things added were way more easy and fun. Unlike in many previously added features where I would stuck on issues etc. All the features below were able to be added in just 2hrs! Fun Fact about the project, the windows in the MAK.OS are literally just Bootstrap’s cards! ’Cause they had almost every thing, a card header, card body, card image alignment etc. Features Added: ✅ Log in Screen added with username input option. Start Menu buttons of Logout and Sleep now work Username displayed in Start Menu. Web Browser added in the form of my very own MAK_Tab project! Added an About app for info Added Desktop Icons Taskbar icons only appear when a window is open. Taskbar Icons changed to only emoji logo instead of text+emoji style. That’s It! The Project is finally completed! Try it now at: https://mako-s.netlify.app Now I am just going to Ship this Project! Yippee!"}, {"post_id": 21361, "ts": "2026-07-03T07:58:44Z", "hours": 1.7611, "text": "Update 0.3 of MAK_OS !!! This Time I added A Lot of new cool and nice things for the update 0.3! Try at https://mako-s.netlify.app New Things Added✨ : TaskBar Clock Added! 🕙 The “One feature not listed in guide” added in the form of WebViewer 🌐 container apps that display any webpage as an app within the WebOS. Url are added from Settings. Added Some Nice wallpapers you can switch through in Settings. 🧱 Next Goals 🎯: Make The Start Menu Useful Enough. Make a Welcome Screen with User Name option."}, {"post_id": 20094, "ts": "2026-07-01T16:44:54Z", "hours": 2.9503, "text": "MAK OS Development Log: Desktop Environments & Taskbar Design Completed! I finally managed to be successful in implementing the Window Grabbing System via JS without weird errors . It was extremely difficult to solve the issue of the settings window shooting down as soon as grabbed etc. ✅ Key Updates: Added Window Grabbing System (took 80% of time!) Added subtle taskbar lines like windows11 to show active windows status 🎉🎉Window Grabbing Fix:✨ Initially, the window-dragging function relied on JS Mouseup , Mousedrag and Mousedown events. However, this caused the settings window card to jump wildly. After spending more than one and a half hour figuring out the problem i finally found the solution which was using CSS’ translate being edited while grabbing the windows with mouse events in JS. The following is the JS code for window grabbing. function makeWindowDraggable(windowEl) { const header = windowEl.querySelector('.window-header'); if (!header) return; let currentX = windowEl.id === 'settings' ? 420 : 100; let currentY = 100; let startX = 0; let startY = 0; windowEl.style.transform = `translate(${currentX}px, ${currentY}px)`; header.onmousedown = dragMouseDown; function dragMouseDown(e) { e = e || window.event; if (e.target.closest('.close')) return; e.preventDefault(); highestZIndex++; windowEl.style.zIndex = highestZIndex; startX = e.clientX; startY = e.clientY; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; } function elementDrag(e) { e = e || window.event; e.preventDefault(); let deltaX = e.clientX - startX; let deltaY = e.clientY - startY; startX = e.clientX; startY = e.clientY; currentX += deltaX; currentY += deltaY; windowEl.style.transform = `translate(${currentX}px, ${currentY}px)`; } function closeDragElement() { document.onmouseup = null; document.onmousemove = null; } } TaskBar Indicators: I had less time left after all time dumped into mostly fixing a weirdly acting window grabbing system which had no sense that why is that even happening😖. So another thing I added is a line in Taskbar Buttons to show window status. It is inspired from Windows11, when in focus it is wide and blue, when out of focus it is small and grey, and when closed, the line goes out too. Subtle but nice and smooth effect. The CSS was simple not-worth of code but JS played the real affect: 🎯Next Goals: Add more and more apps Add Taskbar clock -Add welcome screen -Make the Start Menu actually worth-it to open it. Feel Free to Reply the project or check it out now here: https://mako-s.netlify.app"}, {"post_id": 15572, "ts": "2026-06-25T10:17:31Z", "hours": 0.9325, "text": "Destroyed all HTML and CSS and recreated from Scratch! I realized my UI was tooo Cartoonished so i abondoned all my code, except Script.js file since it had all functions. then i remade the whole thing with Bootstrap with minimal CSS code so i can spend less time on styling and more on making the Apps and functions as well as i will get a more professional UI. I also changed the name from CatOS to MAK_OS. Link: https://mako-s.netlify.app Try and review!"}, {"post_id": 6078, "ts": "2026-06-10T06:55:02Z", "hours": 0.0, "text": "Built a real desktop-style window system in the Web based OS. I added a fully interactive window dragging system, making the web OS feel like a real operating system. Try now at “ https://catos.netlify.app ” v1.3 Updates: -> Implemented mouse down / move / up event system -> Added z-index management for active windows -> Smooth dragging using JS click mouse events -> Fixed broken mobile UI. Next Steps: -> Add minimize window option -> Add Apps icon to appear at the tasbar"}]...
|
Title: MAK_OS by @M_Ahmed | Stardance
Devlogs:
Bu Title: MAK_OS by @M_Ahmed | Stardance
Devlogs:
Built a real desktop-style window system in the Web based OS. I added a fully interactive window dragging system, making the web OS feel like a real operating system. Try now at “ https://catos.netlify.app ” v1.3 Updates: -> Implemented mouse down / move / up event system -> Added z-index management for active windows -> Smooth dragging using JS click mouse events -> Fixed broken mobile UI. Next Steps: -> Add minimize window option -> Add Apps icon to appear at the tasbar
Destroyed all HTML and CSS and recreated from Scratch! I realized my UI was tooo Cartoonished so i abondoned all my code, except Script.js file since it had all functions. then i remade the whole thing with Bootstrap with minimal CSS code so i can spend less time on styling and more on making the Apps and functions as well as i will get a more professional UI. I also changed the name from CatOS to MAK_OS. Link: https://mako-s.netlify.app Try and review!
MAK OS Development Log: Desktop Environments & Taskbar Design Completed! I finally managed to be successful in implementing the Window Grabbing System via JS without weird errors . It was extremely difficult to solve the issue of the settings window shooting down as soon as grabbed etc. ✅ Key Updates: Added Window Grabbing System (took 80% of time!) Added subtle taskbar lines like windows11 to show active windows status 🎉🎉Window Grabbing Fix:✨ Initially, the window-dragging function relied on JS Mouseup , Mousedrag and Mousedown events. However, this caused the settings window card to jump wildly. After spending more than one and a half hour figuring out the problem i finally found the solution which was using CSS’ translate being edited while grabbing the windows with mouse events in JS. The following is the JS code for window grabbing. function makeWindowDraggable(windowEl) { const header = windowEl.querySelector('.window-header'); if (!header) return; let currentX = windowEl.id === 'settings' ? 420 : 100; let currentY = 100; let startX = 0; let startY = 0; windowEl.style.transform = `translate(${currentX}px, ${currentY}px)`; header.onmousedown = dragMouseDown; function dragMouseDown(e) { e = e || window.event; if (e.target.closest('.close')) return; e.preventDefault(); highestZIndex++; windowEl.style.zIndex = highestZIndex; startX = e.clientX; startY = e.clientY; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; } function elementDrag(e) { e = e || window.event; e.preventDefault(); let deltaX = e.clientX - startX; let deltaY = e.clientY - startY; startX = e.clientX; startY = e.clientY; currentX += deltaX; currentY += deltaY; windowEl.style.transform = `translate(${currentX}px, ${currentY}px)`; } function closeDragElement() { document.onmouseup = null; document.onmousemove = null; } } TaskBar Indicators: I had less time left after all time dumped into mostly fixing a weirdly acting window grabbing system which had no sense that why is that even happening😖. So another thing I added is a line in Taskbar Buttons to show window status. It is inspired from Windows11, when in focus it is wide and blue, when out of focus it is small and grey, and when closed, the line goes out too. Subtle but nice and smooth effect. The CSS was simple not-worth of code but JS played the real affect: 🎯Next Goals: Add more and more apps Add Taskbar clock -Add welcome screen -Make the Start Menu actually worth-it to open it. Feel Free to Reply the project or check it out now here: https://mako-s.netlify.app
Update 0.3 of MAK_OS !!! This Time I added A Lot of new cool and nice things for the update 0.3! Try at https://mako-s.netlify.app New Things Added✨ : TaskBar Clock Added! 🕙 The “One feature not listed in guide” added in the form of WebViewer 🌐 container apps that display any webpage as an app within the WebOS. Url are added from Settings. Added Some Nice wallpapers you can switch through in Settings. 🧱 Next Goals 🎯: Make The Start Menu Useful Enough. Make a Welcome Screen with User Name option.
🎉🎉 MAK.OS , is finally COMPLETED and LIVE! ✨✨ MAK.OS, a web based OS, is all done and ready to use! Seriously this time all the things added were way more easy and fun. Unlike in many previously added features where I would stuck on issues etc. All the features below were able to be added in just 2hrs! Fun Fact about the project, the windows in the MAK.OS are literally just Bootstrap’s cards! ’Cause they had almost every thing, a card header, card body, card image alignment etc. Features Added: ✅ Log in Screen added with username input option. Start Menu buttons of Logout and Sleep now work Username displayed in Start Menu. Web Browser added in the form of my very own MAK_Tab project! Added an About app for info Added Desktop Icons Taskbar icons only appear when a window is open. Taskbar Icons changed to only emoji logo instead of text+emoji style. That’s It! The Project is finally completed! Try it now at: https://mako-s.netlify.app Now I am just going to Ship this Project! Yippee!
Ships:
Introducing MAK.OS! A tiny WebOS designed to run in your Web Browser! It has all those features you expect a webOS to have. A smooth window grabbing system made from Javascript. A welcome/login screen, a working username input to carry your name into the OS!(this is the 1 new feature that the guide didn’t list). You also have a calculator, a settings app to change wallpaper and two URL controllers for the two Web Viewer Apps. the Web Viewer apps run a website address like a app in the OS! The start menu shows your name, MAK.OS info, and Logout and Sleep buttons! The taskbar clock is on far right, start menu button on far left. in the middle is windows11 inspired taskbar app icons displayer. Try the project now!...
|
1793119821.5032575
|
1793206221.5032575
|
|
14834
|
My awesome macropad! by @anujkishan918 | Stardance
|
anujkishan918
|
1
|
2.95
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-11T06:04:49Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built CyberPad, a custom 3×3 macropad featuring nine mechanical switches, a rotary encoder, and an OLED display. The device runs on a Seeed XIAO RP2040 using CircuitPython and KMK firmware, and supports three switchable profiles: Productivity, Gaming, and Media. Each profile has multiple layers, custom shortcuts, OLED animations, and visual feedback for the active mode. I also designed the PCB in KiCad and created a custom 3D-printable enclosure.I always watched YouTubers build 3d models and print them but never had the resources or the opportunity to do so so this was quite good The most challenging part was bringing together multiple engineering disciplines into a single project. I had previously been exposed to PCB design, CAD modeling, embedded programming, firmware development, and 3D printing, but I had never combined all of them into one complete product. Getting the hardware, firmware, OLED interface, rotary encoder, and enclosure design to work together required a lot of iteration and troubleshooting. What I am most proud of is that CyberPad is a complete hardware product rather than an isolated experiment. It includes a custom PCB, custom enclosure, firmware, user interface, and documentation. Building it gave me confidence that I could take an idea from concept to a working prototype. It also gave me the confidence to publish my work publicly on GitHub. Before this project, many of the tools and technologies were things I had only explored individually. CyberPad showed me that I could combine them into something tangible and share it with others. To test CyberPad, users will need a Seeed XIAO RP2040, a 128×32 SSD1306 OLED display, an EC11 rotary encoder, nine MX-style switches, and the custom PCB and enclosure files provided in the repository. The firmware is written using CircuitPython and KMK. After installing CircuitPython on the RP2040 and copying the required libraries and firmware files, the device will boot directly into the CyberPad interface. Users can switch between Productivity, Gaming, and Media profiles using the top-row key combination and verify that the OLED display, encoder controls, shortcuts, and profile animations function correctly.", "repo": "https://github.com/Anuj981-blip/Cyber-pad", "demo": ""}]...
|
[{"post_id": 9275, "ts": "2026 [{"post_id": 9275, "ts": "2026-06-15T16:01:52Z", "hours": 1.9481, "text": "Devlog 2 updated the firmware"}, {"post_id": 6679, "ts": "2026-06-11T05:52:16Z", "hours": 0.6497, "text": "A cyber-pad with a rotary encoder and an oled display that has 3 different profiles and is highly customizable"}]...
|
Title: My awesome macropad! by @anujkishan918 | St Title: My awesome macropad! by @anujkishan918 | Stardance
Devlogs:
A cyber-pad with a rotary encoder and an oled display that has 3 different profiles and is highly customizable
Devlog 2 updated the firmware
Ships:
I built CyberPad, a custom 3×3 macropad featuring nine mechanical switches, a rotary encoder, and an OLED display. The device runs on a Seeed XIAO RP2040 using CircuitPython and KMK firmware, and supports three switchable profiles: Productivity, Gaming, and Media. Each profile has multiple layers, custom shortcuts, OLED animations, and visual feedback for the active mode. I also designed the PCB in KiCad and created a custom 3D-printable enclosure.I always watched YouTubers build 3d models and print them but never had the resources or the opportunity to do so so this was quite good The most challenging part was bringing together multiple engineering disciplines into a single project. I had previously been exposed to PCB design, CAD modeling, embedded programming, firmware development, and 3D printing, but I had never combined all of them into one complete product. Getting the hardware, firmware, OLED interface, rotary encoder, and enclosure design to work together required a lot of iteration and troubleshooting. What I am most proud of is that CyberPad is a complete hardware product rather than an isolated experiment. It includes a custom PCB, custom enclosure, firmware, user interface, and documentation. Building it gave me confidence that I could take an idea from concept to a working prototype. It also gave me the confidence to publish my work publicly on GitHub. Before this project, many of the tools and technologies were things I had only explored individually. CyberPad showed me that I could combine them into something tangible and share it with others. To test CyberPad, users will need a Seeed XIAO RP2040, a 128×32 SSD1306 OLED display, an EC11 rotary encoder, nine MX-style switches, and the custom PCB and enclosure files provided in the repository. The firmware is written using CircuitPython and KMK. After installing CircuitPython on the RP2040 and copying the required libraries and firmware files, the device will boot directly into the CyberPad interface. Users can switch between Productivity, Gaming, and Media profiles using the top-row key combination and verify that the OLED display, encoder controls, shortcuts, and profile animations function correctly....
|
1792878765.6738043
|
1793742765.6738043
|
|
14881
|
friendos by @shs | Stardance
|
shs
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T11:29:52Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I tried not to copy the guide and I used new methods to solve my problems when i couldent understand the guide and it needed a lot of googling and when I got stuck I had to use claude. I added craftmine which is a platformer which was made by @TerribleGames123 I would have used my own thing but scratch decided to lock me out of my account. I have added a picture of the homepage. My pages can go on top of another and go away and open off the good stuff 😁", "repo": "https://github.com/SHSplas/FriendOS", "demo": "https://shsplas.github.io"}]...
|
[{"post_id": 73924, "ts": "202 [{"post_id": 73924, "ts": "2026-09-26T10:37:16Z", "hours": 2.2356, "text": "i just finished making my second app craftMine its a platformer and ive also made notes more functional and finally finished my first project"}, {"post_id": 73699, "ts": "2026-09-25T18:48:16Z", "hours": 2.6133, "text": "i made my first app"}, {"post_id": 73516, "ts": "2026-09-25T09:14:01Z", "hours": 4.4669, "text": "i added the option to close windows and open them this is my homepage background"}]...
|
Title: friendos by @shs | Stardance
Devlogs:
i ad Title: friendos by @shs | Stardance
Devlogs:
i added the option to close windows and open them this is my homepage background
i made my first app
i just finished making my second app craftMine its a platformer and ive also made notes more functional and finally finished my first project
Ships:
I tried not to copy the guide and I used new methods to solve my problems when i couldent understand the guide and it needed a lot of googling and when I got stuck I had to use claude. I added craftmine which is a platformer which was made by @TerribleGames123 I would have used my own thing but scratch decided to lock me out of my account. I have added a picture of the homepage. My pages can go on top of another and go away and open off the good stuff 😁...
|
1793145248.5462532
|
1793231648.5462532
|
|
14886
|
Focus Totem by @Kvin | Stardance
|
Kvin
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T13:04:45Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Focus Totem is a Pomodoro study-timer macropad built around a through-hole Seeed XIAO RP2040. Twist the rotary encoder to set your minutes, press to start, and the 0.91” OLED counts down while two SK6812 LEDs shift amber → green → red through the session. Three keys handle start/pause, hold-to-reset, and a short-break preset. An 84×72mm two-layer board in a 3D-printed sandwich case, running QMK!", "repo": "https://github.com/Kvin-21/Focus-Totem-PCB", "demo": ""}]...
|
[{"post_id": 9920, "ts": "2026 [{"post_id": 9920, "ts": "2026-06-16T13:03:27Z", "hours": 5.0364, "text": "It’s done. The last part was just tidying and fixing rather than new features. I fixed all issues, and set it up for submission, by doing my least favourite part: organizing my github. At this point it’s all in place: design files organised into CAD/PCB/Firmware, production files generated, README with the screenshots and BOM. It’s finally done!"}, {"post_id": 6658, "ts": "2026-06-11T05:02:43Z", "hours": 6.7278, "text": "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."}, {"post_id": 6153, "ts": "2026-06-10T10:52:28Z", "hours": 2.7956, "text": "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."}]...
|
Title: Focus Totem by @Kvin | Stardance
Devlogs:
Title: Focus Totem by @Kvin | Stardance
Devlogs:
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 #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.
It’s done. The last part was just tidying and fixing rather than new features. I fixed all issues, and set it up for submission, by doing my least favourite part: organizing my github. At this point it’s all in place: design files organised into CAD/PCB/Firmware, production files generated, README with the screenshots and BOM. It’s finally done!
Ships:
Focus Totem is a Pomodoro study-timer macropad built around a through-hole Seeed XIAO RP2040. Twist the rotary encoder to set your minutes, press to start, and the 0.91” OLED counts down while two SK6812 LEDs shift amber → green → red through the session. Three keys handle start/pause, hold-to-reset, and a short-break preset. An 84×72mm two-layer board in a 3D-printed sandwich case, running QMK!...
|
1792875235.8016105
|
1793739235.8016105
|
|
14888
|
Mission Control Bot by @Kvin | Stardance
|
Kvin
|
1
|
2.0
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-11T02:06:03Z", "hours": 2.0, "multiplier": 5.98, "payout": 12, "blessing": "neutral", "text": "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!", "repo": "https://github.com/Kvin-21/Slack-Mission-Control-Bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B9YRP9G0M"}]...
|
[{"post_id": 6141, "ts": "2026 [{"post_id": 6141, "ts": "2026-06-10T10:16:30Z", "hours": 2.0722, "text": "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"}]...
|
Title: Mission Control Bot by @Kvin | Stardance
D Title: Mission Control Bot by @Kvin | Stardance
Devlogs:
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
Ships:
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!...
|
1792878528.5583696
|
1793742528.5583696
|
|
14906
|
Unfathomablepad by @jphwb | Stardance
|
jphwb
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T18:41:07Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Made an unfathomably bad macropad to use for my audio management.", "repo": "https://github.com/jphwba/unfathomablepad", "demo": ""}]...
|
[{"post_id": 12082, "ts": "202 [{"post_id": 12082, "ts": "2026-06-19T18:34:25Z", "hours": 1.0, "text": "made the firmware and updated the CAD to the Xiao can be accessed from outside, added labels to buttons, rounded corners and made a render with the parts."}, {"post_id": 7904, "ts": "2026-06-13T05:55:14Z", "hours": 3.0, "text": "Finished the CAD (im absolutely horrid at it) took me way too long to figure it out. Anyways I hope my screws were correct."}, {"post_id": 7531, "ts": "2026-06-12T16:03:07Z", "hours": 0.0, "text": "Created the PCB, I had somehting with more switches but it got too complex and I couldnt figure out how to do the tracing. I lost about 6ish hours bc the kicad wakatime app wasnt working."}]...
|
Title: Unfathomablepad by @jphwb | Stardance
Devl Title: Unfathomablepad by @jphwb | Stardance
Devlogs:
Created the PCB, I had somehting with more switches but it got too complex and I couldnt figure out how to do the tracing. I lost about 6ish hours bc the kicad wakatime app wasnt working.
Finished the CAD (im absolutely horrid at it) took me way too long to figure it out. Anyways I hope my screws were correct.
made the firmware and updated the CAD to the Xiao can be accessed from outside, added labels to buttons, rounded corners and made a render with the parts.
Ships:
Made an unfathomably bad macropad to use for my audio management....
|
1793224393.5854666
|
1793310793.5854666
|
|
14928
|
Chaos by @Snoopsawg | Stardance
|
Snoopsawg
|
1
|
12.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-07T07:54:33Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hi! Welcome to Chaos! Chaos theory is a branch of mathematics focusing on nonlinear systems that are highly sensitive to initial conditions, meaning small changes can lead to vastly different outcomes. For example, if you went and slapped Tom Holland on the face in Iceland, you could be the cause of a minion uprising against kangaroos in Australia. It’s just like that, but with tiny bit more realistic constraints. You may know it as “the butterfly effect”! n-pendulums work based on a similar principle. While single pendulums move via simple harmonic motion governed and constrained by mathematical equations, double, triple, quadruple pendulums listen to chaos theory. They’re completely random, and completely unpredictable! With my project, you can simulate a triple pendulum by messing around with the initial conditions (such as the initial angles etcetera), and then plot a ‘phase map.’", "repo": "https://github.com/ivanadua/chaos", "demo": "https://chaoticaa.streamlit.app/"}]...
|
[{"post_id": 42481, "ts": "202 [{"post_id": 42481, "ts": "2026-08-07T07:53:15Z", "hours": 1.1842, "text": "READme and animation!"}, {"post_id": 37439, "ts": "2026-07-30T05:46:43Z", "hours": 0.9147, "text": "Phase Map: Finding Islands of Stability in Chaos import matplotlib.pyplot as plt from pendulum_equations import _lambdifygenerated as accel# # Number of pixels per axis (e.g., 200x200 = 40,000 pendulums simulated at once) GRID_RES = 200 L1 = L2 = L3 = 1.0 m1 = m2 = m3 = 1.0g = 9.81 theta1_range = np.linspace(-np.pi, np.pi, GRID_RES) theta2_range = np.linspace(-np.pi, np.pi, GRID_RES) T1, T2 = np.meshgrid(theta1_range, theta2_range) # Initialize a massive state grid: Shape is (GRID_RES, GRID_RES, 6) state_grid = np.zeros((GRID_RES, GRID_RES, 6), dtype=float) state_grid[:, :, 0] = T1 # X-axis of pixels maps to unique theta1 valuesstate_grid[:, :, 1] = T2 # Y-axis of pixels maps to unique theta2 valuesstate_grid[:, :, 2] = np.pi / 4 # Keep theta3 constant at 45 degrees for allstate_grid[:, :, 3] = 0.0 # omega1 = 0state_grid[:, :, 4] = 0.0 # omega2 = 0state_grid[:, :, 5] = 0.0 # omega3 = 0# def vectorized_derivatives(state): # Unpack the 3D grid axes t1 = state[:, :, 0] t2 = state[:, :, 1] t3 = state[:, :, 2] w1 = state[:, :, 3] w2 = state[:, :, 4] w3 = state[:, :, 5] a1, a2, a3 = accel(t1, t2, t3, w1, w2, w3, L1, L2, L3, m1, m2, m3, g) #Runge-Kutta return np.stack([w1, w2, w3, a1, a2, a3], axis=-1) def rk4_step(state, dt): k1 = vectorized_derivatives(state) k2 = vectorized_derivatives(state + 0.5 * dt * k1) k3 = vectorized_derivatives(state + 0.5 * dt * k2) k4 = vectorized_derivatives(state + dt * k3) return state + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4) dt = 0.0005 total_steps = 15000 # Total time window to monitor flipping / divergence # To measure chaos vs stability, track the max velocity reached by each pendulum. # Chaotic pendulums will violently whip around (high max velocity/flipping). # Stable islands will stay tightly bound (very low max velocity). max_omega_observed = np.zeros((GRID_RES, GRID_RES)) print(f\"Simulating {GRID_RES}x{GRID_RES} ({GRID_RES**2}) pendulums simultaneously snoopsawggggg...\") for step in range(total_steps): state_grid = rk4_step(state_grid, dt) # Extract instantaneous absolute speeds of the middle and bottom bobs current_speeds = np.abs(state_grid[:, :, 4]) + np.abs(state_grid[:, :, 5]) # Store the peak (peak, get it, peak) velocity hit by each specific coordinate pixel max_omega_observed = np.maximum(max_omega_observed, current_speeds) if step % 3000 == 0 and step > 0: print(f\" -> Progress: {int((step/total_steps)*100)}% complete...\") print(\"Simulation finished! Puzzah! Rendering Stability Map...\")# plt.figure(figsize=(8, 8))# Logarithmic scaling brings out hidden geometric structures and fractal edges stability_map = np.log1p(max_omega_observed) plt.imshow( stability_map, extent=[-np.pi, np.pi, -np.pi, np.pi], origin='lower', cmap='inferno') plt.colorbar(label='Chaos Metric (Log Peak Angular Velocity)') plt.xlabel(r'Initial $\\theta_1$ (rad)') plt.ylabel(r'Initial $\\theta_2$ (rad)')plt.title('Triple Pendulum Phase Map: Finding Islands of Stability') plt.show()"}, {"post_id": 21971, "ts": "2026-07-04T05:55:42Z", "hours": 9.7961, "text": "Simulating the triple pendulum import sympy as sp import inspectt=sp.symbols('t')theta1=sp.Function('theta1')(t)theta2=sp.Function('theta2')(t)theta3=sp.Function('theta3')(t)L1, L2, L3 = sp.symbols('L1 L2 L3')m1, m2, m3 = sp.symbols('m1 m2 m3')x1= L1*sp.sin(theta1)y1= -L1*sp.cos(theta1)x2= x1 + L2*sp.sin(theta2)y2= y1 - L2*sp.cos(theta2)x3= x2 + L3*sp.sin(theta3)y3= y2 - L3*sp.cos(theta3)T1,T2,T3 = sp.symbols('T1 T2 T3')V1,V2,V3 = sp.symbols('V1 V2 V3')x1dd= sp.diff(x1,t,2)x2dd= sp.diff(x2,t,2)x3dd= sp.diff(x3,t,2)y1dd= sp.diff(y1,t,2)y2dd= sp.diff(y2,t,2)y3dd= sp.diff(y3,t,2)vx1=sp.diff(x1,t)vy1=sp.diff(y1,t)vx2=sp.diff(x2,t)vy2=sp.diff(y2,t)vx3=sp.diff(x3,t)vy3=sp.diff(y3,t)T = (sp.Rational(1,2)*m1*(vx1**2 + vy1**2) + sp.Rational(1,2)*m2*(vx2**2 + vy2**2) + sp.Rational(1,2)*m3*(vx3**2 + vy3**2))g = sp.symbols('g')V = m1*g*y1 + m2*g*y2 + m3*g*y3 Lagrangian = T - Vprint(\"Getting Lagrangian!!!\")Lagrangian = sp.simplify(Lagrangian)print(Lagrangian)print(\"Hey, we got the Lagrangian!\")#Euler-Lagrange equations:Euler1= sp.diff(sp.diff(Lagrangian, sp.diff(theta1,t)), t) - sp.diff(Lagrangian, theta1)Euler2= sp.diff(sp.diff(Lagrangian, sp.diff(theta2,t)), t) - sp.diff(Lagrangian, theta2)Euler3= sp.diff(sp.diff(Lagrangian, sp.diff(theta3,t)), t) - sp.diff(Lagrangian, theta3)theta1dd=sp.diff(theta1,t,2)theta2dd=sp.diff(theta2,t,2)theta3dd=sp.diff(theta3,t,2)derivs=[theta1dd, theta2dd, theta3dd]solution=sp.solve((Euler1, Euler2, Euler3), derivs, dict=True)alpha1 = solution[0][derivs[0]]alpha2 = solution[0][derivs[1]]alpha3 = solution[0][derivs[2]]#now i want to simplify the solution and then convert it to a function that can be used in numerical simulations.print(\"alpha1=\", alpha1)print(\"******************************************************************************************\")print(\"alpha2=\", alpha2)print(\"******************************************************************************************\")print(\"alpha3=\", alpha3)accel_func = sp.lambdify( (theta1, theta2, theta3, sp.diff(theta1,t), sp.diff(theta2,t), sp.diff(theta3,t), L1, L2, L3, m1, m2, m3, g), (solution[0][theta1dd], solution[0][theta2dd], solution[0][theta3dd]), \"numpy\")print(\"Writing equations with proper NumPy math imports...\")with open(\"pendulum_equations.py\", \"w\") as f: f.write(\"import numpy as np\\n\") # This injects the missing sin and cos tools directly into the math module! f.write(\"from numpy import sin, cos\\n\\n\") f.write(inspect.getsource(accel_func))print(\"Successfully saved math script to 'pendulum_equations.py'!\")# ... Your existing derivation code that creates 'accel' ...# #x1dd= -L1*((theta1.diff()*theta1.diff())*sp.sin(theta1)) + (theta1.diff().diff()*(L1*sp.cos(theta1)))# x2dd=x1dd - (L2*theta2.diff()*theta2.diff()*sp.sin(theta2)) + (theta2.diff().diff()*L2*sp.cos(theta2))# x3dd=x2dd - (theta3.diff()*theta3.diff()*L3*sp.sin(theta3)) + (theta3.diff().diff()*sp.sin(theta3)*L3)# y1dd= (theta1.diff()*theta1.diff()*L1*sp.cos(theta1))+(theta1.diff().diff()*L1*sp.sin(theta1))# y2dd=y1dd + (theta2.diff()*theta2.diff()*L2*sp.cos(theta2))+(theta2.diff().diff()*L2*sp.sin(theta2))# y3dd=y2dd + (theta3.diff()*theta3.diff()*L3*sp.cos(theta3))+(theta3.diff().diff()*L3*sp.sin(theta3))# vx1=sp.diff(x1,t)# vy1=sp.diff(y1,t)# vx2=sp.diff(x2,t)# vy2=sp.diff(y2,t)# vx3=sp.diff(x3,t)# vy3=sp.diff(y3,t)# T= # #Equation1 # eq1 =sp.Eq(m1*x1dd, (-T1*sp.sin(theta1))+(T2*sp.sin(theta2)))# #Equation2# eq2 = sp.Eq(m1*y1dd, (T1*sp.cos(theta1))-(T2*sp.cos(theta2))-(m1*9.81))# #Equation3# eq3 = sp.Eq(m2*x2dd, (-T2*sp.sin(theta2))+(T3*sp.sin(theta3)))# #Equation4# eq4 = sp.Eq(m2*y2dd, (T2*sp.cos(theta2))-(T3*sp.cos(theta3))-(m2*9.81))# #Equation5# eq5 = sp.Eq(m3*x3dd, (-T3*sp.sin(theta3))# #Equation6# eq6 = sp.Eq(m3*y3dd, (T3*sp.cos(theta3)) - (m3*9.81))# sp.solve([eq1, eq2, eq3, eq4, eq5, eq6], (theta1.diff().diff(), theta2.diff().diff(), theta3.diff().diff(), T1, T2, T3)), dict=True"}]...
|
Title: Chaos by @Snoopsawg | Stardance
Devlogs:
S Title: Chaos by @Snoopsawg | Stardance
Devlogs:
Simulating the triple pendulum import sympy as sp import inspectt=sp.symbols('t')theta1=sp.Function('theta1')(t)theta2=sp.Function('theta2')(t)theta3=sp.Function('theta3')(t)L1, L2, L3 = sp.symbols('L1 L2 L3')m1, m2, m3 = sp.symbols('m1 m2 m3')x1= L1*sp.sin(theta1)y1= -L1*sp.cos(theta1)x2= x1 + L2*sp.sin(theta2)y2= y1 - L2*sp.cos(theta2)x3= x2 + L3*sp.sin(theta3)y3= y2 - L3*sp.cos(theta3)T1,T2,T3 = sp.symbols('T1 T2 T3')V1,V2,V3 = sp.symbols('V1 V2 V3')x1dd= sp.diff(x1,t,2)x2dd= sp.diff(x2,t,2)x3dd= sp.diff(x3,t,2)y1dd= sp.diff(y1,t,2)y2dd= sp.diff(y2,t,2)y3dd= sp.diff(y3,t,2)vx1=sp.diff(x1,t)vy1=sp.diff(y1,t)vx2=sp.diff(x2,t)vy2=sp.diff(y2,t)vx3=sp.diff(x3,t)vy3=sp.diff(y3,t)T = (sp.Rational(1,2)*m1*(vx1**2 + vy1**2) + sp.Rational(1,2)*m2*(vx2**2 + vy2**2) + sp.Rational(1,2)*m3*(vx3**2 + vy3**2))g = sp.symbols('g')V = m1*g*y1 + m2*g*y2 + m3*g*y3 Lagrangian = T - Vprint("Getting Lagrangian!!!")Lagrangian = sp.simplify(Lagrangian)print(Lagrangian)print("Hey, we got the Lagrangian!")#Euler-Lagrange equations:Euler1= sp.diff(sp.diff(Lagrangian, sp.diff(theta1,t)), t) - sp.diff(Lagrangian, theta1)Euler2= sp.diff(sp.diff(Lagrangian, sp.diff(theta2,t)), t) - sp.diff(Lagrangian, theta2)Euler3= sp.diff(sp.diff(Lagrangian, sp.diff(theta3,t)), t) - sp.diff(Lagrangian, theta3)theta1dd=sp.diff(theta1,t,2)theta2dd=sp.diff(theta2,t,2)theta3dd=sp.diff(theta3,t,2)derivs=[theta1dd, theta2dd, theta3dd]solution=sp.solve((Euler1, Euler2, Euler3), derivs, dict=True)alpha1 = solution[0][derivs[0]]alpha2 = solution[0][derivs[1]]alpha3 = solution[0][derivs[2]]#now i want to simplify the solution and then convert it to a function that can be used in numerical simulations.print("alpha1=", alpha1)print("******************************************************************************************")print("alpha2=", alpha2)print("******************************************************************************************")print("alpha3=", alpha3)accel_func = sp.lambdify( (theta1, theta2, theta3, sp.diff(theta1,t), sp.diff(theta2,t), sp.diff(theta3,t), L1, L2, L3, m1, m2, m3, g), (solution[0][theta1dd], solution[0][theta2dd], solution[0][theta3dd]), "numpy")print("Writing equations with proper NumPy math imports...")with open("pendulum_equations.py", "w") as f: f.write("import numpy as np\n") # This injects the missing sin and cos tools directly into the math module! f.write("from numpy import sin, cos\n\n") f.write(inspect.getsource(accel_func))print("Successfully saved math script to 'pendulum_equations.py'!")# ... Your existing derivation code that creates 'accel' ...# #x1dd= -L1*((theta1.diff()*theta1.diff())*sp.sin(theta1)) + (theta1.diff().diff()*(L1*sp.cos(theta1)))# x2dd=x1dd - (L2*theta2.diff()*theta2.diff()*sp.sin(theta2)) + (theta2.diff().diff()*L2*sp.cos(theta2))# x3dd=x2dd - (theta3.diff()*theta3.diff()*L3*sp.sin(theta3)) + (theta3.diff().diff()*sp.sin(theta3)*L3)# y1dd= (theta1.diff()*theta1.diff()*L1*sp.cos(theta1))+(theta1.diff().diff()*L1*sp.sin(theta1))# y2dd=y1dd + (theta2.diff()*theta2.diff()*L2*sp.cos(theta2))+(theta2.diff().diff()*L2*sp.sin(theta2))# y3dd=y2dd + (theta3.diff()*theta3.diff()*L3*sp.cos(theta3))+(theta3.diff().diff()*L3*sp.sin(theta3))# vx1=sp.diff(x1,t)# vy1=sp.diff(y1,t)# vx2=sp.diff(x2,t)# vy2=sp.diff(y2,t)# vx3=sp.diff(x3,t)# vy3=sp.diff(y3,t)# T= # #Equation1 # eq1 =sp.Eq(m1*x1dd, (-T1*sp.sin(theta1))+(T2*sp.sin(theta2)))# #Equation2# eq2 = sp.Eq(m1*y1dd, (T1*sp.cos(theta1))-(T2*sp.cos(theta2))-(m1*9.81))# #Equation3# eq3 = sp.Eq(m2*x2dd, (-T2*sp.sin(theta2))+(T3*sp.sin(theta3)))# #Equation4# eq4 = sp.Eq(m2*y2dd, (T2*sp.cos(theta2))-(T3*sp.cos(theta3))-(m2*9.81))# #Equation5# eq5 = sp.Eq(m3*x3dd, (-T3*sp.sin(theta3))# #Equation6# eq6 = sp.Eq(m3*y3dd, (T3*sp.cos(theta3)) - (m3*9.81))# sp.solve([eq1, eq2, eq3, eq4, eq5, eq6], (theta1.diff().diff(), theta2.diff().diff(), theta3.diff().diff(), T1, T2, T3)), dict=True
Phase Map: Finding Islands of Stability in Chaos import matplotlib.pyplot as plt from pendulum_equations import _lambdifygenerated as accel# # Number of pixels per axis (e.g., 200x200 = 40,000 pendulums simulated at once) GRID_RES = 200 L1 = L2 = L3 = 1.0 m1 = m2 = m3 = 1.0g = 9.81 theta1_range = np.linspace(-np.pi, np.pi, GRID_RES) theta2_range = np.linspace(-np.pi, np.pi, GRID_RES) T1, T2 = np.meshgrid(theta1_range, theta2_range) # Initialize a massive state grid: Shape is (GRID_RES, GRID_RES, 6) state_grid = np.zeros((GRID_RES, GRID_RES, 6), dtype=float) state_grid[:, :, 0] = T1 # X-axis of pixels maps to unique theta1 valuesstate_grid[:, :, 1] = T2 # Y-axis of pixels maps to unique theta2 valuesstate_grid[:, :, 2] = np.pi / 4 # Keep theta3 constant at 45 degrees for allstate_grid[:, :, 3] = 0.0 # omega1 = 0state_grid[:, :, 4] = 0.0 # omega2 = 0state_grid[:, :, 5] = 0.0 # omega3 = 0# def vectorized_derivatives(state): # Unpack the 3D grid axes t1 = state[:, :, 0] t2 = state[:, :, 1] t3 = state[:, :, 2] w1 = state[:, :, 3] w2 = state[:, :, 4] w3 = state[:, :, 5] a1, a2, a3 = accel(t1, t2, t3, w1, w2, w3, L1, L2, L3, m1, m2, m3, g) #Runge-Kutta return np.stack([w1, w2, w3, a1, a2, a3], axis=-1) def rk4_step(state, dt): k1 = vectorized_derivatives(state) k2 = vectorized_derivatives(state + 0.5 * dt * k1) k3 = vectorized_derivatives(state + 0.5 * dt * k2) k4 = vectorized_derivatives(state + dt * k3) return state + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4) dt = 0.0005 total_steps = 15000 # Total time window to monitor flipping / divergence # To measure chaos vs stability, track the max velocity reached by each pendulum. # Chaotic pendulums will violently whip around (high max velocity/flipping). # Stable islands will stay tightly bound (very low max velocity). max_omega_observed = np.zeros((GRID_RES, GRID_RES)) print(f"Simulating {GRID_RES}x{GRID_RES} ({GRID_RES**2}) pendulums simultaneously snoopsawggggg...") for step in range(total_steps): state_grid = rk4_step(state_grid, dt) # Extract instantaneous absolute speeds of the middle and bottom bobs current_speeds = np.abs(state_grid[:, :, 4]) + np.abs(state_grid[:, :, 5]) # Store the peak (peak, get it, peak) velocity hit by each specific coordinate pixel max_omega_observed = np.maximum(max_omega_observed, current_speeds) if step % 3000 == 0 and step > 0: print(f" -> Progress: {int((step/total_steps)*100)}% complete...") print("Simulation finished! Puzzah! Rendering Stability Map...")# plt.figure(figsize=(8, 8))# Logarithmic scaling brings out hidden geometric structures and fractal edges stability_map = np.log1p(max_omega_observed) plt.imshow( stability_map, extent=[-np.pi, np.pi, -np.pi, np.pi], origin='lower', cmap='inferno') plt.colorbar(label='Chaos Metric (Log Peak Angular Velocity)') plt.xlabel(r'Initial $\theta_1$ (rad)') plt.ylabel(r'Initial $\theta_2$ (rad)')plt.title('Triple Pendulum Phase Map: Finding Islands of Stability') plt.show()
READme and animation!
Ships:
Hi! Welcome to Chaos! Chaos theory is a branch of mathematics focusing on nonlinear systems that are highly sensitive to initial conditions, meaning small changes can lead to vastly different outcomes. For example, if you went and slapped Tom Holland on the face in Iceland, you could be the cause of a minion uprising against kangaroos in Australia. It’s just like that, but with tiny bit more realistic constraints. You may know it as “the butterfly effect”! n-pendulums work based on a similar principle. While single pendulums move via simple harmonic motion governed and constrained by mathematical equations, double, triple, quadruple pendulums listen to chaos theory. They’re completely random, and completely unpredictable! With my project, you can simulate a triple pendulum by messing around with the initial conditions (such as the initial angles etcetera), and then plot a ‘phase map.’...
|
1793138295.8214383
|
1793224695.8214383
|
|
14979
|
HarupiOS by @Harupi | Stardance
|
Harupi
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T02:06:25Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "HarupiOS is an OS-looking website, where you can find some informations about me, the last books I’ve read, and a Pong game ! The hardest part was certainly to find what to put on this website. I took me some time but I at least enjoyed adding the Pong easter egg. More details are available on the readme 📃 It’s nothing amazing but I hope you’ll like it :) Have a nice day !", "repo": "https://github.com/Hvrnbi/harupios", "demo": "https://harupios.vercel.app/"}]...
|
[{"post_id": 12854, "ts": "202 [{"post_id": 12854, "ts": "2026-06-21T01:38:32Z", "hours": 3.5153, "text": "HarupiOS devlog 4 - Completed the entire guide, added an “About me” window and a Pong easter egg. I will ship the project like that 💫"}, {"post_id": 9380, "ts": "2026-06-15T18:34:44Z", "hours": 2.3997, "text": "HarupiOS devlog 3 - Completed the 4th jam, got an app with a list of the last books I’ve read"}, {"post_id": 8093, "ts": "2026-06-13T14:48:18Z", "hours": 1.6094, "text": "HarupiOS Devlog 2 - Completed the 3d jam, got a draggable and closable window"}, {"post_id": 6304, "ts": "2026-06-10T16:34:42Z", "hours": 1.8831, "text": "HarupiOS Devlog 1 - Followed the two first jams of WebOS, put some time on css but it can still look better🧑🎨"}]...
|
Title: HarupiOS by @Harupi | Stardance
Devlogs:
H Title: HarupiOS by @Harupi | Stardance
Devlogs:
HarupiOS Devlog 1 - Followed the two first jams of WebOS, put some time on css but it can still look better🧑🎨
HarupiOS Devlog 2 - Completed the 3d jam, got a draggable and closable window
HarupiOS devlog 3 - Completed the 4th jam, got an app with a list of the last books I’ve read
HarupiOS devlog 4 - Completed the entire guide, added an “About me” window and a Pong easter egg. I will ship the project like that 💫
Ships:
HarupiOS is an OS-looking website, where you can find some informations about me, the last books I’ve read, and a Pong game ! The hardest part was certainly to find what to put on this website. I took me some time but I at least enjoyed adding the Pong easter egg. More details are available on the readme 📃 It’s nothing amazing but I hope you’ll like it :) Have a nice day !...
|
1793134484.9467664
|
1793220884.9467664
|
|
14990
|
Aerii by @aeriiocake | Stardance
|
aeriiocake
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T07:28:56Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an web app called Aerii. It’s like an combination of all the important apps for corporates and stuff. For eg. it has chat, timetable, notes, meet, assistant, etc. It’s also customizable!! I had faced issues in debugging and making the README but I overcame them somehow.", "repo": "https://github.com/aeriiocake/aeriiocake-web", "demo": "https://hackatime.hackclub.com/@Immaculate/project/Aerii"}]...
|
[{"post_id": 11152, "ts": "202 [{"post_id": 11152, "ts": "2026-06-18T07:25:30Z", "hours": 1.7197, "text": "#Devlog 2: Hieee!!! So I’m adding WhatsApp like features to this rn. Although it’s lowk giving me a headache it’s litenuinely worth it. Anywhoo, imma end it here!!! Byeeee!!!!"}, {"post_id": 9857, "ts": "2026-06-16T09:55:16Z", "hours": 7.3594, "text": "#Devlog 1: Hieee!!! I had a random thought at 3am and decided to do it. ‘Cause why not?!?! So this is called Aerii. And as ya’ll can see, it has a chat box, an assistant, an option to publish msg, notes, timetable, a grammar correcter, AND an option to customize the theme!! I’m lowk unsatisfied with how this turned out though (bummer!) so I’ll try to figure out how to make it better! I lowkenuinely hope that ya’ll found this project intriguing! Anywho, I’ll end it here! BYEEEE!!!"}]...
|
Title: Aerii by @aeriiocake | Stardance
Devlogs:
Title: Aerii by @aeriiocake | Stardance
Devlogs:
#Devlog 1: Hieee!!! I had a random thought at 3am and decided to do it. ‘Cause why not?!?! So this is called Aerii. And as ya’ll can see, it has a chat box, an assistant, an option to publish msg, notes, timetable, a grammar correcter, AND an option to customize the theme!! I’m lowk unsatisfied with how this turned out though (bummer!) so I’ll try to figure out how to make it better! I lowkenuinely hope that ya’ll found this project intriguing! Anywho, I’ll end it here! BYEEEE!!!
#Devlog 2: Hieee!!! So I’m adding WhatsApp like features to this rn. Although it’s lowk giving me a headache it’s litenuinely worth it. Anywhoo, imma end it here!!! Byeeee!!!!
Ships:
I made an web app called Aerii. It’s like an combination of all the important apps for corporates and stuff. For eg. it has chat, timetable, notes, meet, assistant, etc. It’s also customizable!! I had faced issues in debugging and making the README but I overcame them somehow....
|
1793202641.7890499
|
1793289041.7890499
|
|
15004
|
PixieR by @Cryskyy | Stardance
|
Cryskyy
|
1
|
7.0
|
95
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T07:36:32Z", "hours": 6.0, "multiplier": 15.1, "payout": 95, "blessing": "neutral", "text": "I make a project called “PixieR”, PixieR is a 100% client-side web tool that converts any image into pixel art directly in your browser. no backend, no API calls — everything happens locally using the HTML5 Canvas API. The Challenging part in my project is managing all the logic such as main.js and whole web logic system Im so proud that I can make this project without any trouble, and I hope everyone can test out my project :) Check up my github to try my project :))", "repo": "https://github.com/cryskyyexp-ux/PixieR-Project", "demo": "https://pixier.netlify.app/"}]...
|
[{"post_id": 8109, "ts": "2026 [{"post_id": 8109, "ts": "2026-06-13T15:13:52Z", "hours": 1.0, "text": "PixieR Project Devlog — Fixing the Stretching Bug & Other Issues Compare Slider stretching (main issue) Cause: syncCmpCanvas() set cmp.style.width='100%' and cmp.style.height='100%' together with objectFit:'contain' . object-fit only works on replaced elements like <img> and <video> — it has no effect on <canvas> , so the canvas was forced to fill the wrapper’s full 100% x 100% box regardless of its actual pixel aspect ratio, stretching the pixel art. Fix: Compute the display size manually based on the pixel canvas’s own aspect ratio ( src.width / src.height ), fit it within the wrapper width and a max height of 400px, then explicitly set cmp-canvas and cmp-orig-img width/height in pixels (with horizontal centering via marginLeft ). Both layers now share identical dimensions so the slider overlay aligns correctly. Pixel Only view overflow/stretch Cause: solo-canvas had a fixed inline max-width:100%;max-height:480px , while syncSoloCanvas() separately set style.width / style.height to width*zoom / height*zoom in px. At high zoom levels this could overflow the frame, and the max-width/max-height constraints distorted the aspect ratio independently on each axis. Fix: Removed the conflicting inline max-width/max-height. syncSoloCanvas() now computes the zoomed size, then uniformly scales both dimensions down by the same factor if it exceeds the frame’s width or a 480px height cap, preserving aspect ratio. Eyedropper coordinate mismatch Cause: pixelCanvas mousemove/click handlers divided mouse coordinates by the zoom slider value to find the pixel under the cursor. This breaks if the canvas’s rendered size ever differs from width * zoom (e.g. after future layout changes), giving wrong color picks. Fix: Replaced the zoom-based division with a ratio of the canvas’s actual bitmap size to its rendered bounding box size ( pixelCanvas.width / rect.width ), which is robust to any CSS scaling. Compare slider not resizing on window resize Cause: No resize handler existed for the compare/pixel-only views, so resizing the browser left stale dimensions and a stretched look. Fix: Added a resize listener that re-runs syncCmpCanvas() or syncSoloCanvas() depending on the active view. Dead/unused popup duplication Cause: The star popup markup was hardcoded in the page AND re-inserted via createPopupHTML() using insertAdjacentHTML , creating a duplicate #starPopup risk and unnecessary DOM bloat. Fix: Removed the redundant insertAdjacentHTML injection since the markup already exists in the page; createPopupHTML() now just guards against duplicates. Toast fallback dead code Cause: showToast() inside the popup IIFE recreated a whole second #toast element with inline styles if the existing one wasn’t found — but it always exists in the page, making this branch dead and bug-prone (it referenced var(--text, ...) colors that may not exist)."}, {"post_id": 7336, "ts": "2026-06-12T07:27:25Z", "hours": 0.0, "text": "Detailing My Project README.md and adding some detail"}, {"post_id": 7282, "ts": "2026-06-12T04:18:31Z", "hours": 3.0, "text": "Hi Guys this is my project explaination how does the Pixelate work on steps: Step 1: Shrink (this is where the magic happens) jsconst small = document.createElement(‘canvas’); small.width = 64; small.height = 64; small.getContext(‘2d’).drawImage(srcImg, 0, 0, 64, 64); Imagine your photo is 1920×1080 pixels. You squish it down into a 64×64 canvas. To fit a million pixrls into 64×64, the browser has to merge groups of pixels into one. It looks at a chunk of the original image (say, a 30×17 block) and blends them all into a single average color. Result: you now have a real, tiny image — 64×64 actual pixels, each one a blended color from a chunk of the original. Step 2: Blow it bacl up (with no smoothing) jscanvas.style.width = ‘384px’; // 64 × 6 canvas.style.height = ‘384px’; cssimage-rendering: pixelated; Now you take that tiny 64×64 image and stretch it to be way bigger on screen. Normally, browsers smooth out stretched images (blurry). The pixelated setting turns smoothing off. So each of the 64×64 pixels just gets copied into a big solid square — no blending, no blur. Result: big, crisp, blocky squares = the pixel art look. Putting It Together big detailed photo ↓ (squish down — merges pixels, loses detail) tiny 64×64 image ↓ (stretch up — no smoothing, just copy each pixel bigger) big blocky pixel art The squish is what creates the pixel art (real data, real file). The stretch is just so you can see it clearly on screen — it adds zero new information. Why the Download File is Small When you hit download, it saves the tiny 64×64 image (from Step 1) — not the big stretched version. The “blow it back up” part was only for your screen. And this done in client side, we dont collect your image or saving ur image"}, {"post_id": 6742, "ts": "2026-06-11T09:10:40Z", "hours": 1.0, "text": "DEVLOG : Project: PixieR Version: 2.0.0 Type: Web App (100% client-side) Stack: Vanilla JS + Canvas API + CSS License: MIT Status: Beta [+] Built: - Basic HTML structure with card-based UI - File upload with drag & drop support - Canvas setup for pixelation using Canvas API - Dark/light theme toggle with CSS custom properties - Interactive grid background with cursor glow effect [+] Pixelation Engine: - doPixelate() function that downsamples images - Three scale modes: Fit, Stretch, Crop - Realtime preview with 120ms debounce - Custom grid size input (4×4 to 1024×1024) - Preset chips: 16, 32, 64, 128, 256 - Linked dimensions toggle (🔗 / 🔓) [+] How pixelation works: Original Image ↓ drawImage(src, 0, 0, pixelW, pixelH) Tiny Canvas (W×H pixels) ↓ CSS image-rendering: pixelated Final display (zoomed with crisp edges) [+] Core Code Snippet: const small = document.createElement('canvas'); small.width = sw; small.height = sh; const sc = small.getContext('2d'); sc.drawImage(srcImg, 0, 0, sw, sh); out.getContext('2d').drawImage(small, 0, 0); [+] Key Decisions: - No frameworks → keep it lightweight (~18KB) - Single HTML file → easy to share, no build step - Canvas API → native browser support, fast [+] Challenges & Solutions: Challenge: Crop mode required calculating source coordinates Solution: Used aspect ratio comparison to determine sx, sy, sW, sH Challenge: Maintaining aspect ratio in Fit mode Solution: Compare pw/ph vs srcRatio to determine scaling axis Challenge: Making chips highlight correctly on value change Solution: setChipActive() toggles .on class based on value [+] View Modes: - Side by Side (split-view) - Compare Slider (drag to compare original vs pixelated) - Pixel Only (fullscreen pixel art display) [+] Compare Slider Implementation: /* Clip the pixelated layer */ #compare-pixel { clip-path: inset(0 50% 0 0); } Drag updates percentage → changes clip-path value dynamically. Supports both mouse and touch events for mobile. [+] Eyedropper Tool: - Hover over any pixel to see hex color - Click to copy hex code to clipboard - Tooltip follows cursor with color preview [+] Eyedropper Logic: pixelCanvas.addEventListener('mousemove', (e) => { const cx = Math.floor((e.clientX - rect.left) / zoom); const cy = Math.floor((e.clientY - rect.top) / zoom); const px = ctx.getImageData(cx, cy, 1, 1).data; const hex = '#' + px[0].toString(16) + ...; tip.innerHTML = `${hex} (${cx},${cy})`; }); [+] Export Features: - Download as PNG, JPG, or WebP - Automatic filename: pixier_{W}x{H}.ext [+] Zoom Slider: - Range: 1× to 20× - CSS-based scaling, doesn’t re-render - Maintains crisp pixelated edges [+] The “Pixelate!” Button Experience: - Disabled until image loaded - 5-second “processing” animation (UX theater) - Controls unlock after first conversion - Shimmer effect on completion - After first use: realtime updates (120ms debounce)"}]...
|
Title: PixieR by @Cryskyy | Stardance
Devlogs:
DE Title: PixieR by @Cryskyy | Stardance
Devlogs:
DEVLOG : Project: PixieR Version: 2.0.0 Type: Web App (100% client-side) Stack: Vanilla JS + Canvas API + CSS License: MIT Status: Beta [+] Built: - Basic HTML structure with card-based UI - File upload with drag & drop support - Canvas setup for pixelation using Canvas API - Dark/light theme toggle with CSS custom properties - Interactive grid background with cursor glow effect [+] Pixelation Engine: - doPixelate() function that downsamples images - Three scale modes: Fit, Stretch, Crop - Realtime preview with 120ms debounce - Custom grid size input (4×4 to 1024×1024) - Preset chips: 16, 32, 64, 128, 256 - Linked dimensions toggle (🔗 / 🔓) [+] How pixelation works: Original Image ↓ drawImage(src, 0, 0, pixelW, pixelH) Tiny Canvas (W×H pixels) ↓ CSS image-rendering: pixelated Final display (zoomed with crisp edges) [+] Core Code Snippet: const small = document.createElement('canvas'); small.width = sw; small.height = sh; const sc = small.getContext('2d'); sc.drawImage(srcImg, 0, 0, sw, sh); out.getContext('2d').drawImage(small, 0, 0); [+] Key Decisions: - No frameworks → keep it lightweight (~18KB) - Single HTML file → easy to share, no build step - Canvas API → native browser support, fast [+] Challenges & Solutions: Challenge: Crop mode required calculating source coordinates Solution: Used aspect ratio comparison to determine sx, sy, sW, sH Challenge: Maintaining aspect ratio in Fit mode Solution: Compare pw/ph vs srcRatio to determine scaling axis Challenge: Making chips highlight correctly on value change Solution: setChipActive() toggles .on class based on value [+] View Modes: - Side by Side (split-view) - Compare Slider (drag to compare original vs pixelated) - Pixel Only (fullscreen pixel art display) [+] Compare Slider Implementation: /* Clip the pixelated layer */ #compare-pixel { clip-path: inset(0 50% 0 0); } Drag updates percentage → changes clip-path value dynamically. Supports both mouse and touch events for mobile. [+] Eyedropper Tool: - Hover over any pixel to see hex color - Click to copy hex code to clipboard - Tooltip follows cursor with color preview [+] Eyedropper Logic: pixelCanvas.addEventListener('mousemove', (e) => { const cx = Math.floor((e.clientX - rect.left) / zoom); const cy = Math.floor((e.clientY - rect.top) / zoom); const px = ctx.getImageData(cx, cy, 1, 1).data; const hex = '#' + px[0].toString(16) + ...; tip.innerHTML = `${hex} (${cx},${cy})`; }); [+] Export Features: - Download as PNG, JPG, or WebP - Automatic filename: pixier_{W}x{H}.ext [+] Zoom Slider: - Range: 1× to 20× - CSS-based scaling, doesn’t re-render - Maintains crisp pixelated edges [+] The “Pixelate!” Button Experience: - Disabled until image loaded - 5-second “processing” animation (UX theater) - Controls unlock after first conversion - Shimmer effect on completion - After first use: realtime updates (120ms debounce)
Hi Guys this is my project explaination how does the Pixelate work on steps: Step 1: Shrink (this is where the magic happens) jsconst small = document.createElement(‘canvas’); small.width = 64; small.height = 64; small.getContext(‘2d’).drawImage(srcImg, 0, 0, 64, 64); Imagine your photo is 1920×1080 pixels. You squish it down into a 64×64 canvas. To fit a million pixrls into 64×64, the browser has to merge groups of pixels into one. It looks at a chunk of the original image (say, a 30×17 block) and blends them all into a single average color. Result: you now have a real, tiny image — 64×64 actual pixels, each one a blended color from a chunk of the original. Step 2: Blow it bacl up (with no smoothing) jscanvas.style.width = ‘384px’; // 64 × 6 canvas.style.height = ‘384px’; cssimage-rendering: pixelated; Now you take that tiny 64×64 image and stretch it to be way bigger on screen. Normally, browsers smooth out stretched images (blurry). The pixelated setting turns smoothing off. So each of the 64×64 pixels just gets copied into a big solid square — no blending, no blur. Result: big, crisp, blocky squares = the pixel art look. Putting It Together big detailed photo ↓ (squish down — merges pixels, loses detail) tiny 64×64 image ↓ (stretch up — no smoothing, just copy each pixel bigger) big blocky pixel art The squish is what creates the pixel art (real data, real file). The stretch is just so you can see it clearly on screen — it adds zero new information. Why the Download File is Small When you hit download, it saves the tiny 64×64 image (from Step 1) — not the big stretched version. The “blow it back up” part was only for your screen. And this done in client side, we dont collect your image or saving ur image
Detailing My Project README.md and adding some detail
PixieR Project Devlog — Fixing the Stretching Bug & Other Issues Compare Slider stretching (main issue) Cause: syncCmpCanvas() set cmp.style.width='100%' and cmp.style.height='100%' together with objectFit:'contain' . object-fit only works on replaced elements like <img> and <video> — it has no effect on <canvas> , so the canvas was forced to fill the wrapper’s full 100% x 100% box regardless of its actual pixel aspect ratio, stretching the pixel art. Fix: Compute the display size manually based on the pixel canvas’s own aspect ratio ( src.width / src.height ), fit it within the wrapper width and a max height of 400px, then explicitly set cmp-canvas and cmp-orig-img width/height in pixels (with horizontal centering via marginLeft ). Both layers now share identical dimensions so the slider overlay aligns correctly. Pixel Only view overflow/stretch Cause: solo-canvas had a fixed inline max-width:100%;max-height:480px , while syncSoloCanvas() separately set style.width / style.height to width*zoom / height*zoom in px. At high zoom levels this could overflow the frame, and the max-width/max-height constraints distorted the aspect ratio independently on each axis. Fix: Removed the conflicting inline max-width/max-height. syncSoloCanvas() now computes the zoomed size, then uniformly scales both dimensions down by the same factor if it exceeds the frame’s width or a 480px height cap, preserving aspect ratio. Eyedropper coordinate mismatch Cause: pixelCanvas mousemove/click handlers divided mouse coordinates by the zoom slider value to find the pixel under the cursor. This breaks if the canvas’s rendered size ever differs from width * zoom (e.g. after future layout changes), giving wrong color picks. Fix: Replaced the zoom-based division with a ratio of the canvas’s actual bitmap size to its rendered bounding box size ( pixelCanvas.width / rect.width ), which is robust to any CSS scaling. Compare slider not resizing on window resize Cause: No resize handler existed for the compare/pixel-only views, so resizing the browser left stale dimensions and a stretched look. Fix: Added a resize listener that re-runs syncCmpCanvas() or syncSoloCanvas() depending on the active view. Dead/unused popup duplication Cause: The star popup markup was hardcoded in the page AND re-inserted via createPopupHTML() using insertAdjacentHTML , creating a duplicate #starPopup risk and unnecessary DOM bloat. Fix: Removed the redundant insertAdjacentHTML injection since the markup already exists in the page; createPopupHTML() now just guards against duplicates. Toast fallback dead code Cause: showToast() inside the popup IIFE recreated a whole second #toast element with inline styles if the existing one wasn’t found — but it always exists in the page, making this branch dead and bug-prone (it referenced var(--text, ...) colors that may not exist).
Ships:
I make a project called “PixieR”, PixieR is a 100% client-side web tool that converts any image into pixel art directly in your browser. no backend, no API calls — everything happens locally using the HTML5 Canvas API. The Challenging part in my project is managing all the logic such as main.js and whole web logic system Im so proud that I can make this project without any trouble, and I hope everyone can test out my project :) Check up my github to try my project :))...
|
1792878745.9209418
|
1793742745.9209418
|
|
15010
|
My very own WebOS by @Jeshu | Stardance
|
Jeshu
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-24T05:54:35Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I made Limux OS is a fully web-based operating system simulation that perfectly bridges the gap between retro-hacker aesthetics and ultra-modern UI design. Cloaked in a custom frosted-glass theme, it features a highly interactive hacker terminal, a draggable window manager, and a suite of pre-packaged daily utility apps including an auto-saving Notes tool, a dynamic Calculator, an integrated Music Player, and a hardware-linked Camera interface. What was challenging Building a robust Window Manager from scratch without relying on heavy frontend frameworks like React or Next.js proved to be quite challenging. Managing dynamic z-indexes, drag-and-drop boundary math, and DOM state purely using vanilla JavaScript required strict logic and deep focus on my part. I also had to resolve complex browser rendering quirks, such as overriding the default WebKit scrollbars and adjusting CSS Flexbox to ensure the terminal auto-scrolled perfectly without pushing the input line out of bounds.", "repo": "https://github.com/jeshu-collab/OwnOs", "demo": "https://ownos.vercel.app/"}]...
|
[{"post_id": 11309, "ts": "202 [{"post_id": 11309, "ts": "2026-06-18T14:35:43Z", "hours": 2.7158, "text": "Devlog #8 Finally deployed my OS(Limux). (vercel) link: https://ownos.vercel.app/"}, {"post_id": 10603, "ts": "2026-06-17T13:14:07Z", "hours": 0.6089, "text": "devlog #7 just updated the music player app. after spending soo much time debugging. i updated it with a clean ui which slides down as a widget"}, {"post_id": 10043, "ts": "2026-06-16T16:42:08Z", "hours": 1.0536, "text": "devlog#6 stuck at making my own mp3 player.spent around 1 and half hour only working on this. i’m still new on storing the local mp3 player and play them. i’ll be hosting the od after i resolved the issue."}, {"post_id": 9928, "ts": "2026-06-16T13:23:33Z", "hours": 1.0061, "text": "devlop#5 so today i made some changes in the os. i changed my about me section from app to topbar section when shows when hover. 2.added some clean looking app icons 3.made my calendar widget same as about me when is visible when hover. will be focusing on making each app now."}, {"post_id": 9291, "ts": "2026-06-15T16:29:22Z", "hours": 0.3325, "text": "devlog #4 just changed the time disaplay to centre. that’s it for today"}, {"post_id": 9272, "ts": "2026-06-15T15:53:18Z", "hours": 1.5408, "text": "devlop #3 today i created a live calendar widget at top right, also added 2 app functionalities. 1.about me app 2.terminal (going to add more functions tomorrow) i’m thinking of making my about me container to glass finish maybe terminal too(but i want the terminal to be linux type) lets see :) comment if you have any suggestions. Thanks."}, {"post_id": 8795, "ts": "2026-06-14T16:33:26Z", "hours": 0.4186, "text": "just added task bar with only hover function. will be creating the first app-about me."}, {"post_id": 8625, "ts": "2026-06-14T10:41:08Z", "hours": 0.4653, "text": "This is my first devlog. I just started building my OwnOs and completed part2 in the guide. it’s a normal website with just clock function for now."}]...
|
Title: My very own WebOS by @Jeshu | Stardance
De Title: My very own WebOS by @Jeshu | Stardance
Devlogs:
This is my first devlog. I just started building my OwnOs and completed part2 in the guide. it’s a normal website with just clock function for now.
just added task bar with only hover function. will be creating the first app-about me.
devlop #3 today i created a live calendar widget at top right, also added 2 app functionalities. 1.about me app 2.terminal (going to add more functions tomorrow) i’m thinking of making my about me container to glass finish maybe terminal too(but i want the terminal to be linux type) lets see :) comment if you have any suggestions. Thanks.
devlog #4 just changed the time disaplay to centre. that’s it for today
devlop#5 so today i made some changes in the os. i changed my about me section from app to topbar section when shows when hover. 2.added some clean looking app icons 3.made my calendar widget same as about me when is visible when hover. will be focusing on making each app now.
devlog#6 stuck at making my own mp3 player.spent around 1 and half hour only working on this. i’m still new on storing the local mp3 player and play them. i’ll be hosting the od after i resolved the issue.
devlog #7 just updated the music player app. after spending soo much time debugging. i updated it with a clean ui which slides down as a widget
Devlog #8 Finally deployed my OS(Limux). (vercel) link: https://ownos.vercel.app/
Ships:
What I made Limux OS is a fully web-based operating system simulation that perfectly bridges the gap between retro-hacker aesthetics and ultra-modern UI design. Cloaked in a custom frosted-glass theme, it features a highly interactive hacker terminal, a draggable window manager, and a suite of pre-packaged daily utility apps including an auto-saving Notes tool, a dynamic Calculator, an integrated Music Player, and a hardware-linked Camera interface. What was challenging Building a robust Window Manager from scratch without relying on heavy frontend frameworks like React or Next.js proved to be quite challenging. Managing dynamic z-indexes, drag-and-drop boundary math, and DOM state purely using vanilla JavaScript required strict logic and deep focus on my part. I also had to resolve complex browser rendering quirks, such as overriding the default WebKit scrollbars and adjusting CSS Flexbox to ensure the terminal auto-scrolled perfectly without pushing the input line out of bounds....
|
1793141566.2623963
|
1793227966.2623963
|
|
15016
|
jorm by @jorm | Stardance
|
jorm
|
1
|
11.0
|
178
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-05T09:17:44Z", "hours": 11.0, "multiplier": 15.54, "payout": 178, "blessing": "neutral", "text": "This project was a refresh of the website I made for myself at 14. I had to spend some time refreshing myself with the code I wrote 2 years ago, but having small things/features to add was a really fun experience. During this event I: Refreshed the bento grid with items that better reflect me right now. I replaced 2 cards with one for my MakerWorld account and one showing my music listening stats. Restyled the navbar with a translucent glass theme inspired by liquid glass. It has no background before scrolling and morphs to a blurred rounded bar when content is under it. redid the projects page to feature my 3d printing projects on MakerWorld, each complete with a link to the model itself. Overall, the site features: discord presence at my name through lanyard api (dnd/idle/online/offline) links to my github, makerworld, discord, and email makerworld stats spotify current listening or last played song music listening stats through lastfm, with options to display top albums/songs/artists tools that I use on a regular basis to do things like this haha code and cad projects command menu (cmd + k) that has a buncha actions you can do with just keyboard shortcuts. very convenient! built on nextjs, with tailwindcss and framer motion for styling. do explore the site, and I hope you like it as much as I enjoyed working on it!", "repo": "https://github.com/jormy/website", "demo": "https://jorm.vercel.app"}]...
|
[{"post_id": 76662, "ts": "202 [{"post_id": 76662, "ts": "2026-10-04T09:24:41Z", "hours": 2.1014, "text": "COMPLETELY overhauled projects page Added most of the models that I designed for 3D printing, each with their name, description, image, and MakerWorld link. Added a very cool (if i do say so myself) toggle for both “sections” that smoothly transition with Framer Motion. KNOWN ISSUES: image preview when clicking on project image is kinda broken, and images still need to be optimised by converting to webp. TODO: add model publishing date, and MakerWorld downloads"}, {"post_id": 62015, "ts": "2026-09-05T06:55:24Z", "hours": 2.0031, "text": "added music card! fetches data from my last.fm profile through the api displays top 5 artists/albums/tracks from the past week/month/6 months/year unfortunately last.fm changed their api to not fetch artist and track images, and displays a generic star image intead :( I tried to fetch artwork from MusicBrainz with the MBID from Last.fm instead, and it worked, but it was just too slow for me to be satisfied with it. skeleton loader to prevent abrupt size shifting gradient overflow indicators and buttons for scrolling smooth staggered load-in animations with framer motion i’m almost done with the first page now, next i gotta figure out what to do with the rest of the site… if you have any cool ideas lmk 🤠"}, {"post_id": 58815, "ts": "2026-08-31T12:15:30Z", "hours": 1.0103, "text": "fixed navbar and command palette! ✨ navbar at the top of the page is now sticky! added ‘pills’ behind each link that smoothly transition to each other while hovering the navbar (my fav) navbar has a frosted glass background that appears on scroll, and disappears when at the top of the page command palette now opens with cmd + k, and closes with esc or clicking outside the window new navbar looks pretty clean if i do say so myself"}, {"post_id": 58186, "ts": "2026-08-30T15:20:16Z", "hours": 2.1822, "text": "updated tools card with dynamic variants! ✨ added my phone, laptop, 3d printer, and keyboard since they’re devices i use frequently added ‘on’ and ‘off’ variants of images that change dynamically on hover added size hover effect only got 2 hours logged but i probably spent over 4h finding and editing images in affinity haha"}, {"post_id": 6729, "ts": "2026-06-11T08:26:49Z", "hours": 1.1778, "text": "working tooltips with tippy.js!"}, {"post_id": 6286, "ts": "2026-06-10T15:52:40Z", "hours": 2.9633, "text": "first time working on my old website in 2 years! took me a while to familarise myself with things I wrote at 13 lol Replaced redundant socials panel with one showing my MakerWorld statistics, fetched from a Vercel Blob since there is no official API & Cloudflare is a PITA to bypass. Next up is making some sort of script to automatically send updates to update the storage… future me problem :D"}]...
|
Title: jorm by @jorm | Stardance
Devlogs:
first t Title: jorm by @jorm | Stardance
Devlogs:
first time working on my old website in 2 years! took me a while to familarise myself with things I wrote at 13 lol Replaced redundant socials panel with one showing my MakerWorld statistics, fetched from a Vercel Blob since there is no official API & Cloudflare is a PITA to bypass. Next up is making some sort of script to automatically send updates to update the storage… future me problem :D
working tooltips with tippy.js!
updated tools card with dynamic variants! ✨ added my phone, laptop, 3d printer, and keyboard since they’re devices i use frequently added ‘on’ and ‘off’ variants of images that change dynamically on hover added size hover effect only got 2 hours logged but i probably spent over 4h finding and editing images in affinity haha
fixed navbar and command palette! ✨ navbar at the top of the page is now sticky! added ‘pills’ behind each link that smoothly transition to each other while hovering the navbar (my fav) navbar has a frosted glass background that appears on scroll, and disappears when at the top of the page command palette now opens with cmd + k, and closes with esc or clicking outside the window new navbar looks pretty clean if i do say so myself
added music card! fetches data from my last.fm profile through the api displays top 5 artists/albums/tracks from the past week/month/6 months/year unfortunately last.fm changed their api to not fetch artist and track images, and displays a generic star image intead :( I tried to fetch artwork from MusicBrainz with the MBID from Last.fm instead, and it worked, but it was just too slow for me to be satisfied with it. skeleton loader to prevent abrupt size shifting gradient overflow indicators and buttons for scrolling smooth staggered load-in animations with framer motion i’m almost done with the first page now, next i gotta figure out what to do with the rest of the site… if you have any cool ideas lmk 🤠
COMPLETELY overhauled projects page Added most of the models that I designed for 3D printing, each with their name, description, image, and MakerWorld link. Added a very cool (if i do say so myself) toggle for both “sections” that smoothly transition with Framer Motion. KNOWN ISSUES: image preview when clicking on project image is kinda broken, and images still need to be optimised by converting to webp. TODO: add model publishing date, and MakerWorld downloads
Ships:
This project was a refresh of the website I made for myself at 14. I had to spend some time refreshing myself with the code I wrote 2 years ago, but having small things/features to add was a really fun experience. During this event I: Refreshed the bento grid with items that better reflect me right now. I replaced 2 cards with one for my MakerWorld account and one showing my music listening stats. Restyled the navbar with a translucent glass theme inspired by liquid glass. It has no background before scrolling and morphs to a blurred rounded bar when content is under it. redid the projects page to feature my 3d printing projects on MakerWorld, each complete with a link to the model itself. Overall, the site features: discord presence at my name through lanyard api (dnd/idle/online/offline) links to my github, makerworld, discord, and email makerworld stats spotify current listening or last played song music listening stats through lastfm, with options to display top albums/songs/artists tools that I use on a regular basis to do things like this haha code and cad projects command menu (cmd + k) that has a buncha actions you can do with just keyboard shortcuts. very convenient! built on nextjs, with tailwindcss and framer motion for styling. do explore the site, and I hope you like it as much as I enjoyed working on it!...
|
1793152337.1399758
|
1793238737.1399758
|
|
15018
|
Graphing Calulator by @Murple | Stardance
|
Murple
|
1
|
18.0
|
241
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T17:04:10Z", "hours": 18.0, "multiplier": 17.21, "payout": 241, "blessing": "neutral", "text": "I made a math hub with different tools such as a 2D and 3D grapher, a vector field plotter, and a symbolic calculator. The project started off as just a way to revise my math and make it real by being able to visualize it, but it quickly grew into a comprehensive toolset for exploring both single and multivariable calculus.The 2D graphing section allows users to plot multiple functions at once while calculating specific metrics like arc length and the average value of a function between two bounds. Moving into higher dimensions, the 3D plotter visualizes complex multivariable surfaces, handles partial derivatives, and evaluates the Hessian matrix to locate and classify critical points into local maxima, minima, or saddle points. For exact algebraic computations, the symbolic calculator operates as a computer algebra system capable of resolving standard derivatives, limits, antiderivatives, and complex iterated double or triple integrals. Finally, the vector field visualizer displays dynamic quiver plots and features analytical tools to evaluate curl, divergence, and line integrals for work and flux based on custom parametric inputs in terms of t", "repo": "https://github.com/JustMurple/Graphing-Calc", "demo": "https://graphing-calc-wnveuhsecezfexqp3annxz.streamlit.app/"}]...
|
[{"post_id": 9305, "ts": "2026 [{"post_id": 9305, "ts": "2026-06-15T16:57:22Z", "hours": 13.9633, "text": "A lot has happen after my first devlog! I’ve decided to split up my work in different sections. The first one, the graphing calculator, is the one I was working on in the first devlog. Since then I’ve added the possibility of plotting multiple functions and the computation of arclength and averege between two x values a and b. The second section I made was the 3D plotter, similarly to the 2D one it comes with the “multiple functions at once” feature. In the analysis tools it has the computation of partial derivatives and critical points. The third section is a symbolic calculator with whom you can evaluate iterated integrals, limits, derivatives, expressions and antiderivatives. Last but not list the forth section is the 2D vector field visualizer, it takes the field’s components as inputs and plots them using plotly’s create quiver tool. The section also comes with a curl and divergence evaluator as well as a work and flux integral calculator that requires the user to input x’s and y’s parametrization in the variable t. As a personal note I wanted to add the fact that I really enjoyed making this, it’s my first full scale CS project and it was a nice way to revise what I studied in calculus."}, {"post_id": 6158, "ts": "2026-06-10T11:08:28Z", "hours": 4.0356, "text": "I’m currently working on a graphing calculator that includes tools such as finding the derivative of the functions and solving for the rationals zeros. My main goal is to have a place where I could visualize the things commonly taught in calculus 1-3 to better understand them and to get a grasp onto python and the it’s use in STEM fields."}]...
|
Title: Graphing Calulator by @Murple | Stardance
Title: Graphing Calulator by @Murple | Stardance
Devlogs:
I’m currently working on a graphing calculator that includes tools such as finding the derivative of the functions and solving for the rationals zeros. My main goal is to have a place where I could visualize the things commonly taught in calculus 1-3 to better understand them and to get a grasp onto python and the it’s use in STEM fields.
A lot has happen after my first devlog! I’ve decided to split up my work in different sections. The first one, the graphing calculator, is the one I was working on in the first devlog. Since then I’ve added the possibility of plotting multiple functions and the computation of arclength and averege between two x values a and b. The second section I made was the 3D plotter, similarly to the 2D one it comes with the “multiple functions at once” feature. In the analysis tools it has the computation of partial derivatives and critical points. The third section is a symbolic calculator with whom you can evaluate iterated integrals, limits, derivatives, expressions and antiderivatives. Last but not list the forth section is the 2D vector field visualizer, it takes the field’s components as inputs and plots them using plotly’s create quiver tool. The section also comes with a curl and divergence evaluator as well as a work and flux integral calculator that requires the user to input x’s and y’s parametrization in the variable t. As a personal note I wanted to add the fact that I really enjoyed making this, it’s my first full scale CS project and it was a nice way to revise what I studied in calculus.
Ships:
I made a math hub with different tools such as a 2D and 3D grapher, a vector field plotter, and a symbolic calculator. The project started off as just a way to revise my math and make it real by being able to visualize it, but it quickly grew into a comprehensive toolset for exploring both single and multivariable calculus.The 2D graphing section allows users to plot multiple functions at once while calculating specific metrics like arc length and the average value of a function between two bounds. Moving into higher dimensions, the 3D plotter visualizes complex multivariable surfaces, handles partial derivatives, and evaluates the Hessian matrix to locate and classify critical points into local maxima, minima, or saddle points. For exact algebraic computations, the symbolic calculator operates as a computer algebra system capable of resolving standard derivatives, limits, antiderivatives, and complex iterated double or triple integrals. Finally, the vector field visualizer displays dynamic quiver plots and features analytical tools to evaluate curl, divergence, and line integrals for work and flux based on custom parametric inputs in terms of t...
|
1793252969.2339067
|
1793339369.2339067
|
|
15025
|
berryOS by @SysError06 | Stardance
|
SysError06
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T05:02:27Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "webOS, directly ran inside your browser (desktop app coming soon?) What is it? - berryOS is a “simple” webOS that allows you to have your own little Catppuccin inspired operating system right inside your browser! It offers a notes app, welcome page and a settings app (more apps to come). What I learnt - I found this project as a good way to learn SvelteKit, as ReactJS has gotten me very pissed off, and SvelteKit seemed like a good alternative to React as it has no heavy virtual DOM. Overall, SvelteKit seems like a choice I don’t regret, as it does everything I need it to do! What’s coming next - Proper alt tabbing system, persistent settings, more apps, desktop icons, terminal, browser (possibly), desktop and more!", "repo": "https://github.com/UltimatePlayer97/berryOS", "demo": "https://ultimateplayer97.github.io/berryOS/"}]...
|
[{"post_id": 9028, "ts": "2026 [{"post_id": 9028, "ts": "2026-06-15T01:58:35Z", "hours": 0.7714, "text": "Custom desktop and accent colors! I added a modular color picker component in the Personalization settings panel. Clicking a preset or using the native eye-dropper custom color tool instantly updates buttons, icons, switches, and highlights across the entire OS. I also implemented a FileReader data-stream pipeline. Users can upload any .jpg, .png, or .webp file from their local machine, converting it to a base64 string to update the active desktop background immediately. Also, if a user doesn’t have a custom wallpaper, the default desktop gradient now intelligently samples the chosen accent color, blending a low-opacity hue directly into the dark/light background."}, {"post_id": 8522, "ts": "2026-06-14T05:24:11Z", "hours": 1.3242, "text": "Alt tabbing (sort of). A lot of this time was spent refactoring the window system to use a windows object. To start off, I tried adding a navigator.connection API to try and identify cellular vs wifi vs ethernet structures, however as of reading the MDN docs it turns out its not a very common API, with Firefox dropping it as of Firefox 31, and Safari never having it in the first place, I ended up switching to the onLine/offLine property, which is supported by all mainstream browsers. Also Alt + tab is currently slightly broken, as it does not yet show a window preview, as well as not properly focusing the chosen window, however this is something I will tackle later on, as I plan on adding custom wallpaper support now."}, {"post_id": 7985, "ts": "2026-06-13T09:59:58Z", "hours": 0.7036, "text": "(flashbang warning) Light mode! Changes CSS values to respect the theme detection, also tries auto detect light/dark mode based on browser settings. Oh yes also changed up the topbar to look better (looks alot more like macOS now which I may change in the future.)"}, {"post_id": 7948, "ts": "2026-06-13T08:08:40Z", "hours": 0.4956, "text": "Simple stuff this time around, just made the desktop look more like macOS, will probably edit though so it doesn’t look TOO similar. Will add the ability to change dark/light mode and background next!"}, {"post_id": 7933, "ts": "2026-06-13T07:29:29Z", "hours": 1.5186, "text": "So, A LOT of time was spent on this, a lot more than I anticipated. Firstly, I added a new settings app (which currently only has like one setting) that uses shadcn’s components for switches, buttons, sliders, etc. This was because I did NOT want to make my own components from scratch. Quick look at the docs, I added my necessary components, and CSS theming. I had a slight issue with setting raw CSS variables on .dark blocks weren’t syncing up properly with unedited shadcn svelte components due to Tailwind’s V4 theme compiler rules. Configuring custom colors directly in the @theme inline block in layout.css seemed to fix this. I also migrated the dock into its own components (Dock.svelte), allowing for better scalability. Overall, pretty happy with this session, as now I can seamlessly add settings, add components, app, and all. The new task is to clean up the desktop, making it more visually appealing to the eyes."}, {"post_id": 7394, "ts": "2026-06-12T10:05:11Z", "hours": 0.4731, "text": "Not much was doen apart from porting the gh pages to SvelteKit Was done by making a deploy.yml workflow that builds the website and deploys it to GitHub Pages. Next plan of action is cleaning up desktop to make it more pleasing on the eyes"}, {"post_id": 7165, "ts": "2026-06-11T23:30:15Z", "hours": 0.5956, "text": "Sigh….. I got bored I hate vanilla html and javascript, so…. I switched my webOS entirely to SvelteKit. This change should help me add components easier, also can add better stuff, I have also switched from base CSS to TailwindCSS, which is what I’m more used to. What I plan on doing is making every app its own svelte page, making it really easy to add apps. Overall nothing changed for now, I just spent the time porting over to SvelteKit."}, {"post_id": 6765, "ts": "2026-06-11T10:24:32Z", "hours": 0.5825, "text": "First devlog of berryOS! This is part of the webOS mission, however I am already pretty experienced in web devving so I kinda improvised on some stuff. I got an app dock, windows, topbar, time and a background!"}]...
|
Title: berryOS by @SysError06 | Stardance
Devlogs Title: berryOS by @SysError06 | Stardance
Devlogs:
First devlog of berryOS! This is part of the webOS mission, however I am already pretty experienced in web devving so I kinda improvised on some stuff. I got an app dock, windows, topbar, time and a background!
Sigh….. I got bored I hate vanilla html and javascript, so…. I switched my webOS entirely to SvelteKit. This change should help me add components easier, also can add better stuff, I have also switched from base CSS to TailwindCSS, which is what I’m more used to. What I plan on doing is making every app its own svelte page, making it really easy to add apps. Overall nothing changed for now, I just spent the time porting over to SvelteKit.
Not much was doen apart from porting the gh pages to SvelteKit Was done by making a deploy.yml workflow that builds the website and deploys it to GitHub Pages. Next plan of action is cleaning up desktop to make it more pleasing on the eyes
So, A LOT of time was spent on this, a lot more than I anticipated. Firstly, I added a new settings app (which currently only has like one setting) that uses shadcn’s components for switches, buttons, sliders, etc. This was because I did NOT want to make my own components from scratch. Quick look at the docs, I added my necessary components, and CSS theming. I had a slight issue with setting raw CSS variables on .dark blocks weren’t syncing up properly with unedited shadcn svelte components due to Tailwind’s V4 theme compiler rules. Configuring custom colors directly in the @theme inline block in layout.css seemed to fix this. I also migrated the dock into its own components (Dock.svelte), allowing for better scalability. Overall, pretty happy with this session, as now I can seamlessly add settings, add components, app, and all. The new task is to clean up the desktop, making it more visually appealing to the eyes.
Simple stuff this time around, just made the desktop look more like macOS, will probably edit though so it doesn’t look TOO similar. Will add the ability to change dark/light mode and background next!
(flashbang warning) Light mode! Changes CSS values to respect the theme detection, also tries auto detect light/dark mode based on browser settings. Oh yes also changed up the topbar to look better (looks alot more like macOS now which I may change in the future.)
Alt tabbing (sort of). A lot of this time was spent refactoring the window system to use a windows object. To start off, I tried adding a navigator.connection API to try and identify cellular vs wifi vs ethernet structures, however as of reading the MDN docs it turns out its not a very common API, with Firefox dropping it as of Firefox 31, and Safari never having it in the first place, I ended up switching to the onLine/offLine property, which is supported by all mainstream browsers. Also Alt + tab is currently slightly broken, as it does not yet show a window preview, as well as not properly focusing the chosen window, however this is something I will tackle later on, as I plan on adding custom wallpaper support now.
Custom desktop and accent colors! I added a modular color picker component in the Personalization settings panel. Clicking a preset or using the native eye-dropper custom color tool instantly updates buttons, icons, switches, and highlights across the entire OS. I also implemented a FileReader data-stream pipeline. Users can upload any .jpg, .png, or .webp file from their local machine, converting it to a base64 string to update the active desktop background immediately. Also, if a user doesn’t have a custom wallpaper, the default desktop gradient now intelligently samples the chosen accent color, blending a low-opacity hue directly into the dark/light background.
Ships:
webOS, directly ran inside your browser (desktop app coming soon?) What is it? - berryOS is a “simple” webOS that allows you to have your own little Catppuccin inspired operating system right inside your browser! It offers a notes app, welcome page and a settings app (more apps to come). What I learnt - I found this project as a good way to learn SvelteKit, as ReactJS has gotten me very pissed off, and SvelteKit seemed like a good alternative to React as it has no heavy virtual DOM. Overall, SvelteKit seems like a choice I don’t regret, as it does everything I need it to do! What’s coming next - Proper alt tabbing system, persistent settings, more apps, desktop icons, terminal, browser (possibly), desktop and more!...
|
1793249437.3445404
|
1793335837.3445404
|
|
15069
|
VKGPGPU by @sergey5588 | Stardance
|
sergey5588
|
1
|
22.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T16:34:33Z", "hours": 22.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made VKGPGPU, this is C11 library that uses vulkan under the hood and provides simpler access to general purpose computing on GPU (something like CUDA but more lightweight) im planning to make simple perceptron neural network with it. Learning vulkan was challenging, i still don’t know majority of things (graphics pipeline), I’m proud that this thing works and i enjoy my code quality. To test my project people need to know basic GPU concepts and some shading language that can compile to SPIRV (GLSL is the easiest)", "repo": "https://github.com/Sergey5588/vkgpgpu", "demo": "https://github.com/Sergey5588/vkgpgpu/releases/tag/v0.0.1-test"}]...
|
[{"post_id": 72722, "ts": "202 [{"post_id": 72722, "ts": "2026-09-23T16:21:26Z", "hours": 0.7611, "text": "Pushed v0.0.1-test, test version, added some macros for debug things and lib release things"}, {"post_id": 66589, "ts": "2026-09-12T13:14:15Z", "hours": 0.7764, "text": "Made github workflow for release automation, very cool, still not tested tho"}, {"post_id": 56789, "ts": "2026-08-28T18:19:19Z", "hours": 0.2728, "text": "Made build.sh to build static and shared libs, now i have 67 commits in my repo"}, {"post_id": 53274, "ts": "2026-08-23T18:44:36Z", "hours": 1.0717, "text": "Just made small fixes, nothing else to say"}, {"post_id": 42551, "ts": "2026-08-07T11:27:36Z", "hours": 4.9567, "text": "I rewrote api so now its recording cmd buffer and in theory multiple dispatches and programs can be in pipeline, its working!!!!!!!"}, {"post_id": 26068, "ts": "2026-07-10T17:31:56Z", "hours": 3.0831, "text": "Implemented push constant, now you can push some int, float and bool types"}, {"post_id": 24867, "ts": "2026-07-08T18:34:02Z", "hours": 0.3053, "text": "did small fixes, now there is no TODO s in the code"}, {"post_id": 16373, "ts": "2026-06-26T17:21:09Z", "hours": 0.8922, "text": "You can actually run compute shader now!!!!! here is the compute shader itself and a code to run it:"}, {"post_id": 15776, "ts": "2026-06-25T17:20:21Z", "hours": 3.2008, "text": "I almost lost my mind, but turned out i forgot to reset file pointer after getting file size so actual file data was never read. Implemented: Kernel loading Example shader that copies data from buffer A to buffer B Here is code for shader (not tested, cmd buffer dispatch not yet implemented) and output:"}, {"post_id": 15249, "ts": "2026-06-24T19:18:47Z", "hours": 1.19, "text": "Implemented buffer map and unmap. And everything is a pointer now"}, {"post_id": 15159, "ts": "2026-06-24T17:01:27Z", "hours": 1.8239, "text": "Added buffer creation and destruction. Public API looks like this:"}, {"post_id": 13875, "ts": "2026-06-22T18:50:51Z", "hours": 0.9347, "text": "implemented queue selection and logical device creation, there is nothing new to show so here is the diff 😔"}, {"post_id": 13702, "ts": "2026-06-22T13:50:40Z", "hours": 3.1225, "text": "Made initial project structure, vulkan instance loading and physical device initialization"}]...
|
Title: VKGPGPU by @sergey5588 | Stardance
Devlogs Title: VKGPGPU by @sergey5588 | Stardance
Devlogs:
Made initial project structure, vulkan instance loading and physical device initialization
implemented queue selection and logical device creation, there is nothing new to show so here is the diff 😔
Added buffer creation and destruction. Public API looks like this:
Implemented buffer map and unmap. And everything is a pointer now
I almost lost my mind, but turned out i forgot to reset file pointer after getting file size so actual file data was never read. Implemented: Kernel loading Example shader that copies data from buffer A to buffer B Here is code for shader (not tested, cmd buffer dispatch not yet implemented) and output:
You can actually run compute shader now!!!!! here is the compute shader itself and a code to run it:
did small fixes, now there is no TODO s in the code
Implemented push constant, now you can push some int, float and bool types
I rewrote api so now its recording cmd buffer and in theory multiple dispatches and programs can be in pipeline, its working!!!!!!!
Just made small fixes, nothing else to say
Made build.sh to build static and shared libs, now i have 67 commits in my repo
Made github workflow for release automation, very cool, still not tested tho
Pushed v0.0.1-test, test version, added some macros for debug things and lib release things
Ships:
I made VKGPGPU, this is C11 library that uses vulkan under the hood and provides simpler access to general purpose computing on GPU (something like CUDA but more lightweight) im planning to make simple perceptron neural network with it. Learning vulkan was challenging, i still don’t know majority of things (graphics pipeline), I’m proud that this thing works and i enjoy my code quality. To test my project people need to know basic GPU concepts and some shading language that can compile to SPIRV (GLSL is the easiest)...
|
1793148606.6221974
|
1793235006.6221974
|
|
15091
|
tv-pad by @ThaoVi | Stardance
|
ThaoVi
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-12T21:36:32Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a a 9-key macropad with an OLED display used for note taking on a 2 in 1 laptop. Default keymap includes copy, cut, paste shortcuts as well as music control. My first hardware project! The designing part was manageable with the guide but the building part was very hard since the assembly guide is incomplete. I realized that my pcb made it so that my oled pins went through the xiao so the xiao is floating haha. Sadly only three keys out of nine work right now, but the oled display works so i plan to make fun animations on it!", "repo": "https://github.com/TVDVT/Macropad-for-2-in-1-laptop-notetaking", "demo": ""}]...
|
[{"post_id": 79165, "ts": "202 [{"post_id": 79165, "ts": "2026-10-12T21:04:57Z", "hours": 3.6883, "text": "BUILDING I was working in 5 min intervals for the sticky streak but gave up today and decided to finish everything today :D. While building I realized that my oled display pins went through the XIAO.. so i had to improvise a bit and make the xiao float. I flashed the xiao and i have only 3 out of 9 keys working oops. The hole in my case for the display was also too small so i had to use my soldering iron to melt it and expand it im a bit worried for my lungs tbh Now ima try to figure out how to make the other keys and the oled display work wee Update The screen and all my keys work! I was using qmk keycodes that didn’t work on windows that’s why 6 of the keys weren’t working :D"}, {"post_id": 42785, "ts": "2026-08-07T17:49:47Z", "hours": 0.8653, "text": "Firmware I finished my case so I have been trying to figure out how to do the firmware on QMK, so I thought about switching to KMK since I already know how to code in Python. In the end I just stuck with QMK since I was already almost done. Here is my layout:"}, {"post_id": 26294, "ts": "2026-07-11T00:31:02Z", "hours": 2.3172, "text": "Case I have been working on Onshape to make the case. Getting famiiliar with the platform took a long time before I could do something. I finished the case but I should adjust the USB port, it can be done later. I had to adjust it because I figured that I had flipped XIAO on my PCB but didn’t do it on my 3D model so I wasted a little bit of time. Right now my switches are in place but there still is a strange gap between the key holes and the switches so I have to fix that. I also have to add the LED screen in the assembly. I think I will be done after that!"}, {"post_id": 10762, "ts": "2026-06-17T17:39:20Z", "hours": 0.7964, "text": "I think I’m done we ith the PCB, I moved the XIAO so that it wouldn’t bother the oled display while keeping the OLED centered. For the OLED dimensions I downloaded the footprint from the ressources page, I didn’t see it before."}, {"post_id": 10621, "ts": "2026-06-17T14:00:46Z", "hours": 1.2981, "text": "PCB routing I had to spend a long time trying to fix rounting errors all because I didn’t see two connections.. I’m almost done routing the PCB now. I just need to find the right measurements for the OLED and then get it centered at the top. Then I’ll start the case!"}, {"post_id": 10019, "ts": "2026-06-16T15:45:45Z", "hours": 0.3514, "text": "I added 9 switches for basic keyboard shortcuts and used the matrix layout as recommended in the guide. I also added an OLED display but I don’t know what it will be for yet."}, {"post_id": 6412, "ts": "2026-06-10T19:47:10Z", "hours": 0.2517, "text": "i finished the macropad guide , something went wrong at the end but i will figure it out another time how do i log time for that on hackatime though i have no idea, i’ve been trying to figure it out but i’m so lost"}]...
|
Title: tv-pad by @ThaoVi | Stardance
Devlogs:
i f Title: tv-pad by @ThaoVi | Stardance
Devlogs:
i finished the macropad guide , something went wrong at the end but i will figure it out another time how do i log time for that on hackatime though i have no idea, i’ve been trying to figure it out but i’m so lost
I added 9 switches for basic keyboard shortcuts and used the matrix layout as recommended in the guide. I also added an OLED display but I don’t know what it will be for yet.
PCB routing I had to spend a long time trying to fix rounting errors all because I didn’t see two connections.. I’m almost done routing the PCB now. I just need to find the right measurements for the OLED and then get it centered at the top. Then I’ll start the case!
I think I’m done we ith the PCB, I moved the XIAO so that it wouldn’t bother the oled display while keeping the OLED centered. For the OLED dimensions I downloaded the footprint from the ressources page, I didn’t see it before.
Case I have been working on Onshape to make the case. Getting famiiliar with the platform took a long time before I could do something. I finished the case but I should adjust the USB port, it can be done later. I had to adjust it because I figured that I had flipped XIAO on my PCB but didn’t do it on my 3D model so I wasted a little bit of time. Right now my switches are in place but there still is a strange gap between the key holes and the switches so I have to fix that. I also have to add the LED screen in the assembly. I think I will be done after that!
Firmware I finished my case so I have been trying to figure out how to do the firmware on QMK, so I thought about switching to KMK since I already know how to code in Python. In the end I just stuck with QMK since I was already almost done. Here is my layout:
BUILDING I was working in 5 min intervals for the sticky streak but gave up today and decided to finish everything today :D. While building I realized that my oled display pins went through the XIAO.. so i had to improvise a bit and make the xiao float. I flashed the xiao and i have only 3 out of 9 keys working oops. The hole in my case for the display was also too small so i had to use my soldering iron to melt it and expand it im a bit worried for my lungs tbh Now ima try to figure out how to make the other keys and the oled display work wee Update The screen and all my keys work! I was using qmk keycodes that didn’t work on windows that’s why 6 of the keys weren’t working :D
Ships:
I made a a 9-key macropad with an OLED display used for note taking on a 2 in 1 laptop. Default keymap includes copy, cut, paste shortcuts as well as music control. My first hardware project! The designing part was manageable with the guide but the building part was very hard since the assembly guide is incomplete. I realized that my pcb made it so that my oled pins went through the xiao so the xiao is floating haha. Sadly only three keys out of nine work right now, but the oled display works so i plan to make fun animations on it!...
|
1793138289.5380816
|
1793224689.5380816
|
|
15119
|
Boeing 747 by @B754a | Stardance
|
B754a
|
1
|
16.0
|
217
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T00:10:11Z", "hours": 16.0, "multiplier": 13.82, "payout": 217, "blessing": "neutral", "text": "I have all the details, such as the landing gear; I also added wings and a back wing. I have cockpit windows and a nose in the front; I used no AI for this, and I have an exhaust hole in the back. This was very fun to make. Thanks for the support; this took about 17 hours. Coloring took about 1 hour. This was very fun!!", "repo": "https://github.com/B754a-Dev/Bowing-747", "demo": "https://cad.onshape.com/documents/8e36e5f046f0c73ee4755423/w/2eaa860d9c9adc9b232df59a/e/63c098fe42c01bdb255519f8"}]...
|
[{"post_id": 19618, "ts": "202 [{"post_id": 19618, "ts": "2026-06-30T23:55:17Z", "hours": 0.3697, "text": "I’m done!, I finished coloring the plane I have all the wings and cockpit windows this was very fun thank you for the support I hope you like this one, one of the first onshape projects I’ve done!! I will make more projects so stay tuned."}, {"post_id": 16441, "ts": "2026-06-26T19:13:22Z", "hours": 4.1364, "text": "This is one of my last devlogs I will do on this project but basically I made landing gear front and back. This one was really had to do because of the detail in hole wheel , but this was very fun to make I hope you guys like this one =)"}, {"post_id": 14377, "ts": "2026-06-23T14:22:01Z", "hours": 2.1894, "text": "I’m almost done, this part was really fun add more realism and a better cockpit windows, I added things on the top like APU Exhaust, TCAS, ATC, GPS, VHF L, SATCOM, another SATCOM, VHFC. On the bottom I added the ATC, TCAS, RA, DMEL, Marker Beacon, DME R, VHF R, and L R I will be adding landing gear and maybe more details."}, {"post_id": 12657, "ts": "2026-06-20T17:59:56Z", "hours": 2.1128, "text": "This part was very fun to make, I had some challenges such as the flap track fairings not in the correct spot. I also learned how to use the mirror tool and that help with getting good consistency. What I have so far -All the flap track fairings -All the nacelles -All the Pylons -All the Flaps -All the Ailerons -The Tail cone -The Rubber -The Vertical stabilizer -The Horizontal stabilizer -The Elevator -The Tail fin Also made the Wingspan bigger, made most of it evenly spaced, Added more details to the engines. I colored under the Plaine Blue and made the rest white and grey except for the Tail fin witch I changed the color to red and the tail cone red I also added Navigation lights on the wing tips. I will be adding a set of landing gear two in the back on in the front. I will be adding windows and two doors and a wheel well I will make a Cockpit windows, and Upper deck hump. This will be one of my hardest iterations but worth it"}, {"post_id": 11932, "ts": "2026-06-19T13:53:41Z", "hours": 1.6406, "text": "Added -Elevator✅ -Trim Tab✅ -Horizontal stabilizer✅ -Rubber✅ -Vertical stabilizer✅ -Tail cone✅ -Ailerons✅ -Spoilers✅ -Flaps✅ -Engine✅ -Nacelle✅ -Pylon✅ -Longer wings✅ -Nose Need to add -Nose gear (Maybe) -Main landing gear (Maybe) -Bogies (Maybe) -Nose landing gear (Maybe) make it more realistic in general Spent about 1 hour to implement the Horizontal stabilizer, Rubber, Vertical stabilizer, Tail cone still need to do stuff under both wings, color it better make engines more realistic maybe."}, {"post_id": 11288, "ts": "2026-06-18T13:54:42Z", "hours": 1.3853, "text": "Added -Engine -Nacelle -Pylon -Vertical stabilizer -Horizontal stabilizers made them hollow inside Add -Longer wings -Fix the front -Rudder -Elevators -tail cone This project still needs work with details but I’m getting closer and having fun"}, {"post_id": 10944, "ts": "2026-06-17T23:07:59Z", "hours": 3.8542, "text": "This is my Boeing 747, I have spent almost 4 hours on this first CAD project, I will start to add details now if you want you can tell me to add something or change something on the plane."}]...
|
Title: Boeing 747 by @B754a | Stardance
Devlogs:
Title: Boeing 747 by @B754a | Stardance
Devlogs:
This is my Boeing 747, I have spent almost 4 hours on this first CAD project, I will start to add details now if you want you can tell me to add something or change something on the plane.
Added -Engine -Nacelle -Pylon -Vertical stabilizer -Horizontal stabilizers made them hollow inside Add -Longer wings -Fix the front -Rudder -Elevators -tail cone This project still needs work with details but I’m getting closer and having fun
Added -Elevator✅ -Trim Tab✅ -Horizontal stabilizer✅ -Rubber✅ -Vertical stabilizer✅ -Tail cone✅ -Ailerons✅ -Spoilers✅ -Flaps✅ -Engine✅ -Nacelle✅ -Pylon✅ -Longer wings✅ -Nose Need to add -Nose gear (Maybe) -Main landing gear (Maybe) -Bogies (Maybe) -Nose landing gear (Maybe) make it more realistic in general Spent about 1 hour to implement the Horizontal stabilizer, Rubber, Vertical stabilizer, Tail cone still need to do stuff under both wings, color it better make engines more realistic maybe.
This part was very fun to make, I had some challenges such as the flap track fairings not in the correct spot. I also learned how to use the mirror tool and that help with getting good consistency. What I have so far -All the flap track fairings -All the nacelles -All the Pylons -All the Flaps -All the Ailerons -The Tail cone -The Rubber -The Vertical stabilizer -The Horizontal stabilizer -The Elevator -The Tail fin Also made the Wingspan bigger, made most of it evenly spaced, Added more details to the engines. I colored under the Plaine Blue and made the rest white and grey except for the Tail fin witch I changed the color to red and the tail cone red I also added Navigation lights on the wing tips. I will be adding a set of landing gear two in the back on in the front. I will be adding windows and two doors and a wheel well I will make a Cockpit windows, and Upper deck hump. This will be one of my hardest iterations but worth it
I’m almost done, this part was really fun add more realism and a better cockpit windows, I added things on the top like APU Exhaust, TCAS, ATC, GPS, VHF L, SATCOM, another SATCOM, VHFC. On the bottom I added the ATC, TCAS, RA, DMEL, Marker Beacon, DME R, VHF R, and L R I will be adding landing gear and maybe more details.
This is one of my last devlogs I will do on this project but basically I made landing gear front and back. This one was really had to do because of the detail in hole wheel , but this was very fun to make I hope you guys like this one =)
I’m done!, I finished coloring the plane I have all the wings and cockpit windows this was very fun thank you for the support I hope you like this one, one of the first onshape projects I’ve done!! I will make more projects so stay tuned.
Ships:
I have all the details, such as the landing gear; I also added wings and a back wing. I have cockpit windows and a nose in the front; I used no AI for this, and I have an exhaust hole in the back. This was very fun to make. Thanks for the support; this took about 17 hours. Coloring took about 1 hour. This was very fun!!...
|
1793127255.5382943
|
1793213655.5382943
|
|
15129
|
Tempname: Engine by @pkncoder | Stardance
|
pkncoder
|
1
|
165.0
|
2930
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T12:06:16Z", "hours": 165.0, "multiplier": 19.97, "payout": 2930, "blessing": "neutral", "text": "—————– Ship #1 —————– - - Welcome - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 💚 The current state 💫 There is still no UI, all render control is based in a JSON file. The current only renderer is a custom Deferred Renderer. Note: As this is built for 3d rendering, a modern computer, with a GPU is recommended. Modern Macbooks will run it, however it will be slower as it is basically magic that it works on them. Thank you so much! I’ve spent a lot of time on this. It may not seem like that, however when building this, I decided to do it right (as this is my 3rd attempt). I split the development into phases: Get a window Get something rendering + a camera Get object/material/texture loaders + basic scene managers + basic concept of working Create full scale (professional) renderers/scene managers/resource managers/etc. Get a UI Currently, I’m in getting everything polished in the backend. I didn’t want to move on to the UI, as I didn’t want to rush that. Rushing a UI meant missing other things. So thank you, and I really hope you enjoy. If there are any issues, please report them to the issues page on the github, and message me on slack ( @pkncoder ). Github releases: https://github.com/pkncoder/Engine/releases Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine", "repo": "https://github.com/pkncoder/Engine/", "demo": "https://pkncoder.github.io/Engine/index.html"}]...
|
[{"post_id": 72971, "ts": "202 [{"post_id": 72971, "ts": "2026-09-24T04:20:28Z", "hours": 2.5239, "text": "—————– Devlog XXVII —————– - - Release is out testing time – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Not too much has happened, mostly: Updated README (resources, gallery, installation & use) Updated the landing page (added a tech-stack) Created my first release under the 1.3.x alpha title That big 1.3.x “alpha” release is the big one, as I need some help. If you could just take a bit of time, and you aren’t on linux-arm or apple-intel, could you check out the github releases and try it out, that would be great! I plan to ship tmwr, but I want some testing done first. Thank You for Reading So close!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 72516, "ts": "2026-09-23T03:30:31Z", "hours": 9.9433, "text": "—————– Devlog XXVI —————– - - Almost… there – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ In order to show the capabilites, I’ve been setting up scenes for my engine to show off, and here are some of the results! It would be great to get your favorite render of these! For the full 9 renders , check out the scrapbook in the slack , as they will be there w/ a thread. Thank You for Reading Hopefully will actually ship tmwr! I’m actually getting kind of sad, I won’t be stopping development by any means, but this has been my summer (although I might not be able to get any stardance tokens, but that’s ok ig…). If you have any questions, feel free to DM me either here, or at @pkncoder on discord if that’s easier for you! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 71565, "ts": "2026-09-21T02:05:45Z", "hours": 2.1433, "text": "—————– Devlog XXV —————– – New JSON scene file 📁 - SHIP TIMEEEEE – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Not that much has happened tbh. All that has really happened… Updated the README a bit more Added a new json parser to spawn the scene from that Added hot reloading of the scene So yea, next should be the ship. When updating the README on the github, I was going through the Usage section, and added a new promise for how people could add their own meshes. In this I created the idea of activeScene.json , a JSON file that listed the scene data (crazy, right?). And so, after I updated the README , I added the new loader, and made the scene reload by pressing the “ r ” key. That’s kinda it… Thank You for Reading Before shipping, I need to… Do another update of the README Create the base Releases for Mac, Windows, and Linux And test these Do a pass through TODO.md Update the landing page Shouldn’t take too long Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 69952, "ts": "2026-09-18T03:52:09Z", "hours": 8.6456, "text": "—————– Devlog XXIV —————– – i HATE shadow maps!!! - Renderer? I hardly know her? – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ WOAH A lot has happened. Previously, I had just implemented a new entity system & a new camera system. So what’s new? I present: The Deferred Renderer !!! Basically, it’s just another way of rendering. HOWEVER , it has some funzies: Mostly together render graph, just a little smthin Shadow Pass G-Buffer Pass Lighting Pass New point lights (replacing the emmissive texture searching before) Looking to add SSAO (hemisphere sampling) in the future!! Now, along with this, I just tested creating a build for windows and testing it on a friends machine, and it worked (his laptop is crap, so it ran slow, but surprisingly fast) . Along with that, I also tried the current build on mac, and it also worked, so that’s also great (I’m supprised)!! However, the real prize, is the trypophobia horrors made along the way!! That’s right! When trying to get textures to work, I ran into a ton of problems (mostly related to the alpha map & image formats) that caused major headaches. Images and videos, where they are a bit compressed, can be found below. Thank You for Reading Almost there, I still need to change up the landing page, rewrite the readme, and merge the main branch, plus try to get a way to change the 3d models for users, but I’m getting there. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 67656, "ts": "2026-09-13T20:09:19Z", "hours": 7.9958, "text": "—————– Devlog XXIII —————– – I NEED TO HURRY UP AAAA - EnTT - Table – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ In my previous devlog, I stated how I was working on the new RenderGraph . I’ve now realized, that I have like until the end of the week for when I need to ship. So instead , my goal is to get this looking impressive . To start, here is what I’ve done so far : Cleaned up system inits Changed how the UUID service works (now you just access it and call generate ) Implemented a new library, EnTT Did some cleanning up Added a PointLightComponent for future use (no dev. yet) Added and implemented the CameraComponent Here are the big things: EnTT EnTT is an open-source library that handles objects within games, editors, etc. It’s creator is: Michele Caini (skypjack on github) . EnTT is a library that exposes something called an Entity Component System (ECS). Basically, instead of saving a bunch of data directly inside of one struct or class, you define an entity (a unique id) and assign that entity components. The components are what actually gives the entity meaning. New Camera If you have ever ued Blender for a bit, you would know that your camera is on the same list as your meshes. This is since, to Blender, they are inherantly the same thing (don’t quote me on that) . Previously, my camera was seperate to all of the rest of the objects. This caused the data to be split, and handling the differences made my architecture a bit weird. Now that I’ve implemented EnTT , I’ve added a CameraComponent that defines things like rotation, FoV, etc - completely erasing the need for a separate camera, and opening the doors to more flexibility. Thank You for Reading New book is great! I won’t get to use too much of it for stardance, but I’m checking out this snowglobe thing that seems like it would be the next area!! Wish me luck on the ship. I want to get it out by the end of the week so I can hopefully still cache in some stardust. Probally won’t get the computer though (high hopes for a living or smthin idk) Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Change my Rasterizer to be a Defered Renderer & implement multiple point lights UI??"}, {"post_id": 61084, "ts": "2026-09-03T20:05:33Z", "hours": 3.7325, "text": "—————– Devlog XXII —————– – BrEaKiNg ChaNGeS - 📖 NEW BOOOKKKK – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Sadly, I’ve done much coding Base list This is what I have done since the last devlog: Planned out a bit more on the inner workings from no Renderer->Rendered Image Created the new Shader & Program classes Updated the workings on RendererManager Started work on the new Renderer / IRenderer class Current commit is now broken (compiles, doesn’t run Overview In my new obsidian vault , I’ve been working on creating the new database on how it all works. Through this, I’ve been using excalidraw (Obsidian) to plan out pipelines & create visuals. Currently, I have 2 main drawings: Shader & Program pipeline Renderer Pipeline The Shader & Program pipeline explains the lifetime and usage of both the Shader and Program (OpenGL program) classes. A program gets created, has shaders attached to it (deleting the shader in the process) , and then the program gets linked & binded. The Renderer Pipeline explains the lifetime and usage of a renderer. Starting from the RendererManager, go through normal rendering stuff, and will end at shutting down the RendererManager. For the inner workings of the new renderer setup, I’ll leave that for (hopefully next devlog) when I get everything working start to finish of the RendererPipeline . Thank You for Reading As for the “ New Book I got, I have just purchased “ Game Engine Architecture Vol. I ” (Jason Gregory) to specialize the program more (most likely after Stardance ends). Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Plan out the RenderGraph Create the base RenderGraph class Create the BlitList Create the INodeInput & INodeOutput"}, {"post_id": 58866, "ts": "2026-08-31T13:21:49Z", "hours": 3.4211, "text": "—————– Devlog XXI —————– – My brain hurts 🧠 - Sharp like glass – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Sadly, I haven’t done much coding Instead, I’ve been trying to figure out how I want my Render Graph to work. To start, what is a render graph? What I am interpreting the render graph as, issss: An API meant to simplify and provide structure to a final renderer. In the final application, the render graph will be an option for a more advanced final render editor. What I am working on now, is how it will be put together so I don’t have a mess in the future. Recently, I’ve been using Obsidian to mark everything down. This also starts a little docs. Using a mix of Obsidian and the excalidraw plugin, I’m able to write everything down and create visuals. Currently, I have a mix of nodes that are the main important ones. These nodes are just the interfaces , so they aren’t specified. They act as a blueprint for any of the full nodes. IRenderOutput - Add textures to a list of blitables IShaderInput - Base input interface IShaderOutput - Base output interface IShaderNode - Node representation of shaders IShaderPassNode - Base shader interface Thank You for Reading I haven’t been home enough to create the “big brain wall” which is sad, but at least my stuff is digital. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Setup current program for Render Graph implementation Implement IShader, IGPUTexture, etc. Create IRenderGraph for the renderers"}, {"post_id": 53552, "ts": "2026-08-24T04:42:42Z", "hours": 3.7022, "text": "—————– Devlog XX —————– – 🌟I have the best one liners 🗿– 🥀 Now I have to be smart ??? 🧠 – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ For the quick overview: Fixed the shadow map issue ( so angry about this, see below ) Fixed an issue with textures not caching Got the very base implementation of Uniform Buffers To start off, in the previous devlog I mentioned I was re-writing the shadow mapping . Shadow Mapping - Rendering a 3d model with the light being the eye. Everything that it can see is not in shadow, everything else is. quick explanation I was having issues with getting the shadows to work correctly. I had ideas for issues, including: (the model matrix , the renderPackets being in a bad order , the far plane ). IT TURNS OUT It was none of these. Whenever I made the code to compile a geometry shader along the vertex & fragment shader, I just copied my old one and spliced in the code. Turns out I forgot to swap some variables, and I was putting code in places it should NOT be at. No idea why it didn’t crash, but it fixed my shadow issues very quick . As for UBOs, I’ll talk about them in a future devlog, when I have everything planned out. Thank You for Reading As I said with “Planning out” everything, I’m going to set up a whiteboard - I’ll have to move my 🏳️🌈 pride flags 🏳️⚧️ :( - Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Refactor Build the big brain wall Do some thinking 🥀 Git Commits🗿 Weird position issue Saving now, I am so angry about this. I was compiling and overwrigting the wrong code :( Made the testing for shadows a bit better, and changed the rendering a bit Fixed issue with textures and full models not actually caching Removed anoying debug line for shadow transform matricies Working on getting the ubos working’ Got it to push First test ubos"}, {"post_id": 52406, "ts": "2026-08-22T15:11:34Z", "hours": 4.0344, "text": "—————– Devlog XIX —————– - 🌲 Textuers 🧚♀️ - 👩💻 Shadoowwsss 💀- To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ To recap on what I did: Got the program to launch to black screen I needed to inject the Asset Manager to a class Got objects loading correctly without shadows Got textures to load Started work on fixing the shadow map Nothing too crazy has been changed, the texture issues were about some compatibility problems and not uploading to the same index. The shadow values are uploaded to a 3d texture, where to calculate if an object is in sight or not, we commit triangles based on their position. The problem now is about the far plane, and hitting triangles that weren’t in shadow. I’m not sure what the problem is, but I’m going to do a bit more looking into it. Thank You for Reading :3-blahaj-spinning I still have to fix the shadows issue (obviuosly) but then I can move onto formatting the data (putting it into buffers, creating wrappers, etc).!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Write the shadow cubemap geometry shader & ad it to the OpaquePass (temp main pass) Make and debug UBOs replacing base uniforms Refactor / clean Create the real Render Graph? 🥀 Git Commits (shortened)🗿 Commits: https://github.com/pkncoder/Engine/commits/Phase-IV/ Most Recent: Temporary Save"}, {"post_id": 50519, "ts": "2026-08-19T18:20:39Z", "hours": 5.6344, "text": "—————– Devlog XVIII —————– - 🌲 Trees 🧚♀️ - 👩💻 SO MUCH REWRITING 💀- To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ These last few days, I’ve been working on getting my Rasterizer (drawing triangles of a model on screen and coloring them) working. The big changes that I did include: Fixing an issue with textures not loading Updated the Interface for every Renderer. Implemented the extract / prepare / dispatch pipeline into the Rasterizer for real now. Started working on the base ideas of a “Shader Graph” The issue with textures was just moving a line like 3 lines lower . I was freeing the image data before saving it (oops) . The updated interface is the IRenderer class. Each Renderer bases off of the class, supplying it with a framework so each Renderer can be talked to the same way. Here are some of those functions: beginFrame - Clear previous frame data and prepare for a new frame extract - Take raw scene data ( camera , renderables ) and convert it into packets for the next step. prepare - Take each packet from extract and turn them into draw commands for dispatch. dispatch - Take each draw command and send a draw call, along the way binding any textures & uniforms. postProcess - Take the frame and post-process it. This may be removed. present - Take the rendered frame and show it to the screen ( blit it ). To do a quick review on what the Shader Graph is - it is a collection of “nodes,” each with their own inputs and outputs that connect together to render out a frame. I’m still a bit confused, but I’ve been watching presentations on the topic from companies like Unity & Activision . Thank You for Reading Yea, I know it’s been a while since my last devlog. I’ve been making some posts in slack about my Path Tracer, since I spent a little time on that. I’m looking at the timing for everything , the hope is to ship this at the end of Phase-IV and hope that I can get a UI working before too late. I’m hoping I can get enough stardust to pay for a new laptop, but idk that’s a long shot. I still have about 25 more hours if I get a 16x mult (which I can only hope for) before I would hit the mark for the FW 12, which isn’t crazy (the mult is tho). Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Stop the program from crashing to reach a black screen Rewrite shaders to allow for correct models wo/ shadows Write the shadow cubemap geometry shader & ad it to the OpaquePass (temp main pass) Make and debug UBOs replacing base uniforms 🥀 Git Commits (shortened)🗿 https://github.com/pkncoder/Engine/commits/Phase-IV/"}, {"post_id": 45347, "ts": "2026-08-11T18:54:11Z", "hours": 2.9381, "text": "—————– Devlog XVII —————– - Strange Hours - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ To start off, I did not work directly on my application, but the online demo . It’s like working on the website, but through another editor sometimes. The goal of the Path Tracer is to eventaully get it clean & quick enough to be real-time. This is the first of the 5 renderers that I will be making. I was working on my online shadertoy DEMO for the Path Tracer, specifically the denoiser. The name of the denoiser I am using is the “Edge-Avoiding Á Trous Wavelet Transform” . As a quick overview: It applies a blur “ with holes ” to allow for less to no image distortion Fast enough for realtime Includes “ weights ” based on (in my code): Normal , Depth , and Color . The larger the difference between the center pixel and the scanned pixel * (kernel), the more weight is applied, lessening the amount of blur. This is amazing, however when the camera moves , the denoiser assumes that the current and previous pixel are in the same world postion (when it isn’t). This causes errors when trying to overlay the image and gather data. This is why we track the motion of the camera, creating a vector to get the same world position pixel. I got this wrong on one of the first attempts, the last attachment (videos are compressed) shows that fun video (warning for those who get motion sick). With this, I am able to blur the image, and with some more techniques, I can get rid of “ghosting.” Thank You for Reading In the videos, I rendered them in fullscreen 4k on my better laptop+GPU, don’t worry about your system being too slow, just don’t fullscreen it <3 (the development was done on my lower end mac). The hours logged are from refactoring the project after the last devlog, and editing the code when I didn’t do it in shadertoy’s editor. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git Commits 🗿 BREAKING CHANGE - Refactored Buffer & GPUResource managers + IRenderer - Code has been broken for a bit but womp womp Shadertoy shaders path tracer https://www.shadertoy.com/view/7fBSzR"}, {"post_id": 44514, "ts": "2026-08-10T10:13:23Z", "hours": 4.0428, "text": "—————– Devlog XVI —————– So long , gay Bowser ⭐️ – IRenderer, hardly know her? - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ⭐️ BEFORE ANYTHING - Thanks so much to @AVD for the super star, wasn’t expecting it and I really appreciate it 👏 👏. Now, for what I did: Dealt with an issue in Obsidian, as apparently there was “minor rendering performance improvements.” This is FALSE :( - I just downgraded the version Created the new BufferManager to handle UBOs, SSBOs, VBOs, EBOs, etc. + Dynamic, Static, and Stream buffers. Integrated the RenderTarget & ShaderPass system from PathTracer straight into IRenderer + added base utilities to it. Did some formatting Overall the two big things that I did was the new Buffer system & the updated IRenderer interface. For the new Buffers, previously I had UBOs (dynamic values) & SSBOs (big mostly static information blocks) set up in seperate files, that BufferManager returned. Now, every buffer is a single struct called GPUBuffer , and GPUBuffer has a type, and a usage (see attached photo). Now everything is centralized on that. For the new IRenderer interface, now there are RenderTargets - textures that shaders write to as output - and ShaderPasses - A pass of a shader. These can be added to a registry, keyed by a UUID (big number, in this case). Thanks for reading Again, thanks so much to AVD for the super star! I’m excited for when I can finally start writing my shaders, it’s getting closer & closer!! The fancy Path Tracer will be cool and all, but I have big plans for the Ray Marcher!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git Commits 🗿 Fixed an obsidian issue I ran into, “Minor rendering performance improvements.” was NOT true, broke almost the entire canvas. Fixed it though + new png Created the new buffer managegr system, I need to go through and make changes. Also, on launch there was more blacked out sections, different every launch :( New IRenderer setup for the render targets & render handles Refactor 1-6 Refactor 7-9 for BufferManager"}, {"post_id": 42396, "ts": "2026-08-07T02:46:23Z", "hours": 5.3317, "text": "—————– Devlog XV —————– – Temp code go brrrrr 🔋 - New term : “Far Landing” – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ I tried getting this out before 4 hours, but it just –wouldn’t__ happen. Weird errors kept popping up ( mostly being my fault) . Here’s a list of what I did: Figured out generally how I was going to deal with uploading and caching meshes + textures Put the new GPUResourceManager class into place to do the previously mentioned job Started reworking the renderer pipeline (NOT THE RENDER PIPELINE) on CPU side, and set up the interface class with that Patched together the old Rasterizer renderer to work with the new IRenderer pipeline Fixed errors throughout Split up normal & bump textures Planned out how I will deal with all the different textures on the shader side, cutting the checks out at shader compile time Yea, I know, it’s a lot . It just felt wrong to create a devlog in the middle of everything, since up until after fixing errors I had nothing to show for it. :( I ran into this errors when fixing those errors, where the entire model (I was using the Sponza scene, check the attached video ) was banded, where parts “didn’t exist” and the other bands did . This reminded me a lot of the “Minecraft Farlands” specifically the pocket edition ones. 🔥 What didn’t I do? 💥 To keep this brief: Fully split up the SSBO system in the BufferManager Reimplement good use cases of UBOs (although I did put in place double buffering) Add the more sophicticated data handling in the PathTracer (as I commented it’s existance out so I could complile). Figure out how shadow mapping is going to be cleaned up in the Rasterizer. ❤️ Thanks for reading! These devlogs have been getting more attention, and I’m getting closer to doing a rebrand to finally get my point and final ideas across! :3 Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git commits 🗿 Patched in the “new” buffer system - Really just to get it to compile before I do anything big. Attempting to run the app to test resources & scene Well it compiles, runs, and renders. I still need to go through all the models, HOWEVER, I am having an issue with like 3 models in sponza and bump UGH Well, I checked Phase-III, and the issue with those models are there too, probally some texture coord issue or the bump map is messed up (I’ll check in blender), BUT THEN ON FIRST LOAD THE MODEL FRA LANDED????"}, {"post_id": 40154, "ts": "2026-08-03T15:39:36Z", "hours": 3.0697, "text": "—————– Devlog XIV —————– The Planning - The possible NEW NAME??? - The New Project!! To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ So What Happened? 📸 I haven’t done much pure coding, HOWEVER , I am getting ready for some large-scale rewrites and additions to the code. For what has happened: Fully sectioned the resource - disk - and scene - cpu/logic - directories (folders) so there wasn’t any GPU actions taken place. Refactored resource and scene directories Re-implemented Application into CMakeLists so I can compile and link that file. Did some planning for the huge renderer rewrite that is coming up. Along with all of that, I came up with a possible name for the application (since, surprisingly, Tempname: Engine is a temp name) I had it when when gazing at the sun through some clouds over a feild. Although it is super basic, so I’m going to have to play with it. ❤️ Thanks for Reading!!! I might have to take a bit of a break from progress on this project, as I have a website that I’m making for my local fire dept. (look out for a new stardance project)! I’m also planning on doing some re-marketing / re-branding (idk what to call it) to change the descriptions of the project (ex. the “To recap section on my devlogs, and the landing page). I’ve been getting more questions on it, and my current explanations are a bit too much. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🗿 Commits 🥀 (top-oldest : bottom-newest) No more mention of buffer manager or any uploading to gpu in scene & assets. Meshes are now split up from models in the cache, models hold refrences to asset handles to meshes. Refactored and fixed errors in scene and resources. The program won’t work, as only scene and resources are being compiled & linked Added application back into the mix & fixed the scene loading section. Did some planning on how a model will go from spawn to render"}, {"post_id": 38683, "ts": "2026-08-01T06:03:47Z", "hours": 3.0264, "text": "—————– Devlog XIII —————– Spent some time off from working on this project, started the beginnings of another one. Finally ended up getting the interest to come back to this one To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 💡 Overview Commit message for this devlog: BREAKING CHANGE - New asset system, new scene system, renamed SceneLoader to PrefabSpawner, still need to update rest of code with temp fix until reworking for new system. ✨ What did I do? Previously, the asset manager did still handle caching already loaded assets (models, materials, textures), however the implementation was not professional and temporary: Caching based on a string key (slow) Broke the “single responsibility principal” many times by uploading to the GPU & constructing Scene objects Now, I am using AssetHandles (UUIDs) for caching, and I no longer uploading to the GPU in AssetManager. ❌ What didn’t I do? This new system is a good start for realigning and separating the different parts of the program, but is only about a third of the work. For what I still need to do, this is what follows: Stop uploading to the GPU in the PrefabSpawner (scene) Fix the renderer and find where I will upload the mesh & texture data. Check for compilation and working across the whole project. Change every instance of AssetManager to using AssetHandles. Once I have these, I can move onto redoing the renderers and FINALLY start working on the “fun stuff” ❤️ Thanks for reading Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 36073, "ts": "2026-07-27T22:33:56Z", "hours": 1.5831, "text": "—————– Devlog XII —————– I haven’t done as much programing recently, but yesterday I wanted to finish what I needed to do quickly, as it wouldn’t take that long. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 🎯 UUIDs For a quick explanation of what a UUID is: UUID stands for Universally Unique Identifier. In practice it is a random alphanumeric (a-z,0-9) ID between 64-128 bits. For my project, I used an unsigned 64 bit integer (no negative numbers). It isn’t exactly what the standard for a UUID is, as it isn’t alphanumeric, but I think for now 18.4 quintillion ids are just fine. ⬆️ What Next?? Now that I’ve finished this, the next step is to gut & rewrite the entire asset managing system. I need to redo how files are found, how data is stored, how they are retrieved. Basically the CRUD (create, read, update, delete) line and more. ❤️ Thanks for reading Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 32890, "ts": "2026-07-22T10:48:43Z", "hours": 6.8567, "text": "—————– Devlog XI —————– I haven’t been programming as much, as marching band 🎺 has started, so I’ve had less time. But now I can do the really exiting stuff! To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). What did I Do? As I mentioned in the last devlog, I have been working on doing a full passthrough of the entire project to get ready for major rewrites. I have completed by refactor checklist, so I have gone through ever cpp file to: Fix warnings Check object method & attribute visibility Check const, static, and inline declarations Change the placement and formatting of method Going through every line of code to do minor logic changes & change formatting Rename methods, attributes, functions, and variables to better names & names w/ personal conventions. Add comments everywhere Change the placement of the #include statements (main header file, object interfaces, project files, project packages, extra C++ headers) Run a full clean, compile, and test of the application The LIE Technically I didn’t go through every file, as I left AssetManager & Rasterizer . Since these will be completely rewrote soon I felt like it was a waste. What next? Now that I have finished cleaning up the code base, the next projects are to: Move to using UUIDs instead of an entity index in scene Gut AssetManager and rewrite it Change to using metafiles instead of a preditermined path to assets Rework the scene class Extend IRenderer and get ready for the fun part! Thanks for reading! I tried to keep this one shorter for y’all. I don’t normally get too much attention to my devlogs, but I would be more than happy to answer any questions, as there is so much more to this project that even the landing page doesn’t cover (WIP). If you’re curious, feel free to reach out on slack (pkncoder), and here are some extra links about the project: Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 29073, "ts": "2026-07-15T18:41:40Z", "hours": 4.3689, "text": "—————– Devlog X —————– I’ve been working on refactoring my project for the last few hours. Part of how I code includes: Comments throughout to explain the code, strict formatting throughout, and trying to help the compiler with “const” and “inline” keywords. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). The process My process of refactoring usually happens once I finish a new addition, however I haven’t been adding new things for a while. Now that I’ve added a new addition to the project (Event system & LayerStack), I want to go through the entire codebase under the src/ directory (not the glsl shaders). Project code stats (src/ directory) Running the command line utility “cloc” on my src/ directory to count code stats, I get these counts: ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- C++ 23 646 464 1930 C/C++ Header 47 506 205 1302 ------------------------------------------------------------------------------- SUM: 70 1152 669 3232 ------------------------------------------------------------------------------- Not very big yet, although that will be increased once I get to redoing the entire rendering engine. What I have done Now, back to my refactoring. I got through the basics: removing warnings, double checking the public/private attribute declarations on classes & structs, setting const on functions & params, setting inline on functions. The checklist This is my entire checklist for refactors, this is my first project using it, so it is still being worked on: ### Refactor Checklist (src/) 1. [x] Fix warnings 2. [x] Fix public vs. private 3. [x] Make functions const when needed 4. [x] Make function params const when needed 5. [x] Make functions inline when needed 6. [ ] Fix placement of functions 7. [ ] Refactor step by step in code 8. [ ] Rename things 9. [ ] Add comments 10. [ ] Place the \\#includes in the right spots 11. [ ] Fix file tree 12. [ ] Run ```./fullTest``` 13. [ ] Update the obsidian canvas & png 14. [ ] Update the website Eventually I will also need to make one for the shaders too, as they are sometimes more technical on the code side. Conclusion That’s all that I’ve been doing, thanks for reading. Here is my Github repo & landing page for this application: Source Code: https://github.com/pkncoder/Engine Landing Page: https://pkncoder.github.io/Engine"}, {"post_id": 27729, "ts": "2026-07-13T15:23:24Z", "hours": 8.2792, "text": "Devlog IX I have been working the past week to get the Event system working & trying to fix pointer / referance issues (there are still a few I haven’t figured out). But now I have a working event system. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). LayerStack recap In my previous devlog, I explained the Layer Stack 🥞, a top-down structure for controlling object ownership and main loop execution. Every frame, the layer stack runs the first layer to poll camera movement inputs (temp), and then next layer is ran to render out the frame through the RendererManager. Events This is great, but where the layer stack really shines is the event system . Events are reactions to when anything happens, keys being pressed / released, the window resizing, etc. When an event is dispatched, the layerstack stops, loops through each layer running it’s “onEvent” function to let that layer react (ex. the final render needing it’s texture resized). If a layer doesn’t want below layers to react to the event, it can consume it, stopping the event dispatching and continuing execution. Struggle and Pointer Nonsense I struggled a ton with the event state not updating correctly, and the camera not giving the right values to render the triangles. It turned out to be objects/classes duplicating, and not being able to update. There is so many debug messages in the terminal 😭 Ends This was all front-end changes (no change in the render), but now there is a better system put in place (back end changes). Github repo: https://github.com/pkncoder/Engine/tree/Phase-IV Landing page / Website: https://pkncoder.github.io/Engine/"}, {"post_id": 23348, "ts": "2026-07-06T07:48:30Z", "hours": 11.7481, "text": "Tempname: Engine update. I am so tired To keep it all contained, since the last devlog I have: Merged Phase-III into main & created a Phase-IV branch Changed the landing page’s color palette Modified the target architecture 4 times (3 committed) Created a rudimentary SceneManager class Implemented an EngineContext class to distribute ownership & to help with data flow+containment Implemented a layer system to help cut down on application & to contain/host the events system. Finally put in the system directory (folder) in the architecture that will host any simulations, computations, and animations. Currently it is the planned details for the camera system. The biggest thing that I have done so far is the layer system & state/context creation. The context of the engine lets managers talk to each other so everything can work together, while keeping everything contained. The state is split up into two parts, state & settings (or state & configuration). The state is meant for information that is meant to change throughout runtime, and the engine depends on it to render the right final result (ex. camera state & position). The settings part is meant for variables that won’t change too much, but if they do it is something that is a large modification to the runtime (ex. window title, rendering engine). The layer system is like a regenerating stack of pancakes 🥞. Before you cast your pancake regeneration spell we all have, you have to prep the pancakes with butter and syrup. Each time you finish the pancakes, a new round starts and you eat them again. Then, once you are done, you have to disable the regeneration spell. The layer system acts the same, but computationally & layers instead of pancakes. Each layer goes through the lifecycle of onAttach -> onUpdate -> onDetach. By far the biggest reason for the layer system is the event system, but I’ll leave that for the next devlog. Here is the github page: https://github.com/pkncoder/Engine/tree/Phase-IV Here is the landing page: https://pkncoder.github.io/Engine/ I still have soooo much to do, especially with & after the event system. I’ve completed most of the easy stuff for Phase-IV. Here is the current architecture & a site screenshot."}, {"post_id": 19362, "ts": "2026-06-30T17:15:23Z", "hours": 5.5031, "text": "Changed my mind on shipping, however I do now have a landing page! I still have to do things like changing the color palette (it’s alright now, but I want something different I think), adding little details to really sell the “Rendering” aspect of Tempname: Engine, etc. etc. Here’s the landing page, please check it out & give any feedback! https://pkncoder.github.io/Engine/index.html Since I changed my mind on shipping, here are those images that I was going to use!"}, {"post_id": 18091, "ts": "2026-06-29T02:57:38Z", "hours": 8.6825, "text": "Just got done with some renders on the engine, been working all day on implementing the things needed. Along with the images, I added: Shadow Mapping for the Rasterizer (only 1 emitter) Tone mapping to the Rasterizer Fog to the Rasterizer A vignette effect to the Rasterizer Transparency maps to the Rasterizer Settings & presets for the renders A new “Queer Room” modeled by me in blender for the Path Tracer (going to post it on ship). I honestly have had so much fun with this. Currently working on a landing page to go in place of my “Online Demo” on stardance (since this isn’t that kind of application D: ). Here’s the github: https://github.com/pkncoder/Engine/tree/Phase-III ! At some point I’ll be redoing the README as well for more info. Also, these images aren’t even the best ones, I’ll leave that for the ship :3"}, {"post_id": 16960, "ts": "2026-06-27T15:16:34Z", "hours": 1.2764, "text": "I’ve done a bunch more Todos in my code, getting ready for shipping Phase-III. However, I realized I forgot in my planned Architechture about Acceleration structures (which are very important). So I planned that out! Currently just: BVH (Bounding Volume Heirarchy) for Ray & Path Tracing SVO (Sparse Voxel Octree) for Ray Marching (Hypothetically) These acceleration structures make rendering methods like Ray & Path Tracing, Ray Marching, Ray Casting, etc. feasible for real-time by “cutting out” data (objects) similar to how a Binary Tree works. Next is more clean up, then creating models for some renders I can use in the banner of this + the github Readme, and finally creating a landing page to put in place of the online demo! Then I can finally ship!!!! Here’s the github (ignore main branch): https://github.com/pkncoder/Engine/tree/Phase-III ."}, {"post_id": 16713, "ts": "2026-06-27T04:43:42Z", "hours": 17.5281, "text": "Working on finishing the current development phase, of my project, which also means finally shipping Tempname Engine: Phase-III. I wanted to plan out Phase IV a little bit more, which will focus on: Getting a structured scene management system Improving the Renderer (ability & architecture) + adding 2 new Renderers Adding scene loading & serialization (and “asset serialization” which is weird name) Here is the current & planned architectures of Phase III & Phase IV, at some point I need to redo Phase-III’s to match the style, but I’m tired of working in obsidian to not even get the hours logged."}, {"post_id": 11788, "ts": "2026-06-19T05:50:41Z", "hours": 7.56, "text": "I have finished getting albedo (basic color) textures loading! To get this working I had to redo how meshes were loaded completely, but I finally finished that. The backrooms model was an issue, as I needed to find one that would work, and then fix it in blender, but I’m glad it’s rendering! As for the promised model of the oiiaioooooiai cat 🐈 (Ethel), I did get the model & textures, but I will have to mess with it more, as the model & texture do not line up yet. If you would like to try for yourself, the github repo is here: https://github.com/pkncoder/Engine/tree/Phase-III . The repo is large currently, as I still need to compress the files, or remove them (gitignore). The path tracer is currently disabled , as I need to swap the textures to handles, and then modify the path tracer to work with the textures. It will look really good once I get that working though!"}, {"post_id": 10063, "ts": "2026-06-16T17:20:32Z", "hours": 2.4, "text": "I haven’t done much work on getting textures or anything, however I was able to re-do the shaders. Just some framework stuff like abstracting the shader models so each renderer can implement them to their need. I also spent some more time getting some generic formatting stuff like naming conventions (mostly naming conventions) I also made an “architecture” diagram, as I was requested for one (plus I needed one anyways). Anything purple (besides the background) is a temporary connection/file. Anything green needs re-worked The “Services” group contains files that are completely static in use, and are accessible globally. It’s still a bit messy, but that’s partly due to the temporary/need re-worked files. There’s a still some spaghetti code due to that. The shader files do look a lot like spaghetti as well, but that is mostly do to positioning. It’s pretty basic, as the ui/ and system/ dirs aren’t in there either (system/ is simulations + any computations that would need to be done (ex. translating data for one renderer to another)). I made the image in Obsidian’s canvas, sadly the wakatime add-on wasn’t working for me, so that time didn’t get counted, but oh well. And if the image is cut-off for you, the Services block has Input.cpp, Timer.cpp, and Logger.cpp. I still have a lot of shader work to redo, but I might try to get textures working soon for the Rasterizer, as I’m wanting them more & more."}, {"post_id": 9647, "ts": "2026-06-16T01:45:44Z", "hours": 19.2833, "text": "Hey everyone, I’m Kia! 👋 I’m currently building a custom 3D Engine from the ground up. While it’s definitely a fun passion project, it’s designed to be a genuinely powerful and useful tool. The scope of this project is pretty massive, but here are the main goals I’m chasing right now: 🎨 Multi-Style Rendering: I want this engine to render scenes in highly stylized ways using a variety of techniques. Currently planning support for: Rasterization Path Tracing Ray Marching Ray Casting (Voxels) Simple and easy: No one likes being thrown to the wolves. The engine will feature a clean, simple UI that scales in complexity as you learn how to use it, rather than overwhelming you right at the start. Accessible Animation: Built-in tools for animations and simulations that are actually easy to understand and use. 🛠️ Latest Update: Path Tracer Rewrite I recently did a complete rewrite of the Path Tracer! This was a massive step to future-proof the engine. It now supports multiple shader passes, debug textures, and is fully prepped for texture mapping. Why am I so excited about getting textures working? Because the second they drop, I am immediately rendering 1) The Backrooms 🟨 and 2) the spinning “Oiiaioooooiai” cat 🐈. Texture support should be ready very soon! Want to check it out (please do)? 💻 GitHub: Check out the code and the todo.md to see what I’m working on next: https://github.com/pkncoder/Engine/tree/Phase-III 🎮 Live Demo: Try out my almost real-time Path Tracer right in your browser (click and drag to look around): Shadertoy Path Tracer Demo: https://www.shadertoy.com/view/7fBSzR"}]...
|
Title: Tempname: Engine by @pkncoder | Stardance
Title: Tempname: Engine by @pkncoder | Stardance
Devlogs:
Hey everyone, I’m Kia! 👋 I’m currently building a custom 3D Engine from the ground up. While it’s definitely a fun passion project, it’s designed to be a genuinely powerful and useful tool. The scope of this project is pretty massive, but here are the main goals I’m chasing right now: 🎨 Multi-Style Rendering: I want this engine to render scenes in highly stylized ways using a variety of techniques. Currently planning support for: Rasterization Path Tracing Ray Marching Ray Casting (Voxels) Simple and easy: No one likes being thrown to the wolves. The engine will feature a clean, simple UI that scales in complexity as you learn how to use it, rather than overwhelming you right at the start. Accessible Animation: Built-in tools for animations and simulations that are actually easy to understand and use. 🛠️ Latest Update: Path Tracer Rewrite I recently did a complete rewrite of the Path Tracer! This was a massive step to future-proof the engine. It now supports multiple shader passes, debug textures, and is fully prepped for texture mapping. Why am I so excited about getting textures working? Because the second they drop, I am immediately rendering 1) The Backrooms 🟨 and 2) the spinning “Oiiaioooooiai” cat 🐈. Texture support should be ready very soon! Want to check it out (please do)? 💻 GitHub: Check out the code and the todo.md to see what I’m working on next: https://github.com/pkncoder/Engine/tree/Phase-III 🎮 Live Demo: Try out my almost real-time Path Tracer right in your browser (click and drag to look around): Shadertoy Path Tracer Demo: https://www.shadertoy.com/view/7fBSzR
I haven’t done much work on getting textures or anything, however I was able to re-do the shaders. Just some framework stuff like abstracting the shader models so each renderer can implement them to their need. I also spent some more time getting some generic formatting stuff like naming conventions (mostly naming conventions) I also made an “architecture” diagram, as I was requested for one (plus I needed one anyways). Anything purple (besides the background) is a temporary connection/file. Anything green needs re-worked The “Services” group contains files that are completely static in use, and are accessible globally. It’s still a bit messy, but that’s partly due to the temporary/need re-worked files. There’s a still some spaghetti code due to that. The shader files do look a lot like spaghetti as well, but that is mostly do to positioning. It’s pretty basic, as the ui/ and system/ dirs aren’t in there either (system/ is simulations + any computations that would need to be done (ex. translating data for one renderer to another)). I made the image in Obsidian’s canvas, sadly the wakatime add-on wasn’t working for me, so that time didn’t get counted, but oh well. And if the image is cut-off for you, the Services block has Input.cpp, Timer.cpp, and Logger.cpp. I still have a lot of shader work to redo, but I might try to get textures working soon for the Rasterizer, as I’m wanting them more & more.
I have finished getting albedo (basic color) textures loading! To get this working I had to redo how meshes were loaded completely, but I finally finished that. The backrooms model was an issue, as I needed to find one that would work, and then fix it in blender, but I’m glad it’s rendering! As for the promised model of the oiiaioooooiai cat 🐈 (Ethel), I did get the model & textures, but I will have to mess with it more, as the model & texture do not line up yet. If you would like to try for yourself, the github repo is here: https://github.com/pkncoder/Engine/tree/Phase-III . The repo is large currently, as I still need to compress the files, or remove them (gitignore). The path tracer is currently disabled , as I need to swap the textures to handles, and then modify the path tracer to work with the textures. It will look really good once I get that working though!
Working on finishing the current development phase, of my project, which also means finally shipping Tempname Engine: Phase-III. I wanted to plan out Phase IV a little bit more, which will focus on: Getting a structured scene management system Improving the Renderer (ability & architecture) + adding 2 new Renderers Adding scene loading & serialization (and “asset serialization” which is weird name) Here is the current & planned architectures of Phase III & Phase IV, at some point I need to redo Phase-III’s to match the style, but I’m tired of working in obsidian to not even get the hours logged.
I’ve done a bunch more Todos in my code, getting ready for shipping Phase-III. However, I realized I forgot in my planned Architechture about Acceleration structures (which are very important). So I planned that out! Currently just: BVH (Bounding Volume Heirarchy) for Ray & Path Tracing SVO (Sparse Voxel Octree) for Ray Marching (Hypothetically) These acceleration structures make rendering methods like Ray & Path Tracing, Ray Marching, Ray Casting, etc. feasible for real-time by “cutting out” data (objects) similar to how a Binary Tree works. Next is more clean up, then creating models for some renders I can use in the banner of this + the github Readme, and finally creating a landing page to put in place of the online demo! Then I can finally ship!!!! Here’s the github (ignore main branch): https://github.com/pkncoder/Engine/tree/Phase-III .
Just got done with some renders on the engine, been working all day on implementing the things needed. Along with the images, I added: Shadow Mapping for the Rasterizer (only 1 emitter) Tone mapping to the Rasterizer Fog to the Rasterizer A vignette effect to the Rasterizer Transparency maps to the Rasterizer Settings & presets for the renders A new “Queer Room” modeled by me in blender for the Path Tracer (going to post it on ship). I honestly have had so much fun with this. Currently working on a landing page to go in place of my “Online Demo” on stardance (since this isn’t that kind of application D: ). Here’s the github: https://github.com/pkncoder/Engine/tree/Phase-III ! At some point I’ll be redoing the README as well for more info. Also, these images aren’t even the best ones, I’ll leave that for the ship :3
Changed my mind on shipping, however I do now have a landing page! I still have to do things like changing the color palette (it’s alright now, but I want something different I think), adding little details to really sell the “Rendering” aspect of Tempname: Engine, etc. etc. Here’s the landing page, please check it out & give any feedback! https://pkncoder.github.io/Engine/index.html Since I changed my mind on shipping, here are those images that I was going to use!
Tempname: Engine update. I am so tired To keep it all contained, since the last devlog I have: Merged Phase-III into main & created a Phase-IV branch Changed the landing page’s color palette Modified the target architecture 4 times (3 committed) Created a rudimentary SceneManager class Implemented an EngineContext class to distribute ownership & to help with data flow+containment Implemented a layer system to help cut down on application & to contain/host the events system. Finally put in the system directory (folder) in the architecture that will host any simulations, computations, and animations. Currently it is the planned details for the camera system. The biggest thing that I have done so far is the layer system & state/context creation. The context of the engine lets managers talk to each other so everything can work together, while keeping everything contained. The state is split up into two parts, state & settings (or state & configuration). The state is meant for information that is meant to change throughout runtime, and the engine depends on it to render the right final result (ex. camera state & position). The settings part is meant for variables that won’t change too much, but if they do it is something that is a large modification to the runtime (ex. window title, rendering engine). The layer system is like a regenerating stack of pancakes 🥞. Before you cast your pancake regeneration spell we all have, you have to prep the pancakes with butter and syrup. Each time you finish the pancakes, a new round starts and you eat them again. Then, once you are done, you have to disable the regeneration spell. The layer system acts the same, but computationally & layers instead of pancakes. Each layer goes through the lifecycle of onAttach -> onUpdate -> onDetach. By far the biggest reason for the layer system is the event system, but I’ll leave that for the next devlog. Here is the github page: https://github.com/pkncoder/Engine/tree/Phase-IV Here is the landing page: https://pkncoder.github.io/Engine/ I still have soooo much to do, especially with & after the event system. I’ve completed most of the easy stuff for Phase-IV. Here is the current architecture & a site screenshot.
Devlog IX I have been working the past week to get the Event system working & trying to fix pointer / referance issues (there are still a few I haven’t figured out). But now I have a working event system. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). LayerStack recap In my previous devlog, I explained the Layer Stack 🥞, a top-down structure for controlling object ownership and main loop execution. Every frame, the layer stack runs the first layer to poll camera movement inputs (temp), and then next layer is ran to render out the frame through the RendererManager. Events This is great, but where the layer stack really shines is the event system . Events are reactions to when anything happens, keys being pressed / released, the window resizing, etc. When an event is dispatched, the layerstack stops, loops through each layer running it’s “onEvent” function to let that layer react (ex. the final render needing it’s texture resized). If a layer doesn’t want below layers to react to the event, it can consume it, stopping the event dispatching and continuing execution. Struggle and Pointer Nonsense I struggled a ton with the event state not updating correctly, and the camera not giving the right values to render the triangles. It turned out to be objects/classes duplicating, and not being able to update. There is so many debug messages in the terminal 😭 Ends This was all front-end changes (no change in the render), but now there is a better system put in place (back end changes). Github repo: https://github.com/pkncoder/Engine/tree/Phase-IV Landing page / Website: https://pkncoder.github.io/Engine/
—————– Devlog X —————– I’ve been working on refactoring my project for the last few hours. Part of how I code includes: Comments throughout to explain the code, strict formatting throughout, and trying to help the compiler with “const” and “inline” keywords. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). The process My process of refactoring usually happens once I finish a new addition, however I haven’t been adding new things for a while. Now that I’ve added a new addition to the project (Event system & LayerStack), I want to go through the entire codebase under the src/ directory (not the glsl shaders). Project code stats (src/ directory) Running the command line utility “cloc” on my src/ directory to count code stats, I get these counts: ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- C++ 23 646 464 1930 C/C++ Header 47 506 205 1302 ------------------------------------------------------------------------------- SUM: 70 1152 669 3232 ------------------------------------------------------------------------------- Not very big yet, although that will be increased once I get to redoing the entire rendering engine. What I have done Now, back to my refactoring. I got through the basics: removing warnings, double checking the public/private attribute declarations on classes & structs, setting const on functions & params, setting inline on functions. The checklist This is my entire checklist for refactors, this is my first project using it, so it is still being worked on: ### Refactor Checklist (src/) 1. [x] Fix warnings 2. [x] Fix public vs. private 3. [x] Make functions const when needed 4. [x] Make function params const when needed 5. [x] Make functions inline when needed 6. [ ] Fix placement of functions 7. [ ] Refactor step by step in code 8. [ ] Rename things 9. [ ] Add comments 10. [ ] Place the \#includes in the right spots 11. [ ] Fix file tree 12. [ ] Run ```./fullTest``` 13. [ ] Update the obsidian canvas & png 14. [ ] Update the website Eventually I will also need to make one for the shaders too, as they are sometimes more technical on the code side. Conclusion That’s all that I’ve been doing, thanks for reading. Here is my Github repo & landing page for this application: Source Code: https://github.com/pkncoder/Engine Landing Page: https://pkncoder.github.io/Engine
—————– Devlog XI —————– I haven’t been programming as much, as marching band 🎺 has started, so I’ve had less time. But now I can do the really exiting stuff! To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). What did I Do? As I mentioned in the last devlog, I have been working on doing a full passthrough of the entire project to get ready for major rewrites. I have completed by refactor checklist, so I have gone through ever cpp file to: Fix warnings Check object method & attribute visibility Check const, static, and inline declarations Change the placement and formatting of method Going through every line of code to do minor logic changes & change formatting Rename methods, attributes, functions, and variables to better names & names w/ personal conventions. Add comments everywhere Change the placement of the #include statements (main header file, object interfaces, project files, project packages, extra C++ headers) Run a full clean, compile, and test of the application The LIE Technically I didn’t go through every file, as I left AssetManager & Rasterizer . Since these will be completely rewrote soon I felt like it was a waste. What next? Now that I have finished cleaning up the code base, the next projects are to: Move to using UUIDs instead of an entity index in scene Gut AssetManager and rewrite it Change to using metafiles instead of a preditermined path to assets Rework the scene class Extend IRenderer and get ready for the fun part! Thanks for reading! I tried to keep this one shorter for y’all. I don’t normally get too much attention to my devlogs, but I would be more than happy to answer any questions, as there is so much more to this project that even the landing page doesn’t cover (WIP). If you’re curious, feel free to reach out on slack (pkncoder), and here are some extra links about the project: Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XII —————– I haven’t done as much programing recently, but yesterday I wanted to finish what I needed to do quickly, as it wouldn’t take that long. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 🎯 UUIDs For a quick explanation of what a UUID is: UUID stands for Universally Unique Identifier. In practice it is a random alphanumeric (a-z,0-9) ID between 64-128 bits. For my project, I used an unsigned 64 bit integer (no negative numbers). It isn’t exactly what the standard for a UUID is, as it isn’t alphanumeric, but I think for now 18.4 quintillion ids are just fine. ⬆️ What Next?? Now that I’ve finished this, the next step is to gut & rewrite the entire asset managing system. I need to redo how files are found, how data is stored, how they are retrieved. Basically the CRUD (create, read, update, delete) line and more. ❤️ Thanks for reading Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XIII —————– Spent some time off from working on this project, started the beginnings of another one. Finally ended up getting the interest to come back to this one To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 💡 Overview Commit message for this devlog: BREAKING CHANGE - New asset system, new scene system, renamed SceneLoader to PrefabSpawner, still need to update rest of code with temp fix until reworking for new system. ✨ What did I do? Previously, the asset manager did still handle caching already loaded assets (models, materials, textures), however the implementation was not professional and temporary: Caching based on a string key (slow) Broke the “single responsibility principal” many times by uploading to the GPU & constructing Scene objects Now, I am using AssetHandles (UUIDs) for caching, and I no longer uploading to the GPU in AssetManager. ❌ What didn’t I do? This new system is a good start for realigning and separating the different parts of the program, but is only about a third of the work. For what I still need to do, this is what follows: Stop uploading to the GPU in the PrefabSpawner (scene) Fix the renderer and find where I will upload the mesh & texture data. Check for compilation and working across the whole project. Change every instance of AssetManager to using AssetHandles. Once I have these, I can move onto redoing the renderers and FINALLY start working on the “fun stuff” ❤️ Thanks for reading Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XIV —————– The Planning - The possible NEW NAME??? - The New Project!! To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ So What Happened? 📸 I haven’t done much pure coding, HOWEVER , I am getting ready for some large-scale rewrites and additions to the code. For what has happened: Fully sectioned the resource - disk - and scene - cpu/logic - directories (folders) so there wasn’t any GPU actions taken place. Refactored resource and scene directories Re-implemented Application into CMakeLists so I can compile and link that file. Did some planning for the huge renderer rewrite that is coming up. Along with all of that, I came up with a possible name for the application (since, surprisingly, Tempname: Engine is a temp name) I had it when when gazing at the sun through some clouds over a feild. Although it is super basic, so I’m going to have to play with it. ❤️ Thanks for Reading!!! I might have to take a bit of a break from progress on this project, as I have a website that I’m making for my local fire dept. (look out for a new stardance project)! I’m also planning on doing some re-marketing / re-branding (idk what to call it) to change the descriptions of the project (ex. the “To recap section on my devlogs, and the landing page). I’ve been getting more questions on it, and my current explanations are a bit too much. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🗿 Commits 🥀 (top-oldest : bottom-newest) No more mention of buffer manager or any uploading to gpu in scene & assets. Meshes are now split up from models in the cache, models hold refrences to asset handles to meshes. Refactored and fixed errors in scene and resources. The program won’t work, as only scene and resources are being compiled & linked Added application back into the mix & fixed the scene loading section. Did some planning on how a model will go from spawn to render
—————– Devlog XV —————– – Temp code go brrrrr 🔋 - New term : “Far Landing” – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ I tried getting this out before 4 hours, but it just –wouldn’t__ happen. Weird errors kept popping up ( mostly being my fault) . Here’s a list of what I did: Figured out generally how I was going to deal with uploading and caching meshes + textures Put the new GPUResourceManager class into place to do the previously mentioned job Started reworking the renderer pipeline (NOT THE RENDER PIPELINE) on CPU side, and set up the interface class with that Patched together the old Rasterizer renderer to work with the new IRenderer pipeline Fixed errors throughout Split up normal & bump textures Planned out how I will deal with all the different textures on the shader side, cutting the checks out at shader compile time Yea, I know, it’s a lot . It just felt wrong to create a devlog in the middle of everything, since up until after fixing errors I had nothing to show for it. :( I ran into this errors when fixing those errors, where the entire model (I was using the Sponza scene, check the attached video ) was banded, where parts “didn’t exist” and the other bands did . This reminded me a lot of the “Minecraft Farlands” specifically the pocket edition ones. 🔥 What didn’t I do? 💥 To keep this brief: Fully split up the SSBO system in the BufferManager Reimplement good use cases of UBOs (although I did put in place double buffering) Add the more sophicticated data handling in the PathTracer (as I commented it’s existance out so I could complile). Figure out how shadow mapping is going to be cleaned up in the Rasterizer. ❤️ Thanks for reading! These devlogs have been getting more attention, and I’m getting closer to doing a rebrand to finally get my point and final ideas across! :3 Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git commits 🗿 Patched in the “new” buffer system - Really just to get it to compile before I do anything big. Attempting to run the app to test resources & scene Well it compiles, runs, and renders. I still need to go through all the models, HOWEVER, I am having an issue with like 3 models in sponza and bump UGH Well, I checked Phase-III, and the issue with those models are there too, probally some texture coord issue or the bump map is messed up (I’ll check in blender), BUT THEN ON FIRST LOAD THE MODEL FRA LANDED????
—————– Devlog XVI —————– So long , gay Bowser ⭐️ – IRenderer, hardly know her? - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ⭐️ BEFORE ANYTHING - Thanks so much to @AVD for the super star, wasn’t expecting it and I really appreciate it 👏 👏. Now, for what I did: Dealt with an issue in Obsidian, as apparently there was “minor rendering performance improvements.” This is FALSE :( - I just downgraded the version Created the new BufferManager to handle UBOs, SSBOs, VBOs, EBOs, etc. + Dynamic, Static, and Stream buffers. Integrated the RenderTarget & ShaderPass system from PathTracer straight into IRenderer + added base utilities to it. Did some formatting Overall the two big things that I did was the new Buffer system & the updated IRenderer interface. For the new Buffers, previously I had UBOs (dynamic values) & SSBOs (big mostly static information blocks) set up in seperate files, that BufferManager returned. Now, every buffer is a single struct called GPUBuffer , and GPUBuffer has a type, and a usage (see attached photo). Now everything is centralized on that. For the new IRenderer interface, now there are RenderTargets - textures that shaders write to as output - and ShaderPasses - A pass of a shader. These can be added to a registry, keyed by a UUID (big number, in this case). Thanks for reading Again, thanks so much to AVD for the super star! I’m excited for when I can finally start writing my shaders, it’s getting closer & closer!! The fancy Path Tracer will be cool and all, but I have big plans for the Ray Marcher!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git Commits 🗿 Fixed an obsidian issue I ran into, “Minor rendering performance improvements.” was NOT true, broke almost the entire canvas. Fixed it though + new png Created the new buffer managegr system, I need to go through and make changes. Also, on launch there was more blacked out sections, different every launch :( New IRenderer setup for the render targets & render handles Refactor 1-6 Refactor 7-9 for BufferManager
—————– Devlog XVII —————– - Strange Hours - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ To start off, I did not work directly on my application, but the online demo . It’s like working on the website, but through another editor sometimes. The goal of the Path Tracer is to eventaully get it clean & quick enough to be real-time. This is the first of the 5 renderers that I will be making. I was working on my online shadertoy DEMO for the Path Tracer, specifically the denoiser. The name of the denoiser I am using is the “Edge-Avoiding Á Trous Wavelet Transform” . As a quick overview: It applies a blur “ with holes ” to allow for less to no image distortion Fast enough for realtime Includes “ weights ” based on (in my code): Normal , Depth , and Color . The larger the difference between the center pixel and the scanned pixel * (kernel), the more weight is applied, lessening the amount of blur. This is amazing, however when the camera moves , the denoiser assumes that the current and previous pixel are in the same world postion (when it isn’t). This causes errors when trying to overlay the image and gather data. This is why we track the motion of the camera, creating a vector to get the same world position pixel. I got this wrong on one of the first attempts, the last attachment (videos are compressed) shows that fun video (warning for those who get motion sick). With this, I am able to blur the image, and with some more techniques, I can get rid of “ghosting.” Thank You for Reading In the videos, I rendered them in fullscreen 4k on my better laptop+GPU, don’t worry about your system being too slow, just don’t fullscreen it <3 (the development was done on my lower end mac). The hours logged are from refactoring the project after the last devlog, and editing the code when I didn’t do it in shadertoy’s editor. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git Commits 🗿 BREAKING CHANGE - Refactored Buffer & GPUResource managers + IRenderer - Code has been broken for a bit but womp womp Shadertoy shaders path tracer https://www.shadertoy.com/view/7fBSzR
—————– Devlog XVIII —————– - 🌲 Trees 🧚♀️ - 👩💻 SO MUCH REWRITING 💀- To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ These last few days, I’ve been working on getting my Rasterizer (drawing triangles of a model on screen and coloring them) working. The big changes that I did include: Fixing an issue with textures not loading Updated the Interface for every Renderer. Implemented the extract / prepare / dispatch pipeline into the Rasterizer for real now. Started working on the base ideas of a “Shader Graph” The issue with textures was just moving a line like 3 lines lower . I was freeing the image data before saving it (oops) . The updated interface is the IRenderer class. Each Renderer bases off of the class, supplying it with a framework so each Renderer can be talked to the same way. Here are some of those functions: beginFrame - Clear previous frame data and prepare for a new frame extract - Take raw scene data ( camera , renderables ) and convert it into packets for the next step. prepare - Take each packet from extract and turn them into draw commands for dispatch. dispatch - Take each draw command and send a draw call, along the way binding any textures & uniforms. postProcess - Take the frame and post-process it. This may be removed. present - Take the rendered frame and show it to the screen ( blit it ). To do a quick review on what the Shader Graph is - it is a collection of “nodes,” each with their own inputs and outputs that connect together to render out a frame. I’m still a bit confused, but I’ve been watching presentations on the topic from companies like Unity & Activision . Thank You for Reading Yea, I know it’s been a while since my last devlog. I’ve been making some posts in slack about my Path Tracer, since I spent a little time on that. I’m looking at the timing for everything , the hope is to ship this at the end of Phase-IV and hope that I can get a UI working before too late. I’m hoping I can get enough stardust to pay for a new laptop, but idk that’s a long shot. I still have about 25 more hours if I get a 16x mult (which I can only hope for) before I would hit the mark for the FW 12, which isn’t crazy (the mult is tho). Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Stop the program from crashing to reach a black screen Rewrite shaders to allow for correct models wo/ shadows Write the shadow cubemap geometry shader & ad it to the OpaquePass (temp main pass) Make and debug UBOs replacing base uniforms 🥀 Git Commits (shortened)🗿 https://github.com/pkncoder/Engine/commits/Phase-IV/
—————– Devlog XIX —————– - 🌲 Textuers 🧚♀️ - 👩💻 Shadoowwsss 💀- To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ To recap on what I did: Got the program to launch to black screen I needed to inject the Asset Manager to a class Got objects loading correctly without shadows Got textures to load Started work on fixing the shadow map Nothing too crazy has been changed, the texture issues were about some compatibility problems and not uploading to the same index. The shadow values are uploaded to a 3d texture, where to calculate if an object is in sight or not, we commit triangles based on their position. The problem now is about the far plane, and hitting triangles that weren’t in shadow. I’m not sure what the problem is, but I’m going to do a bit more looking into it. Thank You for Reading :3-blahaj-spinning I still have to fix the shadows issue (obviuosly) but then I can move onto formatting the data (putting it into buffers, creating wrappers, etc).!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Write the shadow cubemap geometry shader & ad it to the OpaquePass (temp main pass) Make and debug UBOs replacing base uniforms Refactor / clean Create the real Render Graph? 🥀 Git Commits (shortened)🗿 Commits: https://github.com/pkncoder/Engine/commits/Phase-IV/ Most Recent: Temporary Save
—————– Devlog XX —————– – 🌟I have the best one liners 🗿– 🥀 Now I have to be smart ??? 🧠 – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ For the quick overview: Fixed the shadow map issue ( so angry about this, see below ) Fixed an issue with textures not caching Got the very base implementation of Uniform Buffers To start off, in the previous devlog I mentioned I was re-writing the shadow mapping . Shadow Mapping - Rendering a 3d model with the light being the eye. Everything that it can see is not in shadow, everything else is. quick explanation I was having issues with getting the shadows to work correctly. I had ideas for issues, including: (the model matrix , the renderPackets being in a bad order , the far plane ). IT TURNS OUT It was none of these. Whenever I made the code to compile a geometry shader along the vertex & fragment shader, I just copied my old one and spliced in the code. Turns out I forgot to swap some variables, and I was putting code in places it should NOT be at. No idea why it didn’t crash, but it fixed my shadow issues very quick . As for UBOs, I’ll talk about them in a future devlog, when I have everything planned out. Thank You for Reading As I said with “Planning out” everything, I’m going to set up a whiteboard - I’ll have to move my 🏳️🌈 pride flags 🏳️⚧️ :( - Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Refactor Build the big brain wall Do some thinking 🥀 Git Commits🗿 Weird position issue Saving now, I am so angry about this. I was compiling and overwrigting the wrong code :( Made the testing for shadows a bit better, and changed the rendering a bit Fixed issue with textures and full models not actually caching Removed anoying debug line for shadow transform matricies Working on getting the ubos working’ Got it to push First test ubos
—————– Devlog XXI —————– – My brain hurts 🧠 - Sharp like glass – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Sadly, I haven’t done much coding Instead, I’ve been trying to figure out how I want my Render Graph to work. To start, what is a render graph? What I am interpreting the render graph as, issss: An API meant to simplify and provide structure to a final renderer. In the final application, the render graph will be an option for a more advanced final render editor. What I am working on now, is how it will be put together so I don’t have a mess in the future. Recently, I’ve been using Obsidian to mark everything down. This also starts a little docs. Using a mix of Obsidian and the excalidraw plugin, I’m able to write everything down and create visuals. Currently, I have a mix of nodes that are the main important ones. These nodes are just the interfaces , so they aren’t specified. They act as a blueprint for any of the full nodes. IRenderOutput - Add textures to a list of blitables IShaderInput - Base input interface IShaderOutput - Base output interface IShaderNode - Node representation of shaders IShaderPassNode - Base shader interface Thank You for Reading I haven’t been home enough to create the “big brain wall” which is sad, but at least my stuff is digital. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Setup current program for Render Graph implementation Implement IShader, IGPUTexture, etc. Create IRenderGraph for the renderers
—————– Devlog XXII —————– – BrEaKiNg ChaNGeS - 📖 NEW BOOOKKKK – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Sadly, I’ve done much coding Base list This is what I have done since the last devlog: Planned out a bit more on the inner workings from no Renderer->Rendered Image Created the new Shader & Program classes Updated the workings on RendererManager Started work on the new Renderer / IRenderer class Current commit is now broken (compiles, doesn’t run Overview In my new obsidian vault , I’ve been working on creating the new database on how it all works. Through this, I’ve been using excalidraw (Obsidian) to plan out pipelines & create visuals. Currently, I have 2 main drawings: Shader & Program pipeline Renderer Pipeline The Shader & Program pipeline explains the lifetime and usage of both the Shader and Program (OpenGL program) classes. A program gets created, has shaders attached to it (deleting the shader in the process) , and then the program gets linked & binded. The Renderer Pipeline explains the lifetime and usage of a renderer. Starting from the RendererManager, go through normal rendering stuff, and will end at shutting down the RendererManager. For the inner workings of the new renderer setup, I’ll leave that for (hopefully next devlog) when I get everything working start to finish of the RendererPipeline . Thank You for Reading As for the “ New Book I got, I have just purchased “ Game Engine Architecture Vol. I ” (Jason Gregory) to specialize the program more (most likely after Stardance ends). Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Plan out the RenderGraph Create the base RenderGraph class Create the BlitList Create the INodeInput & INodeOutput
—————– Devlog XXIII —————– – I NEED TO HURRY UP AAAA - EnTT - Table – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ In my previous devlog, I stated how I was working on the new RenderGraph . I’ve now realized, that I have like until the end of the week for when I need to ship. So instead , my goal is to get this looking impressive . To start, here is what I’ve done so far : Cleaned up system inits Changed how the UUID service works (now you just access it and call generate ) Implemented a new library, EnTT Did some cleanning up Added a PointLightComponent for future use (no dev. yet) Added and implemented the CameraComponent Here are the big things: EnTT EnTT is an open-source library that handles objects within games, editors, etc. It’s creator is: Michele Caini (skypjack on github) . EnTT is a library that exposes something called an Entity Component System (ECS). Basically, instead of saving a bunch of data directly inside of one struct or class, you define an entity (a unique id) and assign that entity components. The components are what actually gives the entity meaning. New Camera If you have ever ued Blender for a bit, you would know that your camera is on the same list as your meshes. This is since, to Blender, they are inherantly the same thing (don’t quote me on that) . Previously, my camera was seperate to all of the rest of the objects. This caused the data to be split, and handling the differences made my architecture a bit weird. Now that I’ve implemented EnTT , I’ve added a CameraComponent that defines things like rotation, FoV, etc - completely erasing the need for a separate camera, and opening the doors to more flexibility. Thank You for Reading New book is great! I won’t get to use too much of it for stardance, but I’m checking out this snowglobe thing that seems like it would be the next area!! Wish me luck on the ship. I want to get it out by the end of the week so I can hopefully still cache in some stardust. Probally won’t get the computer though (high hopes for a living or smthin idk) Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Change my Rasterizer to be a Defered Renderer & implement multiple point lights UI??
—————– Devlog XXIV —————– – i HATE shadow maps!!! - Renderer? I hardly know her? – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ WOAH A lot has happened. Previously, I had just implemented a new entity system & a new camera system. So what’s new? I present: The Deferred Renderer !!! Basically, it’s just another way of rendering. HOWEVER , it has some funzies: Mostly together render graph, just a little smthin Shadow Pass G-Buffer Pass Lighting Pass New point lights (replacing the emmissive texture searching before) Looking to add SSAO (hemisphere sampling) in the future!! Now, along with this, I just tested creating a build for windows and testing it on a friends machine, and it worked (his laptop is crap, so it ran slow, but surprisingly fast) . Along with that, I also tried the current build on mac, and it also worked, so that’s also great (I’m supprised)!! However, the real prize, is the trypophobia horrors made along the way!! That’s right! When trying to get textures to work, I ran into a ton of problems (mostly related to the alpha map & image formats) that caused major headaches. Images and videos, where they are a bit compressed, can be found below. Thank You for Reading Almost there, I still need to change up the landing page, rewrite the readme, and merge the main branch, plus try to get a way to change the 3d models for users, but I’m getting there. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XXV —————– – New JSON scene file 📁 - SHIP TIMEEEEE – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Not that much has happened tbh. All that has really happened… Updated the README a bit more Added a new json parser to spawn the scene from that Added hot reloading of the scene So yea, next should be the ship. When updating the README on the github, I was going through the Usage section, and added a new promise for how people could add their own meshes. In this I created the idea of activeScene.json , a JSON file that listed the scene data (crazy, right?). And so, after I updated the README , I added the new loader, and made the scene reload by pressing the “ r ” key. That’s kinda it… Thank You for Reading Before shipping, I need to… Do another update of the README Create the base Releases for Mac, Windows, and Linux And test these Do a pass through TODO.md Update the landing page Shouldn’t take too long Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XXVI —————– - - Almost… there – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ In order to show the capabilites, I’ve been setting up scenes for my engine to show off, and here are some of the results! It would be great to get your favorite render of these! For the full 9 renders , check out the scrapbook in the slack , as they will be there w/ a thread. Thank You for Reading Hopefully will actually ship tmwr! I’m actually getting kind of sad, I won’t be stopping development by any means, but this has been my summer (although I might not be able to get any stardance tokens, but that’s ok ig…). If you have any questions, feel free to DM me either here, or at @pkncoder on discord if that’s easier for you! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XXVII —————– - - Release is out testing time – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Not too much has happened, mostly: Updated README (resources, gallery, installation & use) Updated the landing page (added a tech-stack) Created my first release under the 1.3.x alpha title That big 1.3.x “alpha” release is the big one, as I need some help. If you could just take a bit of time, and you aren’t on linux-arm or apple-intel, could you check out the github releases and try it out, that would be great! I plan to ship tmwr, but I want some testing done first. Thank You for Reading So close!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
Ships:
—————– Ship #1 —————– - - Welcome - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 💚 The current state 💫 There is still no UI, all render control is based in a JSON file. The current only renderer is a custom Deferred Renderer. Note: As this is built for 3d rendering, a modern computer, with a GPU is recommended. Modern Macbooks will run it, however it will be slower as it is basically magic that it works on them. Thank you so much! I’ve spent a lot of time on this. It may not seem like that, however when building this, I decided to do it right (as this is my 3rd attempt). I split the development into phases: Get a window Get something rendering + a camera Get object/material/texture loaders + basic scene managers + basic concept of working Create full scale (professional) renderers/scene managers/resource managers/etc. Get a UI Currently, I’m in getting everything polished in the backend. I didn’t want to move on to the UI, as I didn’t want to rush that. Rushing a UI meant missing other things. So thank you, and I really hope you enjoy. If there are any issues, please report them to the issues page on the github, and message me on slack ( @pkncoder ). Github releases: https://github.com/pkncoder/Engine/releases Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine...
|
1793152129.722024
|
1793238529.722024
|
|
15146
|
Hamstersarus OS by @Hamstersarus | Stardance
|
Hamstersarus
|
1
|
3.9
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T02:40:25Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a website to serve as my portfolio. It is a tiny web operating system. Instead of making just a regular about me page, I made a “desktop” that people can use to get to know me. I included by resume, skills, prior projects, and contact information.", "repo": "https://github.com/Hamstersarus/Hamstersarus_Website", "demo": "https://hamstersarus.github.io/HamstersarusOS/"}]...
|
[{"post_id": 9046, "ts": "2026 [{"post_id": 9046, "ts": "2026-06-15T03:12:35Z", "hours": 0.6767, "text": "I wanted to show off my website but I was on my phone and thats when I realized it doesn’t really work on the phone… The only problem was that the windows wouldn’t drag. The github website page function I used for the website formatted it fine for different screens. I fixed the issue with the dragging on touchscreen. I also made the 2048 game work on touchscreen. Also, I updated the algorithm for the 2048 game. I have written code for it before in Java just for practice and I wanted to take advantage of the fact that I already had an algorithm that works and I understand, so that’s what I decided to do. Now I can understand the 2048 code a little better (I wrote it before understanding JavaScript as well as I do now and most of it is from bits and pieces I found while researching). I also wanted to add some pictures of projects I’ve done. So far, I really only have one but I do have some currently on their way to me in the mail so I’ll add those later. Another think I feel like it’s important for me to note, I know that my README looks like it was written by AI with all the emojis but I actually wrote them all in there myself, I feel like they add a lot to the aesthetic instead of just being plain text. I source all my emojis from: https://emojicopy.com/"}, {"post_id": 8531, "ts": "2026-06-14T06:06:32Z", "hours": 1.2256, "text": "So a lot of changes… I was brainstorming what I should add and I had the bright and original idea to add a contact me app! Problem is, I already have my socials linked. I want a way for people to reach me directly though. My first thought was to make a new Gmail account (I don’t want spamming on my main account) but then I was doing some research and I realized I can make a discord webhook. After a TON of trial and error, I figured out how it works and every message through that app goes straight into a private discord server. I committed all my changes and I was pretty happy with my code. But then I get an email from GitGaurdian… It said that my url was exposed. I had put the url in the frontend. After some panicking, I find out what cloudlfare workers are. I put my webhook in cloudflare and everything is okay!! Now you can send me a message! :) I also wanted to make a little magic 8-ball game just for fun. It’s a hamster that tells you your fortune!! How fun is that?"}, {"post_id": 7842, "ts": "2026-06-13T02:32:12Z", "hours": 0.5722, "text": "This update was mostly polish and housekeeping. I renamed my repository to HamstersarusOS, which gave my portfolio a cleaner link to share around, it now lives at https://hamstersarus.github.io/HamstersarusOS/ . After renaming I went through and updated all the internal links so the project cards and README point to the new address instead of the old broken one. I also cleaned up my portfolio a bit: I tweaked the likes in my About Me section and removed a leftover note in the Skills app that was only meant for me but was accidentally showing to visitors. Nothing flashy this time, just tightening things up and making the site easier to send to people."}, {"post_id": 7815, "ts": "2026-06-13T01:24:28Z", "hours": 0.8089, "text": "Since my last update I turned my webOS into a proper portfolio. First I gave the music player a real upgrade so a lofi track starts playing the moment you enter the desktop, with a little “now playing” notification, and it keeps playing even if you close the music window instead of stacking a second song on top like it used to. Then I added four new apps to show off my work: a Projects window with cards for HamstersarusOS, my SENTINEL surveillance game, my Fight game, and my 2048 game, each linked to its GitHub repo; a Skills window with little proficiency bars; a Resume window with my education, internship, and awards; and a Contact window with my GitHub, LinkedIn, and email. I also filled in the About Me app with my real name and bio. One thing I was careful about was privacy, since the site is fully public with no password I deliberately left my home address and phone number off it and only put the professional stuff online. It’s all live at https://hamstersarus.github.io/Hamstersarus_Website/ and it actually feels like a portfolio now instead of just a demo."}, {"post_id": 7444, "ts": "2026-06-12T12:15:27Z", "hours": 0.6464, "text": "Since my last update I finished the rest of the webOS jam. I built my first real app, an About Me window with a little bio and my likes and dislikes, and then two “advanced” apps: a music player that actually plays real lofi tracks with play, pause, and skip (the disc even spins while it’s playing), and a fully playable purple version of 2048 that you control with the arrow keys or WASD. The 2048 game is my bonus feature that the guide didn’t ask for. The trickiest part was a layout bug where the 2048 board kept spilling out of its window and making everything look like it was shifting around while I played, which turned out to be a CSS grid quirk where the columns refused to shrink to fit, fixed by switching them to minmax(0, 1fr). I also added a README so anyone visiting my repo knows what the project is and how to run it. Everything is live and public at https://hamstersarus.github.io/Hamstersarus_Website/ and all five parts of the jam are now done."}, {"post_id": 7423, "ts": "2026-06-12T11:25:21Z", "hours": 0.3833, "text": "Building my personal website as a little web operating system for Stardance, following the Hack Club webOS jam. It’s plain HTML, CSS, and JavaScript with a lavender “Tokyo Night” desktop-rice look crossed with a Y2K Windows scrapbook vibe, and the graph-paper wallpaper is pure CSS. So far I’ve got a welcome screen that boots into a desktop with a live clock, clickable desktop icons, and draggable windows you can move around, bring to the front, and close. The trickiest bug was my enter button “not working,” which turned out to be my code editor’s preview, not my code, fixing itself the moment I opened it in a real browser. It’s live and public at https://hamstersarus.github.io/Hamstersarus_Website/ and next up is building my first real app plus a bonus feature the guide doesn’t cover."}]...
|
Title: Hamstersarus OS by @Hamstersarus | Stardanc Title: Hamstersarus OS by @Hamstersarus | Stardance
Devlogs:
Building my personal website as a little web operating system for Stardance, following the Hack Club webOS jam. It’s plain HTML, CSS, and JavaScript with a lavender “Tokyo Night” desktop-rice look crossed with a Y2K Windows scrapbook vibe, and the graph-paper wallpaper is pure CSS. So far I’ve got a welcome screen that boots into a desktop with a live clock, clickable desktop icons, and draggable windows you can move around, bring to the front, and close. The trickiest bug was my enter button “not working,” which turned out to be my code editor’s preview, not my code, fixing itself the moment I opened it in a real browser. It’s live and public at https://hamstersarus.github.io/Hamstersarus_Website/ and next up is building my first real app plus a bonus feature the guide doesn’t cover.
Since my last update I finished the rest of the webOS jam. I built my first real app, an About Me window with a little bio and my likes and dislikes, and then two “advanced” apps: a music player that actually plays real lofi tracks with play, pause, and skip (the disc even spins while it’s playing), and a fully playable purple version of 2048 that you control with the arrow keys or WASD. The 2048 game is my bonus feature that the guide didn’t ask for. The trickiest part was a layout bug where the 2048 board kept spilling out of its window and making everything look like it was shifting around while I played, which turned out to be a CSS grid quirk where the columns refused to shrink to fit, fixed by switching them to minmax(0, 1fr). I also added a README so anyone visiting my repo knows what the project is and how to run it. Everything is live and public at https://hamstersarus.github.io/Hamstersarus_Website/ and all five parts of the jam are now done.
Since my last update I turned my webOS into a proper portfolio. First I gave the music player a real upgrade so a lofi track starts playing the moment you enter the desktop, with a little “now playing” notification, and it keeps playing even if you close the music window instead of stacking a second song on top like it used to. Then I added four new apps to show off my work: a Projects window with cards for HamstersarusOS, my SENTINEL surveillance game, my Fight game, and my 2048 game, each linked to its GitHub repo; a Skills window with little proficiency bars; a Resume window with my education, internship, and awards; and a Contact window with my GitHub, LinkedIn, and email. I also filled in the About Me app with my real name and bio. One thing I was careful about was privacy, since the site is fully public with no password I deliberately left my home address and phone number off it and only put the professional stuff online. It’s all live at https://hamstersarus.github.io/Hamstersarus_Website/ and it actually feels like a portfolio now instead of just a demo.
This update was mostly polish and housekeeping. I renamed my repository to HamstersarusOS, which gave my portfolio a cleaner link to share around, it now lives at https://hamstersarus.github.io/HamstersarusOS/ . After renaming I went through and updated all the internal links so the project cards and README point to the new address instead of the old broken one. I also cleaned up my portfolio a bit: I tweaked the likes in my About Me section and removed a leftover note in the Skills app that was only meant for me but was accidentally showing to visitors. Nothing flashy this time, just tightening things up and making the site easier to send to people.
So a lot of changes… I was brainstorming what I should add and I had the bright and original idea to add a contact me app! Problem is, I already have my socials linked. I want a way for people to reach me directly though. My first thought was to make a new Gmail account (I don’t want spamming on my main account) but then I was doing some research and I realized I can make a discord webhook. After a TON of trial and error, I figured out how it works and every message through that app goes straight into a private discord server. I committed all my changes and I was pretty happy with my code. But then I get an email from GitGaurdian… It said that my url was exposed. I had put the url in the frontend. After some panicking, I find out what cloudlfare workers are. I put my webhook in cloudflare and everything is okay!! Now you can send me a message! :) I also wanted to make a little magic 8-ball game just for fun. It’s a hamster that tells you your fortune!! How fun is that?
I wanted to show off my website but I was on my phone and thats when I realized it doesn’t really work on the phone… The only problem was that the windows wouldn’t drag. The github website page function I used for the website formatted it fine for different screens. I fixed the issue with the dragging on touchscreen. I also made the 2048 game work on touchscreen. Also, I updated the algorithm for the 2048 game. I have written code for it before in Java just for practice and I wanted to take advantage of the fact that I already had an algorithm that works and I understand, so that’s what I decided to do. Now I can understand the 2048 code a little better (I wrote it before understanding JavaScript as well as I do now and most of it is from bits and pieces I found while researching). I also wanted to add some pictures of projects I’ve done. So far, I really only have one but I do have some currently on their way to me in the mail so I’ll add those later. Another think I feel like it’s important for me to note, I know that my README looks like it was written by AI with all the emojis but I actually wrote them all in there myself, I feel like they add a lot to the aesthetic instead of just being plain text. I source all my emojis from: https://emojicopy.com/
Ships:
I created a website to serve as my portfolio. It is a tiny web operating system. Instead of making just a regular about me page, I made a “desktop” that people can use to get to know me. I included by resume, skills, prior projects, and contact information....
|
1793274641.6788225
|
1793361041.6788225
|
|
15184
|
MBot by @Mapplect | Stardance
|
Mapplect
|
1
|
2.0
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-11T21:41:35Z", "hours": 2.0, "multiplier": 2.15, "payout": 5, "blessing": "neutral", "text": "I made a Slack Bot to reintroduce myself to JavaScript. Had a lot of issues towards the end with my latency command but I’ve fixed it. That was probably the only issue I had. I’m glad I kept going despite all the problems I was having.", "repo": "https://github.com/tg257225-oss/MBot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0B9UUL3E0P"}]...
|
[{"post_id": 7111, "ts": "2026 [{"post_id": 7111, "ts": "2026-06-11T21:38:46Z", "hours": 0.6017, "text": "2nd devlog! (and definitely last) Had a LOT of issues with my ping command so I spent the last couples hours on that but its finally working. Everything has been linked to github and ready to submit."}, {"post_id": 6954, "ts": "2026-06-11T17:44:30Z", "hours": 1.6383, "text": "1st devlog! (and maybe last since I’m pretty much done) Mainly did this mission to get back in JS after years of not touching it. Made some simple commands, it was somewhat frustrating because I dislike coding but maybe I’ll start to like it soon as I want to do more projects that involve coding."}]...
|
Title: MBot by @Mapplect | Stardance
Devlogs:
1st Title: MBot by @Mapplect | Stardance
Devlogs:
1st devlog! (and maybe last since I’m pretty much done) Mainly did this mission to get back in JS after years of not touching it. Made some simple commands, it was somewhat frustrating because I dislike coding but maybe I’ll start to like it soon as I want to do more projects that involve coding.
2nd devlog! (and definitely last) Had a LOT of issues with my ping command so I spent the last couples hours on that but its finally working. Everything has been linked to github and ready to submit.
Ships:
I made a Slack Bot to reintroduce myself to JavaScript. Had a lot of issues towards the end with my latency command but I’ve fixed it. That was probably the only issue I had. I’m glad I kept going despite all the problems I was having....
|
1793120090.0995045
|
1793206490.0995045
|
|
15198
|
ArcadeOS by @tosterabgx | Stardance
|
tosterabgx
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T19:46:05Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The first ship of ArcadeOS! As for now, I have built two fully working games (Space Invaders and Snake). It was pretty challenging to remember how to code in javascript after a year :p but generally, it wasn’t too hard. Go check it out!", "repo": "https://github.com/tosterabgx/ArcadeOS", "demo": "https://tosterabgx.github.io/ArcadeOS/"}]...
|
[{"post_id": 10558, "ts": "202 [{"post_id": 10558, "ts": "2026-06-17T10:51:05Z", "hours": 4.1161, "text": "Space Invaders After 4 hours of grinding, the first working game for ArcadeOS is ready! My minimalist remake of Space Invaders is built only with <canvas> and vanilla javascript. It was my first time using canvas, so I decided to make things easier and just use squares instead of real images. I hope to change that later… The game’s logic itself isn’t that hard, so I barely had any bugs. However, I had to remake the way the OS opens windows. Now, instead of opening the same window several times (and making the game run over itself multiple times), it checks whether the window is already open. I also decided to go the professional way, so I used OOP and made classes such as: class GameObject class SpaceShip extends GameObject class Player extends SpaceShip class Bullet extends GameObject class Asteroid"}, {"post_id": 8408, "ts": "2026-06-13T23:40:16Z", "hours": 0.6622, "text": "Refactored the structure of my window component (now it also has a header) and added drag functionality + an option to close and open the window."}, {"post_id": 8374, "ts": "2026-06-13T22:35:08Z", "hours": 0.8294, "text": "After some time, I have finally settled on the idea for my project: a WebOS with retro arcade games. I added a basic welcome window and a minimalistic topbar with a live clock. Had a hard time trying to connect Git to my GitHub account, but now it works."}]...
|
Title: ArcadeOS by @tosterabgx | Stardance
Devlog Title: ArcadeOS by @tosterabgx | Stardance
Devlogs:
After some time, I have finally settled on the idea for my project: a WebOS with retro arcade games. I added a basic welcome window and a minimalistic topbar with a live clock. Had a hard time trying to connect Git to my GitHub account, but now it works.
Refactored the structure of my window component (now it also has a header) and added drag functionality + an option to close and open the window.
Space Invaders After 4 hours of grinding, the first working game for ArcadeOS is ready! My minimalist remake of Space Invaders is built only with <canvas> and vanilla javascript. It was my first time using canvas, so I decided to make things easier and just use squares instead of real images. I hope to change that later… The game’s logic itself isn’t that hard, so I barely had any bugs. However, I had to remake the way the OS opens windows. Now, instead of opening the same window several times (and making the game run over itself multiple times), it checks whether the window is already open. I also decided to go the professional way, so I used OOP and made classes such as: class GameObject class SpaceShip extends GameObject class Player extends SpaceShip class Bullet extends GameObject class Asteroid
Ships:
The first ship of ArcadeOS! As for now, I have built two fully working games (Space Invaders and Snake). It was pretty challenging to remember how to code in javascript after a year :p but generally, it wasn’t too hard. Go check it out!...
|
1793134423.5428421
|
1793220823.5428421
|
|
15258
|
My Website About my life by @citunek22 | Stardance
|
citunek22
|
1
|
2.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T18:08:40Z", "hours": 2.0, "multiplier": 1.11, "payout": 2, "blessing": "neutral", "text": "So like i said before it is a website but more of a linktree website instead of a portfolio. I have my tiktok, two of my instagrams and Youtube there so i would be grateful if you would follow me also its hosted on vercel and this is how it looks like", "repo": "https://github.com/citunek22/Raise-Your-Builder-Page", "demo": "https://raise-your-builder-page.vercel.app/"}]...
|
[{"post_id": 66101, "ts": "202 [{"post_id": 66101, "ts": "2026-09-11T18:04:44Z", "hours": 0.5967, "text": "ok so i remade the whole website because i dont like it as much as before and now i added links instead of something and i actually hosted this site trough vercel. This is how it looks like"}, {"post_id": 12677, "ts": "2026-06-20T18:26:47Z", "hours": 0.6553, "text": "Today i was quite lazy and i still dont know which tutorials to use but still i added a background and font color"}, {"post_id": 12117, "ts": "2026-06-19T19:53:10Z", "hours": 0.5567, "text": "Like i said a website about the info i can and want to share like today instead of i wrote which is snake in czech and my mistakes are mistyping z and y because they are switched on czech and english. And if somebody understands czech they know what i wrote. Dont worry its not anything vulgar or explicit."}]...
|
Title: My Website About my life by @citunek22 | St Title: My Website About my life by @citunek22 | Stardance
Devlogs:
Like i said a website about the info i can and want to share like today instead of i wrote which is snake in czech and my mistakes are mistyping z and y because they are switched on czech and english. And if somebody understands czech they know what i wrote. Dont worry its not anything vulgar or explicit.
Today i was quite lazy and i still dont know which tutorials to use but still i added a background and font color
ok so i remade the whole website because i dont like it as much as before and now i added links instead of something and i actually hosted this site trough vercel. This is how it looks like
Ships:
So like i said before it is a website but more of a linktree website instead of a portfolio. I have my tiktok, two of my instagrams and Youtube there so i would be grateful if you would follow me also its hosted on vercel and this is how it looks like...
|
1793145348.3700671
|
1793231748.3700671
|
|
15271
|
Voltchess by @jithesh_sarvin | Stardance
|
|
1
|
66.09
|
723
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T14:41:02Z", "hours": 62.0, "multiplier": 12.02, "payout": 723, "blessing": "neutral", "text": "if you don’t play chess user (jitheshsarvin) as the username in chess.com to tryout the analysis feature. I made a free chess game review tool like chess.com but better. I added new features with stockfish analysis, move classification and even additional metrics such as the position domination. For new user there is a tutorial. I added a backend for people to save their reports. (note the sign in does not work for regular users). Other features that i added of seo optimization and puzzles and play features to top it off.", "repo": "https://github.com/Lunarcolony/VoltChess", "demo": "https://www.voltchess.me"}]...
|
[{"post_id": 13941, "ts": "202 [{"post_id": 13941, "ts": "2026-06-22T21:40:10Z", "hours": 2.025, "text": "added debugging features"}, {"post_id": 12740, "ts": "2026-06-20T20:35:08Z", "hours": 2.0619, "text": "Created a whole couch hub which runs in a raspberry pi, which allows a coach to add multiple students and analyze and create game reports for the moth"}, {"post_id": 9969, "ts": "2026-06-16T14:35:51Z", "hours": 11.3247, "text": "trained a machine learning algorithm that could predict the future moves in threads. I had to do a lot of troubleshooting to fix the training process and i trained the couch model for about 5 hours"}, {"post_id": 9022, "ts": "2026-06-15T01:39:23Z", "hours": 10.7403, "text": "Created a backend for the website so that the users could sign in. I am changing focus to academy’s to get users. They could log in add their student and it generates reports automatically for each student. Also i have fixed a little bit of the ui to make is more clear and usable for others. I am using vercel to host the from end but i am using a raspberry pi to run the backend locally and run a Cloudflare tunnel to connect these two."}, {"post_id": 8677, "ts": "2026-06-14T12:37:04Z", "hours": 9.1492, "text": "I added a puzzle page which uses stock fish and a custom trained ml algorithm to find mate in two puzzles in complex position. It also takes in real games a input to improve its puzzles every time( try in out in voltchess.me"}, {"post_id": 8100, "ts": "2026-06-13T14:57:32Z", "hours": 9.0711, "text": "implemented a stockfish tab that runs in the browser of the user to reduce the servers stress"}, {"post_id": 7858, "ts": "2026-06-13T03:13:39Z", "hours": 1.0306, "text": "Added blogs and other text to increase seo optimization. I also integrated this new color theme which i asked ai to do it. In my opinion the color theme is mid and it took it only 10 seconds to do it which saved me a lot of work."}, {"post_id": 7693, "ts": "2026-06-12T21:01:55Z", "hours": 1.7822, "text": "Devlog-5 I focused more on marking my getting getting feedback from the users and improving some small bugs and ui and by this process I was able to receive 140 unique users in 2 days and more than 50 new users in the past 12 hours( check out the website - https://www.voltchess.me )"}, {"post_id": 7449, "ts": "2026-06-12T12:41:54Z", "hours": 9.2467, "text": "Dev log-4 added the ability to load a chess game using chess.com api and lichess ai. And integrated stockfish in the browser to analyze the games. Create a simple algorithm to predict accuracy based on their mistakes( which are calculated by sudden movements in eval) try it out at https://www.voltchess.me"}, {"post_id": 6803, "ts": "2026-06-11T12:27:05Z", "hours": 7.3647, "text": "Devlog-3 I deployed this website to Vercel and did some marketing to see how many people would be willing to use my website. As per thier views , it is lower than what i expected and they never returned. Based on these comments, I improved my ui and added new features such as game review but it is still buggy so i did not publish that."}, {"post_id": 6622, "ts": "2026-06-11T03:27:17Z", "hours": 1.6131, "text": "Devlog-2 I have worked to create a new side panel which is ridged for pc and is like a dropdown menu for phones. I also have routed 4 different pages analysis tab has the one with the chess board. I have designed my own logo to go on top to finish it off. I made black and gold color theme to make it feel premium"}, {"post_id": 6494, "ts": "2026-06-10T22:17:53Z", "hours": 0.9517, "text": "Devlog 1 Today i was able to explore different options to create a chessboard using typescript. A really important step to take is what tools and programs i chose to use. I chose vite because of its clean ui and deployments"}]...
|
Title: Voltchess by @jithesh_sarvin | Stardance
D Title: Voltchess by @jithesh_sarvin | Stardance
Devlogs:
Devlog 1 Today i was able to explore different options to create a chessboard using typescript. A really important step to take is what tools and programs i chose to use. I chose vite because of its clean ui and deployments
Devlog-2 I have worked to create a new side panel which is ridged for pc and is like a dropdown menu for phones. I also have routed 4 different pages analysis tab has the one with the chess board. I have designed my own logo to go on top to finish it off. I made black and gold color theme to make it feel premium
Devlog-3 I deployed this website to Vercel and did some marketing to see how many people would be willing to use my website. As per thier views , it is lower than what i expected and they never returned. Based on these comments, I improved my ui and added new features such as game review but it is still buggy so i did not publish that.
Dev log-4 added the ability to load a chess game using chess.com api and lichess ai. And integrated stockfish in the browser to analyze the games. Create a simple algorithm to predict accuracy based on their mistakes( which are calculated by sudden movements in eval) try it out at https://www.voltchess.me
Devlog-5 I focused more on marking my getting getting feedback from the users and improving some small bugs and ui and by this process I was able to receive 140 unique users in 2 days and more than 50 new users in the past 12 hours( check out the website - https://www.voltchess.me )
Added blogs and other text to increase seo optimization. I also integrated this new color theme which i asked ai to do it. In my opinion the color theme is mid and it took it only 10 seconds to do it which saved me a lot of work.
implemented a stockfish tab that runs in the browser of the user to reduce the servers stress
I added a puzzle page which uses stock fish and a custom trained ml algorithm to find mate in two puzzles in complex position. It also takes in real games a input to improve its puzzles every time( try in out in voltchess.me
Created a backend for the website so that the users could sign in. I am changing focus to academy’s to get users. They could log in add their student and it generates reports automatically for each student. Also i have fixed a little bit of the ui to make is more clear and usable for others. I am using vercel to host the from end but i am using a raspberry pi to run the backend locally and run a Cloudflare tunnel to connect these two.
trained a machine learning algorithm that could predict the future moves in threads. I had to do a lot of troubleshooting to fix the training process and i trained the couch model for about 5 hours
Created a whole couch hub which runs in a raspberry pi, which allows a coach to add multiple students and analyze and create game reports for the moth
added debugging features
Ships:
if you don’t play chess user (jitheshsarvin) as the username in chess.com to tryout the analysis feature. I made a free chess game review tool like chess.com but better. I added new features with stockfish analysis, move classification and even additional metrics such as the position domination. For new user there is a tutorial. I added a backend for people to save their reports. (note the sign in does not work for regular users). Other features that i added of seo optimization and puzzles and play features to top it off....
|
1793127268.011752
|
1793213668.011752
|
|
15288
|
Senku OS by @Sanket | Stardance
|
Sanket
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T04:37:11Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A fully browser-based WebOS completely inspired by Dr. STONE! draggable windows, a taskbar, a science notebook,(not editable sadly) and a built-in streaming for dr.stone only tho!, all running in plain HTML, CSS and JavaScript. No frameworks were harmed in the making of this.Getting the streaming links to actually work without breaking everything, and configuring the taskbar to behave like a real OS taskbar was a real pain.. The streaming feature, hands down is my proudest part. The fact that you can browse Dr. STONE episodes and watch them inside a fake desktop OS running in a browser tab is genuinely unhinged and I love it. Just visit the site no tutorial needed. If you can open a browser tab you’re already qualified. Click around, open some windows, watch some Dr. STONE. It’s that simple.", "repo": "https://github.com/SenkuDevX/SENKU-OS", "demo": "https://senkudevx.github.io/SENKU-OS/"}]...
|
[{"post_id": 7868, "ts": "2026 [{"post_id": 7868, "ts": "2026-06-13T03:51:44Z", "hours": 1.4269, "text": "Released my OS to the WILD!(Not the best but atleast i made it by myself)"}, {"post_id": 6740, "ts": "2026-06-11T09:03:57Z", "hours": 0.9772, "text": "DONEE!!! I WILL NOW SHIP IT (ps-IF THE VIDEOS DONT WORK DONT GO BE LIKE YOUR PROJECT ISNT WORKING,IT MAY BREAK AFTER ALL, IT SCRAPES THEM!)"}, {"post_id": 6719, "ts": "2026-06-11T07:53:59Z", "hours": 1.1267, "text": "I MADE A DR.STONE SPECIAL STREAMING APP!! WEBOS I MEAN SENKU OS IS ALMOST OVER AND I WILL RELEASE THIS!! YES THERE ARE BUGS.. TRYING TO FIX IT .."}, {"post_id": 6692, "ts": "2026-06-11T06:44:29Z", "hours": 1.1322, "text": "MY APP IS IN PROGRESS!! Its gonna stream dr.stone itself!! ehehe"}, {"post_id": 6665, "ts": "2026-06-11T05:25:22Z", "hours": 1.0331, "text": "YAY!! Done! i am not fully but i have done 1.open -close 2.opening app 3.i will now make my own app!"}, {"post_id": 6345, "ts": "2026-06-10T18:01:42Z", "hours": 1.1578, "text": "😀This took so long but its worth it dudess.Figuring out the Bottom bar took questionable amount of time here (Read documentaion and took a little help of ai but its finally done!)is my progress till now."}]...
|
Title: Senku OS by @Sanket | Stardance
Devlogs:
😀 Title: Senku OS by @Sanket | Stardance
Devlogs:
😀This took so long but its worth it dudess.Figuring out the Bottom bar took questionable amount of time here (Read documentaion and took a little help of ai but its finally done!)is my progress till now.
YAY!! Done! i am not fully but i have done 1.open -close 2.opening app 3.i will now make my own app!
MY APP IS IN PROGRESS!! Its gonna stream dr.stone itself!! ehehe
I MADE A DR.STONE SPECIAL STREAMING APP!! WEBOS I MEAN SENKU OS IS ALMOST OVER AND I WILL RELEASE THIS!! YES THERE ARE BUGS.. TRYING TO FIX IT ..
DONEE!!! I WILL NOW SHIP IT (ps-IF THE VIDEOS DONT WORK DONT GO BE LIKE YOUR PROJECT ISNT WORKING,IT MAY BREAK AFTER ALL, IT SCRAPES THEM!)
Released my OS to the WILD!(Not the best but atleast i made it by myself)
Ships:
A fully browser-based WebOS completely inspired by Dr. STONE! draggable windows, a taskbar, a science notebook,(not editable sadly) and a built-in streaming for dr.stone only tho!, all running in plain HTML, CSS and JavaScript. No frameworks were harmed in the making of this.Getting the streaming links to actually work without breaking everything, and configuring the taskbar to behave like a real OS taskbar was a real pain.. The streaming feature, hands down is my proudest part. The fact that you can browse Dr. STONE episodes and watch them inside a fake desktop OS running in a browser tab is genuinely unhinged and I love it. Just visit the site no tutorial needed. If you can open a browser tab you’re already qualified. Click around, open some windows, watch some Dr. STONE. It’s that simple....
|
1793120088.9498782
|
1793206488.9498782
|
|
15293
|
joke bot! by @Dustin | Stardance
|
Dustin
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T18:41:28Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "a joke bot with the following commands /jokebot-ping #ping the bot /jokebot-joke-1p #get a one-part joke /jokebot-joke-2p #get a two-part joke Every day at 9 PST, a new joke is sent uses a free joke api to get a random joke", "repo": "https://github.com/DustinTrumps/jokebot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354"}]...
|
[{"post_id": 13250, "ts": "202 [{"post_id": 13250, "ts": "2026-06-21T18:12:09Z", "hours": 1.0003, "text": "got all of the joke bot working up in the nest commands: /jokebot-ping #pings the bot /jokebot-joke-1p #gets a 1-part joke from the bot /jokebot-joke-2p #gets a 2-part joke from the bot Every day at 9 am it post a joke (I just noticed that it is 9 UTC, will change to 9 am PST)"}]...
|
Title: joke bot! by @Dustin | Stardance
Devlogs:
Title: joke bot! by @Dustin | Stardance
Devlogs:
got all of the joke bot working up in the nest commands: /jokebot-ping #pings the bot /jokebot-joke-1p #gets a 1-part joke from the bot /jokebot-joke-2p #gets a 2-part joke from the bot Every day at 9 am it post a joke (I just noticed that it is 9 UTC, will change to 9 am PST)
Ships:
a joke bot with the following commands /jokebot-ping #ping the bot /jokebot-joke-1p #get a one-part joke /jokebot-joke-2p #get a two-part joke Every day at 9 PST, a new joke is sent uses a free joke api to get a random joke...
|
1793260050.9249392
|
1793346450.9249392
|
|
15302
|
The VectoGraph by @gavinlucasdostie | Stardance
|
gavinlucasdostie
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T16:12:03Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a basic Hack pad with 6 keys, 1 rotary encoder, 10 LEDs, and 1 OLED display. I would use it as an audio controller using the rotary encoder to control the audio output and the line of ten LEDs to show the audio output. And the key would be used to pause/play, fast-forward, rewind, mute, and more. The OLED display would show what’s playing (via Spotify). I think this is a well-built hackpad, and I am very proud of it.", "repo": "https://github.com/GaVind-code/Vectograph", "demo": ""}]...
|
[{"post_id": 12109, "ts": "202 [{"post_id": 12109, "ts": "2026-06-19T19:37:11Z", "hours": 0.6053, "text": "the vectograph"}]...
|
Title: The VectoGraph by @gavinlucasdostie | Stard Title: The VectoGraph by @gavinlucasdostie | Stardance
Devlogs:
the vectograph
Ships:
I made a basic Hack pad with 6 keys, 1 rotary encoder, 10 LEDs, and 1 OLED display. I would use it as an audio controller using the rotary encoder to control the audio output and the line of ten LEDs to show the audio output. And the key would be used to pause/play, fast-forward, rewind, mute, and more. The OLED display would show what’s playing (via Spotify). I think this is a well-built hackpad, and I am very proud of it....
|
1793109177.7209988
|
1793195577.7209988
|
|
15351
|
My awesome macropad! by @MattyO | Stardance
|
MattyO
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T20:00:39Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created my first Macropad and learned how to use Kicad along with how to code in python. I also used CAD which I have used in the past. I am hoping the parts will be shipped out soon so I can build this!", "repo": "https://github.com/Matty-0/Macropad-MattyO", "demo": ""}]...
|
[{"post_id": 9483, "ts": "2026 [{"post_id": 9483, "ts": "2026-06-15T20:43:56Z", "hours": 0.3922, "text": "I just finished creating the firmware for my Macropad"}]...
|
Title: My awesome macropad! by @MattyO | Stardance Title: My awesome macropad! by @MattyO | Stardance
Devlogs:
I just finished creating the firmware for my Macropad
Ships:
I created my first Macropad and learned how to use Kicad along with how to code in python. I also used CAD which I have used in the past. I am hoping the parts will be shipped out soon so I can build this!...
|
1793271212.1337318
|
1793357612.1337318
|
|
15394
|
Unbound Bionix by @araadh3111 | Stardance
|
araadh3111
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T17:55:51Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Bionix, A prosthetic hand that works from design to circuit everything", "repo": "https://github.com/Araadh3111/Bionix", "demo": ""}]...
|
[{"post_id": 74099, "ts": "202 [{"post_id": 74099, "ts": "2026-09-26T17:55:03Z", "hours": 1.3017, "text": "I could not make the full project but Now I am going to submit the design and I have made some changes in code which I will be commiting in a day"}, {"post_id": 40846, "ts": "2026-08-04T17:06:55Z", "hours": 9.9639, "text": "OH MY DAYS! I MOVED A SERVO FROM MY MUSCLE SIGNALS! this is definetely my lifes greatest achievement ok so I used electrodes and muscle sensor and wrote some basic code to move the servo based on muscle sensors output! I printed bionix a lot of times reiterated designs added arches in fingers for thread routing curled the index finger too! too much achieved im proud of myself! ### Lets Keep Rocking!"}, {"post_id": 26118, "ts": "2026-07-10T18:29:39Z", "hours": 4.9028, "text": "Update on Bionix I am finished with my basic hand structure i printed it irl and saw some errors and then fixed it in CAD next is to work on the thread routing channels!! keep following and checking out my github"}, {"post_id": 11544, "ts": "2026-06-18T20:49:08Z", "hours": 5.1958, "text": "Devlog: Final Engineering Push – Kinematics, Power Architecture, and Assembly Readiness Date: June 19, 2026 Status: Design Locked / Fabrication Ready The past several intensive engineering sessions have brought Bionix from a conceptual CAD model to a fully robust, physically viable electro-mechanical prototype. With the core palm and phalange geometry finalized, power distribution mapped out, and the bill of materials optimized, the project is officially ready for the physical fabrication and assembly phase. ⚙️ Mechanical Engineering & Kinematics The primary mechanical challenge for a tendon-driven bionic hand is managing friction and preventing catastrophic mechanical failure during repeated flexion cycles. We entirely overhauled the internal routing and joint mechanisms to achieve competition-grade reliability. Frictionless Revolute Joints: We stripped out the threaded M2 screws from the phalange joints. The joints have been re-engineered to accept smooth 2.2mm solid brass dowel pins , providing a low-friction, high-strength pivot point that ensures fluid finger movement. Optimized Flexion Routing (The Active Grip): To eliminate the “bowstring” effect, we redesigned the entry tunnels on the palm. The four main finger tension lines now enter the palm cavity via perfectly aligned tunnels featuring a -10° downward draft angle . This forces the high-tensile braided line flush against the joint grooves, maximizing servo leverage. All sharp 90-degree channel exits were filleted into smooth “trumpet flares” to prevent the threads from shearing under load. Antagonistic Elastic Extension (Passive Return): For the fingers to snap back open instantaneously when the servos release, we implemented an external elastic extensor system. We modeled a Unified Wrist Anchor block at the base of the palm. 1mm shock cord anchors at the fingertips, routes seamlessly over the knuckles, and ties off securely at the base of the palm, providing the exact passive tension required for a lifelike, snappy release. Removable Maintenance Hatch: The palm features a custom-traced, screw-mounted top plate with a generous cutout for full thumb articulation. This protects the internal servo array while allowing rapid access for tension-line adjustments. ⚡ Electronics & Power Architecture Running five high-torque micro servos simultaneously while reading delicate analog muscle signals requires isolating the high-current demands of the actuators from the logic board. Main Controller: The system is governed by a Raspberry Pi Pico (RP2040), chosen for its robust hardware PWM processing capabilities. Power Distribution: A 7.4V 2S Li-ion battery serves as the primary power source. This is routed through a high-efficiency 5V Buck Converter (rated for ≥3 Amps) directly to the servo power rails. The Pico is powered safely without having to sink the massive stall currents generated when the hand grips an object. A 1000uF decoupling capacitor bridges the 5V rail to smooth out transient voltage spikes. Biometric Input: We integrated the MyoWare 2.0 muscle sensor, passing raw electromyography (EMG) signals directly to the Pico’s ADC0 (GPIO26) pin."}, {"post_id": 9357, "ts": "2026-06-15T18:12:24Z", "hours": 1.1767, "text": "devlog 5 or 4 i honestly dont remember lol: I am done with the Palm!!!! and I also assembled the fingers to check !!! yes lets goo!! Printing the index finger tomorrow"}, {"post_id": 8851, "ts": "2026-06-14T18:37:40Z", "hours": 0.7619, "text": "Devlog 4: I was already done with 2 fingers earlier, I made the 3rd one today and I used Ai to build the pinky and thumb finger as it was just copying the dimensions editing the sketch and fixing the hole problem What I set out to build : I wanted to complete the fingers in this session which I did achieve + I am done with palm’s basic layout and structure planning, In next session I will be improving and finalising the palm assembling all of it together for once to check it all fits then work on the forearm"}, {"post_id": 8053, "ts": "2026-06-13T13:09:17Z", "hours": 0.4603, "text": "Devlog 3 : Bionix Ring finger design has been done and assembled in a sepearate folder I did not face any problems while making this design, Only pinky finger and thumb are left then I will start with palm and forearm respectively!"}, {"post_id": 8034, "ts": "2026-06-13T12:08:26Z", "hours": 1.7147, "text": "Devlog2 : Unbound bionix, Update: last devlog I was finished with the index finger dimensions well I just printed index finger to confirm movement and it’s moving as expected, I also Made the middle finger design by editing sketch of index finger but fixing the hole sliding issue, failures: I encountered multiple failures planning the design of index finger, but I did make it work and I am really happy for that, what is left? designing all fingers and thumb according to their dimensions and then designing the palm and forearm respectively and then moving on to the electronics part session pic: here is one session pic where I show the assembled middle finger design, for the middle finger the proximal phalange is 5 cm long, the distal phalange is 2 cm and the middle phalange is 3 cm!"}, {"post_id": 6780, "ts": "2026-06-11T11:08:36Z", "hours": 2.8783, "text": "Everyday tasks such as holding a bottle, typing on a keyboard, opening a door, or picking up a pen are actions most of us perform without thinking. For millions of people living with upper-limb loss, these simple activities can become significant challenges that affect independence, confidence, and quality of life. While modern prosthetic technology has advanced considerably, many solutions remain prohibitively expensive, difficult to customize, or inaccessible to students, researchers, and people in developing regions. Devices that offer advanced functionality often cost thousands of dollars, creating a gap between innovation and accessibility. Prosthetic Arm V1 is an attempt to bridge that gap. The goal of this project is to design a lightweight, modular, and affordable prosthetic arm that can be manufactured using 3D printing and standard electronic components. Rather than focusing solely on appearance, the design prioritizes practical functionality, durability, and ease of maintenance. Current Objectives Design an anatomically inspired finger and joint mechanism. Develop smooth and reliable tendon-driven motion. Create a modular structure that allows individual parts to be replaced or upgraded. Keep manufacturing costs as low as possible without sacrificing functionality. Build a foundation for future versions with improved dexterity and sensor integration. Progress Today, I completed the initial CAD model for one of the fingers and started testing the joint geometry. The focus is on achieving a balance between strength, range of motion, and ease of assembly before moving on to full-hand integration. This is only Version 1, and there is still a long way to go, but every iteration brings the project one step closer to creating an accessible prosthetic solution that anyone can build, improve, and use. Next milestone: Complete the middle finger and begin integrating the tendon routing system."}]...
|
Title: Unbound Bionix by @araadh3111 | Stardance
Title: Unbound Bionix by @araadh3111 | Stardance
Devlogs:
Everyday tasks such as holding a bottle, typing on a keyboard, opening a door, or picking up a pen are actions most of us perform without thinking. For millions of people living with upper-limb loss, these simple activities can become significant challenges that affect independence, confidence, and quality of life. While modern prosthetic technology has advanced considerably, many solutions remain prohibitively expensive, difficult to customize, or inaccessible to students, researchers, and people in developing regions. Devices that offer advanced functionality often cost thousands of dollars, creating a gap between innovation and accessibility. Prosthetic Arm V1 is an attempt to bridge that gap. The goal of this project is to design a lightweight, modular, and affordable prosthetic arm that can be manufactured using 3D printing and standard electronic components. Rather than focusing solely on appearance, the design prioritizes practical functionality, durability, and ease of maintenance. Current Objectives Design an anatomically inspired finger and joint mechanism. Develop smooth and reliable tendon-driven motion. Create a modular structure that allows individual parts to be replaced or upgraded. Keep manufacturing costs as low as possible without sacrificing functionality. Build a foundation for future versions with improved dexterity and sensor integration. Progress Today, I completed the initial CAD model for one of the fingers and started testing the joint geometry. The focus is on achieving a balance between strength, range of motion, and ease of assembly before moving on to full-hand integration. This is only Version 1, and there is still a long way to go, but every iteration brings the project one step closer to creating an accessible prosthetic solution that anyone can build, improve, and use. Next milestone: Complete the middle finger and begin integrating the tendon routing system.
Devlog2 : Unbound bionix, Update: last devlog I was finished with the index finger dimensions well I just printed index finger to confirm movement and it’s moving as expected, I also Made the middle finger design by editing sketch of index finger but fixing the hole sliding issue, failures: I encountered multiple failures planning the design of index finger, but I did make it work and I am really happy for that, what is left? designing all fingers and thumb according to their dimensions and then designing the palm and forearm respectively and then moving on to the electronics part session pic: here is one session pic where I show the assembled middle finger design, for the middle finger the proximal phalange is 5 cm long, the distal phalange is 2 cm and the middle phalange is 3 cm!
Devlog 3 : Bionix Ring finger design has been done and assembled in a sepearate folder I did not face any problems while making this design, Only pinky finger and thumb are left then I will start with palm and forearm respectively!
Devlog 4: I was already done with 2 fingers earlier, I made the 3rd one today and I used Ai to build the pinky and thumb finger as it was just copying the dimensions editing the sketch and fixing the hole problem What I set out to build : I wanted to complete the fingers in this session which I did achieve + I am done with palm’s basic layout and structure planning, In next session I will be improving and finalising the palm assembling all of it together for once to check it all fits then work on the forearm
devlog 5 or 4 i honestly dont remember lol: I am done with the Palm!!!! and I also assembled the fingers to check !!! yes lets goo!! Printing the index finger tomorrow
Devlog: Final Engineering Push – Kinematics, Power Architecture, and Assembly Readiness Date: June 19, 2026 Status: Design Locked / Fabrication Ready The past several intensive engineering sessions have brought Bionix from a conceptual CAD model to a fully robust, physically viable electro-mechanical prototype. With the core palm and phalange geometry finalized, power distribution mapped out, and the bill of materials optimized, the project is officially ready for the physical fabrication and assembly phase. ⚙️ Mechanical Engineering & Kinematics The primary mechanical challenge for a tendon-driven bionic hand is managing friction and preventing catastrophic mechanical failure during repeated flexion cycles. We entirely overhauled the internal routing and joint mechanisms to achieve competition-grade reliability. Frictionless Revolute Joints: We stripped out the threaded M2 screws from the phalange joints. The joints have been re-engineered to accept smooth 2.2mm solid brass dowel pins , providing a low-friction, high-strength pivot point that ensures fluid finger movement. Optimized Flexion Routing (The Active Grip): To eliminate the “bowstring” effect, we redesigned the entry tunnels on the palm. The four main finger tension lines now enter the palm cavity via perfectly aligned tunnels featuring a -10° downward draft angle . This forces the high-tensile braided line flush against the joint grooves, maximizing servo leverage. All sharp 90-degree channel exits were filleted into smooth “trumpet flares” to prevent the threads from shearing under load. Antagonistic Elastic Extension (Passive Return): For the fingers to snap back open instantaneously when the servos release, we implemented an external elastic extensor system. We modeled a Unified Wrist Anchor block at the base of the palm. 1mm shock cord anchors at the fingertips, routes seamlessly over the knuckles, and ties off securely at the base of the palm, providing the exact passive tension required for a lifelike, snappy release. Removable Maintenance Hatch: The palm features a custom-traced, screw-mounted top plate with a generous cutout for full thumb articulation. This protects the internal servo array while allowing rapid access for tension-line adjustments. ⚡ Electronics & Power Architecture Running five high-torque micro servos simultaneously while reading delicate analog muscle signals requires isolating the high-current demands of the actuators from the logic board. Main Controller: The system is governed by a Raspberry Pi Pico (RP2040), chosen for its robust hardware PWM processing capabilities. Power Distribution: A 7.4V 2S Li-ion battery serves as the primary power source. This is routed through a high-efficiency 5V Buck Converter (rated for ≥3 Amps) directly to the servo power rails. The Pico is powered safely without having to sink the massive stall currents generated when the hand grips an object. A 1000uF decoupling capacitor bridges the 5V rail to smooth out transient voltage spikes. Biometric Input: We integrated the MyoWare 2.0 muscle sensor, passing raw electromyography (EMG) signals directly to the Pico’s ADC0 (GPIO26) pin.
Update on Bionix I am finished with my basic hand structure i printed it irl and saw some errors and then fixed it in CAD next is to work on the thread routing channels!! keep following and checking out my github
OH MY DAYS! I MOVED A SERVO FROM MY MUSCLE SIGNALS! this is definetely my lifes greatest achievement ok so I used electrodes and muscle sensor and wrote some basic code to move the servo based on muscle sensors output! I printed bionix a lot of times reiterated designs added arches in fingers for thread routing curled the index finger too! too much achieved im proud of myself! ### Lets Keep Rocking!
I could not make the full project but Now I am going to submit the design and I have made some changes in code which I will be commiting in a day
Ships:
Bionix, A prosthetic hand that works from design to circuit everything...
|
1793152565.0555813
|
1793238965.0555813
|
|
15406
|
My very own WebOS by @rehanhabbu | Stardance
|
rehanhabbu
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-07T16:37:24Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Simple web os for stardance with: Moveable and closable tabs A welcome screen with this github repo link A canvas painter app a notes app", "repo": "https://github.com/Catsarepro21/WebOS", "demo": "https://catsarepro21.github.io/WebOS/"}]...
|
[{"post_id": 42739, "ts": "202 [{"post_id": 42739, "ts": "2026-08-07T16:36:49Z", "hours": 0.5708, "text": "Added a notes app and a paint app with a canvas"}, {"post_id": 42687, "ts": "2026-08-07T15:20:29Z", "hours": 0.465, "text": "Made the welcome screen window draggable and closable"}, {"post_id": 42210, "ts": "2026-08-06T20:27:42Z", "hours": 0.6356, "text": "Made the base of the webos Made a welcome screen with an intro and the github link Added a top navigation bar with a clock and ability to change the background. Added date and time"}]...
|
Title: My very own WebOS by @rehanhabbu | Stardanc Title: My very own WebOS by @rehanhabbu | Stardance
Devlogs:
Made the base of the webos Made a welcome screen with an intro and the github link Added a top navigation bar with a clock and ability to change the background. Added date and time
Made the welcome screen window draggable and closable
Added a notes app and a paint app with a canvas
Ships:
Simple web os for stardance with: Moveable and closable tabs A welcome screen with this github repo link A canvas painter app a notes app...
|
1793270906.3429604
|
1793357306.3429604
|
|
15414
|
Alttre os by @Alttre | Stardance
|
Alttre
|
1
|
1.31
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T07:18:51Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created alttre.os, a modern, premium Web OS mockup built from scratch using React, Vite, and Framer Motion. 🚀 What did you make? Fully functional draggable and resizable window manager. Customizable Taskbar styles (Classic and Dock Layout) with a live Setup Screen. Premium glassmorphism UI with interactive live wallpaper engines (3D Particles & Fluid physics). A collection of built-in apps: A 3D STL File Viewer, 3D Studio Editor, Python IDE, Notepad, terminal, Lofi music player, Live Weather, Paint, games (Snake, Memory, TicTacToe), and a simulated InstaClone. ⚡️ What was challenging? Implementing smooth, absolute window dragging and custom resizing overlays without breaking embedded iframe components (like the 3D canvas and terminal). Handling viewport height scaling (dvh resets) in nested iframe environments (especially preventing bottom Dock cutoff in dashboard previews). Building the virtual file system (VFS) to share data state smoothly between apps like Notepad and Devlog. 🌟 What are you proud of? The premium, fluid, and highly polished glassmorphism design system. Designing a separate, completely modular preview system for the setup screen layout options. The ultra-responsive desktop feel and smooth custom cursor effects. 🔍 How to test it: Complete the setup screen to customize your OS username, wallpaper, cursor, and taskbar style (Classic or Dock). Use the menu on the top-left to launch applications. Open the “Stardance Devlog” app to see the progress log, and try resizing/dragging the windows to test out the multitasking window manager!", "repo": "https://github.com/Alttrest/web-os", "demo": "https://alttre-os.vercel.app/"}]...
|
[{"post_id": 7991, "ts": "2026 [{"post_id": 7991, "ts": "2026-06-13T10:24:06Z", "hours": 0.3092, "text": "Ifix the screen eror and make a better readme"}, {"post_id": 7332, "ts": "2026-06-12T07:13:00Z", "hours": 0.4847, "text": "I Posted 2 Devlog but ı cant ship my projecet ı write this for a test pls somene help me and ı want say aout somethinf my project ı finished eveythıng .add games resıble windeows editorsand ı fixed dock prewiew bug"}, {"post_id": 6892, "ts": "2026-06-11T15:37:03Z", "hours": 0.4419, "text": "ı aded a stl wiewer and 3d wiewer ı add a python editor based monaca editor ı thınk ıts enought but u have a ıdea ı can make ıt and ı fıunıshed the filesystem ı see some bugs about window system localhost before deployment update and ı fix them"}, {"post_id": 6856, "ts": "2026-06-11T14:45:05Z", "hours": 0.4764, "text": "ı am tryıng add a folder mechanic for my os and ı want make a pdf doc editor with stl wiewer"}]...
|
Title: Alttre os by @Alttre | Stardance
Devlogs:
Title: Alttre os by @Alttre | Stardance
Devlogs:
ı am tryıng add a folder mechanic for my os and ı want make a pdf doc editor with stl wiewer
ı aded a stl wiewer and 3d wiewer ı add a python editor based monaca editor ı thınk ıts enought but u have a ıdea ı can make ıt and ı fıunıshed the filesystem ı see some bugs about window system localhost before deployment update and ı fix them
I Posted 2 Devlog but ı cant ship my projecet ı write this for a test pls somene help me and ı want say aout somethinf my project ı finished eveythıng .add games resıble windeows editorsand ı fixed dock prewiew bug
Ifix the screen eror and make a better readme
Ships:
I created alttre.os, a modern, premium Web OS mockup built from scratch using React, Vite, and Framer Motion. 🚀 What did you make? Fully functional draggable and resizable window manager. Customizable Taskbar styles (Classic and Dock Layout) with a live Setup Screen. Premium glassmorphism UI with interactive live wallpaper engines (3D Particles & Fluid physics). A collection of built-in apps: A 3D STL File Viewer, 3D Studio Editor, Python IDE, Notepad, terminal, Lofi music player, Live Weather, Paint, games (Snake, Memory, TicTacToe), and a simulated InstaClone. ⚡️ What was challenging? Implementing smooth, absolute window dragging and custom resizing overlays without breaking embedded iframe components (like the 3D canvas and terminal). Handling viewport height scaling (dvh resets) in nested iframe environments (especially preventing bottom Dock cutoff in dashboard previews). Building the virtual file system (VFS) to share data state smoothly between apps like Notepad and Devlog. 🌟 What are you proud of? The premium, fluid, and highly polished glassmorphism design system. Designing a separate, completely modular preview system for the setup screen layout options. The ultra-responsive desktop feel and smooth custom cursor effects. 🔍 How to test it: Complete the setup screen to customize your OS username, wallpaper, cursor, and taskbar style (Classic or Dock). Use the menu on the top-left to launch applications. Open the “Stardance Devlog” app to see the progress log, and try resizing/dragging the windows to test out the multitasking window manager!...
|
1793202584.3350332
|
1793288984.3350332
|
|
15426
|
Exoplanet Hunter V1 by @Kiviee | Stardance
|
Kiviee
|
1
|
11.05
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T16:22:19Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "what i made: exoplanet hunter v1 — pretty much a web app where you give it a telescope data file and it figures out whether there is likely an exoplanet around that particular star. it imports FITS files (which is what astronomers use), extracts the light curve, does all sorts of signal processing, and spits out transit candidates with a level of confidence and even a nice plot for you. what was hard: doing it on free hosting was hellish. the algorithm requires processing large data files, but i have only 512 mb of memory available to me on the free tier of render. had to do some refactoring of the file import module to avoid loading everything to memory at once, some garbage collection midway through the pipeline so it doesn’t run out, and scaled down the periodogram calculations according to the size of the input data set. also wasted way too much time trying to figure out what caused the crash of the whole thing which turned out to be the period search trying to find periods longer than the minimum period which is….. not how it works!! what i’m proud of: that it actually works. really works. you upload a file and 2 seconds later you have real transits with false positive flags and everything. maximum memory consumption is 36.7mb on a 46mb file which means that it runs on free hosting. i’ve done that because i was interested in the way exoplanets are detected rather than just learning about that and now i can say that i made the whole pipeline. what people should know: go to exoplanet-hunter-v1.onrender.com — initial loading takes around 50 seconds because render sleeps the server when it’s on the free tier but after that it’s fast. you need a FITS file to run tests. the easiest way is to visit mast.stsci.edu, find a star (e.g. WASP-18), download the TPF FITS file and upload it.", "repo": "https://github.com/Kavishomg/Exoplanet-Hunter-V1", "demo": "https://exoplanet-hunter-v1.kavish.hackclub.app/"}]...
|
[{"post_id": 22078, "ts": "202 [{"post_id": 22078, "ts": "2026-07-04T10:25:05Z", "hours": 1.1653, "text": "I had to rewrite my css… sooo my reviewer left a comment that the css looks ai and doesnt feel personalized. i spent like 30-40mins fixing it, rewriting parts of css. and as for the personalization, i had already added my stuff into the site that i liked like the retro pixel theme, space art and background, some effects and all and also added a hidden feature (try konami code 🤫) biggest drama of the day though - i accidentally deleted the async function checkBackend() line when i was reformatting the code. just that one line. and because of that the entire JavaScript died silently. no mouse effect, no easter egg, no backend connection, nothing. took me way too long to figure out what happened. the function was being called but never defined so it threw a ReferenceError and everything after it in the script just… didnt run. then i just fixed that, redeployed and everything worked. also spent a lotttt of time rewriting readme. i had to draft plans and all for a readme i am proud of. go read it 😉 i wanted to add images in there too but i am kinda lazy rn, i will do that later. anyway the site is live and working. backend connects, all the effects are back, analysis works. one step closer to shipping this thing."}, {"post_id": 17686, "ts": "2026-06-28T16:15:30Z", "hours": 0.7608, "text": "Today, i did the THING!! I redesigned my entire UI and it was very fun! THE PROBLEM: the old ui was very robotic, artificial, too formal and… not fun really. THE FIX: a whole ui redesignnnn as per my taste updated the theme to retro-pixel-space type added better fonts changed the color theme added some effects that make it 10x better added live effects that make the dashboard look ‘alive’ used some space related elements in the site (you might see a planet or telescope etc!) added cursor effects added a footer of my name for personalization Even programmed a hidden easter egg that… turns out even i am unable to access 😭(i will try to make it work and fix it real soon) CURRENT SITUATION: turns out, the ui is really awesome now (according to me atleast), and i am really happy about this new makeover thing on the old design. The site feels alive with better colors and fonts. i am really happy and excited anddd want you guys to try it out and give me some feedback! i will reward myself with an ice cream now for all this hardwork and a design that actually turned out to be amazing 😋 took me an entire afternoon to fix my wifi! because for some reason, my wifi became very slow and i couldn’t work on the web or try my own thing out! my afternoon spent in this scorching heat! huhhh (its 40°C out here 🥲)"}, {"post_id": 16361, "ts": "2026-06-26T16:49:12Z", "hours": 0.5647, "text": "soo today got to know that fits are very confusing, not just for me.. but for everybody. so, i have added a link to the MAST archive which is the OG place for finding astronomical data, right in the dashboard itself. people can search for stars with exoplanets or whatever they like and start examining the lightcurves!!! PRETYY COOL For everybody: There are multiple kinds of fits files but this project only deals with tpf (Target Pixel Files) and lightcurve files. TPF : a small image(s) of the target star with some of its neighbors. it is a collection of images taken periodically over time so that we can examine the changes in brightness of the star to detect for exoplanets. Lightcuves : These are just the metadata of the star’s brightness values corresponding with time, package again as….. you guessed it… fits. it does not contain any image. it is just the metadata. basically, someone already did the thing for you! took the raw data of a star over time and just took the light and time values and saved them in a fits file. that is your lightcurve file. you can plot them with various styles and get the graphs. which again, takes a lot of time and has a high learning curve! and… that entire process is what my project automates :) EDIT: added support for more file formats. the project now supports .fits, .fit, .fz, .tpf, and .fits.gz files!!!"}, {"post_id": 15473, "ts": "2026-06-25T05:00:01Z", "hours": 0.5583, "text": "Moved exoplanet hunter off render and onto hack club’s nest today. honestly it was way smoother than i expected! then nested my ssh key, waited a couple hours for approval, then ssh’d in and just… ran the thing. (Though my app is still available on render because when shipping the project, i mentioned render there and unfortunately, i cant find the edit option of shipping documentation 😭😭) Had to install python and git manually since the container comes bare bones but after that it was just cloning the repo, setting up a venv, and running uvicorn. threw it behind a systemd service so it auto-restarts if it crashes and now its sitting at exoplanet-hunter-v1.kavish.hackclub.app, eating 200mb of ram on a 2gb box. the whole process from “i have nothing” to “its live on the internet” took maybe 20 minutes. Nest is actually goated for giving teenagers free linux vps with no credit card required. only thing that tripped me up was being logged in as root and trying to use sudo which… doesnt exist when youre already root. heheee"}, {"post_id": 13598, "ts": "2026-06-22T08:53:58Z", "hours": 0.8617, "text": "added a clear README.md used hackclub nest to host and go live now the project is available to everybody at https://exoplanet-hunter-v1.kavish.hackclub.app/ (Loading may take a minute cus i am on the free tier obv) I AM VERYY HAPPYY"}, {"post_id": 13129, "ts": "2026-06-21T13:59:46Z", "hours": 4.6322, "text": "So, yesterday and today were actually really cool for this project! Created a Frontend Dashboard and the Backend all in a day!! Made the dashboard display: TPF plot Raw Light Curve, Flattened Light Curve & more Periodogram Folded Light Curve A Score System that predicts if there is a planet or not using condition based uproach & more stuff Found a nasty bug where the periodogram would just crash if the fits file had a short baseline! So, i went up to codex to help me fix it just to soon find out that i somehow had used up a month worth of credits! (i didnt even do anything 😭😭) LITERALLY TOOK ME SOOOO MUCH TIME TO FIX THE BUG!!! (i fixed the bug by capping the max duration down at 90% of the minimum period) Then i went full deployment mode 😎 dockerised the whole thing, added stuff like requirements.txt, .gitignore (the essential stuff) Added rate limiting, 120 sec timeout and a LOTT of memory optimization so that it doesnt load the entire fits into RAM. Cleaned up the repo, moved all the old notebooks that i had been using for testing and experimenting plus a random csv file to a seperate ‘notebooks’ branch. Everything is now working hopefully 🤞"}, {"post_id": 11795, "ts": "2026-06-19T06:04:15Z", "hours": 2.5922, "text": "Working on a pipeline to detect exoplanets and other stuff from Roman Space Telescope Data. hi, this is my first devlog!!! I am currently designing a pipeline for the roman space telescope that automatically detects celestial stuff using standard algorithms and machine learning based approach. This pipeline will be created not in a single project, rather a series of projects (Exoplanet Hunter V1,V2,V3…. etc because this is a challenging task) For v1, i am learning theory, concepts and use of python libraries used for astronomy. i have come across lightkurve, astropy and many more. its day 3 of working on the project (v1) and i can only spend around an hour or so daily (due to studies 😭😭😭😭). Day 1: was all about learning about exoplanets, how they transit and how we detect them. i also came across the libraries i mentioned earlier. i spent most of the time figuring out how they work and all. Day 2: was quite interesting, it was the day i learned how to properly use FITS (or FIT or fts) files and their types. (tpf, lightcurves and single image files) and how to properly use them to plot graphs. again, i spent a lot of time searching for files here and there on the web. then i got to know that we can easily download files using lightkurve library. 🥲🥲 then, i selected a few stars with known exoplanets or some anomalies and began plotting their fits files to graphs and saw some transits, stellar flares and a supposidely binary star system. Day 3: continued plotting more graphs of known targets to understand what those graphs mean and how to calculate various metrics of the targets via graphs. (in the upcoming versions, i will explore adding ml to my pipeline, and instead of downloading fits of known planets, i will myself run and test algorithms that can detect explanatory transits via custom thresholds and using machine learning approaches. i have planned a lot for the future. this is just a starting point and every project in this series will assemble to create the final working pipeline! stay tuned!!!)"}]...
|
Title: Exoplanet Hunter V1 by @Kiviee | Stardance
Title: Exoplanet Hunter V1 by @Kiviee | Stardance
Devlogs:
Working on a pipeline to detect exoplanets and other stuff from Roman Space Telescope Data. hi, this is my first devlog!!! I am currently designing a pipeline for the roman space telescope that automatically detects celestial stuff using standard algorithms and machine learning based approach. This pipeline will be created not in a single project, rather a series of projects (Exoplanet Hunter V1,V2,V3…. etc because this is a challenging task) For v1, i am learning theory, concepts and use of python libraries used for astronomy. i have come across lightkurve, astropy and many more. its day 3 of working on the project (v1) and i can only spend around an hour or so daily (due to studies 😭😭😭😭). Day 1: was all about learning about exoplanets, how they transit and how we detect them. i also came across the libraries i mentioned earlier. i spent most of the time figuring out how they work and all. Day 2: was quite interesting, it was the day i learned how to properly use FITS (or FIT or fts) files and their types. (tpf, lightcurves and single image files) and how to properly use them to plot graphs. again, i spent a lot of time searching for files here and there on the web. then i got to know that we can easily download files using lightkurve library. 🥲🥲 then, i selected a few stars with known exoplanets or some anomalies and began plotting their fits files to graphs and saw some transits, stellar flares and a supposidely binary star system. Day 3: continued plotting more graphs of known targets to understand what those graphs mean and how to calculate various metrics of the targets via graphs. (in the upcoming versions, i will explore adding ml to my pipeline, and instead of downloading fits of known planets, i will myself run and test algorithms that can detect explanatory transits via custom thresholds and using machine learning approaches. i have planned a lot for the future. this is just a starting point and every project in this series will assemble to create the final working pipeline! stay tuned!!!)
So, yesterday and today were actually really cool for this project! Created a Frontend Dashboard and the Backend all in a day!! Made the dashboard display: TPF plot Raw Light Curve, Flattened Light Curve & more Periodogram Folded Light Curve A Score System that predicts if there is a planet or not using condition based uproach & more stuff Found a nasty bug where the periodogram would just crash if the fits file had a short baseline! So, i went up to codex to help me fix it just to soon find out that i somehow had used up a month worth of credits! (i didnt even do anything 😭😭) LITERALLY TOOK ME SOOOO MUCH TIME TO FIX THE BUG!!! (i fixed the bug by capping the max duration down at 90% of the minimum period) Then i went full deployment mode 😎 dockerised the whole thing, added stuff like requirements.txt, .gitignore (the essential stuff) Added rate limiting, 120 sec timeout and a LOTT of memory optimization so that it doesnt load the entire fits into RAM. Cleaned up the repo, moved all the old notebooks that i had been using for testing and experimenting plus a random csv file to a seperate ‘notebooks’ branch. Everything is now working hopefully 🤞
added a clear README.md used hackclub nest to host and go live now the project is available to everybody at https://exoplanet-hunter-v1.kavish.hackclub.app/ (Loading may take a minute cus i am on the free tier obv) I AM VERYY HAPPYY
Moved exoplanet hunter off render and onto hack club’s nest today. honestly it was way smoother than i expected! then nested my ssh key, waited a couple hours for approval, then ssh’d in and just… ran the thing. (Though my app is still available on render because when shipping the project, i mentioned render there and unfortunately, i cant find the edit option of shipping documentation 😭😭) Had to install python and git manually since the container comes bare bones but after that it was just cloning the repo, setting up a venv, and running uvicorn. threw it behind a systemd service so it auto-restarts if it crashes and now its sitting at exoplanet-hunter-v1.kavish.hackclub.app, eating 200mb of ram on a 2gb box. the whole process from “i have nothing” to “its live on the internet” took maybe 20 minutes. Nest is actually goated for giving teenagers free linux vps with no credit card required. only thing that tripped me up was being logged in as root and trying to use sudo which… doesnt exist when youre already root. heheee
soo today got to know that fits are very confusing, not just for me.. but for everybody. so, i have added a link to the MAST archive which is the OG place for finding astronomical data, right in the dashboard itself. people can search for stars with exoplanets or whatever they like and start examining the lightcurves!!! PRETYY COOL For everybody: There are multiple kinds of fits files but this project only deals with tpf (Target Pixel Files) and lightcurve files. TPF : a small image(s) of the target star with some of its neighbors. it is a collection of images taken periodically over time so that we can examine the changes in brightness of the star to detect for exoplanets. Lightcuves : These are just the metadata of the star’s brightness values corresponding with time, package again as….. you guessed it… fits. it does not contain any image. it is just the metadata. basically, someone already did the thing for you! took the raw data of a star over time and just took the light and time values and saved them in a fits file. that is your lightcurve file. you can plot them with various styles and get the graphs. which again, takes a lot of time and has a high learning curve! and… that entire process is what my project automates :) EDIT: added support for more file formats. the project now supports .fits, .fit, .fz, .tpf, and .fits.gz files!!!
Today, i did the THING!! I redesigned my entire UI and it was very fun! THE PROBLEM: the old ui was very robotic, artificial, too formal and… not fun really. THE FIX: a whole ui redesignnnn as per my taste updated the theme to retro-pixel-space type added better fonts changed the color theme added some effects that make it 10x better added live effects that make the dashboard look ‘alive’ used some space related elements in the site (you might see a planet or telescope etc!) added cursor effects added a footer of my name for personalization Even programmed a hidden easter egg that… turns out even i am unable to access 😭(i will try to make it work and fix it real soon) CURRENT SITUATION: turns out, the ui is really awesome now (according to me atleast), and i am really happy about this new makeover thing on the old design. The site feels alive with better colors and fonts. i am really happy and excited anddd want you guys to try it out and give me some feedback! i will reward myself with an ice cream now for all this hardwork and a design that actually turned out to be amazing 😋 took me an entire afternoon to fix my wifi! because for some reason, my wifi became very slow and i couldn’t work on the web or try my own thing out! my afternoon spent in this scorching heat! huhhh (its 40°C out here 🥲)
I had to rewrite my css… sooo my reviewer left a comment that the css looks ai and doesnt feel personalized. i spent like 30-40mins fixing it, rewriting parts of css. and as for the personalization, i had already added my stuff into the site that i liked like the retro pixel theme, space art and background, some effects and all and also added a hidden feature (try konami code 🤫) biggest drama of the day though - i accidentally deleted the async function checkBackend() line when i was reformatting the code. just that one line. and because of that the entire JavaScript died silently. no mouse effect, no easter egg, no backend connection, nothing. took me way too long to figure out what happened. the function was being called but never defined so it threw a ReferenceError and everything after it in the script just… didnt run. then i just fixed that, redeployed and everything worked. also spent a lotttt of time rewriting readme. i had to draft plans and all for a readme i am proud of. go read it 😉 i wanted to add images in there too but i am kinda lazy rn, i will do that later. anyway the site is live and working. backend connects, all the effects are back, analysis works. one step closer to shipping this thing.
Ships:
what i made: exoplanet hunter v1 — pretty much a web app where you give it a telescope data file and it figures out whether there is likely an exoplanet around that particular star. it imports FITS files (which is what astronomers use), extracts the light curve, does all sorts of signal processing, and spits out transit candidates with a level of confidence and even a nice plot for you. what was hard: doing it on free hosting was hellish. the algorithm requires processing large data files, but i have only 512 mb of memory available to me on the free tier of render. had to do some refactoring of the file import module to avoid loading everything to memory at once, some garbage collection midway through the pipeline so it doesn’t run out, and scaled down the periodogram calculations according to the size of the input data set. also wasted way too much time trying to figure out what caused the crash of the whole thing which turned out to be the period search trying to find periods longer than the minimum period which is….. not how it works!! what i’m proud of: that it actually works. really works. you upload a file and 2 seconds later you have real transits with false positive flags and everything. maximum memory consumption is 36.7mb on a 46mb file which means that it runs on free hosting. i’ve done that because i was interested in the way exoplanets are detected rather than just learning about that and now i can say that i made the whole pipeline. what people should know: go to exoplanet-hunter-v1.onrender.com — initial loading takes around 50 seconds because render sleeps the server when it’s on the free tier but after that it’s fast. you need a FITS file to run tests. the easiest way is to visit mast.stsci.edu, find a star (e.g. WASP-18), download the TPF FITS file and upload it....
|
1793224295.6194704
|
1793310695.6194704
|
|
15432
|
Tenekeynesis by @kabir | Stardance
|
kabir
|
1
|
3.39
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T07:58:22Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a VERY ergonomic ten key Macropad with direct wiring to the MCU for better response times and eliminating diodes from the circuit, it has two keys per finger in a way you can rock your finger back and forth to press keys without having to move them around. A particularly challenging part was the KiCAD pcb routing within an ergo 100x100mm PCB and getting the mounting holes of the PCB to align well with the mounting holes on the case Allinall I learnt quite a few new skills an developed a really time consuming interest in hardware design =)", "repo": "https://github.com/bubug-star/Telekeynesis-Macropad-V1/", "demo": ""}]...
|
[{"post_id": 12999, "ts": "202 [{"post_id": 12999, "ts": "2026-06-21T07:52:51Z", "hours": 0.4014, "text": "Tenekeyless#3 Added Global Labels, Decided to Switch to 45deg switches on the schematic and may use mouse switches on a keyboard! Since it is a stenograph after all"}, {"post_id": 12673, "ts": "2026-06-20T18:19:16Z", "hours": 0.5494, "text": "Most builders look at a tenkeyless form factor and think about rows, columns, and diodes. Instead of dealing with a traditional matrix and the inevitable ghosting risks or routing headaches, Tenkeyless lives up to its name by discarding the standard matrix entirely. We are running a direct-pin, matrixless setup. Every single switch gets its own dedicated digital runway.Hardware Breakdown & Schematic DeviationBecause a single microcontroller doesn’t boast enough GPIO pins to handle a 50-switch layout individually, the brain of this board has been split into a dual-engine configuration.The Brains: 2x Orpheus Pico microcontrollers. The Schematic Hack: The initial design schematics used standard Raspberry Pi Picos as placeholders. The physical build swaps these out for the Orpheus Picos, maintaining the same form factor but optimizing for our specific firmware goals.The Split: * Pico Alpha: Manages Left Block (25 switches) Pico Beta: Manages Right Block + Nav Cluster (25 switches) The Wiring Topology: Pure Direct DriveWe completely bypassed the standard row/column matrix. No diodes, no multiplexers. [Switch] ─── (Pin 1) ──────────────────────> GPIO Pin (Dedicated) ─── (Pin 2) ─── [Common Ground] ──> GND Bus Each of the 50 switches is wired using a direct-to-ground methodology:Terminal A: Wired directly to a dedicated, individual GPIO pin on its respective Orpheus Pico.Terminal B: Tied into a massive, unified common ground bus routing back to the controller. When a key is pressed, the GPIO pin is pulled straight to ground. The microcontroller senses the state change instantly. Input latency is theoretically limited only by the clock speed of the chips and switch debounce times."}, {"post_id": 12649, "ts": "2026-06-20T17:42:46Z", "hours": 0.4436, "text": "Working on my Hackboard, namely Tenekeyless inspired by TKL keyboards I began, but since I wanted the wiring to be direct for better scan rates, I was limited to 25 keys per split board each having one orpheus pico => 50 keys Started up the KiCad Schematic and added a raspberry pico and all the switches decided on Gateron EF Curry, Gateron Yellow Pro switches since they fit the budget https://hackpad.hackclub.com/keyboard/"}, {"post_id": 8631, "ts": "2026-06-14T10:53:54Z", "hours": 0.4853, "text": "PCB reref!"}, {"post_id": 8513, "ts": "2026-06-14T05:00:55Z", "hours": 1.3286, "text": "Macropad Case design"}]...
|
Title: Tenekeynesis by @kabir | Stardance
Devlogs Title: Tenekeynesis by @kabir | Stardance
Devlogs:
Macropad Case design
PCB reref!
Working on my Hackboard, namely Tenekeyless inspired by TKL keyboards I began, but since I wanted the wiring to be direct for better scan rates, I was limited to 25 keys per split board each having one orpheus pico => 50 keys Started up the KiCad Schematic and added a raspberry pico and all the switches decided on Gateron EF Curry, Gateron Yellow Pro switches since they fit the budget https://hackpad.hackclub.com/keyboard/
Most builders look at a tenkeyless form factor and think about rows, columns, and diodes. Instead of dealing with a traditional matrix and the inevitable ghosting risks or routing headaches, Tenkeyless lives up to its name by discarding the standard matrix entirely. We are running a direct-pin, matrixless setup. Every single switch gets its own dedicated digital runway.Hardware Breakdown & Schematic DeviationBecause a single microcontroller doesn’t boast enough GPIO pins to handle a 50-switch layout individually, the brain of this board has been split into a dual-engine configuration.The Brains: 2x Orpheus Pico microcontrollers. The Schematic Hack: The initial design schematics used standard Raspberry Pi Picos as placeholders. The physical build swaps these out for the Orpheus Picos, maintaining the same form factor but optimizing for our specific firmware goals.The Split: * Pico Alpha: Manages Left Block (25 switches) Pico Beta: Manages Right Block + Nav Cluster (25 switches) The Wiring Topology: Pure Direct DriveWe completely bypassed the standard row/column matrix. No diodes, no multiplexers. [Switch] ─── (Pin 1) ──────────────────────> GPIO Pin (Dedicated) ─── (Pin 2) ─── [Common Ground] ──> GND Bus Each of the 50 switches is wired using a direct-to-ground methodology:Terminal A: Wired directly to a dedicated, individual GPIO pin on its respective Orpheus Pico.Terminal B: Tied into a massive, unified common ground bus routing back to the controller. When a key is pressed, the GPIO pin is pulled straight to ground. The microcontroller senses the state change instantly. Input latency is theoretically limited only by the clock speed of the chips and switch debounce times.
Tenekeyless#3 Added Global Labels, Decided to Switch to 45deg switches on the schematic and may use mouse switches on a keyboard! Since it is a stenograph after all
Ships:
I made a VERY ergonomic ten key Macropad with direct wiring to the MCU for better response times and eliminating diodes from the circuit, it has two keys per finger in a way you can rock your finger back and forth to press keys without having to move them around. A particularly challenging part was the KiCAD pcb routing within an ergo 100x100mm PCB and getting the mounting holes of the PCB to align well with the mounting holes on the case Allinall I learnt quite a few new skills an developed a really time consuming interest in hardware design =)...
|
1793123507.652034
|
1793209907.652034
|
|
15480
|
RetroOS by @dan | Stardance
|
dan
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-20T01:30:10Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A retro-themed operating system designed from scratch (no libraries used). It features a welcome window, system settings with dark/light mode themes, and drag and exitable windows. Currently, runs on an outdated version. This is likely due to Github experiencing an outage of some sorts.", "repo": "https://github.com/Retro2D/RetroOS", "demo": "https://retro2d.github.io/RetroOS/main/index.html?q=123"}]...
|
[{"post_id": 31544, "ts": "202 [{"post_id": 31544, "ts": "2026-07-20T01:14:51Z", "hours": 2.0569, "text": "Alright, so here it is. RetroOS, nearly finished with webOS 1. As you can see, I have added a system settings with a light/dark mode toggle. Admittedly, it was very rushed (maybe because I want that new sticker!), but it is something I am pretty proud of. This has been a great reintroduction to web dev for me!"}, {"post_id": 31459, "ts": "2026-07-19T20:41:19Z", "hours": 1.3164, "text": "Multiple windows! Not just that, but also some better GUI. More features are in the works. :)"}, {"post_id": 31056, "ts": "2026-07-19T04:19:54Z", "hours": 3.2011, "text": "Currently working on fixing some bugs. Besides that, the formatting for the clock has changed, along with the styles of the exit button (though as you can see, it is very much a W.I.P)."}, {"post_id": 19766, "ts": "2026-07-01T04:47:01Z", "hours": 1.0317, "text": "I have started task-managing in RetroOS. You can now drag windows, close them, and open them (hopefully, currently that feature is bugged). This is a huge step towards creating a complete RetroOS product!"}, {"post_id": 18712, "ts": "2026-06-29T21:53:54Z", "hours": 1.79, "text": "I have started working on my new retro-inspired webOS, RetroOS. I am currently half-way through the second tutorial, but have done some pretty barebones UI concepts."}]...
|
Title: RetroOS by @dan | Stardance
Devlogs:
I hav Title: RetroOS by @dan | Stardance
Devlogs:
I have started working on my new retro-inspired webOS, RetroOS. I am currently half-way through the second tutorial, but have done some pretty barebones UI concepts.
I have started task-managing in RetroOS. You can now drag windows, close them, and open them (hopefully, currently that feature is bugged). This is a huge step towards creating a complete RetroOS product!
Currently working on fixing some bugs. Besides that, the formatting for the clock has changed, along with the styles of the exit button (though as you can see, it is very much a W.I.P).
Multiple windows! Not just that, but also some better GUI. More features are in the works. :)
Alright, so here it is. RetroOS, nearly finished with webOS 1. As you can see, I have added a system settings with a light/dark mode toggle. Admittedly, it was very rushed (maybe because I want that new sticker!), but it is something I am pretty proud of. This has been a great reintroduction to web dev for me!
Ships:
A retro-themed operating system designed from scratch (no libraries used). It features a welcome window, system settings with dark/light mode themes, and drag and exitable windows. Currently, runs on an outdated version. This is likely due to Github experiencing an outage of some sorts....
|
1793246185.4354818
|
1793332585.4354818
|
|
15481
|
Nonprofit Website by @jovinjijo | Stardance
|
jovinjijo
|
1
|
11.0
|
113
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T01:18:15Z", "hours": 11.0, "multiplier": 10.72, "payout": 113, "blessing": "neutral", "text": "Hearts for Elders Illinois is my very first officially published website, serving as the digital headquarters for a student-founded volunteer group dedicated to reducing social isolation among older adults in our communities by coordinating volunteer efforts, managing localized events like card-making, and sharing resources. Building my first official published project was honestly pretty tough, especially since I found myself completely unsatisfied with the UI at first and constantly revised it over and over again, which got pretty annoying but forced me to keep polishing. The hardest part by far was dealing with layout orientation and positioning, as getting elements to sit where I actually wanted them to on the screen took a ton of trial and error. I am currently using image placeholders for the event sections until our upcoming Father’s Day event, where I will grab real photos to swap in. The site is built using clean HTML, CSS, and JavaScript, hosted with a custom domain at https://hearts4eldersillinois.com/ , and the code is completely open-source at https://github.com/jovin-jijo/HeartsForElders where PRs are always appreciated if you want to help me improve the website further!", "repo": "https://github.com/jovin-jijo/HeartsForElders", "demo": "https://hearts4eldersillinois.com/"}]...
|
[{"post_id": 11678, "ts": "202 [{"post_id": 11678, "ts": "2026-06-19T01:10:19Z", "hours": 4.6703, "text": "I’m working on creating a admin user with access to add, and remove events. The admin can also change passwords as needed."}, {"post_id": 9032, "ts": "2026-06-15T02:15:49Z", "hours": 5.9106, "text": "I had to make webpage easily accesible to seniors and a lot of my time was spend on the layout and trying to make it responsive and aesthetic."}]...
|
Title: Nonprofit Website by @jovinjijo | Stardance Title: Nonprofit Website by @jovinjijo | Stardance
Devlogs:
I had to make webpage easily accesible to seniors and a lot of my time was spend on the layout and trying to make it responsive and aesthetic.
I’m working on creating a admin user with access to add, and remove events. The admin can also change passwords as needed.
Ships:
Hearts for Elders Illinois is my very first officially published website, serving as the digital headquarters for a student-founded volunteer group dedicated to reducing social isolation among older adults in our communities by coordinating volunteer efforts, managing localized events like card-making, and sharing resources. Building my first official published project was honestly pretty tough, especially since I found myself completely unsatisfied with the UI at first and constantly revised it over and over again, which got pretty annoying but forced me to keep polishing. The hardest part by far was dealing with layout orientation and positioning, as getting elements to sit where I actually wanted them to on the screen took a ton of trial and error. I am currently using image placeholders for the event sections until our upcoming Father’s Day event, where I will grab real photos to swap in. The site is built using clean HTML, CSS, and JavaScript, hosted with a custom domain at https://hearts4eldersillinois.com/ , and the code is completely open-source at https://github.com/jovin-jijo/HeartsForElders where PRs are always appreciated if you want to help me improve the website further!...
|
1793274562.732112
|
1793360962.732112
|
|
15486
|
Personal Website by @sapu | Stardance
|
sapu
|
1
|
28.0
|
412
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T08:13:40Z", "hours": 28.0, "multiplier": 15.56, "payout": 412, "blessing": "neutral", "text": "It’s a personal also a portfolio website that I’m really proud of that I’m trying to achieve a game-like feel with the design, and the challenging part was making everything responsive and getting the layouts to work on different screen sizes while learning React :p", "repo": "https://github.com/savwicak/savwicak.github.io", "demo": "https://savwicak.github.io"}]...
|
[{"post_id": 72572, "ts": "202 [{"post_id": 72572, "ts": "2026-09-23T08:09:20Z", "hours": 7.5636, "text": "Added more data and made the design responsive! I’m having trouble fixing some elements so they fit properly on mobile, so I also cross-checked it on different phones :p"}, {"post_id": 71739, "ts": "2026-09-21T13:01:19Z", "hours": 8.9267, "text": "FINAL UPDATE My personal web is doneee!!! YYAYAY but I need some changes to the data. I still use dummy data to test things out (so it’s not the real one ok)"}, {"post_id": 69020, "ts": "2026-09-16T07:10:38Z", "hours": 11.0742, "text": "Hello it’s kinda late, anyway i’m posting my progress for my personal website, so i can share my experience in blog and share my favorite project, and i can organize it better, before i use bento.me for all links but suddenly the website is down so i cant acsses no more ;( THATS why i want to make my own website :D It kinda motivated me to build the project lolol. I’m trying to make a game-like UI and layout, and hopefully it looks like one. I really love this kind of UI when there are a lot of borders and outlines, like cartoon u_U, because I love games! And I want to put a lot of animation here. SORRY FOR BAD POST STRUCTURE, REALLY, I don’t know how to post devlog cleanly hehe so there are 6 pages home will appear when you enter the website, like some short introduction, projects, blogs, PHOTOS! yes, I love photography, so I will put my photos here, but I need a website to store my photos so I can use a link in the image tag, but idk which one is better :l, and the last one is a profile for more about me, like certificates and experience, something like that and I’ve done 3 pages for now (I’m really bad at deciding which final design I should use ;) ) in project, blog, and home(I’m not sure abt this one, and I will change some layout later cuz I didn’t like it) my favorite is the navigation that I made, and you need to use the TAB button then it will appear. I think that’s interesting btw, for the blog, I use Markdown. I know it’s not the best practice, but I just want to share my stories, and I use react for this project, and I’m not used to code in react and am trying to learn more thank you really"}]...
|
Title: Personal Website by @sapu | Stardance
Devl Title: Personal Website by @sapu | Stardance
Devlogs:
Hello it’s kinda late, anyway i’m posting my progress for my personal website, so i can share my experience in blog and share my favorite project, and i can organize it better, before i use bento.me for all links but suddenly the website is down so i cant acsses no more ;( THATS why i want to make my own website :D It kinda motivated me to build the project lolol. I’m trying to make a game-like UI and layout, and hopefully it looks like one. I really love this kind of UI when there are a lot of borders and outlines, like cartoon u_U, because I love games! And I want to put a lot of animation here. SORRY FOR BAD POST STRUCTURE, REALLY, I don’t know how to post devlog cleanly hehe so there are 6 pages home will appear when you enter the website, like some short introduction, projects, blogs, PHOTOS! yes, I love photography, so I will put my photos here, but I need a website to store my photos so I can use a link in the image tag, but idk which one is better :l, and the last one is a profile for more about me, like certificates and experience, something like that and I’ve done 3 pages for now (I’m really bad at deciding which final design I should use ;) ) in project, blog, and home(I’m not sure abt this one, and I will change some layout later cuz I didn’t like it) my favorite is the navigation that I made, and you need to use the TAB button then it will appear. I think that’s interesting btw, for the blog, I use Markdown. I know it’s not the best practice, but I just want to share my stories, and I use react for this project, and I’m not used to code in react and am trying to learn more thank you really
FINAL UPDATE My personal web is doneee!!! YYAYAY but I need some changes to the data. I still use dummy data to test things out (so it’s not the real one ok)
Added more data and made the design responsive! I’m having trouble fixing some elements so they fit properly on mobile, so I also cross-checked it on different phones :p
Ships:
It’s a personal also a portfolio website that I’m really proud of that I’m trying to achieve a game-like feel with the design, and the challenging part was making everything responsive and getting the layouts to work on different screen sizes while learning React :p...
|
1793152343.9989796
|
1793238743.9989796
|
|
15525
|
Aetheris by @Zhanik | Stardance
|
Zhanik
|
1
|
4.27
|
15
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T20:10:21Z", "hours": 4.0, "multiplier": 4.1, "payout": 15, "blessing": "neutral", "text": "I built Aetheris, an environmental operating system for Kazakhstan that visualizes live data like AQI and PM2.5 on an interactive map and explains it using a custom AI analyst. The biggest challenge was rendering massive volumes of sensor data without UI lag and engineering the AI prompts to ground answers in local context, like Almaty’s winter temperature inversions, rather than outputting generic facts. I am most proud of this reasoning layer because it transforms raw, disconnected environmental readings into plain-language, actionable insights. To test the project, open the “Atlas” on the live site to explore the different environmental layers, then head to the AI Assistant and ask something specific like, “What is the risk outlook for Almaty?” to see how it interprets the live map data.", "repo": "https://github.com/izbanovj3-prog/aetheris", "demo": "https://aetherisearth.live/"}]...
|
[{"post_id": 11888, "ts": "202 [{"post_id": 11888, "ts": "2026-06-19T11:32:16Z", "hours": 0.2725, "text": "When I first registered for NASA Stardance, Aetheris was already well into development—about 60-70% complete. That’s why my very first official devlog kicked off at Day #6 instead of Day #1. At the time, I just wanted to focus on shipping, but looking back, I want to be transparent about the whole journey.**Even though this devlog covers the timeline from Day 1 to Day 6, the project itself has actually been in the works since March. The idea originally sparked back then under the name “ecomap.” Back then, it only covered air quality districts in Almaty rather than the entire country of Kazakhstan. **However, after that initial phase, it sat on the back burner for a bit. It wasn’t until June that I finally committed to it 100% and went all in.//////////////////////////////////////////////////// Day 1 — FoundationSet up the Next.js 16 project with the App Router and configured it for a fully static build (every route prerendered, no server runtime). Laid the geographic base: Natural Earth land polygons that drive the particle globe. Built the first shell of the landing page./////Day 2 — Map layer systemStarted the map’s layer system. Designed and built the layer legend, which locked in the five environmental layers the whole app is built around: air, industrial, water, biodiversity, and risk./////////Day 3 — Data engine & first surfacesThe biggest push. Built the deterministic simulation engine — a full environmental profile (AQI, PM2.5/PM10, NO₂, temperature, water quality, biodiversity, emissions, sustainability score, 90-day trends) for 28 cities, one per region of Kazakhstan. All values are seeded, so every screen reports the same numbers. On top of that, built the cinematic landing page with a Three.js particle globe and the analytics dashboard with custom SVG charts (temperature anomaly, AQI trends, city rankings). Also scaffolded the map and AI assistant routes and self-hosted the map label fonts so there’s no external CDN dependency — ready to be wired up next.///////////Day 4 — TestingReviewed and tested the build end to end, checked all routes render correctly in the static export, and validated the data across surfaces.////////////Day 5 — Polish & deployFinalized the navigation and the design system (color palette, typography, motion, glass/scanline textures). Centralized all site metadata, SEO, and PWA config into a single source. Fixed a URL-parsing edge case, ran the static production build, and deployed.///////It’s been a wild ride, and I am incredibly happy to say that I have finally finished it!"}, {"post_id": 9441, "ts": "2026-06-15T20:06:54Z", "hours": 3.5583, "text": "Day 6 Update: Live AQI Map & AI Analyst for Aetheris 🌍🇰🇿 Today I spent my session building out the core infrastructure for Aetheris. My main goal was to bring the Kazakhstan Atlas to life and connect it with our AI reasoning engine. What I built today: Set up live data fetching for AQI and PM2.5 across 28 cities in Kazakhstan. Implemented the logic for the Environmental AI layer. The assistant now processes real-time sensor data and explains the context (e.g., the heavy smog caused by winter temperature inversions in Almaty). Challenges faced: Processing such a massive volume of environmental data points caused severe UI lag during the initial map render. I resolved this by optimizing the data arrays and implementing server-side caching. Next steps: In the next session, I will focus on the Community system so citizen scientists can start logging local pollution events and earning contribution points."}]...
|
Title: Aetheris by @Zhanik | Stardance
Devlogs:
D Title: Aetheris by @Zhanik | Stardance
Devlogs:
Day 6 Update: Live AQI Map & AI Analyst for Aetheris 🌍🇰🇿 Today I spent my session building out the core infrastructure for Aetheris. My main goal was to bring the Kazakhstan Atlas to life and connect it with our AI reasoning engine. What I built today: Set up live data fetching for AQI and PM2.5 across 28 cities in Kazakhstan. Implemented the logic for the Environmental AI layer. The assistant now processes real-time sensor data and explains the context (e.g., the heavy smog caused by winter temperature inversions in Almaty). Challenges faced: Processing such a massive volume of environmental data points caused severe UI lag during the initial map render. I resolved this by optimizing the data arrays and implementing server-side caching. Next steps: In the next session, I will focus on the Community system so citizen scientists can start logging local pollution events and earning contribution points.
When I first registered for NASA Stardance, Aetheris was already well into development—about 60-70% complete. That’s why my very first official devlog kicked off at Day #6 instead of Day #1. At the time, I just wanted to focus on shipping, but looking back, I want to be transparent about the whole journey.**Even though this devlog covers the timeline from Day 1 to Day 6, the project itself has actually been in the works since March. The idea originally sparked back then under the name “ecomap.” Back then, it only covered air quality districts in Almaty rather than the entire country of Kazakhstan. **However, after that initial phase, it sat on the back burner for a bit. It wasn’t until June that I finally committed to it 100% and went all in.//////////////////////////////////////////////////// Day 1 — FoundationSet up the Next.js 16 project with the App Router and configured it for a fully static build (every route prerendered, no server runtime). Laid the geographic base: Natural Earth land polygons that drive the particle globe. Built the first shell of the landing page./////Day 2 — Map layer systemStarted the map’s layer system. Designed and built the layer legend, which locked in the five environmental layers the whole app is built around: air, industrial, water, biodiversity, and risk./////////Day 3 — Data engine & first surfacesThe biggest push. Built the deterministic simulation engine — a full environmental profile (AQI, PM2.5/PM10, NO₂, temperature, water quality, biodiversity, emissions, sustainability score, 90-day trends) for 28 cities, one per region of Kazakhstan. All values are seeded, so every screen reports the same numbers. On top of that, built the cinematic landing page with a Three.js particle globe and the analytics dashboard with custom SVG charts (temperature anomaly, AQI trends, city rankings). Also scaffolded the map and AI assistant routes and self-hosted the map label fonts so there’s no external CDN dependency — ready to be wired up next.///////////Day 4 — TestingReviewed and tested the build end to end, checked all routes render correctly in the static export, and validated the data across surfaces.////////////Day 5 — Polish & deployFinalized the navigation and the design system (color palette, typography, motion, glass/scanline textures). Centralized all site metadata, SEO, and PWA config into a single source. Fixed a URL-parsing edge case, ran the static production build, and deployed.///////It’s been a wild ride, and I am incredibly happy to say that I have finally finished it!
Ships:
I built Aetheris, an environmental operating system for Kazakhstan that visualizes live data like AQI and PM2.5 on an interactive map and explains it using a custom AI analyst. The biggest challenge was rendering massive volumes of sensor data without UI lag and engineering the AI prompts to ground answers in local context, like Almaty’s winter temperature inversions, rather than outputting generic facts. I am most proud of this reasoning layer because it transforms raw, disconnected environmental readings into plain-language, actionable insights. To test the project, open the “Atlas” on the live site to explore the different environmental layers, then head to the AI Assistant and ask something specific like, “What is the risk outlook for Almaty?” to see how it interprets the live map data....
|
1793267373.041852
|
1793353773.041852
|
|
15549
|
OmniSort: The ultimate download and e-mail sorting OmniSort: The ultimate download and e-mail sorting tool! by @oakwooda | Stardance...
|
oakwooda
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T18:21:08Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have always been annoyed by the clutter that fills my email inbox or my downloads folder and I have come up with an easy-to-use solution that is called the OmniSort. This is a macropad that allows easy sorting of files or emails by using a 3x3 switch matrix, 1 rotary encoder, and an oled screen and makes it easy by using macro commands to sort files into different locations (Eg. middle left key means move to “pictures” folder). What I found super challenging is the measurements, particularly the estimation of how high the USB-C port has to be in order to properly design the case. I found this project very fun to do and i’m looking forward to bringing it to a physical tangible piece!", "repo": "https://github.com/Srivats728/OmniSort", "demo": ""}]...
|
[{"post_id": 11426, "ts": "202 [{"post_id": 11426, "ts": "2026-06-18T18:10:34Z", "hours": 1.0431, "text": "The case is done! this took a while to measure all the dimensions and estimate the height of the usb c port for the PCB however it is done."}, {"post_id": 7901, "ts": "2026-06-13T05:48:08Z", "hours": 0.3489, "text": "Done with the PCB! That took a LOT of time and patience and I had to do it twice because i lost power the first time and it didn’t save. Learnt a lot though and I definitely will use this software again!"}, {"post_id": 6689, "ts": "2026-06-11T06:37:47Z", "hours": 0.2944, "text": "I can finally go to sleep! I have ported and arranged the schematic in the PCB editor and this is going to be the final layout. After this I’m going to start on the CAD model."}, {"post_id": 6670, "ts": "2026-06-11T05:38:31Z", "hours": 1.0239, "text": "Just finished the schematic for the PCB! About to import it into the PCB editor to start finalizing the electrical design. It’s a bit of a mess right now, but it gets the job done. If I have time I definitely will try to clean it up!"}]...
|
Title: OmniSort: The ultimate download and e-mail Title: OmniSort: The ultimate download and e-mail sorting tool! by @oakwooda | Stardance
Devlogs:
Just finished the schematic for the PCB! About to import it into the PCB editor to start finalizing the electrical design. It’s a bit of a mess right now, but it gets the job done. If I have time I definitely will try to clean it up!
I can finally go to sleep! I have ported and arranged the schematic in the PCB editor and this is going to be the final layout. After this I’m going to start on the CAD model.
Done with the PCB! That took a LOT of time and patience and I had to do it twice because i lost power the first time and it didn’t save. Learnt a lot though and I definitely will use this software again!
The case is done! this took a while to measure all the dimensions and estimate the height of the usb c port for the PCB however it is done.
Ships:
I have always been annoyed by the clutter that fills my email inbox or my downloads folder and I have come up with an easy-to-use solution that is called the OmniSort. This is a macropad that allows easy sorting of files or emails by using a 3x3 switch matrix, 1 rotary encoder, and an oled screen and makes it easy by using macro commands to sort files into different locations (Eg. middle left key means move to “pictures” folder). What I found super challenging is the measurements, particularly the estimation of how high the USB-C port has to be in order to properly design the case. I found this project very fun to do and i’m looking forward to bringing it to a physical tangible piece!...
|
1793249323.5935123
|
1793335723.5935123
|
|
15555
|
Rishaan's RGB LED Micropad by @rishaansd | Sta Rishaan's RGB LED Micropad by @rishaansd | Stardance...
|
rishaansd
|
1
|
8.0
|
41
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-29T22:38:51Z", "hours": 8.0, "multiplier": 5.0, "payout": 41, "blessing": "neutral", "text": "I created my first micropad. It is an RGB LED controller. You can use the joystick and buttons to change the color and brightness of the LED. For advanced users, they can even change the saturation of the color, which is used to make a variety of even more colors on the color wheel. Through this project, I was able to learn PCB Design and foster my engineering passion. A few of the greatest challenges I faced were creating a case that fits the exact dimensions and components of the PCB and creating a PCB for the first time in general. I strongly encourage creating your own micropad with your own modifications!", "repo": "https://github.com/Rishaan-Dukhande/Micropad_RGB", "demo": ""}]...
|
[{"post_id": 37272, "ts": "202 [{"post_id": 37272, "ts": "2026-07-29T21:05:47Z", "hours": 8.2131, "text": "Devlog 1 - Schematic Design Since this was my first time creating a PCB, I took a lot of time to learn. Then I placed the following components in the schematic and wired them together: XIAO SAMD21 3 RGB LEDs Joystick module OLED screen Two tactile buttons I decided to use connectors for the OLED screen and the joystick module for the wiring in the schematic. Each RGB LED requires 3 resistors, so I added them to each column of pins (Red, Green, and Blue) and connected them to analog pins 2, 3, and 6. Note: At this stage in time, I had no clue that I needed to use timelapse. #Devlog 2 - First PCB Layout Note from doing: This takes 2hrs for beginners, but watching the KiCad tutorial really helps! 3D visualization of PCB layout In this session, I laid out all of the components from the schematic and imported them into the PCB editor. First, I laid out all components onto the PCB in the design I wanted (shown in the picture above) Next, I added a GND copper pour so I don’t have to route GND pins of every component. Furthermore, I routed the PCB connections between the XIAO board and each component on the PCB. Key Learnings Vias I learned that “vias” can be used to change the copper paths cut into the PCB from the front of the board to back of the board (2-layer PCBs). Copper pours Additionally, I learned that you can add copper pours (GND or 3V3) so that you don’t have to route some pins. In this case, it was helpful because I did not have to wire the GND pin of every component, which would have added up to at least 7 extra wires. Devlog #6 - Add OLED screen and joystick CAD models to fullCase design (Fusion360) In this session, I added the CAD models of the OLED screen and joystick to create a file with the full CAD! Tasks Edited the PCB I had to add the CAD of the OLED and joystick as footprints for the connectors in the PCB. The purpose of this is for the CAD import to fusion for the full CAD with the PCB and case. (This is not needed for the PCB manufacturing as only the connector holes are necessary on the PCB. Import the PCB into CAD I added the PCB into the CAD folder by importing it as a new file and inserting a derive. This is where most of the issues arose Download and push to Git I downloaded the full cad as a step file and pushed it to git for reviewers to see. I also took images which will be added to the Git Repo README in the next journal. Issues Height of case Originally, the case was to tall and the LED, OLED screen, and buttons were not easy to use. These were the following solutions: -1) Reduce the height of the -2) Now the joystick didn’t git, so I made the hole bigger and added the wall (seen in @Joystick issue) Joystick -1) There was not a big enough hole for the joystick, so I had to pull out a joystick module and measure it with a caliper. I readjusted the opening on the top of the case to fit this. -2) I added walls to the side of the joystick opening so the inner module could not be seen - for cleaner appearnce. Key Learnings CAD takes time, but it is easier if everything is measured before actually starting. This will reduce the time it takes and prevent errors - but never feel afraid of CAD!"}]...
|
Title: Rishaan's RGB LED Micropad by @rishaans Title: Rishaan's RGB LED Micropad by @rishaansd | Stardance
Devlogs:
Devlog 1 - Schematic Design Since this was my first time creating a PCB, I took a lot of time to learn. Then I placed the following components in the schematic and wired them together: XIAO SAMD21 3 RGB LEDs Joystick module OLED screen Two tactile buttons I decided to use connectors for the OLED screen and the joystick module for the wiring in the schematic. Each RGB LED requires 3 resistors, so I added them to each column of pins (Red, Green, and Blue) and connected them to analog pins 2, 3, and 6. Note: At this stage in time, I had no clue that I needed to use timelapse. #Devlog 2 - First PCB Layout Note from doing: This takes 2hrs for beginners, but watching the KiCad tutorial really helps! 3D visualization of PCB layout In this session, I laid out all of the components from the schematic and imported them into the PCB editor. First, I laid out all components onto the PCB in the design I wanted (shown in the picture above) Next, I added a GND copper pour so I don’t have to route GND pins of every component. Furthermore, I routed the PCB connections between the XIAO board and each component on the PCB. Key Learnings Vias I learned that “vias” can be used to change the copper paths cut into the PCB from the front of the board to back of the board (2-layer PCBs). Copper pours Additionally, I learned that you can add copper pours (GND or 3V3) so that you don’t have to route some pins. In this case, it was helpful because I did not have to wire the GND pin of every component, which would have added up to at least 7 extra wires. Devlog #6 - Add OLED screen and joystick CAD models to fullCase design (Fusion360) In this session, I added the CAD models of the OLED screen and joystick to create a file with the full CAD! Tasks Edited the PCB I had to add the CAD of the OLED and joystick as footprints for the connectors in the PCB. The purpose of this is for the CAD import to fusion for the full CAD with the PCB and case. (This is not needed for the PCB manufacturing as only the connector holes are necessary on the PCB. Import the PCB into CAD I added the PCB into the CAD folder by importing it as a new file and inserting a derive. This is where most of the issues arose Download and push to Git I downloaded the full cad as a step file and pushed it to git for reviewers to see. I also took images which will be added to the Git Repo README in the next journal. Issues Height of case Originally, the case was to tall and the LED, OLED screen, and buttons were not easy to use. These were the following solutions: -1) Reduce the height of the -2) Now the joystick didn’t git, so I made the hole bigger and added the wall (seen in @Joystick issue) Joystick -1) There was not a big enough hole for the joystick, so I had to pull out a joystick module and measure it with a caliper. I readjusted the opening on the top of the case to fit this. -2) I added walls to the side of the joystick opening so the inner module could not be seen - for cleaner appearnce. Key Learnings CAD takes time, but it is easier if everything is measured before actually starting. This will reduce the time it takes and prevent errors - but never feel afraid of CAD!
Ships:
I created my first micropad. It is an RGB LED controller. You can use the joystick and buttons to change the color and brightness of the LED. For advanced users, they can even change the saturation of the color, which is used to make a variety of even more colors on the color wheel. Through this project, I was able to learn PCB Design and foster my engineering passion. A few of the greatest challenges I faced were creating a case that fits the exact dimensions and components of the PCB and creating a PCB for the first time in general. I strongly encourage creating your own micropad with your own modifications!...
|
1793134210.5760875
|
1793220610.5760875
|
|
15569
|
Salon Management System by @wingnovel | Stardance
|
wingnovel
|
1
|
33.46
|
36
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T15:47:47Z", "hours": 18.0, "multiplier": 2.0, "payout": 36, "blessing": "neutral", "text": "This project is made to manage a hair salon. It has a variety of pages and features to help a hair salon manager to produce reports and to manage their finances and appointments at the salon", "repo": "https://github.com/raghav03102008/Computer-science-IA", "demo": "https://github.com/raghav03102008/Computer-science-IA/releases/latest"}]...
|
[{"post_id": 34499, "ts": "202 [{"post_id": 34499, "ts": "2026-07-25T08:25:22Z", "hours": 1.0408, "text": "Bug fixes. Making the order page functional."}, {"post_id": 25316, "ts": "2026-07-09T15:10:01Z", "hours": 13.9042, "text": "in this session i have worked on mainly testing. I altered the code slightly again and again to see if everything is functional. According to my test plan everything is functional bug free"}, {"post_id": 21316, "ts": "2026-07-03T05:35:13Z", "hours": 0.5117, "text": "I have tried to remove the dependancy of having ms access installed on your computer. So far i have been able to make it work. for some pages later I will fix the bugs for some of the pages to improve the SQL database reliant version to run smoothly as well"}, {"post_id": 14432, "ts": "2026-06-23T15:45:30Z", "hours": 9.1744, "text": "Bug fixing and making an exe file to run"}, {"post_id": 6348, "ts": "2026-06-10T18:04:53Z", "hours": 8.6256, "text": "Making the project deployable with an exe file along with the addtion of report generation and exporting files for spreadsheet analysis of the business data"}]...
|
Title: Salon Management System by @wingnovel | Sta Title: Salon Management System by @wingnovel | Stardance
Devlogs:
Making the project deployable with an exe file along with the addtion of report generation and exporting files for spreadsheet analysis of the business data
Bug fixing and making an exe file to run
I have tried to remove the dependancy of having ms access installed on your computer. So far i have been able to make it work. for some pages later I will fix the bugs for some of the pages to improve the SQL database reliant version to run smoothly as well
in this session i have worked on mainly testing. I altered the code slightly again and again to see if everything is functional. According to my test plan everything is functional bug free
Bug fixes. Making the order page functional.
Ships:
This project is made to manage a hair salon. It has a variety of pages and features to help a hair salon manager to produce reports and to manage their finances and appointments at the salon...
|
1793116396.3206718
|
1793202796.3206718
|
|
15595
|
lilshark !!! by @kingkev | Stardance
|
kingkev
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T23:32:01Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "oh so I made a bot that gives some random marine-related facts. it was both my first hackclub project and my first interaction with github. i tried my best, it was fun especially the idea of connecting it to ocean life. the facts are handwritten so they are not too many, but still :D", "repo": "https://github.com/Lunaa133/stardance_hackclub_slackbot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BTZBJ31CM"}]...
|
[{"post_id": 9198, "ts": "2026 [{"post_id": 9198, "ts": "2026-06-15T13:16:32Z", "hours": 0.4114, "text": "my first stardance projectt / slackbot"}]...
|
Title: lilshark !!! by @kingkev | Stardance
Devlo Title: lilshark !!! by @kingkev | Stardance
Devlogs:
my first stardance projectt / slackbot
Ships:
oh so I made a bot that gives some random marine-related facts. it was both my first hackclub project and my first interaction with github. i tried my best, it was fun especially the idea of connecting it to ocean life. the facts are handwritten so they are not too many, but still :D...
|
1793141311.0895548
|
1793227711.0895548
|
|
15613
|
AstroPage by @kristiansiska | Stardance
|
kristiansiska
|
1
|
22.19
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T17:29:44Z", "hours": 21.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made AstroPage - student platform based on edupage. Milions of students are using edupage for their education but some things are a real pain, like calculating your grades if you have many, or forgeting to sign up for lunch and beeing hungry, or making some reaaaaally boring homework. AstraPage doesn’t want to replace Edupage, it only gives you features that are missing in classical Edupage. You can sign in with your edupage credentials and your school’s custom subdomain (the string before .edupage.org.). AstroPage is never storing your password - it sends login to edupage login endpoint and receives JWT session cookie that it uses to further communicate with edupage api. The biggest cheallanges were actually using the api and trying to get stuff from it that is not in their documentation. This took long hours in jupiter notebook of trial and error. I am proud of this whole project, mostly of the good industry standard dev practices like CICD, encriptions, pre-loading etc… For now, I disabled the let AI make my homework because I am too scared of having a security flaw and getting 20k ai bill when I wake up. For the quality of life improvement I present this: You can calculate your grades inside of this app - sandbox - remove/add grades - full controll. You can sign up for lunch prior a few weeks so you will no longer be forgeting to sign up. Let AI make my homework button for all homework because some if it is really boring. Could you live without it? Yes. Is it a QoL? Also yes.", "repo": "https://github.com/kristiansiska311-ship-it/AstroPage", "demo": "https://astropage.onboard.academy"}]...
|
[{"post_id": 16922, "ts": "202 [{"post_id": 16922, "ts": "2026-06-27T14:14:22Z", "hours": 1.1903, "text": "I had to do a qucik css rework. It got and upgrade. The design now is way more interesting."}, {"post_id": 12634, "ts": "2026-06-20T17:09:08Z", "hours": 1.4478, "text": "I added a phone responsive design, configured and deployed the app on my home RaspberryPi server with CICD working pipeline and all encryption. It was my first time configuring CICD. Wakatime didn’t track my time spent on github and ssh connection on my server ;(. I believe, this is a final step to this project. I learned many things. CI/DC, caching, improved at system design, docker, react, python, learned how useful Jupiter Notebook can be, using cloudflare on higher level. Projects like this are actually helping me become better software engenier."}, {"post_id": 12531, "ts": "2026-06-20T13:48:51Z", "hours": 7.9678, "text": "HELLO. Today I woke up half sick so my parents did not force me to help around the household. Soo I decided that it is time to bring this project one step closer to the end. What changed? Many things changed. There were many thing added in the latest update but 50% of them were not working. AI is good coding assistant but it can’t do magic and you need to write the important stuff yourself or it won’t work. I will start with the homework: When opening homework, you could see only like last 12-16 homework due to the method how it was requested. That changed and now you can see all of the homework since the start of the school year. Added actual “let ai make my homework” functionality. Now, it sends the whole homework with its attachments to gemini with your user specific prompt and shows what gemini returns. It needs some work on it to work 100% but the functionality is there. Next tab: Timetable. Claude gave a pretty good draft for the timetable but 50% of it was missing so I had to manually test the edupage api in my PoC scripts to see the exact output. It took pretty long to get familiar with the api but I managed to make it work. Then I implemented that solution to my app backend. I found a featrue that returns all the missing teachers and substitution for the whole school so I combined this with the schedule - it shows you canceled classes etc… The grades tab hasn’t changed that much beacause it was already working pretty good. Canteen tab: Canteen tab received a big upgrade. I have not talked about it in my devlogs that much but it has really improved. You can see all lunches and menus that that are available in your school canteen. - This was an issue since it worked only half of the time. The debugging process was the same - PoC scripts to test the edupage api and then implementing the solution to the actual app. You can sign in and sign out of lunches and I added auto order feature because sometimes I was forgetting to sign up for lunch. The signing up prior had also not been working for a while and I managed to fix it with the same looong steps of making a poc, talking to api and implementing working solution. Big feature was english/slovak page translation, since I am from Slovakia I made Slovak translation my priority. I learned how to make multilingual pages thanks to this project. But the main features are the ones that people don’t see. I added a caching system, TTL system for data and pre-loading system - When user logs in, app sends all the reqests - grades, canteen, timetable, homework - so when user goes to some tab, the data is already half there and when he switches tabs again, the data doesn’t dissapear. This is a huge UX improvement. It was implemented before but only to grades page and there was no TTL for it so it could get old and misleading. For the sake of UX reload buttons were added so user can manually reload data. Next steps: Hardening, Polishing, Adding better AI support and finally publishing and shipping my project. I feel like I am close to making this really work. Thank you for reading."}, {"post_id": 11237, "ts": "2026-06-18T11:54:24Z", "hours": 5.6511, "text": "Today I was presenting this project at school so I make a presentation branch where I removed all 50% working pages - I was left with the grade calculator. I think it is a great tool because trying to calculate your grades on some more complicated subject can be pain. This grade calculator changes the expirience. Also The whole project had a redesign into this darker more cool theme than the AI slop one. I really like how the page is looking right now. Added: Grade calculator tab Timetable tab - still working on, my api has some request issues for some days. It is weird and I am trying to fix it. Canteen - the school canteen menu and function to sign up week prior - still working on. And dashboard is getting a full redesign."}, {"post_id": 8719, "ts": "2026-06-14T14:16:02Z", "hours": 2.9397, "text": "Soooo. Just finished the tabs. 1. Home - where some basic overview will be. Now, it is only filled with mock data but I am connecting it with backend in the next step. 2. Homework - tab, where students can track their homework - possible, make AI do it for them. The data is connected to backend and is currently working. I am going to implement some best practices such as pre-loading the data once the student logs in so the transition is seamless. 3. page - Canteen - page where students will have better information about their food, food pricing, how does the food look like and such. Edupage has no feature to sign automaticly like 4 weeks prior and sometimes I forgot to sign up for lunch and I am hungry so it is a nice feature to have. ;)"}, {"post_id": 7361, "ts": "2026-06-12T08:28:32Z", "hours": 2.7922, "text": "AstroPage - portal for students using EduPage that will make their student lives easier. This is just vibecoded ui in react. More complex design will be done when the whole project will be working as expected. Now, I am focusing on the backend, security, user privacy and overall system design. I have come to a milestone where the login page works as expected, students can login via their edupage credentials - the passwords are not stored anywhere, the server calls edupage api and tries to log in with it, when sucesfull, only the session is handed to the app so users have maximum privacy. I built the project on my foundations: Fast API skeleton repo, where I have all the setup for my fast api aplications so I am not always building from zero. I am really exited about this project. It will be a life changer for people using edupage. If you have any feature ideas, you can share them with me."}]...
|
Title: AstroPage by @kristiansiska | Stardance
De Title: AstroPage by @kristiansiska | Stardance
Devlogs:
AstroPage - portal for students using EduPage that will make their student lives easier. This is just vibecoded ui in react. More complex design will be done when the whole project will be working as expected. Now, I am focusing on the backend, security, user privacy and overall system design. I have come to a milestone where the login page works as expected, students can login via their edupage credentials - the passwords are not stored anywhere, the server calls edupage api and tries to log in with it, when sucesfull, only the session is handed to the app so users have maximum privacy. I built the project on my foundations: Fast API skeleton repo, where I have all the setup for my fast api aplications so I am not always building from zero. I am really exited about this project. It will be a life changer for people using edupage. If you have any feature ideas, you can share them with me.
Soooo. Just finished the tabs. 1. Home - where some basic overview will be. Now, it is only filled with mock data but I am connecting it with backend in the next step. 2. Homework - tab, where students can track their homework - possible, make AI do it for them. The data is connected to backend and is currently working. I am going to implement some best practices such as pre-loading the data once the student logs in so the transition is seamless. 3. page - Canteen - page where students will have better information about their food, food pricing, how does the food look like and such. Edupage has no feature to sign automaticly like 4 weeks prior and sometimes I forgot to sign up for lunch and I am hungry so it is a nice feature to have. ;)
Today I was presenting this project at school so I make a presentation branch where I removed all 50% working pages - I was left with the grade calculator. I think it is a great tool because trying to calculate your grades on some more complicated subject can be pain. This grade calculator changes the expirience. Also The whole project had a redesign into this darker more cool theme than the AI slop one. I really like how the page is looking right now. Added: Grade calculator tab Timetable tab - still working on, my api has some request issues for some days. It is weird and I am trying to fix it. Canteen - the school canteen menu and function to sign up week prior - still working on. And dashboard is getting a full redesign.
HELLO. Today I woke up half sick so my parents did not force me to help around the household. Soo I decided that it is time to bring this project one step closer to the end. What changed? Many things changed. There were many thing added in the latest update but 50% of them were not working. AI is good coding assistant but it can’t do magic and you need to write the important stuff yourself or it won’t work. I will start with the homework: When opening homework, you could see only like last 12-16 homework due to the method how it was requested. That changed and now you can see all of the homework since the start of the school year. Added actual “let ai make my homework” functionality. Now, it sends the whole homework with its attachments to gemini with your user specific prompt and shows what gemini returns. It needs some work on it to work 100% but the functionality is there. Next tab: Timetable. Claude gave a pretty good draft for the timetable but 50% of it was missing so I had to manually test the edupage api in my PoC scripts to see the exact output. It took pretty long to get familiar with the api but I managed to make it work. Then I implemented that solution to my app backend. I found a featrue that returns all the missing teachers and substitution for the whole school so I combined this with the schedule - it shows you canceled classes etc… The grades tab hasn’t changed that much beacause it was already working pretty good. Canteen tab: Canteen tab received a big upgrade. I have not talked about it in my devlogs that much but it has really improved. You can see all lunches and menus that that are available in your school canteen. - This was an issue since it worked only half of the time. The debugging process was the same - PoC scripts to test the edupage api and then implementing the solution to the actual app. You can sign in and sign out of lunches and I added auto order feature because sometimes I was forgetting to sign up for lunch. The signing up prior had also not been working for a while and I managed to fix it with the same looong steps of making a poc, talking to api and implementing working solution. Big feature was english/slovak page translation, since I am from Slovakia I made Slovak translation my priority. I learned how to make multilingual pages thanks to this project. But the main features are the ones that people don’t see. I added a caching system, TTL system for data and pre-loading system - When user logs in, app sends all the reqests - grades, canteen, timetable, homework - so when user goes to some tab, the data is already half there and when he switches tabs again, the data doesn’t dissapear. This is a huge UX improvement. It was implemented before but only to grades page and there was no TTL for it so it could get old and misleading. For the sake of UX reload buttons were added so user can manually reload data. Next steps: Hardening, Polishing, Adding better AI support and finally publishing and shipping my project. I feel like I am close to making this really work. Thank you for reading.
I added a phone responsive design, configured and deployed the app on my home RaspberryPi server with CICD working pipeline and all encryption. It was my first time configuring CICD. Wakatime didn’t track my time spent on github and ssh connection on my server ;(. I believe, this is a final step to this project. I learned many things. CI/DC, caching, improved at system design, docker, react, python, learned how useful Jupiter Notebook can be, using cloudflare on higher level. Projects like this are actually helping me become better software engenier.
I had to do a qucik css rework. It got and upgrade. The design now is way more interesting.
Ships:
I made AstroPage - student platform based on edupage. Milions of students are using edupage for their education but some things are a real pain, like calculating your grades if you have many, or forgeting to sign up for lunch and beeing hungry, or making some reaaaaally boring homework. AstraPage doesn’t want to replace Edupage, it only gives you features that are missing in classical Edupage. You can sign in with your edupage credentials and your school’s custom subdomain (the string before .edupage.org.). AstroPage is never storing your password - it sends login to edupage login endpoint and receives JWT session cookie that it uses to further communicate with edupage api. The biggest cheallanges were actually using the api and trying to get stuff from it that is not in their documentation. This took long hours in jupiter notebook of trial and error. I am proud of this whole project, mostly of the good industry standard dev practices like CICD, encriptions, pre-loading etc… For now, I disabled the let AI make my homework because I am too scared of having a security flaw and getting 20k ai bill when I wake up. For the quality of life improvement I present this: You can calculate your grades inside of this app - sandbox - remove/add grades - full controll. You can sign up for lunch prior a few weeks so you will no longer be forgeting to sign up. Let AI make my homework button for all homework because some if it is really boring. Could you live without it? Yes. Is it a QoL? Also yes....
|
1793137947.8847196
|
1793224347.8847196
|
|
15624
|
My awesome macropad! by @Rudraa | Stardance
|
Rudraa
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T03:40:59Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a 12 key macro pad with an 0.91 OLED display . the challenges i mostly faces was in the CAD softwere i have to made this model 4 times after i get corection and same goes for the PCB design IG I have changed my PCB design for 3-4 times also but this weas really funn i learned a lot !! now i have skills in CAD and PCB designes Now what this macro pad actually does? the first is its really looking cool with 12 keys and a small OLED display the top 9 keyes and bottom 2 left keyes are for layer 0 and when we press th bottom right key th macro pad shifted to the Layer 1 so i have 22 Keys indirectly and 1 Model key . This is main features of his and its minimilistic and when the shipment arrives i am going to hand pain the cherry blossomo tree on the Key board front penal that makes it way coool And i have used th AI for undertsnding and solving erroress in PCB and CAD models (In those mostly used You tube but still used the AI also as a tutor to guild me)and in the code i have also used AI . Thats itt its really cool , minimilistic , highly featured CherryPad. Looking fowerd to see that shipp Lets Goooo …", "repo": "https://github.com/Rudraa-25/cherryblossom-pad", "demo": ""}]...
|
[{"post_id": 9759, "ts": "2026 [{"post_id": 9759, "ts": "2026-06-16T06:02:04Z", "hours": 5.2725, "text": "Just complete my Macropad CAD designn Looking forward to write its Firmwere ASAP ,……. Letss Goo also if you found any mistackes or problrms in this Pls. LMK 😄😅"}, {"post_id": 7497, "ts": "2026-06-12T14:37:47Z", "hours": 2.0078, "text": "Routingss are completedd Letss Goo!!"}, {"post_id": 7290, "ts": "2026-06-12T04:47:23Z", "hours": 1.7939, "text": "Doing PCB Routing for my Macropad"}]...
|
Title: My awesome macropad! by @Rudraa | Stardance Title: My awesome macropad! by @Rudraa | Stardance
Devlogs:
Doing PCB Routing for my Macropad
Routingss are completedd Letss Goo!!
Just complete my Macropad CAD designn Looking forward to write its Firmwere ASAP ,……. Letss Goo also if you found any mistackes or problrms in this Pls. LMK 😄😅
Ships:
I made a 12 key macro pad with an 0.91 OLED display . the challenges i mostly faces was in the CAD softwere i have to made this model 4 times after i get corection and same goes for the PCB design IG I have changed my PCB design for 3-4 times also but this weas really funn i learned a lot !! now i have skills in CAD and PCB designes Now what this macro pad actually does? the first is its really looking cool with 12 keys and a small OLED display the top 9 keyes and bottom 2 left keyes are for layer 0 and when we press th bottom right key th macro pad shifted to the Layer 1 so i have 22 Keys indirectly and 1 Model key . This is main features of his and its minimilistic and when the shipment arrives i am going to hand pain the cherry blossomo tree on the Key board front penal that makes it way coool And i have used th AI for undertsnding and solving erroress in PCB and CAD models (In those mostly used You tube but still used the AI also as a tutor to guild me)and in the code i have also used AI . Thats itt its really cool , minimilistic , highly featured CherryPad. Looking fowerd to see that shipp Lets Goooo …...
|
1793238648.8559217
|
1793325048.8559217
|
|
15627
|
GEMU by @maxogravo | Stardance
|
maxogravo
|
1
|
10.54
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T20:01:11Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an emulator designed around a 16bit CPU I designed called the GRAVY 16. I coded this predominantly in c++ with some minor areas in python. The CPU has an address and data width of 16bits and a RAM and ROM size of 64kb. It has a custom designed instruction set which is based off Harvard architecture and even a mini programming language to make programs in. Graphics were also added using Raylib to simulate a 64x64 screen that relies on a video buffer in memory to draw to. When making this project I faced several problems. First of all I had to learn how CPUs work on an extremely low level and how to design one. This was not easy and it took me a long time to grasp various concepts. Then I had to learn how to design an ISA for it. This was also difficult as I had to think about what core instructions the CPU needed and how I could allocate bits of data to that. I found myself updating and refining it as I went along and discovered new inconveniences. On top of all of this I had to learn the c++ language to program it in as it is significantly faster than one like python and a popular choice in the industry I want to work in. I learnt so much when making this project. I now know a wide range of computing and programming concepts I can use in my career and day to day life. You can check this out on my GitHub (github.com/Maxogravo). You will have to compile it yourself if you want to run it which may not be so accessible for many people but I have included loads of documents explaining how it works and showing examples of programs I’ve made for those who can’t. I hope you like my project (it took me way longer than 10hrs but I only joined Stardance like a week ago)!!! Attached below is a program that draws a cube and prints an output of the current instruction.", "repo": "https://github.com/Maxogravo/GEMU", "demo": "https://github.com/Maxogravo/GEMU/releases"}]...
|
[{"post_id": 24865, "ts": "202 [{"post_id": 24865, "ts": "2026-07-08T18:31:56Z", "hours": 0.54, "text": "Just cleaned up the project a bit. Also published my first release. Only for macOS so far."}, {"post_id": 13900, "ts": "2026-06-22T19:47:10Z", "hours": 1.035, "text": "I created a new refined document on how the emulator works. I also programmed a 3d cube graphics demote show off the latest features."}, {"post_id": 12203, "ts": "2026-06-19T22:23:39Z", "hours": 0.5772, "text": "I spent my time formatting some code and also making it so that, when plotting pixels, you can specify coordinates to plot using registers."}, {"post_id": 11584, "ts": "2026-06-18T21:24:55Z", "hours": 0.7817, "text": "I expanded the amount of registers to 15. Registers like pc, acc, ir etc are all standalone variables. Also you can now specify FPS. I also made this mini cube spinner with help from chatgpt. It doesn’t use any math just plots pixels so that why I just got Ai to do it. Cool demo tho. The gif doesn’t really do it justice as the gif appears much slower than the program really is."}, {"post_id": 10898, "ts": "2026-06-17T21:13:20Z", "hours": 2.1639, "text": "I added a lot of new features today. Just features that make it nicer to use. You can now do arithmetic with immediates, calculations are saved in the first register, you can store and load using reigister values to determine the address, a clear screen feature has been added and a pixel plotter which makes drawing pixels a lot more intuitive than storing values manually in different locations of memory."}, {"post_id": 10243, "ts": "2026-06-16T21:33:07Z", "hours": 0.4903, "text": "I just polished the documents associated with the emulator such as the README and other documents."}, {"post_id": 10139, "ts": "2026-06-16T18:59:49Z", "hours": 0.8772, "text": "I added a store immediate instruction to make writing pixels to memory more optimised. I had to update the Isa document and also the compiler to accommodate this."}, {"post_id": 9432, "ts": "2026-06-15T19:51:42Z", "hours": 3.6169, "text": "I have finished implementing graphics to my emulator. It works by using a frame buffer and assigning a set amount of ram to video. It then uses ray lib to render it (I suck at c++ and graphics programming so it’s not sdl or anything). The demo shows a red pixel and a blue pixel at the first and last location in video memory its small but if you suint you can probably see it."}, {"post_id": 7032, "ts": "2026-06-11T19:51:16Z", "hours": 0.7336, "text": "I finished writing my emulator for my own 16bit cpu. It is written in c++ and comes with a mini language as well, the compiler was written in python. I am new to c++ and used this as a learning project."}]...
|
Title: GEMU by @maxogravo | Stardance
Devlogs:
I Title: GEMU by @maxogravo | Stardance
Devlogs:
I finished writing my emulator for my own 16bit cpu. It is written in c++ and comes with a mini language as well, the compiler was written in python. I am new to c++ and used this as a learning project.
I have finished implementing graphics to my emulator. It works by using a frame buffer and assigning a set amount of ram to video. It then uses ray lib to render it (I suck at c++ and graphics programming so it’s not sdl or anything). The demo shows a red pixel and a blue pixel at the first and last location in video memory its small but if you suint you can probably see it.
I added a store immediate instruction to make writing pixels to memory more optimised. I had to update the Isa document and also the compiler to accommodate this.
I just polished the documents associated with the emulator such as the README and other documents.
I added a lot of new features today. Just features that make it nicer to use. You can now do arithmetic with immediates, calculations are saved in the first register, you can store and load using reigister values to determine the address, a clear screen feature has been added and a pixel plotter which makes drawing pixels a lot more intuitive than storing values manually in different locations of memory.
I expanded the amount of registers to 15. Registers like pc, acc, ir etc are all standalone variables. Also you can now specify FPS. I also made this mini cube spinner with help from chatgpt. It doesn’t use any math just plots pixels so that why I just got Ai to do it. Cool demo tho. The gif doesn’t really do it justice as the gif appears much slower than the program really is.
I spent my time formatting some code and also making it so that, when plotting pixels, you can specify coordinates to plot using registers.
I created a new refined document on how the emulator works. I also programmed a 3d cube graphics demote show off the latest features.
Just cleaned up the project a bit. Also published my first release. Only for macOS so far.
Ships:
I made an emulator designed around a 16bit CPU I designed called the GRAVY 16. I coded this predominantly in c++ with some minor areas in python. The CPU has an address and data width of 16bits and a RAM and ROM size of 64kb. It has a custom designed instruction set which is based off Harvard architecture and even a mini programming language to make programs in. Graphics were also added using Raylib to simulate a 64x64 screen that relies on a video buffer in memory to draw to. When making this project I faced several problems. First of all I had to learn how CPUs work on an extremely low level and how to design one. This was not easy and it took me a long time to grasp various concepts. Then I had to learn how to design an ISA for it. This was also difficult as I had to think about what core instructions the CPU needed and how I could allocate bits of data to that. I found myself updating and refining it as I went along and discovered new inconveniences. On top of all of this I had to learn the c++ language to program it in as it is significantly faster than one like python and a popular choice in the industry I want to work in. I learnt so much when making this project. I now know a wide range of computing and programming concepts I can use in my career and day to day life. You can check this out on my GitHub (github.com/Maxogravo). You will have to compile it yourself if you want to run it which may not be so accessible for many people but I have included loads of documents explaining how it works and showing examples of programs I’ve made for those who can’t. I hope you like my project (it took me way longer than 10hrs but I only joined Stardance like a week ago)!!! Attached below is a program that draws a cube and prints an output of the current instruction....
|
1793134253.3852541
|
1793220653.3852541
|
|
15657
|
Telemetry LMU by @Karlito | Stardance
|
Karlito
|
1
|
178.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T18:45:37Z", "hours": 178.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Telemetry LMU An application for both Windows and Linux to visualize the telemetry data from Le Mans Ultimate What it does: This application collects, stores, and visualizes data from a racing simulator called Le Mans Ultimate. The main goal: Allow users to analyze their driving and learn from their data through an easy-to-use interface. The requirements: Performance, nice and simple UI, expandability, minimal setup. Results: Main goal: Achieved. (I wouldn’t be shipping this app otherwise) Performance: On average the app uses 4% of CPU and 250Mb of RAM under full load. That is less RAM usage than running Spotify in the background. Nice and simple UI: This is personal preference, however in my opinion I think i succeeded. Expandability: The architecture of the app is very modular so this also isn’t a problem. Setup: On windows there is none (except installing the app), on linux there is one dependency (this is sadly unavoidable.) Some stats: 200+ hours of development time (including the time before Stardance) 250+ commits 6 000+ lines of Rust", "repo": "https://github.com/Karlito05/TelemetryLMU", "demo": "https://github.com/Karlito05/TelemetryLMU/releases/tag/v1.0.1"}]...
|
[{"post_id": 71364, "ts": "202 [{"post_id": 71364, "ts": "2026-09-20T18:08:56Z", "hours": 1.2894, "text": "Devlog 29 - The end So this is the last one, huh. Here is the full write up on this project as I promised. Chapter 1 - The beginnings This project started about 3 months ago. I started experimenting with just getting the data and plotting it. Just for fun as an exercise to learn rust. Then I realized that there actually isn’t a proper working telemetry tool that works on linux. So I did some research… and I decided that I am going to make the app in Dioxus. Chapter 2 - The Dioxus era This leads us to the shortest of eras. The Dioxus era. Nothing really happened here and quite frankly I don’t even remember it that much. There aren’t really any git commits because I didn’t have that setup yet. One thing i remember tho is that I couldn’t figure out how to draw the garphs, because Dioxus is based on web technologies but weirdly becuase you are writing HTLM like syntax but in rust. And that was the main reason I decided to switch to Tauri. Chapter 3 - The Tauri era At first Tauri was the best framework ever made for me. That is because I already kinda knew react, it was simple to understand and I could really lean into the split frontend and backend architecture. This sadly proved very inefficient for the graph view which needs to render thousands of points each frame. Since it was too much for the basic HTML canvas I have switched to using WebGL with numerous downsampling techniques. This was just a bandaid fix though. I have also ran into bunch of architectural issues with the whole split frontend and backend thing. Accessing the telemetry data proved to be very difficult and inefficient. I remember that I ran each of the graphs on a separate thread. This was so stupid. I don’t even remember how I could’ve come up with such a stupid idea :D. It just led to memory leaks and threads uncontrollably spinning up and not stopping. I am sure that all of that could’ve been easily avoided with simpler architecture but at that point I was at my lowest point of this project, so I didn’t even have the energy to do it. I also had the state of the frontend so fragmented which didn’t help. And the whole retained mode GUI thing just wasn’t well suited for this kind of app. And that is when I decided to do a complete rewrite in pure rust! Chapter 4 - The sweet EGUI I didn’t know it at the time, but this was the best idea on what to do with the project. I remember that I was very split between just shipping it half done and finishing it just because of how bad the development experience with Tauri was (sorry Tauri devs, it’s not a you thing, it’s a me thing). It took about 30h to fully rewrite the app with EGUI, which looking back at it isn’t too bad. It felt like ages though. It didn’t help that almost none of the work in this “chapter” did AI. Which at the end of the day is better! Although my style of writing EGUI code was let’s say original… I have just put everything into one file and that grew very fast :D. I had like 5 files that were about 800 lines each. That has since luckily changed. (I have adopted more of a React style file structure.) Anyway at the end of the rewrite I kinda started loving EGUI and that hasn’t stopped since. I continued to develop the Map page in EASY which was pretty easy. But then I needed the track limits data for the map page. This was a bit of a roadblock… First I have tried to extract the data directly from the game, however this was inaccurate and the track width was missing entirely. So then I tried to download an up to date image of the top down view of the track and extract the inside and outside line from it and match it to the in game data. This partially worked better, still not great tho. So there was only one option left. And that was to painfully drive each layout of each track by hand. This took almost 7h of just driving in circles. After that it was smooth and buggy sailing until the ship. Everyone who read this, have a beautiful day."}, {"post_id": 71172, "ts": "2026-09-20T12:02:04Z", "hours": 7.2817, "text": "Devlog 28 Today is gonna be a big day, because I will ship the project. There is a few things left to do tho. Mainly the readme and the demo video! In my last and next devlog I will also make a write up on the story of the whole project so far. Besides that I have yesterday refactored the whole codebase so now there aren’t just 5 monolithic files. I went for a more react like approach with the structure being divided into pages and components. Sadly there isn’t enough time until the ship to touch up on some old UI and UX problems in the edit view of the graphs, neither is there time to add more fields. This will be done in the near future! Overall I am very happy how the app turned out. But this is not the end of the development this is just the end of the stardance journey!"}, {"post_id": 70125, "ts": "2026-09-18T14:50:07Z", "hours": 4.7625, "text": "Devlog 27 For the past few hours I have been polishing the app up. The main you’ll probably see are the onboarding dialogs. A global one pops up when you first launch the app and then one for each page when you first enter them. Another change I have done is that I made the ghosts on the map page be based on time and not data point index."}, {"post_id": 68694, "ts": "2026-09-15T15:37:09Z", "hours": 9.5181, "text": "Devlog 26 Hiiiii For the past few hours I have been working on polishing the app and get it to a shippable state overall. There is still work left to do, but I am getting there. I have set up a simple packager, and a simple script to use it. It automatically compiles the release version of the app and packages it into a windows installer a Debian .deb package and a pacman package. I have also (after like 2 hours of struggeling with it) added an Icon for the app. So now it looks nice!There has been a lot of new bugfixes as well and the app has been tested by my friend so it should be somwhat usable, tho the setup UX should be improved upon. If you wish you can download the app from here: https://github.com/Karlito05/TelemetryLMU/releases/tag/v0.2.3 Well that is all I have for you all today, so have a nice one :)"}, {"post_id": 66482, "ts": "2026-09-12T10:09:34Z", "hours": 5.3067, "text": "Devlog 25 I know I have just made a devlog like yesterday but holy s*** the track references work so well. They are practically perfect . Besides the references I have also implemented the delta time between the 2 cars! That has really tied the page together. If I can say so myself, we are getting pretty close to the final ship . There is not much needed to implement. The obvious are bugfixes, and some simple onboarding. But really, that’s it! Everyone who is following or caring about this project can expect a ship in the next week or so. In my final devlog I will also do a writeup on this project as a whole, from the coarse beginnings in Dyoxys, trough Tauri, to the sweet home of EGUI. There will also be a trailer video and a demo for all the raters :D Anyway for now you can have this preview of the map page! Stay tuned!"}, {"post_id": 65936, "ts": "2026-09-11T12:33:33Z", "hours": 6.7664, "text": "Devlog 24 HI! All of the time on this devlog was basically just driving in circles. And I mean that. I have recorded all of the outsides and insides of all tracks in the game to get the data for the map page. It was very teidius and very boring. Like very very boring. There are 31 tracks in LMU (including each layout) and on every one of them I had to do an out lap, the ouside, another out lap and the inside. So 4laps for each. That is about 15min per layout. Yeah it was a long one. And the recordings aren’t perfect either! I will now have to somehow process them all to get them ready for the ship. You can watch the timelapses of this process here if you wish. https://lapse.hackclub.com/timelapse/OQcismBwxbBB https://lapse.hackclub.com/timelapse/le3Lta0RxcUA https://lapse.hackclub.com/timelapse/XRf98OimmUk9 Anyway. Have a nice day!"}, {"post_id": 63016, "ts": "2026-09-06T16:07:27Z", "hours": 7.12, "text": "Devlog 23 - More Refactoring Hi! In the past few days I have been making some core architectural changes to the project and I would like to explain them now. Telemetry Provider I have finally decided on how I am gonna handle telemetry in the long term. It’s a pretty simple concept but the implementation is pretty hard. I have one object (the TelemetryProvider struct) that is in charge of getting and managing the telemetry. Right now it logs data from all cars and stores the best, last and current laps. If you wish it can save only your laps or laps of everybody. Each lap is a json file about 500kB - 1MB in size and holds all the data that can be displayed in the app. Notably the position ( so you can load that lap directly into the map page ) and the data displayed by the graphs (so you can load it as a reference there as well.) Pointer to this struct is distributed to pages that need it so they can access it! The provider has a core logging loop that is running on another thread so the whole UI doesn’t have to redraw each time you log new data. (About 60 times a second.) State and Settings Providers Next, I have implemented a StateProvider and an SettingsProvider . These two are basically a drop in replacement of what was stored in the Sidebar and SettingsPage respectively. Difference between the two is that the StateProvider isn’t stored between app restarts. Similarly to how the TelemetryProvider works, each of the pages that need these values get a shared pointer (or an Arc in rust) and can access the values. What’s next Going further I will keep my focus on the map page. Finish it, and then start polishing the app for the final ship! Wish me luck and have a nice day!"}, {"post_id": 61727, "ts": "2026-09-04T19:26:10Z", "hours": 9.5394, "text": "Devlog 22 Hiiiiiiiiiiiii I have some huge news to tell you. I have just made the MOST complex addition yet. And I love it! I have completely overhauled the accessing and managing the telemetry! I have designed a thread safe way to have it run on a separate thread and be accessible from *every place in the app. One unified API for everything! I now store the current lap and the last lap for each of the cars. Tho this takes up a massive 140mb of just floats (in the worst case scenario) I believe its worth the RAM! (Let’s be real, we have saved over 400mb from the tauri implementation so we can now use some of that!) Next I will continue on further implementing these features around the tool. Anyway have a nice day people and bye bye. Some context to that meme: I have a type in my app that is literally Arc<Mutex<[([f64; TelemetryValueType::Max as usize], Option); 104]»"}, {"post_id": 60204, "ts": "2026-09-02T13:06:23Z", "hours": 9.4931, "text": "Devlog 21 For the past few days I have been working on a new feature. The map page. It is turning out great, however it has a lot of bugs. These will get fix over the next few days. I promise :) There have also been changes made to the lap logging system and some other systems as well. As you can see on the image you select 2 saved laps and can crosscompare the lines you drove. Obviously this is completly useless if you loaded 2 different track like I did here. This will get checked for and prohibited in the future. Next I will add the underlying lap overlay which I will somehow extract from the game or from somewhere else. I don’t really know yet. Well that is it for today. Have a great day and bye bye!"}, {"post_id": 57444, "ts": "2026-08-29T16:23:51Z", "hours": 8.955, "text": "Devlog 20 So I have been polishing up the current features a bit and they are far from done. I am starting to question if i will make it to shipping this app one day :D. Anyway I have fixed numerous bugs, added an settings page and implemnted although very crudly a lap logger. But there is still a lot work that needs to be done. I have also added persistancy so the app remembers your choices. I am almost ready to replace the main branch with the fully rusted version, but like I said more work has to be done to go trough with that! I have probably never shown how the Car info page turned out and IMO it did really well. (The empty space is for inputs. That will be implemented soon!)"}, {"post_id": 55542, "ts": "2026-08-27T13:46:52Z", "hours": 8.0039, "text": "Devlog 19 Hello hello! Today I have some exciting news. The rewrite is complete That’s right, after about 30 hours of porting this code from tauri into EGUI it is finally finished! So let’s take a look at some stats, shall we ? | | Tauri | EGUI | |----------------------|-------------|--------------- | | Dev time | 80h | 30h | | Lines of code written | 6k | 3k | | Enjoyability | suboptimal | above average | And some perofrmance stuff as well: | | Tauri | EGUI | |----------------------|-------------|--------------- | | Ram idle | ~700Mb | ~150Mb | | CPU % idle | ~5% | ~5% | | FPS under load | ~29fps | stable 60 | Some other perks also include that EGUI doesn’t need a browser installed on the system to work. Overall I think this was a very successful rewrite! I wouldn’t do it again tho Next I will refactor the code a bit, do a bit off the good ’ol cleanup and then get to work on the map feature."}, {"post_id": 54543, "ts": "2026-08-25T15:54:21Z", "hours": 4.4164, "text": "Devlog 18 - 100h on the project So it’s been a hundred hours huh ? I also can’t believe it! I have also just now finished* the graph view which will be newly called Telemetry (page) Now I will move onto making the car info page previously known as the championship view. I expect this to be very easy!"}, {"post_id": 53875, "ts": "2026-08-24T16:07:03Z", "hours": 6.4811, "text": "Devlog 17 Hello guys. Its me again :D I am continuing to rewrite the UI into egui. I have completed the Graph view’s UI and now I am moving onto implementing it. One thing I have noticed is just how much more “code efficient” egui is. I understand that I didn’t make the logic behind the code yet but even with that I made the same thing with 3k less lines of code. Here is how the layout edit mode is looking for now."}, {"post_id": 51324, "ts": "2026-08-20T22:11:51Z", "hours": 5.83, "text": "Devlog 16 Another 6 hours, another devlog… Hi people. For the last 2 days I took a bit of a break from the project. I have played Approximately up with the boys and it was so fun. Y’all should try the game. It has a free demo 😉 But we are not here to talk about games, are we… I am continuing the implementation of the frontend and its coming along nicely. I’ve just noticed one thing, making the UI itself in egui is kinda slow however the state is very easy. Whilst this not being completely ideal i can push trough that. Since the last devlog, I have finished the implementation of the sidebar, and started working on the telemetry page. I have the graphs sorted and now I am working on the top bar. It’s having a couple of issues at the moment but nothing hard to fix really. I am hopefully gonna continue tomorrow and have the page finished by the end of the week. Welp, I guess that’s it for today. Everybody have a beautiful day, and bye bye!"}, {"post_id": 48473, "ts": "2026-08-16T20:40:29Z", "hours": 6.3456, "text": "Devlog 15 For the last few days, I have been remaking the UI in EGUI and I am enjoying it so far. I’ve been working on the graphs in the graph view and also the sidebar. The sidebar is turning out very well and I am also pretty pleased with the graphs. I have only this for now, so enjoy :D"}, {"post_id": 46562, "ts": "2026-08-13T21:40:19Z", "hours": 2.9933, "text": "Devlog 14 I have done some research and decided that moving forward the app will use eGPU as the main GUI library. I have chosen this over the competitors due to a few reasons. The main being that its rendered natively and that its a intermediate mode library. This will make it very easy to work with the graphs and hopefully other stuff too. I am enjoying working with it so far. There are some concepts that I really like, like that everything that has state is just a simple struct that is initialized somewhere and you do most of the implementation. The widget system is also pretty cool. I was at first worried that I would hate it due to my experiences from TKInter that was forced on me in school :D but its pretty intuitive how they did it. Going further I will need to think about the architecture of the app a bit to not have it fall apart. Right now I am thinking that one thread will be the main “logger thread” which will gather data from the telemetry and then there will be the UI thread. I think that is what pretty much everyone is doing so it might work . With this approach i am worried that its gonna be a pain, but what isn’t these days… I don’t really have that much more to say so at least enjoy this screenshot of a pretty much not working app Fun fact: due to how the lib works there is a bug now that you have to move your cursor on the app for it to log data :DDD"}, {"post_id": 46009, "ts": "2026-08-12T21:29:42Z", "hours": 2.5956, "text": "Devlog 13 Okay so I might have found a solution for me not liking react and web technologies but still wanting to finish this project. And I don’t like it…. but it has to be done. But before I tell you what it is you have to understand my problems. The good React in combination with typescript is a very easy thing to understand. They are everywhere, the skill of knowing these is very valuable. They have a huge ecosystem because they are everywhere. And I am sure that I have forgotten many other cool and interesting features and perks but I picked them for mainly these 3. The Bad They are slow (in comparison to something like rust) They rely too heavily on browsers (I mean it’s basically their runtime) You have to be “hacky” to do some things. They are not suitable to develop desktop apps I mean in hindsight those are so obvious but until you are balls deep into some specific project you don’t really think about those. The main problem is that the performance is, for the lack of a better word, sh*t. And normally that isn’t a problem however when you are processing a memory object of about 300kb 60 times per second it adds up fast. Even on my pretty beefy PC (r7 9800x3d and n5070ti) it hardly gets 30 fps. I know this could probably be fixed with “more hacky workarounds” but I am tired of those. The solution I am going to REWRITE The project I have spent 70h on already in some rust native GUI framework such as ICED. I have not yet decided which one to chose and I will do that research tomorrow and report back Literally me RN ⬇️"}, {"post_id": 45715, "ts": "2026-08-12T11:49:22Z", "hours": 2.1014, "text": "Devlog 12 This will be more of like a quick update on the championships feature. So what has happened is that I have implemented the feature, and assumed that the data will be there for all players… which there isn’t. The other players show up and everything but the details like tire data, damage data and fuel data just isn’t there. So I am kinda stuck if I should just scrap the feature or recreate it into a personal data panel which would just not be fun I think. Also the damages data is very very limited, so I just don’t know what to do."}, {"post_id": 45217, "ts": "2026-08-11T15:31:51Z", "hours": 9.4839, "text": "Devlog 11 Hello guys. I have some good news and some bad news… Let’s start with the not so good news. After thinking about it, I have decided, that I don’t really enjoy working on this project. It’s not that the project it self is bad, it’s more about the tech stack I chose… Don’t get me wrong typescript and react are both phenomenal choices and great tools but, I guess the web is just not for me. I realized that I like the lower end of the spectrum better. So I have decided to cut this project short. The map view will not be included in the final ship for the time being and the profile stats also will not be there. On the bright side, I have started working on the championships page with that nearing its completion. Next I will start to work on the onboarding and settings pages."}, {"post_id": 23759, "ts": "2026-07-06T21:48:28Z", "hours": 10.0158, "text": "Devlog 10 - We are in the double digits 🎊 UI Redesign Progress I am slowly redesigning the app to look like the design I made. I started with the sidebar and then the top control panel. All that went well. The Graphs… 😅 But then I got to the Graphs . *Oh, the graphs… *I wanted to redo the backend for them because the multiple-thread approach was just straight up stupid. It was a pain to develop and would be a pain to maintain. So, in my infinite wisdom , I have gone for just a simple async function. That means that right now the frontend is requesting each data point instead of subscribing to a stream. After that, I needed to revise the frontend graph component itself. At first I just wanted to make a non-messy implementation of the old version. However, it turned out that the HTML <canvas> element is really slow. And I mean realllllllllly slow. So after I wasted like 2 hours trying to optimize the design with no success, I rage quit and went to watch a movie. WebGL to the Rescue But I don’t give up that easily. After the movie, I reimplemented the graph view with WebGL through Pixi.js , which wasn’t even that hard like I expected and overall had much better performance. Well… at least after I fixed one very stupid bug . The Bug That Ate 10 GB of RAM I had forgotten everything from the first GraphView.tsx implementation, so I was just mindlessly copying over the code and renaming the variables to what I thought they meant when I first made it. Then I got to the part which draws the lap (aka the big loop over all the points-up to 10,000 points at a time). There was an error on one of the variables. It was the length of some array. I just renamed it to the main array length because… *what other thing would it be, right? *Well…It was the length of the values array , which was always 1 or 2 .So I accidentally turned 1 × 10,000 iterations into 10,000^2 iterations . Somehow the app still wasn’t lagging that much. It just took like 10 GB of RAM . The Result Thankfully, the new WebGL + Pixi.js approach is way more efficient , so after fixing that bug the graph rendering performs much better. It still isn’t perfect on the UI side of things but I am getting there!"}, {"post_id": 22818, "ts": "2026-07-05T12:34:46Z", "hours": 6.9447, "text": "Devlog 9 - THE REDESIGN For the past few days I’ve been working on a new design for the app. I am not the best designer and to be real I didn’t enjoy it :D. Designing is just too illogical for me. There’s not really much more to say about this. Enjoy the design:"}, {"post_id": 20110, "ts": "2026-07-01T17:12:04Z", "hours": 9.2647, "text": "Devlog 8 Do you guys remember how I said that I will take a break ? Yeah… That didn’t happen. Instead I have made a plan for myself on how I am gonna continue in the tool’s development. Da plan The plan Is pretty simple: Design the app in Figma, then build it! I have also made a list of features that will be added. You can find the plan on Github. You can also suggest features if you’re interested! …oh and before making the plan I have implemented a pretty cool logging feature. Basically it records the currently selected driver and saves all his data to a file along with the lap time and date. It does this only for laps that the game considers valid (aka gives a lap time to.)"}, {"post_id": 17764, "ts": "2026-06-28T18:11:51Z", "hours": 6.7406, "text": "DevLog 7 This will be just a quick update on how things are looking right now, what’s happening, and the overall state of the project. Good news The rewrite is complete The sole UI library is now ShadCN. There have also been some minor bugfixes and ux improvements. The main being that the app is now working on lower resolutions. We’ve got a readme. It’s basic, but its there. Also I have added installation instructions and released the 1st alpha version. You can find it in the releases! Both windows and linux packages are there! Bad news I will take a break for the next few days. I will be working on a smaller project for android and I hope that by the time I return I will be full of energy and ideas! What’s next I will continue working on the graph view. Mainly saving and loading reference laps, and overall better UI and UX."}, {"post_id": 12606, "ts": "2026-06-20T16:24:29Z", "hours": 9.7894, "text": "DevLog 6 - Windows support and the first rewrite! Windows support There’s not really much to say about this. You just get a handle on the game’s memory. This was vibecoded but it’s below 100 lines of windows specific code, so I’m gonna allow it. (It was just the 2 function that handle updating the telemetry and the rest is the same.) Rewrite After adding windows support, and sending it to a friend to test, I have discovered a massive problem. The app just didn’t work on a lower resolution. Since I have a QHD monitor, I didn’t notice it. Also when I started writing the app, I did it in pure React without any UI libraries, then I started to use Antd and then MUI and it became a mess. So I have done some research and decided to rewrite the app using ShadcnUI. I did this because Shadcn has one massive advantage - the code that you use is in your codebase. This means that you can modify the components however you want. It is also one of the more popular ones out there. For icons, I will be using Tabular, because they have a lot of them, and I like their look."}, {"post_id": 10767, "ts": "2026-06-17T17:54:53Z", "hours": 4.4767, "text": "DevLog 5 - Introducing the Layouts feature! So for the past few days I was implementing a layouts feature for the Graphs view in my app. Features: Adding layouts Removing layouts Managing layouts change what graphs they display change the properties of those graphs aka their number of gridlines, color and type How many graphs there are and what sizes they have You can do all of that in the Edit Mode . This mode is accessible via the layout selection dropdown. In edit mode you have options to change the graphs as said, remove the layout you’re editing, to save it as a new one or to save it (basically override the last one). All of this is persistent between sessions. Note that the UI in the screenshots is probably gonna be changed in the future and is just a development placeholder :)"}, {"post_id": 8829, "ts": "2026-06-14T18:01:40Z", "hours": 5.2161, "text": "DevLog 4 Today I have started implementing the layouts feature. There’s not much to really say. The graphs can be vertically adjusted in size, their color and type can be changed and there is a whole new edit mode for that. And that’s what I did for 5h today… (I really hate frontend :D) The design of the whole thing is unfinished but hey, it works. Even though some features (mainly saving and loading layouts) are missing its turning out great. I will continue developing this feature for the time being."}, {"post_id": 8235, "ts": "2026-06-13T18:14:25Z", "hours": 4.1997, "text": "DevLog 3 This one will be more about the organization of the project. New folder structure I have split up the src directory into a few different subdirectories mainly pages directory which is further split up into directories for each page and a components directory for reusable components like the sidebar. Logging Furthermore I have implemented logging on the backend. (It’s also callable from the frontend but that’s not that convenient at least in case of debugging so I won’t be using it as much.) The top bar Next I have started implementing a top bar for the telemetry view . On there will be some important controls and information regarding that view. Just note that in the screenshot the game is not open therefore the driver dropdown isn’t populated with any text. This will probably change in the future. And the layout dropdown is there just for the looks for now ;)"}, {"post_id": 6907, "ts": "2026-06-11T16:08:05Z", "hours": 2.7908, "text": "DevLog 2 Today i have fixed a bug where threads would spawn infinitely. I’ve been at it for 3h… Yeah it was kinda pain. So I basically have this architecture, where my backend spawns a new thread for each graph ( to provide information more responsibly. ) However whenever the graph element unloaded, it didn’t unsubscribe from that thread. A simple fix, just unsubscribe it, right ? Yup basically. However my lack of expertise in this kind of stuff led me on a wild goose chase. After I realized that what I am doing is stupid, it was just a simple hook that the spawn function returned, when spawning the new thread. Well we all make mistakes :D"}, {"post_id": 6797, "ts": "2026-06-11T12:14:18Z", "hours": 0.4275, "text": "DevLog 1 — An Introduction to My Project Hi! I’m Karlito, and this is my first devlog. I’d like to use this devlog to introduce my project, explain its current state, and share my plans for the future. So, what actually is LMU Telemetry? The TL;DR is that it’s a telemetry tool for Le Mans Ultimate. However, many people don’t know what that means, so I’ll explain it here. What is Le Mans Ultimate? In short, Le Mans Ultimate is a racing simulator. Unlike traditional racing games, it doesn’t simply say “the car accelerates when you press W.” Instead, it simulates the engine, tires, driveshafts, brakes, track grip, and many other factors to provide a realistic driving experience. What is telemetry? Telemetry is a way for simulators to output simulation data, such as speed, position, engine temperature, and much more. At a lower level, it’s essentially a chunk of memory containing numbers that are constantly updated with current information. What LMU Telemetry actually does LMU Telemetry aims to visualize these data points in a way that’s easy to understand and can help users improve their driving. It does this in several ways. For example, one feature draws real-time graphs of various metrics such as speed or delta time compared to your best lap. The current state of development The app is currently little more than a glorified demo. It has some rough UI elements and only plots graphs for a hardcoded car (index 0). While this works in private lobbies, where you’re always the first car, the system fails in most other situations. In short, the app isn’t very useful yet, but it’s a start. Main goals Live telemetry view Real-time graphs Map view A view showing the track layout and the line you drove Sharing features Exporting laps and comparing them with laps driven by other users Requirements The app must be performant Running LMU can already be demanding on some systems, so the app shouldn’t use more resources than necessary Linux support A reactive and polished UI Future plans Windows support Depending on how difficult this turns out to be, it may be implemented sooner Strategy mode Useful for endurance and team events, allowing you to monitor the tire and fuel status of other drivers So, what now? Right now, I’ll focus on getting the app to its MVP state. This means refining the UI, fixing bugs, and, most importantly, making the app genuinely useful. Well, that was quite a long one, wasn’t it? Thank you for reading all the way to the end, and have a wonderful rest of your day!"}]...
|
Title: Telemetry LMU by @Karlito | Stardance
Devl Title: Telemetry LMU by @Karlito | Stardance
Devlogs:
DevLog 1 — An Introduction to My Project Hi! I’m Karlito, and this is my first devlog. I’d like to use this devlog to introduce my project, explain its current state, and share my plans for the future. So, what actually is LMU Telemetry? The TL;DR is that it’s a telemetry tool for Le Mans Ultimate. However, many people don’t know what that means, so I’ll explain it here. What is Le Mans Ultimate? In short, Le Mans Ultimate is a racing simulator. Unlike traditional racing games, it doesn’t simply say “the car accelerates when you press W.” Instead, it simulates the engine, tires, driveshafts, brakes, track grip, and many other factors to provide a realistic driving experience. What is telemetry? Telemetry is a way for simulators to output simulation data, such as speed, position, engine temperature, and much more. At a lower level, it’s essentially a chunk of memory containing numbers that are constantly updated with current information. What LMU Telemetry actually does LMU Telemetry aims to visualize these data points in a way that’s easy to understand and can help users improve their driving. It does this in several ways. For example, one feature draws real-time graphs of various metrics such as speed or delta time compared to your best lap. The current state of development The app is currently little more than a glorified demo. It has some rough UI elements and only plots graphs for a hardcoded car (index 0). While this works in private lobbies, where you’re always the first car, the system fails in most other situations. In short, the app isn’t very useful yet, but it’s a start. Main goals Live telemetry view Real-time graphs Map view A view showing the track layout and the line you drove Sharing features Exporting laps and comparing them with laps driven by other users Requirements The app must be performant Running LMU can already be demanding on some systems, so the app shouldn’t use more resources than necessary Linux support A reactive and polished UI Future plans Windows support Depending on how difficult this turns out to be, it may be implemented sooner Strategy mode Useful for endurance and team events, allowing you to monitor the tire and fuel status of other drivers So, what now? Right now, I’ll focus on getting the app to its MVP state. This means refining the UI, fixing bugs, and, most importantly, making the app genuinely useful. Well, that was quite a long one, wasn’t it? Thank you for reading all the way to the end, and have a wonderful rest of your day!
DevLog 2 Today i have fixed a bug where threads would spawn infinitely. I’ve been at it for 3h… Yeah it was kinda pain. So I basically have this architecture, where my backend spawns a new thread for each graph ( to provide information more responsibly. ) However whenever the graph element unloaded, it didn’t unsubscribe from that thread. A simple fix, just unsubscribe it, right ? Yup basically. However my lack of expertise in this kind of stuff led me on a wild goose chase. After I realized that what I am doing is stupid, it was just a simple hook that the spawn function returned, when spawning the new thread. Well we all make mistakes :D
DevLog 3 This one will be more about the organization of the project. New folder structure I have split up the src directory into a few different subdirectories mainly pages directory which is further split up into directories for each page and a components directory for reusable components like the sidebar. Logging Furthermore I have implemented logging on the backend. (It’s also callable from the frontend but that’s not that convenient at least in case of debugging so I won’t be using it as much.) The top bar Next I have started implementing a top bar for the telemetry view . On there will be some important controls and information regarding that view. Just note that in the screenshot the game is not open therefore the driver dropdown isn’t populated with any text. This will probably change in the future. And the layout dropdown is there just for the looks for now ;)
DevLog 4 Today I have started implementing the layouts feature. There’s not much to really say. The graphs can be vertically adjusted in size, their color and type can be changed and there is a whole new edit mode for that. And that’s what I did for 5h today… (I really hate frontend :D) The design of the whole thing is unfinished but hey, it works. Even though some features (mainly saving and loading layouts) are missing its turning out great. I will continue developing this feature for the time being.
DevLog 5 - Introducing the Layouts feature! So for the past few days I was implementing a layouts feature for the Graphs view in my app. Features: Adding layouts Removing layouts Managing layouts change what graphs they display change the properties of those graphs aka their number of gridlines, color and type How many graphs there are and what sizes they have You can do all of that in the Edit Mode . This mode is accessible via the layout selection dropdown. In edit mode you have options to change the graphs as said, remove the layout you’re editing, to save it as a new one or to save it (basically override the last one). All of this is persistent between sessions. Note that the UI in the screenshots is probably gonna be changed in the future and is just a development placeholder :)
DevLog 6 - Windows support and the first rewrite! Windows support There’s not really much to say about this. You just get a handle on the game’s memory. This was vibecoded but it’s below 100 lines of windows specific code, so I’m gonna allow it. (It was just the 2 function that handle updating the telemetry and the rest is the same.) Rewrite After adding windows support, and sending it to a friend to test, I have discovered a massive problem. The app just didn’t work on a lower resolution. Since I have a QHD monitor, I didn’t notice it. Also when I started writing the app, I did it in pure React without any UI libraries, then I started to use Antd and then MUI and it became a mess. So I have done some research and decided to rewrite the app using ShadcnUI. I did this because Shadcn has one massive advantage - the code that you use is in your codebase. This means that you can modify the components however you want. It is also one of the more popular ones out there. For icons, I will be using Tabular, because they have a lot of them, and I like their look.
DevLog 7 This will be just a quick update on how things are looking right now, what’s happening, and the overall state of the project. Good news The rewrite is complete The sole UI library is now ShadCN. There have also been some minor bugfixes and ux improvements. The main being that the app is now working on lower resolutions. We’ve got a readme. It’s basic, but its there. Also I have added installation instructions and released the 1st alpha version. You can find it in the releases! Both windows and linux packages are there! Bad news I will take a break for the next few days. I will be working on a smaller project for android and I hope that by the time I return I will be full of energy and ideas! What’s next I will continue working on the graph view. Mainly saving and loading reference laps, and overall better UI and UX.
Devlog 8 Do you guys remember how I said that I will take a break ? Yeah… That didn’t happen. Instead I have made a plan for myself on how I am gonna continue in the tool’s development. Da plan The plan Is pretty simple: Design the app in Figma, then build it! I have also made a list of features that will be added. You can find the plan on Github. You can also suggest features if you’re interested! …oh and before making the plan I have implemented a pretty cool logging feature. Basically it records the currently selected driver and saves all his data to a file along with the lap time and date. It does this only for laps that the game considers valid (aka gives a lap time to.)
Devlog 9 - THE REDESIGN For the past few days I’ve been working on a new design for the app. I am not the best designer and to be real I didn’t enjoy it :D. Designing is just too illogical for me. There’s not really much more to say about this. Enjoy the design:
Devlog 10 - We are in the double digits 🎊 UI Redesign Progress I am slowly redesigning the app to look like the design I made. I started with the sidebar and then the top control panel. All that went well. The Graphs… 😅 But then I got to the Graphs . *Oh, the graphs… *I wanted to redo the backend for them because the multiple-thread approach was just straight up stupid. It was a pain to develop and would be a pain to maintain. So, in my infinite wisdom , I have gone for just a simple async function. That means that right now the frontend is requesting each data point instead of subscribing to a stream. After that, I needed to revise the frontend graph component itself. At first I just wanted to make a non-messy implementation of the old version. However, it turned out that the HTML <canvas> element is really slow. And I mean realllllllllly slow. So after I wasted like 2 hours trying to optimize the design with no success, I rage quit and went to watch a movie. WebGL to the Rescue But I don’t give up that easily. After the movie, I reimplemented the graph view with WebGL through Pixi.js , which wasn’t even that hard like I expected and overall had much better performance. Well… at least after I fixed one very stupid bug . The Bug That Ate 10 GB of RAM I had forgotten everything from the first GraphView.tsx implementation, so I was just mindlessly copying over the code and renaming the variables to what I thought they meant when I first made it. Then I got to the part which draws the lap (aka the big loop over all the points-up to 10,000 points at a time). There was an error on one of the variables. It was the length of some array. I just renamed it to the main array length because… *what other thing would it be, right? *Well…It was the length of the values array , which was always 1 or 2 .So I accidentally turned 1 × 10,000 iterations into 10,000^2 iterations . Somehow the app still wasn’t lagging that much. It just took like 10 GB of RAM . The Result Thankfully, the new WebGL + Pixi.js approach is way more efficient , so after fixing that bug the graph rendering performs much better. It still isn’t perfect on the UI side of things but I am getting there!
Devlog 11 Hello guys. I have some good news and some bad news… Let’s start with the not so good news. After thinking about it, I have decided, that I don’t really enjoy working on this project. It’s not that the project it self is bad, it’s more about the tech stack I chose… Don’t get me wrong typescript and react are both phenomenal choices and great tools but, I guess the web is just not for me. I realized that I like the lower end of the spectrum better. So I have decided to cut this project short. The map view will not be included in the final ship for the time being and the profile stats also will not be there. On the bright side, I have started working on the championships page with that nearing its completion. Next I will start to work on the onboarding and settings pages.
Devlog 12 This will be more of like a quick update on the championships feature. So what has happened is that I have implemented the feature, and assumed that the data will be there for all players… which there isn’t. The other players show up and everything but the details like tire data, damage data and fuel data just isn’t there. So I am kinda stuck if I should just scrap the feature or recreate it into a personal data panel which would just not be fun I think. Also the damages data is very very limited, so I just don’t know what to do.
Devlog 13 Okay so I might have found a solution for me not liking react and web technologies but still wanting to finish this project. And I don’t like it…. but it has to be done. But before I tell you what it is you have to understand my problems. The good React in combination with typescript is a very easy thing to understand. They are everywhere, the skill of knowing these is very valuable. They have a huge ecosystem because they are everywhere. And I am sure that I have forgotten many other cool and interesting features and perks but I picked them for mainly these 3. The Bad They are slow (in comparison to something like rust) They rely too heavily on browsers (I mean it’s basically their runtime) You have to be “hacky” to do some things. They are not suitable to develop desktop apps I mean in hindsight those are so obvious but until you are balls deep into some specific project you don’t really think about those. The main problem is that the performance is, for the lack of a better word, sh*t. And normally that isn’t a problem however when you are processing a memory object of about 300kb 60 times per second it adds up fast. Even on my pretty beefy PC (r7 9800x3d and n5070ti) it hardly gets 30 fps. I know this could probably be fixed with “more hacky workarounds” but I am tired of those. The solution I am going to REWRITE The project I have spent 70h on already in some rust native GUI framework such as ICED. I have not yet decided which one to chose and I will do that research tomorrow and report back Literally me RN ⬇️
Devlog 14 I have done some research and decided that moving forward the app will use eGPU as the main GUI library. I have chosen this over the competitors due to a few reasons. The main being that its rendered natively and that its a intermediate mode library. This will make it very easy to work with the graphs and hopefully other stuff too. I am enjoying working with it so far. There are some concepts that I really like, like that everything that has state is just a simple struct that is initialized somewhere and you do most of the implementation. The widget system is also pretty cool. I was at first worried that I would hate it due to my experiences from TKInter that was forced on me in school :D but its pretty intuitive how they did it. Going further I will need to think about the architecture of the app a bit to not have it fall apart. Right now I am thinking that one thread will be the main “logger thread” which will gather data from the telemetry and then there will be the UI thread. I think that is what pretty much everyone is doing so it might work . With this approach i am worried that its gonna be a pain, but what isn’t these days… I don’t really have that much more to say so at least enjoy this screenshot of a pretty much not working app Fun fact: due to how the lib works there is a bug now that you have to move your cursor on the app for it to log data :DDD
Devlog 15 For the last few days, I have been remaking the UI in EGUI and I am enjoying it so far. I’ve been working on the graphs in the graph view and also the sidebar. The sidebar is turning out very well and I am also pretty pleased with the graphs. I have only this for now, so enjoy :D
Devlog 16 Another 6 hours, another devlog… Hi people. For the last 2 days I took a bit of a break from the project. I have played Approximately up with the boys and it was so fun. Y’all should try the game. It has a free demo 😉 But we are not here to talk about games, are we… I am continuing the implementation of the frontend and its coming along nicely. I’ve just noticed one thing, making the UI itself in egui is kinda slow however the state is very easy. Whilst this not being completely ideal i can push trough that. Since the last devlog, I have finished the implementation of the sidebar, and started working on the telemetry page. I have the graphs sorted and now I am working on the top bar. It’s having a couple of issues at the moment but nothing hard to fix really. I am hopefully gonna continue tomorrow and have the page finished by the end of the week. Welp, I guess that’s it for today. Everybody have a beautiful day, and bye bye!
Devlog 17 Hello guys. Its me again :D I am continuing to rewrite the UI into egui. I have completed the Graph view’s UI and now I am moving onto implementing it. One thing I have noticed is just how much more “code efficient” egui is. I understand that I didn’t make the logic behind the code yet but even with that I made the same thing with 3k less lines of code. Here is how the layout edit mode is looking for now.
Devlog 18 - 100h on the project So it’s been a hundred hours huh ? I also can’t believe it! I have also just now finished* the graph view which will be newly called Telemetry (page) Now I will move onto making the car info page previously known as the championship view. I expect this to be very easy!
Devlog 19 Hello hello! Today I have some exciting news. The rewrite is complete That’s right, after about 30 hours of porting this code from tauri into EGUI it is finally finished! So let’s take a look at some stats, shall we ? | | Tauri | EGUI | |----------------------|-------------|--------------- | | Dev time | 80h | 30h | | Lines of code written | 6k | 3k | | Enjoyability | suboptimal | above average | And some perofrmance stuff as well: | | Tauri | EGUI | |----------------------|-------------|--------------- | | Ram idle | ~700Mb | ~150Mb | | CPU % idle | ~5% | ~5% | | FPS under load | ~29fps | stable 60 | Some other perks also include that EGUI doesn’t need a browser installed on the system to work. Overall I think this was a very successful rewrite! I wouldn’t do it again tho Next I will refactor the code a bit, do a bit off the good ’ol cleanup and then get to work on the map feature.
Devlog 20 So I have been polishing up the current features a bit and they are far from done. I am starting to question if i will make it to shipping this app one day :D. Anyway I have fixed numerous bugs, added an settings page and implemnted although very crudly a lap logger. But there is still a lot work that needs to be done. I have also added persistancy so the app remembers your choices. I am almost ready to replace the main branch with the fully rusted version, but like I said more work has to be done to go trough with that! I have probably never shown how the Car info page turned out and IMO it did really well. (The empty space is for inputs. That will be implemented soon!)
Devlog 21 For the past few days I have been working on a new feature. The map page. It is turning out great, however it has a lot of bugs. These will get fix over the next few days. I promise :) There have also been changes made to the lap logging system and some other systems as well. As you can see on the image you select 2 saved laps and can crosscompare the lines you drove. Obviously this is completly useless if you loaded 2 different track like I did here. This will get checked for and prohibited in the future. Next I will add the underlying lap overlay which I will somehow extract from the game or from somewhere else. I don’t really know yet. Well that is it for today. Have a great day and bye bye!
Devlog 22 Hiiiiiiiiiiiii I have some huge news to tell you. I have just made the MOST complex addition yet. And I love it! I have completely overhauled the accessing and managing the telemetry! I have designed a thread safe way to have it run on a separate thread and be accessible from *every place in the app. One unified API for everything! I now store the current lap and the last lap for each of the cars. Tho this takes up a massive 140mb of just floats (in the worst case scenario) I believe its worth the RAM! (Let’s be real, we have saved over 400mb from the tauri implementation so we can now use some of that!) Next I will continue on further implementing these features around the tool. Anyway have a nice day people and bye bye. Some context to that meme: I have a type in my app that is literally Arc<Mutex<[([f64; TelemetryValueType::Max as usize], Option); 104]»
Devlog 23 - More Refactoring Hi! In the past few days I have been making some core architectural changes to the project and I would like to explain them now. Telemetry Provider I have finally decided on how I am gonna handle telemetry in the long term. It’s a pretty simple concept but the implementation is pretty hard. I have one object (the TelemetryProvider struct) that is in charge of getting and managing the telemetry. Right now it logs data from all cars and stores the best, last and current laps. If you wish it can save only your laps or laps of everybody. Each lap is a json file about 500kB - 1MB in size and holds all the data that can be displayed in the app. Notably the position ( so you can load that lap directly into the map page ) and the data displayed by the graphs (so you can load it as a reference there as well.) Pointer to this struct is distributed to pages that need it so they can access it! The provider has a core logging loop that is running on another thread so the whole UI doesn’t have to redraw each time you log new data. (About 60 times a second.) State and Settings Providers Next, I have implemented a StateProvider and an SettingsProvider . These two are basically a drop in replacement of what was stored in the Sidebar and SettingsPage respectively. Difference between the two is that the StateProvider isn’t stored between app restarts. Similarly to how the TelemetryProvider works, each of the pages that need these values get a shared pointer (or an Arc in rust) and can access the values. What’s next Going further I will keep my focus on the map page. Finish it, and then start polishing the app for the final ship! Wish me luck and have a nice day!
Devlog 24 HI! All of the time on this devlog was basically just driving in circles. And I mean that. I have recorded all of the outsides and insides of all tracks in the game to get the data for the map page. It was very teidius and very boring. Like very very boring. There are 31 tracks in LMU (including each layout) and on every one of them I had to do an out lap, the ouside, another out lap and the inside. So 4laps for each. That is about 15min per layout. Yeah it was a long one. And the recordings aren’t perfect either! I will now have to somehow process them all to get them ready for the ship. You can watch the timelapses of this process here if you wish. https://lapse.hackclub.com/timelapse/OQcismBwxbBB https://lapse.hackclub.com/timelapse/le3Lta0RxcUA https://lapse.hackclub.com/timelapse/XRf98OimmUk9 Anyway. Have a nice day!
Devlog 25 I know I have just made a devlog like yesterday but holy s*** the track references work so well. They are practically perfect . Besides the references I have also implemented the delta time between the 2 cars! That has really tied the page together. If I can say so myself, we are getting pretty close to the final ship . There is not much needed to implement. The obvious are bugfixes, and some simple onboarding. But really, that’s it! Everyone who is following or caring about this project can expect a ship in the next week or so. In my final devlog I will also do a writeup on this project as a whole, from the coarse beginnings in Dyoxys, trough Tauri, to the sweet home of EGUI. There will also be a trailer video and a demo for all the raters :D Anyway for now you can have this preview of the map page! Stay tuned!
Devlog 26 Hiiiii For the past few hours I have been working on polishing the app and get it to a shippable state overall. There is still work left to do, but I am getting there. I have set up a simple packager, and a simple script to use it. It automatically compiles the release version of the app and packages it into a windows installer a Debian .deb package and a pacman package. I have also (after like 2 hours of struggeling with it) added an Icon for the app. So now it looks nice!There has been a lot of new bugfixes as well and the app has been tested by my friend so it should be somwhat usable, tho the setup UX should be improved upon. If you wish you can download the app from here: https://github.com/Karlito05/TelemetryLMU/releases/tag/v0.2.3 Well that is all I have for you all today, so have a nice one :)
Devlog 27 For the past few hours I have been polishing the app up. The main you’ll probably see are the onboarding dialogs. A global one pops up when you first launch the app and then one for each page when you first enter them. Another change I have done is that I made the ghosts on the map page be based on time and not data point index.
Devlog 28 Today is gonna be a big day, because I will ship the project. There is a few things left to do tho. Mainly the readme and the demo video! In my last and next devlog I will also make a write up on the story of the whole project so far. Besides that I have yesterday refactored the whole codebase so now there aren’t just 5 monolithic files. I went for a more react like approach with the structure being divided into pages and components. Sadly there isn’t enough time until the ship to touch up on some old UI and UX problems in the edit view of the graphs, neither is there time to add more fields. This will be done in the near future! Overall I am very happy how the app turned out. But this is not the end of the development this is just the end of the stardance journey!
Devlog 29 - The end So this is the last one, huh. Here is the full write up on this project as I promised. Chapter 1 - The beginnings This project started about 3 months ago. I started experimenting with just getting the data and plotting it. Just for fun as an exercise to learn rust. Then I realized that there actually isn’t a proper working telemetry tool that works on linux. So I did some research… and I decided that I am going to make the app in Dioxus. Chapter 2 - The Dioxus era This leads us to the shortest of eras. The Dioxus era. Nothing really happened here and quite frankly I don’t even remember it that much. There aren’t really any git commits because I didn’t have that setup yet. One thing i remember tho is that I couldn’t figure out how to draw the garphs, because Dioxus is based on web technologies but weirdly becuase you are writing HTLM like syntax but in rust. And that was the main reason I decided to switch to Tauri. Chapter 3 - The Tauri era At first Tauri was the best framework ever made for me. That is because I already kinda knew react, it was simple to understand and I could really lean into the split frontend and backend architecture. This sadly proved very inefficient for the graph view which needs to render thousands of points each frame. Since it was too much for the basic HTML canvas I have switched to using WebGL with numerous downsampling techniques. This was just a bandaid fix though. I have also ran into bunch of architectural issues with the whole split frontend and backend thing. Accessing the telemetry data proved to be very difficult and inefficient. I remember that I ran each of the graphs on a separate thread. This was so stupid. I don’t even remember how I could’ve come up with such a stupid idea :D. It just led to memory leaks and threads uncontrollably spinning up and not stopping. I am sure that all of that could’ve been easily avoided with simpler architecture but at that point I was at my lowest point of this project, so I didn’t even have the energy to do it. I also had the state of the frontend so fragmented which didn’t help. And the whole retained mode GUI thing just wasn’t well suited for this kind of app. And that is when I decided to do a complete rewrite in pure rust! Chapter 4 - The sweet EGUI I didn’t know it at the time, but this was the best idea on what to do with the project. I remember that I was very split between just shipping it half done and finishing it just because of how bad the development experience with Tauri was (sorry Tauri devs, it’s not a you thing, it’s a me thing). It took about 30h to fully rewrite the app with EGUI, which looking back at it isn’t too bad. It felt like ages though. It didn’t help that almost none of the work in this “chapter” did AI. Which at the end of the day is better! Although my style of writing EGUI code was let’s say original… I have just put everything into one file and that grew very fast :D. I had like 5 files that were about 800 lines each. That has since luckily changed. (I have adopted more of a React style file structure.) Anyway at the end of the rewrite I kinda started loving EGUI and that hasn’t stopped since. I continued to develop the Map page in EASY which was pretty easy. But then I needed the track limits data for the map page. This was a bit of a roadblock… First I have tried to extract the data directly from the game, however this was inaccurate and the track width was missing entirely. So then I tried to download an up to date image of the top down view of the track and extract the inside and outside line from it and match it to the in game data. This partially worked better, still not great tho. So there was only one option left. And that was to painfully drive each layout of each track by hand. This took almost 7h of just driving in circles. After that it was smooth and buggy sailing until the ship. Everyone who read this, have a beautiful day.
Ships:
Telemetry LMU An application for both Windows and Linux to visualize the telemetry data from Le Mans Ultimate What it does: This application collects, stores, and visualizes data from a racing simulator called Le Mans Ultimate. The main goal: Allow users to analyze their driving and learn from their data through an easy-to-use interface. The requirements: Performance, nice and simple UI, expandability, minimal setup. Results: Main goal: Achieved. (I wouldn’t be shipping this app otherwise) Performance: On average the app uses 4% of CPU and 250Mb of RAM under full load. That is less RAM usage than running Spotify in the background. Nice and simple UI: This is personal preference, however in my opinion I think i succeeded. Expandability: The architecture of the app is very modular so this also isn’t a problem. Setup: On windows there is none (except installing the app), on linux there is one dependency (this is sadly unavoidable.) Some stats: 200+ hours of development time (including the time before Stardance) 250+ commits 6 000+ lines of Rust...
|
1793152635.3407772
|
1793239035.3407772
|