|
36393
|
internet archive DS by @mikhailnotfish | Stardance
|
mikhailnotfish
|
1
|
33.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-08T23:53:42Z", "hours": 33.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "internetarchiveDS has been completed! i have changed the UI, made a 754 page long essay of a readME, and made a very detailed instruction manual of how to download and setup the program (it isnt plug and play) a suppose there isnt very much else to do now, i hope you have a nintendo DS! or you’ll have to download a video, as proof that it works. (sorry its big i tried to compress it)", "repo": "https://github.com/mikhailnotfish/InternetArchiveDS", "demo": "https://github.com/mikhailnotfish/proof-it-works/releases/tag/v1.0"}]...
|
[{"post_id": 75853, "ts": "202 [{"post_id": 75853, "ts": "2026-10-01T10:49:13Z", "hours": 5.4669, "text": "LADIES AND GENTLEMEN i am very happy to announce that, INTERNETARCHIVEDS IS ALMOST FINISHED!!!! in the previous devlog, i was facing a guru meditation error. i figured out that it was because i misspelt “ITCM” as “ITC” and therefore the whole video parser didnt load. one letter. i know. now, i have had about a thousand different issues with macroblock alignment, and finally figured out the issue- the AUDIO. i know, the audion has nothing to do with the video, but it ACTUALLY DOES! you see, the audio is loaded in before every frame… and the way gericom did it worked for itag7, but doesnt work for any other mpeg4 version. that audio placement, sets the macroblock back by one frame every time, corrupting the video. but now, i put a filter into the php server to only search for videos 20MiB and under, so that they play fast fast. now that the whole pull echo flush system works, all i need to do is remove the debug code, (it takes forever) change the ui, and picture for the top screen, and internetarchiveDS will be ready for you to use!!! if you have a ds of course. also i encoded a video to test on it, here it is for you guys to see!"}, {"post_id": 67193, "ts": "2026-09-13T07:56:08Z", "hours": 5.2714, "text": "as stardance begins to come to an end, the time crunch begins to get more serious. in these past 5 hours, i have gotten search to work perfectly, and ran into a guru meditation error, with some very strange hexadecimal values. for example the first 3 rows are all 00000000 and address and pc are both 00000030. things like r8 are ffffffff, and the stackdump is very unusual. there is a photo for you to see the stackdump for yourself. so far im still trying to get the vidfeo to play, i havent even started on the json parser yet! im using a pre- encoded video! anyway stay tuned to see if my 10 day holiday lock in will let me finish this project, and obtain the ultimate prize from the shop."}, {"post_id": 52184, "ts": "2026-08-22T08:41:22Z", "hours": 6.9197, "text": "ladies and gentlemen DO I HAVE A STORY TO TELL! i know, its been 20 days scince my last devlog… but ive made some uncomprehendable progress on the project. in these 7 hours, i have managed to get the proxy server to work with the archive, ive managed to get the dsi to not guru meditate, and actually connect to the wifi using the old wpa wifi protocol! that was the problem with the library im using, DSWIFI. the ersion of dswifi im using, is an old one, from 10 years ago. back befre the 2.0 update when they added calcio. back then dswifi didnt hav support for anything other that wpa, no wap, 1,2,3 nothing. after that, i actally managed to get working search results! i hosted the php proxy using msys bash, whatever works i guess, and the dsi is now recieving and transmitting requests and data through the proxy to the internetarchive. but my next bottleneck! back ten years ago, you tube was really weak, primitive, low quality. and even then, the dsi had do you every last rescource on te lowest data type, ITAG 7, to be able to run. but the project extracts RAW JSON METADATA, which as you know can be really bulky. so my next move will be to make a filter for my php server, to only show results under a certain size, so the json metadata will be processable."}, {"post_id": 39326, "ts": "2026-08-02T07:25:10Z", "hours": 1.6669, "text": "today I spent a lot of time investigating the original YouTubeDS ROM to figure out what is missing and why my rebuilt version does not perfectly match the original.The good news: I was able to confirm that the ROM filesystem is not the issue. Using Tinke and ndstool, I extracted both the original ROM and my rebuilt ROM, then compared all of the files inside them. The fonts, keyboard assets, menus, logos, and other resources are identical.This means the problem is somewhere deeper: inside the compiled ARM9 binary.The original YouTubeDS ARM9 is around 447KB, while my rebuilt version is around 335KB. That missing size is not from assets or files — it is from the compiled code itself. Right now I do not know exactly what is different between the two builds, and without more information it is difficult to recreate the original binary.I have also been looking through the source code, build files, and compiler output to find possible causes, but the remaining possibilities are things like different compiler settings, missing build steps, or code that was present in Gericom’s original environment but is not available anymore.At this point, the biggest step forward is waiting for a response from Gericom. Since he created YouTubeDS originally, he may be able to provide information about the original build environment, missing files, or how the original ROM was produced.Until then, there is not much more I can safely change without risking moving further away from the original. The current goal is still to preserve YouTubeDS and make it usable again for InternetArchiveDS, since the original YouTube API it depended on shut down years ago.For now, the investigation continues — but we have narrowed the problem down from “the whole ROM is different” to “the compiled ARM9 does not match the original.”"}, {"post_id": 36940, "ts": "2026-07-29T10:55:05Z", "hours": 6.9997, "text": "Today I did something I genuinely did not think I would be able to do.I revived an old Nintendo DS homebrew project.The goal was not to remake YouTubeDS, but to bring the original project back to life so it could be preserved and used as inspiration for future projects like InternetArchiveDS. The journey was much harder than I expected.At the start, I had a folder full of old source code, but the world it was built for was mostly gone. Libraries were missing, build files were outdated, and the project depended on old versions of tools that were no longer set up correctly. I spent hours digging through Makefiles, finding missing dependencies, rebuilding libraries manually, and trying to understand how everything connected.There were so many moments where it felt like I was one error away from giving up. I had to rebuild parts of the devkit environment, compile libraries like libfat again, fix linker issues, repair paths, and figure out why the final ROM packaging step kept failing.The most frustrating part was that the code itself was fine. The challenge was rebuilding the entire devkitpro system around it.After around 14 hours of debugging, something incredible happened.The build finally completed.I copied the ROM onto my DSi, launched it, and saw it load exactly like the original compiled version. No extra steps, no broken menus, no weird crashes. It was the exact moment where every tiny fix, every error message, and every hour of searching suddenly became worth it.Seeing old code from years ago come alive again on real hardware was an amazing feeling. This project reminded me why I love programming: sometimes the biggest victories come from solving problems nobody else sees."}, {"post_id": 34435, "ts": "2026-07-25T04:39:23Z", "hours": 4.2336, "text": "Today I spent my time trying to bring YouTubeDS, an open-source Nintendo DS homebrew application created by Gericom, back to life. While I expected to spend most of the session coding, nearly all of my progress came from reverse engineering and troubleshooting an outdated development environment. I tracked down missing source files, resolved linker errors caused by an absent API key, and compared my rebuilt binaries against the original ROM to understand why they behaved differently.After digging through Makefiles, compiler output, map files, and the generated ROM headers, I discovered that the project was originally built using an older version of devkitPro and libnds. Modern releases automatically link against the newer Calico runtime, producing binaries that differ significantly from the original build and refuse to run correctly. I experimented with build flags, linker specifications, and library configurations before confirming that the real solution is recreating the original toolchain rather than patching the project itself.Although I haven’t produced a working ROM just yet, I now understand exactly why the project fails on modern tools. The next step is installing an older version of the Nintendo DS development environment so the application can be rebuilt as it was originally intended. Even though this was a debugging-heavy session, I made meaningful progress toward preserving and reviving an abandoned piece of Nintendo DS homebrew."}, {"post_id": 30608, "ts": "2026-07-18T10:06:51Z", "hours": 2.7964, "text": "TODAY: i tried to compile my 10 year old software, debug some binary, download gh repositories, TRY FOR ONE BLOODY HOUR TO FIGURE OUT WHY IT WOULDNT COMPILE figured out why it wouldnt compile, realize that linux is too hard, and fell asleep. then i decideed i would try again, debugged some code, and found that it wouldnt compile because it thought somthing didnt exist. im going to try to fix it, if anyone knows linux mesage me pleease"}]...
|
Title: internet archive DS by @mikhailnotfish | St Title: internet archive DS by @mikhailnotfish | Stardance
Devlogs:
TODAY: i tried to compile my 10 year old software, debug some binary, download gh repositories, TRY FOR ONE BLOODY HOUR TO FIGURE OUT WHY IT WOULDNT COMPILE figured out why it wouldnt compile, realize that linux is too hard, and fell asleep. then i decideed i would try again, debugged some code, and found that it wouldnt compile because it thought somthing didnt exist. im going to try to fix it, if anyone knows linux mesage me pleease
Today I spent my time trying to bring YouTubeDS, an open-source Nintendo DS homebrew application created by Gericom, back to life. While I expected to spend most of the session coding, nearly all of my progress came from reverse engineering and troubleshooting an outdated development environment. I tracked down missing source files, resolved linker errors caused by an absent API key, and compared my rebuilt binaries against the original ROM to understand why they behaved differently.After digging through Makefiles, compiler output, map files, and the generated ROM headers, I discovered that the project was originally built using an older version of devkitPro and libnds. Modern releases automatically link against the newer Calico runtime, producing binaries that differ significantly from the original build and refuse to run correctly. I experimented with build flags, linker specifications, and library configurations before confirming that the real solution is recreating the original toolchain rather than patching the project itself.Although I haven’t produced a working ROM just yet, I now understand exactly why the project fails on modern tools. The next step is installing an older version of the Nintendo DS development environment so the application can be rebuilt as it was originally intended. Even though this was a debugging-heavy session, I made meaningful progress toward preserving and reviving an abandoned piece of Nintendo DS homebrew.
Today I did something I genuinely did not think I would be able to do.I revived an old Nintendo DS homebrew project.The goal was not to remake YouTubeDS, but to bring the original project back to life so it could be preserved and used as inspiration for future projects like InternetArchiveDS. The journey was much harder than I expected.At the start, I had a folder full of old source code, but the world it was built for was mostly gone. Libraries were missing, build files were outdated, and the project depended on old versions of tools that were no longer set up correctly. I spent hours digging through Makefiles, finding missing dependencies, rebuilding libraries manually, and trying to understand how everything connected.There were so many moments where it felt like I was one error away from giving up. I had to rebuild parts of the devkit environment, compile libraries like libfat again, fix linker issues, repair paths, and figure out why the final ROM packaging step kept failing.The most frustrating part was that the code itself was fine. The challenge was rebuilding the entire devkitpro system around it.After around 14 hours of debugging, something incredible happened.The build finally completed.I copied the ROM onto my DSi, launched it, and saw it load exactly like the original compiled version. No extra steps, no broken menus, no weird crashes. It was the exact moment where every tiny fix, every error message, and every hour of searching suddenly became worth it.Seeing old code from years ago come alive again on real hardware was an amazing feeling. This project reminded me why I love programming: sometimes the biggest victories come from solving problems nobody else sees.
today I spent a lot of time investigating the original YouTubeDS ROM to figure out what is missing and why my rebuilt version does not perfectly match the original.The good news: I was able to confirm that the ROM filesystem is not the issue. Using Tinke and ndstool, I extracted both the original ROM and my rebuilt ROM, then compared all of the files inside them. The fonts, keyboard assets, menus, logos, and other resources are identical.This means the problem is somewhere deeper: inside the compiled ARM9 binary.The original YouTubeDS ARM9 is around 447KB, while my rebuilt version is around 335KB. That missing size is not from assets or files — it is from the compiled code itself. Right now I do not know exactly what is different between the two builds, and without more information it is difficult to recreate the original binary.I have also been looking through the source code, build files, and compiler output to find possible causes, but the remaining possibilities are things like different compiler settings, missing build steps, or code that was present in Gericom’s original environment but is not available anymore.At this point, the biggest step forward is waiting for a response from Gericom. Since he created YouTubeDS originally, he may be able to provide information about the original build environment, missing files, or how the original ROM was produced.Until then, there is not much more I can safely change without risking moving further away from the original. The current goal is still to preserve YouTubeDS and make it usable again for InternetArchiveDS, since the original YouTube API it depended on shut down years ago.For now, the investigation continues — but we have narrowed the problem down from “the whole ROM is different” to “the compiled ARM9 does not match the original.”
ladies and gentlemen DO I HAVE A STORY TO TELL! i know, its been 20 days scince my last devlog… but ive made some uncomprehendable progress on the project. in these 7 hours, i have managed to get the proxy server to work with the archive, ive managed to get the dsi to not guru meditate, and actually connect to the wifi using the old wpa wifi protocol! that was the problem with the library im using, DSWIFI. the ersion of dswifi im using, is an old one, from 10 years ago. back befre the 2.0 update when they added calcio. back then dswifi didnt hav support for anything other that wpa, no wap, 1,2,3 nothing. after that, i actally managed to get working search results! i hosted the php proxy using msys bash, whatever works i guess, and the dsi is now recieving and transmitting requests and data through the proxy to the internetarchive. but my next bottleneck! back ten years ago, you tube was really weak, primitive, low quality. and even then, the dsi had do you every last rescource on te lowest data type, ITAG 7, to be able to run. but the project extracts RAW JSON METADATA, which as you know can be really bulky. so my next move will be to make a filter for my php server, to only show results under a certain size, so the json metadata will be processable.
as stardance begins to come to an end, the time crunch begins to get more serious. in these past 5 hours, i have gotten search to work perfectly, and ran into a guru meditation error, with some very strange hexadecimal values. for example the first 3 rows are all 00000000 and address and pc are both 00000030. things like r8 are ffffffff, and the stackdump is very unusual. there is a photo for you to see the stackdump for yourself. so far im still trying to get the vidfeo to play, i havent even started on the json parser yet! im using a pre- encoded video! anyway stay tuned to see if my 10 day holiday lock in will let me finish this project, and obtain the ultimate prize from the shop.
LADIES AND GENTLEMEN i am very happy to announce that, INTERNETARCHIVEDS IS ALMOST FINISHED!!!! in the previous devlog, i was facing a guru meditation error. i figured out that it was because i misspelt “ITCM” as “ITC” and therefore the whole video parser didnt load. one letter. i know. now, i have had about a thousand different issues with macroblock alignment, and finally figured out the issue- the AUDIO. i know, the audion has nothing to do with the video, but it ACTUALLY DOES! you see, the audio is loaded in before every frame… and the way gericom did it worked for itag7, but doesnt work for any other mpeg4 version. that audio placement, sets the macroblock back by one frame every time, corrupting the video. but now, i put a filter into the php server to only search for videos 20MiB and under, so that they play fast fast. now that the whole pull echo flush system works, all i need to do is remove the debug code, (it takes forever) change the ui, and picture for the top screen, and internetarchiveDS will be ready for you to use!!! if you have a ds of course. also i encoded a video to test on it, here it is for you guys to see!
Ships:
internetarchiveDS has been completed! i have changed the UI, made a 754 page long essay of a readME, and made a very detailed instruction manual of how to download and setup the program (it isnt plug and play) a suppose there isnt very much else to do now, i hope you have a nintendo DS! or you’ll have to download a video, as proof that it works. (sorry its big i tried to compress it)...
|
1792853438.0017605
|
1792939838.0017605
|
|
38798
|
a game for maxime by @yayabskt | Stardance
|
yayabskt
|
1
|
23.68
|
406
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T20:03:24Z", "hours": 23.0, "multiplier": 14.42, "payout": 406, "blessing": "neutral", "text": "i just remake an old game prototype and i make it better at first it was all for a friend brithday then i wanted to improve it !!! i’m proud because it was the first time i make a real game even if it’s not perfect. there one thing that i’m sad for is because i can’t carry on this project because of schools works ect and the problem in my country (france) so i upload all i can do. i hope you will enjoy !!! i put here a part of the github readme before you try playing: “ in the game you play a “maxime” it’s my friend hehehe the input are the arrow key or ZQSD if you have a turet “x” to deploy and click on it to improve if you have a grenade push “a” to throw it if you have a frezze power put “g” to deploy it “ have a good day and enjoy (be kind ) i hope you will apreciate the game <3", "repo": "https://github.com/ysxaybarroso-ux/game-for-a-friend-yaya", "demo": "https://ysxaybarroso-ux.github.io/game-for-a-friend-yaya/aniv%20maxime/static/html/index.html"}]...
|
[{"post_id": 78885, "ts": "202 [{"post_id": 78885, "ts": "2026-10-11T21:21:00Z", "hours": 0.6847, "text": "heyyyy this is the last dev log !!! ============================================================ i post this one because i wasn’t aware i need to go thought a vote for validation and then the vote so since last time i just add the back button for the last menu when you beat the intro and then andle the delete and create a run"}, {"post_id": 78151, "ts": "2026-10-09T19:52:36Z", "hours": 4.8989, "text": "##heyyy dev log 6?? i guess ? : i just work on debuging some problem with the old function that doesn’t take in parameter some of the player new variable for some upgrades and i finish by personnalize the game menu and make gradient slider + button and background of course not everything is in place but it take forms"}, {"post_id": 54480, "ts": "2026-08-25T14:30:06Z", "hours": 6.1694, "text": "dev log # 03 !!!! =============================================== i have finish the cinematic !!! i pass a long long time trying to understand how could i make the caracter by caracter animation and still hanfle me to put pause on the phrase or make the character change speed of talking between word so i finally make list of all the phrase and the word of the dialogue and put the in a list in the list to handle the time!!! ====================================================== btw i also put a redirection to another html page when the animation is finish because i don’t tell it but IT WAS ONLY THE INTRO OF THE GAME hehehehe now it redirect to the menu of the game with the start/new/select/setting/credit button and i already prepare the rest in html but i’m starting the css and js and then i will hide the different menu ================================================ p.s i’m making a quit personal story but all you have to know now is that the main character fall in a world and response bcs people attack him and then he kill a boss that tell i’m he’s free but the main character have to keep fighting ? what does that meen? who know? see next time!!!"}, {"post_id": 43951, "ts": "2026-08-09T12:24:58Z", "hours": 3.4106, "text": "heyyyy it been a long!!! dev log 2!! ========================================================= recently i have been working on the background chaniging depending the enemis to feel it more like a boss!!!! and i also work on adding a neww cinematic in the UNDERTALE style for now it’s quite messy but it will be allright : the cinematic will append when you kill the 2nd boss then you will discover the power of BUILDING THING and then you will have the power to fortify your place and now the game take a top new way now the next step is to make a level menu after this litle intro of 2 boss and a menu to choose level DIFFERENT LEVEL DIFFERENT PLACE TO DEFEND!!! and this will be the same gameplay but with building phase and a litle story !!!!"}, {"post_id": 33814, "ts": "2026-07-24T01:42:56Z", "hours": 8.9861, "text": "first dev log 01 #### today i’m starting this project ##### (in fact i started it a long time ago but i don’t make a project TT) today i’ve had 2 thing 1. ### a funny sound effect in the touret menue 1. if you ran out of money a french ref sound effect apear!2. ### i work on making a new boss 1. (the first one was making impulsion) the second one now shoot bullet##### i take a long time re-organazing the code to implemant the new boss as the function i’ve made wasn’t really optimize or create for future update so i try my best to make it clear**i also encounter a problem as when i try my player was losing hp every time !!!!** i fix it when i understand the function that calculate distance don’t update so the old distance where calculated, i was having negative distance in the terminal while debuging"}]...
|
Title: a game for maxime by @yayabskt | Stardance
Title: a game for maxime by @yayabskt | Stardance
Devlogs:
first dev log 01 #### today i’m starting this project ##### (in fact i started it a long time ago but i don’t make a project TT) today i’ve had 2 thing 1. ### a funny sound effect in the touret menue 1. if you ran out of money a french ref sound effect apear!2. ### i work on making a new boss 1. (the first one was making impulsion) the second one now shoot bullet##### i take a long time re-organazing the code to implemant the new boss as the function i’ve made wasn’t really optimize or create for future update so i try my best to make it clear**i also encounter a problem as when i try my player was losing hp every time !!!!** i fix it when i understand the function that calculate distance don’t update so the old distance where calculated, i was having negative distance in the terminal while debuging
heyyyy it been a long!!! dev log 2!! ========================================================= recently i have been working on the background chaniging depending the enemis to feel it more like a boss!!!! and i also work on adding a neww cinematic in the UNDERTALE style for now it’s quite messy but it will be allright : the cinematic will append when you kill the 2nd boss then you will discover the power of BUILDING THING and then you will have the power to fortify your place and now the game take a top new way now the next step is to make a level menu after this litle intro of 2 boss and a menu to choose level DIFFERENT LEVEL DIFFERENT PLACE TO DEFEND!!! and this will be the same gameplay but with building phase and a litle story !!!!
dev log # 03 !!!! =============================================== i have finish the cinematic !!! i pass a long long time trying to understand how could i make the caracter by caracter animation and still hanfle me to put pause on the phrase or make the character change speed of talking between word so i finally make list of all the phrase and the word of the dialogue and put the in a list in the list to handle the time!!! ====================================================== btw i also put a redirection to another html page when the animation is finish because i don’t tell it but IT WAS ONLY THE INTRO OF THE GAME hehehehe now it redirect to the menu of the game with the start/new/select/setting/credit button and i already prepare the rest in html but i’m starting the css and js and then i will hide the different menu ================================================ p.s i’m making a quit personal story but all you have to know now is that the main character fall in a world and response bcs people attack him and then he kill a boss that tell i’m he’s free but the main character have to keep fighting ? what does that meen? who know? see next time!!!
##heyyy dev log 6?? i guess ? : i just work on debuging some problem with the old function that doesn’t take in parameter some of the player new variable for some upgrades and i finish by personnalize the game menu and make gradient slider + button and background of course not everything is in place but it take forms
heyyyy this is the last dev log !!! ============================================================ i post this one because i wasn’t aware i need to go thought a vote for validation and then the vote so since last time i just add the back button for the last menu when you beat the intro and then andle the delete and create a run
Ships:
i just remake an old game prototype and i make it better at first it was all for a friend brithday then i wanted to improve it !!! i’m proud because it was the first time i make a real game even if it’s not perfect. there one thing that i’m sad for is because i can’t carry on this project because of schools works ect and the problem in my country (france) so i upload all i can do. i hope you will enjoy !!! i put here a part of the github readme before you try playing: “ in the game you play a “maxime” it’s my friend hehehe the input are the arrow key or ZQSD if you have a turet “x” to deploy and click on it to improve if you have a grenade push “a” to throw it if you have a frezze power put “g” to deploy it “ have a good day and enjoy (be kind ) i hope you will apreciate the game <3...
|
1792853436.850142
|
1792939836.850142
|
|
43430
|
Succend App by @Ashishdantinapalli | Stardance
|
Ashishdantinapalli
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T13:48:34Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have just started to make my landing site. I had used AI to make me an initial foundation, but I didn’t like a few of those components, so I decided to exchange that base code of my own code to make a landing site that appears more like a landing site for a good web application. As of right now none of the navbar links seem to work, but I’m as of right now coding them, so soon those links will start to work. If any of you are trying to test my landing site and try to login, it is probably not recommended as I don’t have a database or a backend yet, I have started with the frontend first. So once I’m done with my frontend, I will move onto my backend and database. The logo and the theme in the landing site, were by me, I spent a long time creating and deciding on a logo that would be ideal for me and my app Succend. But I’m still in the starting phases only, once I complete my web application which would be my MVP version, but later I will make a mobile version of it.", "repo": "https://github.com/ashishdantinapalli-star/succend-web", "demo": "https://succend-web.vercel.app/"}]...
|
[{"post_id": 78494, "ts": "202 [{"post_id": 78494, "ts": "2026-10-10T23:26:51Z", "hours": 4.9967, "text": "Succend Landing Site Welcome back to Succend. So basically last time I had used an AI generated base for building my landing site, so I don’t have to take too long to build everything from scratch. So as you can see here, I’ve successfully accomplished a few things like the background, and light and dark mode. I made a liquid-like background that has blobs that will slowly follow the mouse. I made this background to make the landing site look better, and overall more cool for a game-like app. I have also added a dark and light mode, so users that view my landing site can change the color to their liking. I did have a lot of errors, meaning at a point the liquid-background only worked on the header or the footer, or the cards in the other sections wouldn’t show up. I did use a little bit of AI to do some of the frontend, since I was a little confused about how I can make a proper flowlike background, and I also used it to debug anything I wasn’t sure how to. After this devpost, I will go back to coding, and add a few more features. I was actually designing the ranks that will appear on the leaderboard on the landing site, and I happen to decide on creating 42 entire ranks. So once I’m done designing at least 20 of those ranks, then I’ll proceed to recreate the leveling cards that appear on the homescreen, to better fit my app’s theme. Thank you for following along with my devpost!"}, {"post_id": 62965, "ts": "2026-09-06T15:12:03Z", "hours": 4.8697, "text": "I’m building my app called Succend. Succend is supposed to be a gamified experience where a user gets levels if they complete their everyday goals. I used a little bit of AI to build me a bit of the initial foundation for my web application so I can build my actual app on top of it. I used Typescript for the application code, React for building the UI. I had several errors that I came across while I was trying to make the navigation bar more animated, and to make it move while we scroll down the page. Working on such errors helped me understand how different components of the application interact better. The other links that can be seen on the navigation bar are as of now, not functioning yet, as I need to add components to each of those pages to make them functional. I believe in the next few days I’ll be able to make my entire landing site functional, and be able to get started on my actual web application where we sign up, and get an account, and make goals, where we can gain xp and levels."}]...
|
Title: Succend App by @Ashishdantinapalli | Starda Title: Succend App by @Ashishdantinapalli | Stardance
Devlogs:
I’m building my app called Succend. Succend is supposed to be a gamified experience where a user gets levels if they complete their everyday goals. I used a little bit of AI to build me a bit of the initial foundation for my web application so I can build my actual app on top of it. I used Typescript for the application code, React for building the UI. I had several errors that I came across while I was trying to make the navigation bar more animated, and to make it move while we scroll down the page. Working on such errors helped me understand how different components of the application interact better. The other links that can be seen on the navigation bar are as of now, not functioning yet, as I need to add components to each of those pages to make them functional. I believe in the next few days I’ll be able to make my entire landing site functional, and be able to get started on my actual web application where we sign up, and get an account, and make goals, where we can gain xp and levels.
Succend Landing Site Welcome back to Succend. So basically last time I had used an AI generated base for building my landing site, so I don’t have to take too long to build everything from scratch. So as you can see here, I’ve successfully accomplished a few things like the background, and light and dark mode. I made a liquid-like background that has blobs that will slowly follow the mouse. I made this background to make the landing site look better, and overall more cool for a game-like app. I have also added a dark and light mode, so users that view my landing site can change the color to their liking. I did have a lot of errors, meaning at a point the liquid-background only worked on the header or the footer, or the cards in the other sections wouldn’t show up. I did use a little bit of AI to do some of the frontend, since I was a little confused about how I can make a proper flowlike background, and I also used it to debug anything I wasn’t sure how to. After this devpost, I will go back to coding, and add a few more features. I was actually designing the ranks that will appear on the leaderboard on the landing site, and I happen to decide on creating 42 entire ranks. So once I’m done designing at least 20 of those ranks, then I’ll proceed to recreate the leveling cards that appear on the homescreen, to better fit my app’s theme. Thank you for following along with my devpost!
Ships:
I have just started to make my landing site. I had used AI to make me an initial foundation, but I didn’t like a few of those components, so I decided to exchange that base code of my own code to make a landing site that appears more like a landing site for a good web application. As of right now none of the navbar links seem to work, but I’m as of right now coding them, so soon those links will start to work. If any of you are trying to test my landing site and try to login, it is probably not recommended as I don’t have a database or a backend yet, I have started with the frontend first. So once I’m done with my frontend, I will move onto my backend and database. The logo and the theme in the landing site, were by me, I spent a long time creating and deciding on a logo that would be ideal for me and my app Succend. But I’m still in the starting phases only, once I complete my web application which would be my MVP version, but later I will make a mobile version of it....
|
1792853435.7780282
|
1792939835.7780282
|
|
48284
|
My own site! by @iam4tharv | Stardance
|
iam4tharv
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-08T06:52:40Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made my personal wesite using matrial 3 ui which is great and i have added dark mode light mode and i have used code rabbit for code quality and i have made it to have my project website listed too!!!", "repo": "https://github.com/iam4tharv/My-site", "demo": "https://iam4tharv.cyou"}]...
|
[{"post_id": 77768, "ts": "202 [{"post_id": 77768, "ts": "2026-10-08T06:35:01Z", "hours": 0.4603, "text": "Its my own personal website built with matrial 3 ui !!!!"}]...
|
Title: My own site! by @iam4tharv | Stardance
Dev Title: My own site! by @iam4tharv | Stardance
Devlogs:
Its my own personal website built with matrial 3 ui !!!!
Ships:
I have made my personal wesite using matrial 3 ui which is great and i have added dark mode light mode and i have used code rabbit for code quality and i have made it to have my project website listed too!!!...
|
1792853434.8956375
|
1792939834.8956375
|
|
48279
|
Hackpad by @silvonik | Stardance
|
silvonik
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-04T10:36:06Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a macropad and I use it for shortcuts like instead of pressing Ctrl C to copy I just press the 2nd button on my macropad to copy! I enjoyed building the macropad after getting all the parts, I wasn’t really good at soldering but now Im so much better after finishing the macropad!", "repo": "https://github.com/Silvonik/Hackpad", "demo": ""}]...
|
[{"post_id": 76685, "ts": "202 [{"post_id": 76685, "ts": "2026-10-04T10:32:20Z", "hours": 1.4117, "text": "#Devlog 3: Got all the parts shipped and I just assembled everything. I enjoyed soldering the parts onto the PCB!"}, {"post_id": 48221, "ts": "2026-08-16T15:04:04Z", "hours": 0.5719, "text": "#Devlog 2. Made the firmware pretty confusing on where to start but i got throught"}, {"post_id": 47750, "ts": "2026-08-15T21:43:46Z", "hours": 4.2642, "text": "#Devlog: 1. I made the Schematic, PCB, and Case for my Hackpad today, it was very hard because everything was new to me and i didnt know how to use them but i figured it out after very long periods of time."}]...
|
Title: Hackpad by @silvonik | Stardance
Devlogs:
Title: Hackpad by @silvonik | Stardance
Devlogs:
#Devlog: 1. I made the Schematic, PCB, and Case for my Hackpad today, it was very hard because everything was new to me and i didnt know how to use them but i figured it out after very long periods of time.
#Devlog 2. Made the firmware pretty confusing on where to start but i got throught
#Devlog 3: Got all the parts shipped and I just assembled everything. I enjoyed soldering the parts onto the PCB!
Ships:
I made a macropad and I use it for shortcuts like instead of pressing Ctrl C to copy I just press the 2nd button on my macropad to copy! I enjoyed building the macropad after getting all the parts, I wasn’t really good at soldering but now Im so much better after finishing the macropad!...
|
1792853433.7072678
|
1792939833.7072678
|
|
33259
|
Reinforcement Learning Camera Preset Generator by Reinforcement Learning Camera Preset Generator by @jdszekeres | Stardance...
|
jdszekeres
|
1
|
22.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T20:46:13Z", "hours": 22.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a reinforcement Machine Learning model that finds out what photo editing settings best replicate a filter. Photographers: Have you ever seen someone post an amazing before and after photo, but you have no idea what settings they used? Have no fear, just run this program overnight with the photos and find out what settings those gatekeepers used. How to try it: If you don’t want to train a model overnight, you can download cli.exe from releases to try it out with a model I trained on my yellow-tinted sunglasses. If you do want to train a model, gather before/after photos and follow the detailed instructions in the readme.", "repo": "https://github.com/jdszekeres/camera-filter-reinforcment-learning", "demo": "https://github.com/jdszekeres/camera-filter-reinforcment-learning/releases"}]...
|
[{"post_id": 72826, "ts": "202 [{"post_id": 72826, "ts": "2026-09-23T20:24:16Z", "hours": 0.7181, "text": "I fixed the video demo to show in a reasonable amount of time and built a demo cli with the sunglasses filter as an exe."}, {"post_id": 71602, "ts": "2026-09-21T04:13:54Z", "hours": 1.0219, "text": "I built a program that makes a cool animation to show before and after the filter"}, {"post_id": 70821, "ts": "2026-09-19T20:28:52Z", "hours": 2.5133, "text": "A good model run testing with 28 photos with my sunglasses as the filter: it’s finally scoring well ~88% and actually looks like it should. I’ve also worked on a cli tool to work with the ml_model output to apply filters, view histograms, list settings, and score models"}, {"post_id": 68908, "ts": "2026-09-16T00:57:47Z", "hours": 1.4067, "text": "first full model training and it went TERRIBLE. My scoring was based on the histogram for the image, so color is not preserved . These photos have very similar average light values. I’m going to rerun the model with a new scoring algorithm that scores each color channel individually."}, {"post_id": 29536, "ts": "2026-07-16T15:05:30Z", "hours": 0.3864, "text": "Test model done on basic settings (Averaging around 92% accuracy, which is good, but it did it in a completely different way) Next I’m going to train it on a more complex filter"}, {"post_id": 28903, "ts": "2026-07-15T14:38:59Z", "hours": 16.2756, "text": "I’m working on a reinforcement learning photo model that can determine what post-processing settings can be used to make an image look like certain filters (infrared filters, sunglasses, etc) Right now my biggest bottleneck is waiting for training. This test on a simple setting took over 16 hours to train. I am also not very familiar with RL, so I’m learning as I go."}]...
|
Title: Reinforcement Learning Camera Preset Genera Title: Reinforcement Learning Camera Preset Generator by @jdszekeres | Stardance
Devlogs:
I’m working on a reinforcement learning photo model that can determine what post-processing settings can be used to make an image look like certain filters (infrared filters, sunglasses, etc) Right now my biggest bottleneck is waiting for training. This test on a simple setting took over 16 hours to train. I am also not very familiar with RL, so I’m learning as I go.
Test model done on basic settings (Averaging around 92% accuracy, which is good, but it did it in a completely different way) Next I’m going to train it on a more complex filter
first full model training and it went TERRIBLE. My scoring was based on the histogram for the image, so color is not preserved . These photos have very similar average light values. I’m going to rerun the model with a new scoring algorithm that scores each color channel individually.
A good model run testing with 28 photos with my sunglasses as the filter: it’s finally scoring well ~88% and actually looks like it should. I’ve also worked on a cli tool to work with the ml_model output to apply filters, view histograms, list settings, and score models
I built a program that makes a cool animation to show before and after the filter
I fixed the video demo to show in a reasonable amount of time and built a demo cli with the sunglasses filter as an exe.
Ships:
I built a reinforcement Machine Learning model that finds out what photo editing settings best replicate a filter. Photographers: Have you ever seen someone post an amazing before and after photo, but you have no idea what settings they used? Have no fear, just run this program overnight with the photos and find out what settings those gatekeepers used. How to try it: If you don’t want to train a model overnight, you can download cli.exe from releases to try it out with a model I trained on my yellow-tinted sunglasses. If you do want to train a model, gather before/after photos and follow the detailed instructions in the readme....
|
1792853432.5493236
|
1792939832.5493236
|
|
48213
|
Level Up by @Lalith | Stardance
|
Lalith
|
4
|
78.0
|
654
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T05:23:19Z", "hours": 9.0, "multiplier": 12.16, "payout": 112, "blessing": "neutral", "text": "Shipped LevelUp! It started as a way to make a long self-development video easier to read. Now it has 28 chapters, practical plans, habits, focus timers, and a daily mission system. You can save an idea from a chapter and actually try it instead of forgetting it five minutes later. Milo is the little companion that reacts to your reading and focus activity. Everything important works locally, without an account or trackers. There’s also an offline progress system called Nexus, which handles changes across tabs and lets you move progress using encrypted files. This update mostly brought the different parts together. I fixed mobile layouts, added larger text and a quick tutorial, and made backups include the newer features. Cloud chat still needs work, and the app could be simpler, but the full version is live now. Try it: https://hustlenix.github.io/LevelUp/", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}, {"ship_num": 2, "ts": "2026-09-30T12:09:06Z", "hours": 11.0, "multiplier": 9.76, "payout": 103, "blessing": "neutral", "text": "This is my final ship for Level Up. Level Up originally started as a simple idea: turn a 20-hour self-improvement video into something I could actually read, search, understand, and use. It started as basically a local-first book. Over time I kept asking the same question: “How do I make this useful after someone finishes reading?” So I kept rebuilding it. Now Level Up is much closer to a complete self-improvement app. The main experience is built around Today — you open the app, see what you are working toward, get a clear next action, start a focus/study session, and track your progress instead of just consuming more content. I also added Goals, Progress, Study Mode, a daily planner, tutor/coach tools, local AI through Ollama, chapter search, quizzes, streaks, highlights, backups, restore, and a much more consistent UI across the app. The hardest part was making all of this work while keeping the original idea of Level Up: no account required, no cloud database, and your personal progress stays on your device. I had to rebuild a lot of the local state system, handle migrations and corrupted data, improve backup/restore, and make sure the app still works properly offline or without local AI installed. The thing I’m most proud of is that it no longer feels like a book with random features added around it. It finally feels like one connected product. If you test it, don’t just click around. Actually use it: Create a goal Open Today and follow the next action Start a focus/study session Read or study a chapter Check your Progress Refresh/reopen the app and see your data persist There are definitely things I could keep polishing forever, but I don’t want this project to become an endless cycle of “one more redesign.” This is the version I’m calling finished. Try it: https://hustlenix.github.io/LevelUp/ Source: https://github.com/Hustlenix/LevelUp Thanks to everyone who tested it, gave feedback, or followed the devlogs while this went from a small reading website into this. LEVEL UP. 🚀", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}, {"ship_num": 3, "ts": "2026-09-20T07:44:58Z", "hours": 18.0, "multiplier": 8.6, "payout": 153, "blessing": "neutral", "text": "I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser. The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system. What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?” Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center. On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters. Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers. How We Upgraded It Typed Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore. Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted. UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product. Into the Trenches (Challenges & Learnings) The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter. Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises. What I’m Proud Of Coherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver. Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}, {"ship_num": 4, "ts": "2026-09-11T17:51:26Z", "hours": 40.0, "multiplier": 16.67, "payout": 286, "blessing": "neutral", "text": "I built a free MVP called Level Up : a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser. The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research. What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search. The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage . Nothing leaves your machine. How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers: The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite , then emits JSON data and a 30KB MiniSearch index. The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules. The Deploy: Automated via GitHub Actions straight to GitHub Pages. Into the Trenches (Challenges & Learnings) The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken. Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.” Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup . We learned this the hard way. What I’m Proud Of Honest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so. Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable. The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}]...
|
[{"post_id": 81165, "ts": "202 [{"post_id": 81165, "ts": "2026-10-20T05:15:28Z", "hours": 9.1767, "text": "Finishing touches, i think this is coming to and end, so i lokced in in these 10 hours and did some major changes, like used HCB APi key and give MILO an life so it can interact with you guys, and bumped up the UI/UX to and next level and: Milo Talk with offline guidance and explicit approval before saving suggested actions. Replayable walkthrough and app-wide text sizing up to 150%. Distinct Deep Work/Cyberpunk themes; preserved Light/Dark. Install guidance, offline support, refreshed screenshots, and technical documentation. Fixed Settings headings and Deep Work contrast. As per your reviews and real time feedback, thank you guys!"}, {"post_id": 75526, "ts": "2026-09-30T11:33:39Z", "hours": 8.6486, "text": "I tried making this the final boss of Self Improvement APP, i think i am finally over, longin and start LEVELING UPPP!!!!!!!!!!!"}, {"post_id": 72287, "ts": "2026-09-22T16:18:34Z", "hours": 1.9244, "text": "I think there is nothing to be upgraded in this, all i have to do now is add subscryptions and make money!!!!!!!!!!!!"}, {"post_id": 71049, "ts": "2026-09-20T07:44:31Z", "hours": 0.8897, "text": "I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser.The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system.What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?”Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center.On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters.Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers.How We Upgraded ItTyped Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore.Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted.UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product.Into the Trenches (Challenges & Learnings)The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter.Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises.What I’m Proud OfCoherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver.Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages"}, {"post_id": 70978, "ts": "2026-09-20T04:38:42Z", "hours": 5.0881, "text": "Till now for my app i have like genrated the overall Backend and front end, but the frontend UI/UX is kinda mid. so i am thinking of improving it and opt for te second ship. In UI/UX i am thinking of doind this: 1. Today-first operating system shell — recommended Make /today/ the clear home of the product. Changes: Simplify navigation to: Today Learn Goals Progress More Make Today answer one question: “What should I do next?” Replace the long stacked Today page with a priority layout: Current goal One next action Start session Progress signal Recovery option Move goal creation into a focused onboarding/empty state instead of displaying a large form immediately. Turn Inbox, patterns, and reminders into compact secondary sections. Keep Goals, Focus, Review, Portfolio, and Roadmap as deep workspaces. Apply the same card, spacing, button, form, and empty-state system across all routes. Keep the existing editorial chapter experience intact. Backend/local-state work: Add a single typed local repository boundary. Harden localStorage validation and migrations. Improve backup/restore transaction handling. Make Ollama status and fallback behavior clearer. Add local data health diagnostics. Preserve offline use. Tradeoff: largest visible improvement, but touches navigation and the main execution surfaces. Editorial workspace polish Keep the existing navigation and route structure, but improve every page individually. Changes: Refine each page’s spacing and hierarchy. Upgrade cards, forms, progress indicators, and empty states. Add shared page headers and breadcrumbs. Improve mobile behavior without changing information architecture. Backend/local-state work remains the same. Tradeoff: lowest risk, but the product may still feel like multiple separate tools rather than one coherent operating system. Dashboard-centric command center Make /dashboard/ the main product and move most functionality into a dense professional workspace. Changes: Dashboard becomes a multi-panel command center. Today, Goals, Focus, Review, and Progress become dashboard tabs or panels. More information is visible at once. Strong for desktop power users. Tradeoff: efficient for experienced users but heavier, more complex, and less approachable on mobile."}, {"post_id": 70451, "ts": "2026-09-19T07:02:36Z", "hours": 8.2389, "text": "I thought to keep this as a normal book website for a 20 hr video, until i didnt i wanted to somehow plan to make money out of this, so I am not planning to improve this to a full App and Add pricing and make money out of it. The app is gonna be about implementing the things for the 20 hr video effectively in my website for a lil $. For now everyone can try it our for free on https://hustlenix.github.io/LevelUp"}, {"post_id": 68897, "ts": "2026-09-16T00:04:43Z", "hours": 1.1653, "text": "Me corrently using my own app to study and finish my home work🤣🤣. Youto use it on https://hustlenix.github.io/LevelUp/ for free"}, {"post_id": 67964, "ts": "2026-09-14T09:11:00Z", "hours": 2.6825, "text": "Instead of making this website feel like a simple website like a book, i am on a mission to make this website a full stack website for self improvement and i am thinking of adding paywall and make some money, but stripe isnt working from INDIA someone please help. STAY HARD!!!!!!!!!!!!!!!"}, {"post_id": 66090, "ts": "2026-09-11T17:47:02Z", "hours": 13.0997, "text": "I built a free MVP called Level Up: a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser.The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research.What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search.The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage. Nothing leaves your machine.How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers:The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite, then emits JSON data and a 30KB MiniSearch index.The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules.The Deploy: Automated via GitHub Actions straight to GitHub Pages.Into the Trenches (Challenges & Learnings)The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken.Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.“Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup. We learned this the hard way.What I’m Proud OfHonest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so.Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable.The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages"}, {"post_id": 50297, "ts": "2026-08-19T13:37:53Z", "hours": 12.4239, "text": "So called Devlog, 3 The agenda today is to simplify the home page. I paid attention to it for 8 hours and ended up with two fewer things on screen than when I started lol😅✌🏻. After removing the large hero box and changing the chapter list to an accordion, the homepage appeared empty. I created a big wishlists of items to add: heatmaps, quote-generators, streak-trackers, quiz-cards, XP-counters, etc. Everything was built local-first on Next.js 16 (static export on GitHub Pages) using localStorage keys like levelup-streak-v1 no tracking or backend APIs. I constructed a QuoteCard component to retrieve data from /data/quotes.json. All 22 tests passed on my machine, but for some reason, GitHub Actions fails a phantom TS7006 type error 8+ times in a row because of that one CI error. I kept spamming commit messages like “force CI re-run”, “force CI re-re-re-run, and this time ts-ignore…”. It turned out to be a weird CI environment mismatch that ate half my day. I discarded the quote card to avoid clutter. In what was shipped was a simple PrivacyBadge (“100% Private · On-Device Storage Only”) along with a ThemeTimeShift script that alters the –hue CSS variable based off your clock. Next thing we must do is transition smoothly into the chapter! Stay techulated or smtg. STAY HARD GNG!"}, {"post_id": 47521, "ts": "2026-08-15T14:15:55Z", "hours": 0.4181, "text": "Finished writing the git hub repo, and used AI to organise the words cause it was full of gramatical mistakes and stuff. I am ready to ship this project GNG, what did I miss, please check this out and give some valid review please."}, {"post_id": 47501, "ts": "2026-08-15T13:29:22Z", "hours": 13.9158, "text": "This is my trust worthy, non tracked website for leveling up in your life but somehow works without any login or stuff, the tracking just works, inspired by this 20 hour video: https://www.youtube.com/watch?v=wvaY5bG5p7A&t=65s which is totally worth it. To build this I started by getting the transcript for making this website, and with that 20k lines transcript I pasted it into claude to compact this, and it ran out of tokens, and i tried gemini too sadly it too ran out of tokens, and lastly I tried Opencode few time and it finally gave me the summary for this and after few hours i finished the website and pushed the code to git hub, branched it real good, and finally build and in actions started a build and deploy workflow and got this running. STAY HARD GNG!!!!!!!!"}]...
|
Title: Level Up by @Lalith | Stardance
Devlogs:
T Title: Level Up by @Lalith | Stardance
Devlogs:
This is my trust worthy, non tracked website for leveling up in your life but somehow works without any login or stuff, the tracking just works, inspired by this 20 hour video: https://www.youtube.com/watch?v=wvaY5bG5p7A&t=65s which is totally worth it. To build this I started by getting the transcript for making this website, and with that 20k lines transcript I pasted it into claude to compact this, and it ran out of tokens, and i tried gemini too sadly it too ran out of tokens, and lastly I tried Opencode few time and it finally gave me the summary for this and after few hours i finished the website and pushed the code to git hub, branched it real good, and finally build and in actions started a build and deploy workflow and got this running. STAY HARD GNG!!!!!!!!
Finished writing the git hub repo, and used AI to organise the words cause it was full of gramatical mistakes and stuff. I am ready to ship this project GNG, what did I miss, please check this out and give some valid review please.
So called Devlog, 3 The agenda today is to simplify the home page. I paid attention to it for 8 hours and ended up with two fewer things on screen than when I started lol😅✌🏻. After removing the large hero box and changing the chapter list to an accordion, the homepage appeared empty. I created a big wishlists of items to add: heatmaps, quote-generators, streak-trackers, quiz-cards, XP-counters, etc. Everything was built local-first on Next.js 16 (static export on GitHub Pages) using localStorage keys like levelup-streak-v1 no tracking or backend APIs. I constructed a QuoteCard component to retrieve data from /data/quotes.json. All 22 tests passed on my machine, but for some reason, GitHub Actions fails a phantom TS7006 type error 8+ times in a row because of that one CI error. I kept spamming commit messages like “force CI re-run”, “force CI re-re-re-run, and this time ts-ignore…”. It turned out to be a weird CI environment mismatch that ate half my day. I discarded the quote card to avoid clutter. In what was shipped was a simple PrivacyBadge (“100% Private · On-Device Storage Only”) along with a ThemeTimeShift script that alters the –hue CSS variable based off your clock. Next thing we must do is transition smoothly into the chapter! Stay techulated or smtg. STAY HARD GNG!
I built a free MVP called Level Up: a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser.The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research.What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search.The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage. Nothing leaves your machine.How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers:The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite, then emits JSON data and a 30KB MiniSearch index.The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules.The Deploy: Automated via GitHub Actions straight to GitHub Pages.Into the Trenches (Challenges & Learnings)The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken.Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.“Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup. We learned this the hard way.What I’m Proud OfHonest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so.Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable.The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages
Instead of making this website feel like a simple website like a book, i am on a mission to make this website a full stack website for self improvement and i am thinking of adding paywall and make some money, but stripe isnt working from INDIA someone please help. STAY HARD!!!!!!!!!!!!!!!
Me corrently using my own app to study and finish my home work🤣🤣. Youto use it on https://hustlenix.github.io/LevelUp/ for free
I thought to keep this as a normal book website for a 20 hr video, until i didnt i wanted to somehow plan to make money out of this, so I am not planning to improve this to a full App and Add pricing and make money out of it. The app is gonna be about implementing the things for the 20 hr video effectively in my website for a lil $. For now everyone can try it our for free on https://hustlenix.github.io/LevelUp
Till now for my app i have like genrated the overall Backend and front end, but the frontend UI/UX is kinda mid. so i am thinking of improving it and opt for te second ship. In UI/UX i am thinking of doind this: 1. Today-first operating system shell — recommended Make /today/ the clear home of the product. Changes: Simplify navigation to: Today Learn Goals Progress More Make Today answer one question: “What should I do next?” Replace the long stacked Today page with a priority layout: Current goal One next action Start session Progress signal Recovery option Move goal creation into a focused onboarding/empty state instead of displaying a large form immediately. Turn Inbox, patterns, and reminders into compact secondary sections. Keep Goals, Focus, Review, Portfolio, and Roadmap as deep workspaces. Apply the same card, spacing, button, form, and empty-state system across all routes. Keep the existing editorial chapter experience intact. Backend/local-state work: Add a single typed local repository boundary. Harden localStorage validation and migrations. Improve backup/restore transaction handling. Make Ollama status and fallback behavior clearer. Add local data health diagnostics. Preserve offline use. Tradeoff: largest visible improvement, but touches navigation and the main execution surfaces. Editorial workspace polish Keep the existing navigation and route structure, but improve every page individually. Changes: Refine each page’s spacing and hierarchy. Upgrade cards, forms, progress indicators, and empty states. Add shared page headers and breadcrumbs. Improve mobile behavior without changing information architecture. Backend/local-state work remains the same. Tradeoff: lowest risk, but the product may still feel like multiple separate tools rather than one coherent operating system. Dashboard-centric command center Make /dashboard/ the main product and move most functionality into a dense professional workspace. Changes: Dashboard becomes a multi-panel command center. Today, Goals, Focus, Review, and Progress become dashboard tabs or panels. More information is visible at once. Strong for desktop power users. Tradeoff: efficient for experienced users but heavier, more complex, and less approachable on mobile.
I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser.The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system.What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?”Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center.On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters.Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers.How We Upgraded ItTyped Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore.Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted.UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product.Into the Trenches (Challenges & Learnings)The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter.Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises.What I’m Proud OfCoherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver.Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages
I think there is nothing to be upgraded in this, all i have to do now is add subscryptions and make money!!!!!!!!!!!!
I tried making this the final boss of Self Improvement APP, i think i am finally over, longin and start LEVELING UPPP!!!!!!!!!!!
Finishing touches, i think this is coming to and end, so i lokced in in these 10 hours and did some major changes, like used HCB APi key and give MILO an life so it can interact with you guys, and bumped up the UI/UX to and next level and: Milo Talk with offline guidance and explicit approval before saving suggested actions. Replayable walkthrough and app-wide text sizing up to 150%. Distinct Deep Work/Cyberpunk themes; preserved Light/Dark. Install guidance, offline support, refreshed screenshots, and technical documentation. Fixed Settings headings and Deep Work contrast. As per your reviews and real time feedback, thank you guys!
Ships:
I built a free MVP called Level Up : a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser. The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research. What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search. The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage . Nothing leaves your machine. How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers: The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite , then emits JSON data and a 30KB MiniSearch index. The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules. The Deploy: Automated via GitHub Actions straight to GitHub Pages. Into the Trenches (Challenges & Learnings) The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken. Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.” Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup . We learned this the hard way. What I’m Proud Of Honest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so. Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable. The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages
I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser. The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system. What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?” Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center. On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters. Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers. How We Upgraded It Typed Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore. Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted. UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product. Into the Trenches (Challenges & Learnings) The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter. Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises. What I’m Proud Of Coherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver. Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages
This is my final ship for Level Up. Level Up originally started as a simple idea: turn a 20-hour self-improvement video into something I could actually read, search, understand, and use. It started as basically a local-first book. Over time I kept asking the same question: “How do I make this useful after someone finishes reading?” So I kept rebuilding it. Now Level Up is much closer to a complete self-improvement app. The main experience is built around Today — you open the app, see what you are working toward, get a clear next action, start a focus/study session, and track your progress instead of just consuming more content. I also added Goals, Progress, Study Mode, a daily planner, tutor/coach tools, local AI through Ollama, chapter search, quizzes, streaks, highlights, backups, restore, and a much more consistent UI across the app. The hardest part was making all of this work while keeping the original idea of Level Up: no account required, no cloud database, and your personal progress stays on your device. I had to rebuild a lot of the local state system, handle migrations and corrupted data, improve backup/restore, and make sure the app still works properly offline or without local AI installed. The thing I’m most proud of is that it no longer feels like a book with random features added around it. It finally feels like one connected product. If you test it, don’t just click around. Actually use it: Create a goal Open Today and follow the next action Start a focus/study session Read or study a chapter Check your Progress Refresh/reopen the app and see your data persist There are definitely things I could keep polishing forever, but I don’t want this project to become an endless cycle of “one more redesign.” This is the version I’m calling finished. Try it: https://hustlenix.github.io/LevelUp/ Source: https://github.com/Hustlenix/LevelUp Thanks to everyone who tested it, gave feedback, or followed the devlogs while this went from a small reading website into this. LEVEL UP. 🚀
Shipped LevelUp! It started as a way to make a long self-development video easier to read. Now it has 28 chapters, practical plans, habits, focus timers, and a daily mission system. You can save an idea from a chapter and actually try it instead of forgetting it five minutes later. Milo is the little companion that reacts to your reading and focus activity. Everything important works locally, without an account or trackers. There’s also an offline progress system called Nexus, which handles changes across tabs and lets you move progress using encrypted files. This update mostly brought the different parts together. I fixed mobile layouts, added larger text and a quick tutorial, and made backups include the newer features. Cloud chat still needs work, and the app could be simpler, but the full version is live now. Try it: https://hustlenix.github.io/LevelUp/...
|
1792853431.3206584
|
1792939831.3206584
|
|
28896
|
webdev log by @gdev | Stardance
|
gdev
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-15T04:30:58Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal website for myself to practice and learn different types of code and further strengthen my skills. I am very proud of the ui and how it turned out. Stuff like the clock, however, was pretty hard to get to work and took many tutorials. Also, finding a good way to add the Spotify now-playing system was complex.", "repo": "https://github.com/galaxydevvv/gdev", "demo": "https://galaxydevvv.github.io/gdev/index.html"}]...
|
[{"post_id": 68450, "ts": "202 [{"post_id": 68450, "ts": "2026-09-15T04:26:10Z", "hours": 0.8225, "text": "Log #4 // Bug fixes, website polishing, and finished the working clock & redid the socials tab and the footer"}, {"post_id": 20543, "ts": "2026-07-02T04:58:11Z", "hours": 4.8711, "text": "Log #3 // Full HTML & CSS Redesign and Revamp of Home page"}, {"post_id": 20083, "ts": "2026-07-01T16:31:21Z", "hours": 0.8675, "text": "Log #2 // CSS, Theme, Site Improvements, and Demo Launch"}, {"post_id": 19675, "ts": "2026-07-01T01:48:14Z", "hours": 1.4881, "text": "Log: #1 // HTML; Images, Text, Audio"}]...
|
Title: webdev log by @gdev | Stardance
Devlogs:
L Title: webdev log by @gdev | Stardance
Devlogs:
Log: #1 // HTML; Images, Text, Audio
Log #2 // CSS, Theme, Site Improvements, and Demo Launch
Log #3 // Full HTML & CSS Redesign and Revamp of Home page
Log #4 // Bug fixes, website polishing, and finished the working clock & redid the socials tab and the footer
Ships:
I made a personal website for myself to practice and learn different types of code and further strengthen my skills. I am very proud of the ui and how it turned out. Stuff like the clock, however, was pretty hard to get to work and took many tutorials. Also, finding a good way to add the Spotify now-playing system was complex....
|
1792853430.2068925
|
1792939830.2068925
|
|
9850
|
Cadpad by @Alexx | Stardance
|
Alexx
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-10T20:33:42Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finished the Cadpad! had to debug the code to get it working properly, and it works amazingly.", "repo": "https://github.com/xuealex2010-blip/hackpad-alex", "demo": ""}]...
|
[{"post_id": 78411, "ts": "202 [{"post_id": 78411, "ts": "2026-10-10T18:16:17Z", "hours": 3.7167, "text": "Built and created the Cadpad! After waiting for what felt like way too long for everything to arrive, I got everything and built the design. Soldering was a bit tricky, but I got it all done."}, {"post_id": 56798, "ts": "2026-08-28T18:30:00Z", "hours": 1.0333, "text": "QMK code finally compiled. Hopefully when I get to flashing it will work. I spent a lot of time sorting through the compiling errors that I was being given, many of which did not make sense, but seemed to resolve themselves when other issues were fixed. After a few hours, I was able to get the code set up for the encoders and special tap dance features compiled, and hopefully functional."}, {"post_id": 56227, "ts": "2026-08-27T22:00:10Z", "hours": 1.6878, "text": "QMK troubles: I began creating the code for the cadpad and hit my first issue when the output was a .hex file rather than the .uf2 needed, I figured out that this was due to the controller or bootloader not being supported by uf2. I tried to create a new one to set my own configuration. However, when I tried to compile it, I got a bunch of errors that I still haven’t solved (File errors such as missing keyboard name). I have also read much of the documentation to figure out how to implement tap dance, and encoders to make the most use out of the cadpad. While I am not done, progress is moving."}, {"post_id": 54800, "ts": "2026-08-25T22:38:14Z", "hours": 0.85, "text": "Starting QMK code, I have never used QMK before, and I was really confused when the guide to set it up was seemingly not working, turns out it just takes a long time. I’m still not sure exactly what I am doing, but I hope that trial and error and maybe a few tutorials will get me there in the end."}, {"post_id": 53897, "ts": "2026-08-24T16:27:39Z", "hours": 2.3206, "text": "Updating 3D models for the Cadpad, added a cool decal on the top, and fixed some errors that I had with the PCB, and collisions between the case. I had some trouble with KiCad exports causing some errors, but they ended up being non-critical. Also made sure that the PCB is very versatile, implementing a dual SMD and THT footprint so that if I want to learn how to solder some SMD components, I will have a great way to practice and get another cadpad! (Makes a great gift)"}, {"post_id": 53478, "ts": "2026-08-24T01:35:24Z", "hours": 3.35, "text": "Refining the 3D Models, I made a few revisions to the PCB earlier to ensure it fits the switches nicely, which required me to update the 3d models, I also took the time to refine them and get close to a final candidate. I also think that a great use for the rotary encoder for cad will be to implement it for arrow key navigation. Since its a dual layer numpad / macropad, using the knob for text navigation gives the Cadpad even more features!"}, {"post_id": 51968, "ts": "2026-08-21T23:17:23Z", "hours": 2.95, "text": "Learned a bit into KiCad footprint editing, my plan is to make a footprint that supports 2 major keyswitch types, Choc and MX style. The hope for this is to be able to not have the 5 PCBs in a typical MOQ to go to waste. So far it looks good, I had some trouble with the initial Choc footprint not lining up, as well as clearance under the SEEED XIAO, but a few tweaks were able to get me into CAD to see how the switches fit."}, {"post_id": 51362, "ts": "2026-08-20T23:51:51Z", "hours": 2.8833, "text": "Initial Planning: My first devblog, I am experimenting with ways to make the PCB more reliable, since I dont want the other 4 from the set of 5 to go to waste! I am not sure if this will eventually turn out into something usable, but willing to try."}]...
|
Title: Cadpad by @Alexx | Stardance
Devlogs:
Init Title: Cadpad by @Alexx | Stardance
Devlogs:
Initial Planning: My first devblog, I am experimenting with ways to make the PCB more reliable, since I dont want the other 4 from the set of 5 to go to waste! I am not sure if this will eventually turn out into something usable, but willing to try.
Learned a bit into KiCad footprint editing, my plan is to make a footprint that supports 2 major keyswitch types, Choc and MX style. The hope for this is to be able to not have the 5 PCBs in a typical MOQ to go to waste. So far it looks good, I had some trouble with the initial Choc footprint not lining up, as well as clearance under the SEEED XIAO, but a few tweaks were able to get me into CAD to see how the switches fit.
Refining the 3D Models, I made a few revisions to the PCB earlier to ensure it fits the switches nicely, which required me to update the 3d models, I also took the time to refine them and get close to a final candidate. I also think that a great use for the rotary encoder for cad will be to implement it for arrow key navigation. Since its a dual layer numpad / macropad, using the knob for text navigation gives the Cadpad even more features!
Updating 3D models for the Cadpad, added a cool decal on the top, and fixed some errors that I had with the PCB, and collisions between the case. I had some trouble with KiCad exports causing some errors, but they ended up being non-critical. Also made sure that the PCB is very versatile, implementing a dual SMD and THT footprint so that if I want to learn how to solder some SMD components, I will have a great way to practice and get another cadpad! (Makes a great gift)
Starting QMK code, I have never used QMK before, and I was really confused when the guide to set it up was seemingly not working, turns out it just takes a long time. I’m still not sure exactly what I am doing, but I hope that trial and error and maybe a few tutorials will get me there in the end.
QMK troubles: I began creating the code for the cadpad and hit my first issue when the output was a .hex file rather than the .uf2 needed, I figured out that this was due to the controller or bootloader not being supported by uf2. I tried to create a new one to set my own configuration. However, when I tried to compile it, I got a bunch of errors that I still haven’t solved (File errors such as missing keyboard name). I have also read much of the documentation to figure out how to implement tap dance, and encoders to make the most use out of the cadpad. While I am not done, progress is moving.
QMK code finally compiled. Hopefully when I get to flashing it will work. I spent a lot of time sorting through the compiling errors that I was being given, many of which did not make sense, but seemed to resolve themselves when other issues were fixed. After a few hours, I was able to get the code set up for the encoders and special tap dance features compiled, and hopefully functional.
Built and created the Cadpad! After waiting for what felt like way too long for everything to arrive, I got everything and built the design. Soldering was a bit tricky, but I got it all done.
Ships:
Finished the Cadpad! had to debug the code to get it working properly, and it works amazingly....
|
1792853429.03609
|
1792939829.03609
|
|
24700
|
GlintX by @taran | Stardance
|
taran
|
1
|
20.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T23:35:12Z", "hours": 20.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made GlintX, a hands-free phone cleaning machine that uses microfiber rollers, cleaning fluid, and UV lights to clean the outside of a phone. The phone sits vertically in the center while two rollers move along its sides using threaded rods and motors. It works kinda like a car wash. It’s main function to clean surface level grime and dirt to make your phone squeaky clean! :) The most challenging part was getting the mechanical system to work reliably. My original 3D-printed carriage broke twice the day before Open Sauce, so I redesigned it so that each roller had its own separate carriage. I also had to do a lot of wiring, debugging, and testing to get the motors, pump, and cleaning mechanism working together. I’m most proud that I was able to take an idea from a rough concept to a working machine that I could actually demonstrate to people at Open Sauce in just a few weeks. Seeing 100+ people reacting to my project amused, surprised, and amazed was really rewarding to me. If you want to test GlintX, place a phone vertically in the center of the machine and start the cleaning cycle. The rollers should move along both sides of the phone while the pump applies cleaning fluid. Please make sure the phone is secured properly before starting the cycle.", "repo": "https://github.com/tiger-14/GlintX", "demo": ""}]...
|
[{"post_id": 40957, "ts": "202 [{"post_id": 40957, "ts": "2026-08-04T20:22:08Z", "hours": 8.8961, "text": "We finally finished assembling and coding GlintX! We spent a lot of time putting together all the electronics and getting the motors, pump, and cleaning mechanism to work together properly. There was a lot of wiring and debugging involved, especially getting everything to fit inside the enclosure while still keeping all the connections accessible. The code also took some testing to get our carriage synced up and work properly. Our 3D printed carriage broke twice thed ay before open sauce and then we decided to have asplit design with each roller having their own carriage and that fixed it! After getting everything working, we brought GlintX to Open Sauce and got to demo it to 100+ people! It was really cool seeing people watching their phones get clean, providing their own feedback and appreciating our project! i am extremely grateful for hack club providing me with this awesome opportunity :)"}, {"post_id": 17385, "ts": "2026-06-28T04:36:11Z", "hours": 6.0561, "text": "We finally finished making the 3D model of our project! We spent a long time on the carriage design (the square piece in the attached vid that holds the two microfiber rollers) and getting the gap between rollers right to fit phones of all sizes, including cases. We went for a sleek futuristic look, so it had to be compact and not too big. In the end, while designing the cleaning fluid container, we realized in the end that we have only one water pump and one long pipe but 4 nozzles lol. So we have to cut them and find a way to arrange and connect them separately. The hardest part was the middle base — it supports the carriage, phone, and threaded rods simultaneously, and getting exact measurements was annoying since several Amazon listings don’t list dimensions. We also designed two internal pillars for structural integrity that double as mounts for the UV strips. The build splits into 6 parts: top lid, carriage, middle base, 2 parts for the shell, and bottom base for all the wiring and Arduino. This was because we wanted to 3D print this project easily without much supports. I also added all our files and created a README to our Github repo and also created a demo video. Our project is now ready to submit for the outpost funding! Thanks for reading! (sorry about making this a bit too long, I should’ve made this into multiple devposts)"}, {"post_id": 15850, "ts": "2026-06-25T19:30:12Z", "hours": 2.8833, "text": "Hey everyone! I finalized the parts list after almost 3 hours of research. Figuring out the motor setup was pretty challenging. I first looked at the NEMA 17, but that was too overkill, then went through 4+ different DC motors before picking TT motors, which have low RPM but high torque (required for spinning our threaded rods) unlike the other motors we looked at. Also had to ditch our first power adapter when we realized 1300mA wouldn’t handle 4 motors running simultaneously. Swapped it for a proper 12V 2A supply. Next, we have to create the CAD model for our project and submit the design!"}, {"post_id": 14723, "ts": "2026-06-23T22:41:50Z", "hours": 2.6067, "text": "Hello everyone! I tried to come up with an original and useful idea for a hardware project for Outpost and decided to make a phone cleaner! @Ben_A and I designed some of the mechanical design for the project in a whiteboard today. The cleaner uses two threaded rods to drive a microfiber roller up and down both sides of the phone, with UV lights lining the inner walls and a sliding door on top to add cleaning fluid. The phone sits vertically in the center. Hardest part of the design was figuring out the microfiber roller design. We ended up choosing threaded rods in order to make the roller move up and down along the phone’s screen and back. Next, we have to complete a proper diagram of our project, make the CAD models to 3D print, and finalize the parts list. We’re trying to find as many parts as possible in local stores nearby to avoid shipping delays!"}]...
|
Title: GlintX by @taran | Stardance
Devlogs:
Hell Title: GlintX by @taran | Stardance
Devlogs:
Hello everyone! I tried to come up with an original and useful idea for a hardware project for Outpost and decided to make a phone cleaner! @Ben_A and I designed some of the mechanical design for the project in a whiteboard today. The cleaner uses two threaded rods to drive a microfiber roller up and down both sides of the phone, with UV lights lining the inner walls and a sliding door on top to add cleaning fluid. The phone sits vertically in the center. Hardest part of the design was figuring out the microfiber roller design. We ended up choosing threaded rods in order to make the roller move up and down along the phone’s screen and back. Next, we have to complete a proper diagram of our project, make the CAD models to 3D print, and finalize the parts list. We’re trying to find as many parts as possible in local stores nearby to avoid shipping delays!
Hey everyone! I finalized the parts list after almost 3 hours of research. Figuring out the motor setup was pretty challenging. I first looked at the NEMA 17, but that was too overkill, then went through 4+ different DC motors before picking TT motors, which have low RPM but high torque (required for spinning our threaded rods) unlike the other motors we looked at. Also had to ditch our first power adapter when we realized 1300mA wouldn’t handle 4 motors running simultaneously. Swapped it for a proper 12V 2A supply. Next, we have to create the CAD model for our project and submit the design!
We finally finished making the 3D model of our project! We spent a long time on the carriage design (the square piece in the attached vid that holds the two microfiber rollers) and getting the gap between rollers right to fit phones of all sizes, including cases. We went for a sleek futuristic look, so it had to be compact and not too big. In the end, while designing the cleaning fluid container, we realized in the end that we have only one water pump and one long pipe but 4 nozzles lol. So we have to cut them and find a way to arrange and connect them separately. The hardest part was the middle base — it supports the carriage, phone, and threaded rods simultaneously, and getting exact measurements was annoying since several Amazon listings don’t list dimensions. We also designed two internal pillars for structural integrity that double as mounts for the UV strips. The build splits into 6 parts: top lid, carriage, middle base, 2 parts for the shell, and bottom base for all the wiring and Arduino. This was because we wanted to 3D print this project easily without much supports. I also added all our files and created a README to our Github repo and also created a demo video. Our project is now ready to submit for the outpost funding! Thanks for reading! (sorry about making this a bit too long, I should’ve made this into multiple devposts)
We finally finished assembling and coding GlintX! We spent a lot of time putting together all the electronics and getting the motors, pump, and cleaning mechanism to work together properly. There was a lot of wiring and debugging involved, especially getting everything to fit inside the enclosure while still keeping all the connections accessible. The code also took some testing to get our carriage synced up and work properly. Our 3D printed carriage broke twice thed ay before open sauce and then we decided to have asplit design with each roller having their own carriage and that fixed it! After getting everything working, we brought GlintX to Open Sauce and got to demo it to 100+ people! It was really cool seeing people watching their phones get clean, providing their own feedback and appreciating our project! i am extremely grateful for hack club providing me with this awesome opportunity :)
Ships:
I made GlintX, a hands-free phone cleaning machine that uses microfiber rollers, cleaning fluid, and UV lights to clean the outside of a phone. The phone sits vertically in the center while two rollers move along its sides using threaded rods and motors. It works kinda like a car wash. It’s main function to clean surface level grime and dirt to make your phone squeaky clean! :) The most challenging part was getting the mechanical system to work reliably. My original 3D-printed carriage broke twice the day before Open Sauce, so I redesigned it so that each roller had its own separate carriage. I also had to do a lot of wiring, debugging, and testing to get the motors, pump, and cleaning mechanism working together. I’m most proud that I was able to take an idea from a rough concept to a working machine that I could actually demonstrate to people at Open Sauce in just a few weeks. Seeing 100+ people reacting to my project amused, surprised, and amazed was really rewarding to me. If you want to test GlintX, place a phone vertically in the center of the machine and start the cleaning cycle. The rollers should move along both sides of the phone while the pump applies cleaning fluid. Please make sure the phone is secured properly before starting the cycle....
|
1792853427.9038346
|
1792939827.9038346
|
|
48156
|
AI3DSTUDIO by @Madhanraj | Stardance
|
Madhanraj
|
1
|
43.81
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T11:59:39Z", "hours": 33.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am shipping Stardance in its current state because my available development time has been limited by my Class 12 studies and school schedule. Although the complete vision for AI3D Studio is much larger and several features are still under development, I wanted to submit the working progress I have achieved rather than leave the project unshipped. The current version represents a major milestone of the project, with a functional 3D environment, AI interaction, computer-vision-based interaction, and database integration already implemented. I plan to continue developing the remaining features after shipping. This is not the final version of AI3D Studio — it is the first major milestone toward the complete system I originally envisioned.", "repo": "https://github.com/maddy9002/AI3DSTUDIO", "demo": "https://ai-3-dstudio-beta.vercel.app/"}]...
|
[{"post_id": 80154, "ts": "202 [{"post_id": 80154, "ts": "2026-10-16T13:02:11Z", "hours": 2.0864, "text": "Worked on the new ui for the html file, implementing necessary features for cad operations"}, {"post_id": 78229, "ts": "2026-10-10T01:32:38Z", "hours": 3.5311, "text": "Worked on AI3DSTUDIO’s advanced modeling capabilities, implementing Merge/Weld Vertices, Vertex Dissolve, Edge Dissolve, and Face Dissolve, including topology updates and Undo/Redo support.I also created requirements.txt and README.md, resolved Python dependency conflicts involving MediaPipe, NumPy, and OpenCV, verified the application launches successfully, and pushed the changes to the advanced-modeling branch on GitHub.Next, I’ll test the installation process in a fresh environment to make AI3DSTUDIO easier for others to try."}, {"post_id": 76640, "ts": "2026-10-04T07:39:58Z", "hours": 2.7172, "text": "After implementing Inset, AI3DSTUDIO’S mesh-editing system was expanded with several advanced modeling features, including Loop Cut, Bevel, Merge/Weld Vertices, Vertex Dissolve, Edge Dissolve, Face Dissolve, and Bridge Edge Loops. The editing workflow was also improved with Vertex, Edge, and Face selection and manipulation, along with Undo/Redo support for mesh-editing operations, significantly improving AI3DSTUDIO’S overall polygon-modeling capabilities."}, {"post_id": 74257, "ts": "2026-09-27T02:43:36Z", "hours": 2.4761, "text": "While upgrading the UI the features that I made had disappeared and now I worked to create a html file where i can link it to Stardance."}, {"post_id": 71170, "ts": "2026-09-20T11:58:49Z", "hours": 0.8817, "text": "Worked to improve the UI"}, {"post_id": 70963, "ts": "2026-09-20T03:52:57Z", "hours": 2.2081, "text": "Implemented and stabilized hand-based viewport interaction. The system now supports a screen-space hand cursor controlled by the index finger, pinch-based selection of vertices, edges, and faces, and two-hand gesture editing. Vertex movement is working, while edge and face movement are being integrated by transforming their underlying mesh vertices. Object Mode gestures for movement, rotation, and scaling remain functional. The next focus is completing reliable hand-based edge/face manipulation and improving pinch-based selection accuracy."}, {"post_id": 68678, "ts": "2026-09-15T15:07:33Z", "hours": 2.2633, "text": "Completed till multi-face selection"}, {"post_id": 64857, "ts": "2026-09-09T15:32:34Z", "hours": 5.7969, "text": "Completed the undo redo system for all the edit options."}, {"post_id": 47430, "ts": "2026-08-15T11:13:47Z", "hours": 22.1772, "text": "WORKING TO UPGRADE THE 3D DESIGNING SOFTWARE"}]...
|
Title: AI3DSTUDIO by @Madhanraj | Stardance
Devlo Title: AI3DSTUDIO by @Madhanraj | Stardance
Devlogs:
WORKING TO UPGRADE THE 3D DESIGNING SOFTWARE
Completed the undo redo system for all the edit options.
Completed till multi-face selection
Implemented and stabilized hand-based viewport interaction. The system now supports a screen-space hand cursor controlled by the index finger, pinch-based selection of vertices, edges, and faces, and two-hand gesture editing. Vertex movement is working, while edge and face movement are being integrated by transforming their underlying mesh vertices. Object Mode gestures for movement, rotation, and scaling remain functional. The next focus is completing reliable hand-based edge/face manipulation and improving pinch-based selection accuracy.
Worked to improve the UI
While upgrading the UI the features that I made had disappeared and now I worked to create a html file where i can link it to Stardance.
After implementing Inset, AI3DSTUDIO’S mesh-editing system was expanded with several advanced modeling features, including Loop Cut, Bevel, Merge/Weld Vertices, Vertex Dissolve, Edge Dissolve, Face Dissolve, and Bridge Edge Loops. The editing workflow was also improved with Vertex, Edge, and Face selection and manipulation, along with Undo/Redo support for mesh-editing operations, significantly improving AI3DSTUDIO’S overall polygon-modeling capabilities.
Worked on AI3DSTUDIO’s advanced modeling capabilities, implementing Merge/Weld Vertices, Vertex Dissolve, Edge Dissolve, and Face Dissolve, including topology updates and Undo/Redo support.I also created requirements.txt and README.md, resolved Python dependency conflicts involving MediaPipe, NumPy, and OpenCV, verified the application launches successfully, and pushed the changes to the advanced-modeling branch on GitHub.Next, I’ll test the installation process in a fresh environment to make AI3DSTUDIO easier for others to try.
Worked on the new ui for the html file, implementing necessary features for cad operations
Ships:
I am shipping Stardance in its current state because my available development time has been limited by my Class 12 studies and school schedule. Although the complete vision for AI3D Studio is much larger and several features are still under development, I wanted to submit the working progress I have achieved rather than leave the project unshipped. The current version represents a major milestone of the project, with a functional 3D environment, AI interaction, computer-vision-based interaction, and database integration already implemented. I plan to continue developing the remaining features after shipping. This is not the final version of AI3D Studio — it is the first major milestone toward the complete system I originally envisioned....
|
1792853426.7265368
|
1792939826.7265368
|
|
33751
|
Seedha Cut by @shreyas | Stardance
|
shreyas
|
1
|
14.41
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T16:54:37Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Seedha Cut (“straight cut”) is a free, open-source URL shortener that respects your privacy.Each link has an analytics page assigned to them. The challenging part for me was that the browser’s datetime-local picker gives local time, but the Vercel runs in UTC. Launch and expiry times kept firing at the wrong moment until I converted them to ISO/UTC on the client, checked them in UTC and rendered them back in local time . Im happy that im part of the free open source sofwtare movement which respects the users privacy", "repo": "", "demo": ""}]...
|
[{"post_id": 77569, "ts": "202 [{"post_id": 77569, "ts": "2026-10-07T14:38:48Z", "hours": 1.4089, "text": "I have fixed the background flickering whenever a user types the domain name or the url he wnats to shorten .the bug was affected due to a Each time the canvas resizes itself .Now this bug has ben fixed ."}, {"post_id": 76428, "ts": "2026-10-03T14:22:41Z", "hours": 0.8303, "text": "Finally i have fixed most of the bugs in the slug and unqiue link creation . The tool has been deployed via vercel added features are browser identification,unqiue clicks and direct referer"}, {"post_id": 73132, "ts": "2026-09-24T13:31:12Z", "hours": 2.8336, "text": "Heyy , I have been working on the dashboard for my links . The dashbaord will house all my links and their shortened ones along with action buttons such as Delete , View analytics and Edit . tweaking them to get them into action"}, {"post_id": 31271, "ts": "2026-07-19T15:27:30Z", "hours": 1.9611, "text": "I have been working on the analytics for created shortened links since the past 2 days .The analytics will be implemeneted using the Cookies on the client side i.e the browser .It will be used to identify every unqiue clicks , browser agents , user device,etc . The website will ask for consent to collect cookies from the user"}, {"post_id": 29542, "ts": "2026-07-16T15:20:01Z", "hours": 1.2564, "text": "i have added a custom slug feature with the ability to add Expiration date for teh created link .This will allow the users to fully customize their shortened links"}, {"post_id": 28890, "ts": "2026-07-15T14:12:57Z", "hours": 2.1672, "text": "I have added a client side component while we will allow users to shorten the link using the inhouse api with customizable options such as the expiration link . I also planning to implement a cookie based analytics for tracking the virtue of sharing the links and their search engines"}, {"post_id": 27694, "ts": "2026-07-13T14:05:53Z", "hours": 1.7589, "text": "I will be using PostgresSQL database hosted on the Neon DB instance as my primary database for my application .I have created the Link model with Unique ids, clicks,etc . I have also started working on the api routes for the shortening the links .All the created shortened links will be fetched through a api and rendered in to my dashbaord page"}, {"post_id": 27011, "ts": "2026-07-12T04:41:20Z", "hours": 0.4872, "text": "This is how the background for my web application looks !! Rigth now im working on the api routes for shortening the link"}, {"post_id": 26994, "ts": "2026-07-12T03:50:56Z", "hours": 1.3661, "text": "Im working on Background template consisting on Glitch animation of Letters and Numbers with a gradient effect .It will host my web applcation background . I have completed the components as well as the Dashboard areas work"}]...
|
Title: Seedha Cut by @shreyas | Stardance
Devlogs Title: Seedha Cut by @shreyas | Stardance
Devlogs:
Im working on Background template consisting on Glitch animation of Letters and Numbers with a gradient effect .It will host my web applcation background . I have completed the components as well as the Dashboard areas work
This is how the background for my web application looks !! Rigth now im working on the api routes for shortening the link
I will be using PostgresSQL database hosted on the Neon DB instance as my primary database for my application .I have created the Link model with Unique ids, clicks,etc . I have also started working on the api routes for the shortening the links .All the created shortened links will be fetched through a api and rendered in to my dashbaord page
I have added a client side component while we will allow users to shorten the link using the inhouse api with customizable options such as the expiration link . I also planning to implement a cookie based analytics for tracking the virtue of sharing the links and their search engines
i have added a custom slug feature with the ability to add Expiration date for teh created link .This will allow the users to fully customize their shortened links
I have been working on the analytics for created shortened links since the past 2 days .The analytics will be implemeneted using the Cookies on the client side i.e the browser .It will be used to identify every unqiue clicks , browser agents , user device,etc . The website will ask for consent to collect cookies from the user
Heyy , I have been working on the dashboard for my links . The dashbaord will house all my links and their shortened ones along with action buttons such as Delete , View analytics and Edit . tweaking them to get them into action
Finally i have fixed most of the bugs in the slug and unqiue link creation . The tool has been deployed via vercel added features are browser identification,unqiue clicks and direct referer
I have fixed the background flickering whenever a user types the domain name or the url he wnats to shorten .the bug was affected due to a Each time the canvas resizes itself .Now this bug has ben fixed .
Ships:
Seedha Cut (“straight cut”) is a free, open-source URL shortener that respects your privacy.Each link has an analytics page assigned to them. The challenging part for me was that the browser’s datetime-local picker gives local time, but the Vercel runs in UTC. Launch and expiry times kept firing at the wrong moment until I converted them to ISO/UTC on the client, checked them in UTC and rendered them back in local time . Im happy that im part of the free open source sofwtare movement which respects the users privacy...
|
1792853425.5565662
|
1792939825.5565662
|
|
23805
|
Inverted Pendulum by @runthebot | Stardance
|
runthebot
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T15:14:05Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an inverted pendulum and leant a lot about control theory.", "repo": "https://github.com/RunTheBot/inverted-pendulum", "demo": ""}]...
|
[{"post_id": 67424, "ts": "202 [{"post_id": 67424, "ts": "2026-09-13T15:11:02Z", "hours": 37.8686, "text": "This is one big catch-up log covering nine recordings. I worked on the initial design, rebuilt parts of the belt assembly, chose and mounted the encoders, dealt with the wiring, and started learning how to control the system with a state-space model and LQR. Starting the CAD I began by researching different mechanical options while building the model in Onshape. Before I could get far into the full assembly, I needed to settle details such as the shaft, bearings, supports, and how everything would fit together.The first recording was only 57 minutes because recording my screen was making everything lag. In the next session, I continued developing the pivot assembly. The shaft passes through a bearing mounted in a shaped support plate, with another support behind it.The following 2h 52m session continued the CAD work. I spent more time on the plates, their hole layouts, and the surrounding geometry. At this stage, I was still developing individual parts rather than working with a finished mechanism. Reworking the belt assembly I spent another 38 minutes remaking the belt-related parts. I moved between editing the plate and checking how everything fit in the full assembly. This made it easier to see how the rail, carriage, shaft supports, and belt system would work together.This is why the update contains several separate CAD sessions. I kept returning to the same mechanism as the design developed: first the pivot, then the plates and belt assembly, and eventually the encoder mounts and smaller hardware details.Choosing the encodersThe next problem was deciding which encoders to use. I researched different options and mounting arrangements, including AMT-style encoders, before deciding to use the encoders I already had. That took another 1h 1m.Choosing the encoder was only half of the problem. I still had to determine how to mount it and connect everything reliably. Encoder wiring pain The appropriately named “Encoder Wiring Pain” session lasted 3h 40m. I worked through the encoder connections and looked at mounting references while figuring out how the sensor would fit into the rest of the mechanism.After that, I spent another 1h 52m making smaller mechanical changes in Onshape. By this point I was working on details around the encoder housing, connector, fasteners, and nearby parts.These changes were individually small, but they mattered because the sensor needed to fit around the existing hardware without interfering with the moving assembly.Learning state space and LQR The longest of the first eight sessions was 5h 19m. I spent it coding, learning about state-space control and LQR, and continuing some of the CAD work.I worked through notes for a state-space model and LQR controller for a cart double-pendulum system. This included defining the system’s state vector and understanding how the state-space equations describe its motion.This part was mainly development and learning. I haven’t established a successful balancing test from these recordings yet, so the controller still needs to be implemented, tuned, and tested on the real mechanism.Hardware work and final CAD changes The last recording covers hands-on hardware work alongside a few final CAD changes. I worked on the wiring at my desk while using references such as the Raspberry Pi Pico pinout.Again, this recording ran much longer than the actual work. Please count it as roughly 4–5 hours rather than the full 7h 41m shown by Lapse."}, {"post_id": 56170, "ts": "2024-08-16T00:00:00Z", "hours": 0.0, "text": "Programming… AND TUNING!!!! and testing. No challange here really, smooth sailing"}, {"post_id": 56169, "ts": "2024-08-14T00:00:00Z", "hours": 0.0, "text": "Hours: 4h Started on rewiring, Using a SKR Pico for a stepper this time. passing encoder through a RP2350 since its a 5v sensor. Im using a SKR pico now sooooo… I first feed the 5V encoder signal through a Pico 2 to translate it to 3.3v"}, {"post_id": 56089, "ts": "2024-08-10T00:00:00Z", "hours": 0.0, "text": "Hours: 4 Very slow CADing of a redesign. Using a stepper motor now soo yay."}, {"post_id": 56088, "ts": "2024-07-09T00:00:00Z", "hours": 0.0, "text": "Chud day. Worked on amt alignment for second stage, quite fast, went through 4 iteration, testing and calculating spacing ending up making the tool below did the wireing for the amt"}, {"post_id": 56087, "ts": "2024-06-21T00:00:00Z", "hours": 0.0, "text": "Switched Hex shaft in CAD to a bored out hex shaft"}]...
|
Title: Inverted Pendulum by @runthebot | Stardance Title: Inverted Pendulum by @runthebot | Stardance
Devlogs:
Switched Hex shaft in CAD to a bored out hex shaft
Chud day. Worked on amt alignment for second stage, quite fast, went through 4 iteration, testing and calculating spacing ending up making the tool below did the wireing for the amt
Hours: 4 Very slow CADing of a redesign. Using a stepper motor now soo yay.
Hours: 4h Started on rewiring, Using a SKR Pico for a stepper this time. passing encoder through a RP2350 since its a 5v sensor. Im using a SKR pico now sooooo… I first feed the 5V encoder signal through a Pico 2 to translate it to 3.3v
Programming… AND TUNING!!!! and testing. No challange here really, smooth sailing
This is one big catch-up log covering nine recordings. I worked on the initial design, rebuilt parts of the belt assembly, chose and mounted the encoders, dealt with the wiring, and started learning how to control the system with a state-space model and LQR. Starting the CAD I began by researching different mechanical options while building the model in Onshape. Before I could get far into the full assembly, I needed to settle details such as the shaft, bearings, supports, and how everything would fit together.The first recording was only 57 minutes because recording my screen was making everything lag. In the next session, I continued developing the pivot assembly. The shaft passes through a bearing mounted in a shaped support plate, with another support behind it.The following 2h 52m session continued the CAD work. I spent more time on the plates, their hole layouts, and the surrounding geometry. At this stage, I was still developing individual parts rather than working with a finished mechanism. Reworking the belt assembly I spent another 38 minutes remaking the belt-related parts. I moved between editing the plate and checking how everything fit in the full assembly. This made it easier to see how the rail, carriage, shaft supports, and belt system would work together.This is why the update contains several separate CAD sessions. I kept returning to the same mechanism as the design developed: first the pivot, then the plates and belt assembly, and eventually the encoder mounts and smaller hardware details.Choosing the encodersThe next problem was deciding which encoders to use. I researched different options and mounting arrangements, including AMT-style encoders, before deciding to use the encoders I already had. That took another 1h 1m.Choosing the encoder was only half of the problem. I still had to determine how to mount it and connect everything reliably. Encoder wiring pain The appropriately named “Encoder Wiring Pain” session lasted 3h 40m. I worked through the encoder connections and looked at mounting references while figuring out how the sensor would fit into the rest of the mechanism.After that, I spent another 1h 52m making smaller mechanical changes in Onshape. By this point I was working on details around the encoder housing, connector, fasteners, and nearby parts.These changes were individually small, but they mattered because the sensor needed to fit around the existing hardware without interfering with the moving assembly.Learning state space and LQR The longest of the first eight sessions was 5h 19m. I spent it coding, learning about state-space control and LQR, and continuing some of the CAD work.I worked through notes for a state-space model and LQR controller for a cart double-pendulum system. This included defining the system’s state vector and understanding how the state-space equations describe its motion.This part was mainly development and learning. I haven’t established a successful balancing test from these recordings yet, so the controller still needs to be implemented, tuned, and tested on the real mechanism.Hardware work and final CAD changes The last recording covers hands-on hardware work alongside a few final CAD changes. I worked on the wiring at my desk while using references such as the Raspberry Pi Pico pinout.Again, this recording ran much longer than the actual work. Please count it as roughly 4–5 hours rather than the full 7h 41m shown by Lapse.
Ships:
I made an inverted pendulum and leant a lot about control theory....
|
1792853424.3405843
|
1792939824.3405843
|
|
43242
|
mtg tool by @flyingfish | Stardance
|
flyingfish
|
1
|
46.0
|
400
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-21T01:16:08Z", "hours": 46.0, "multiplier": 8.6, "payout": 400, "blessing": "neutral", "text": "i made a tool for making custom mtg cards in bulk i dont aurally know anything about mtg my brother just wanted me to make this", "repo": "https://github.com/dinotiger01/frfr", "demo": "https://github.com/dinotiger01/frfr/releases/tag/idk"}]...
|
[{"post_id": 71543, "ts": "202 [{"post_id": 71543, "ts": "2026-09-21T01:14:49Z", "hours": 1.4325, "text": "just some last minute repo fixes"}, {"post_id": 44887, "ts": "2026-08-10T22:42:40Z", "hours": 9.2114, "text": "it works on windows"}, {"post_id": 43638, "ts": "2026-08-09T00:43:02Z", "hours": 8.2292, "text": "i have spent the past 4 HOURS trying to fix a bug and nothing works(i am going to try to ship by the end of today if i can fix this stupid bug)"}, {"post_id": 42311, "ts": "2026-08-06T23:27:47Z", "hours": 8.6642, "text": "it can conect to an api now"}, {"post_id": 41448, "ts": "2026-08-05T17:41:26Z", "hours": 9.0586, "text": "it can export now"}, {"post_id": 39896, "ts": "2026-08-03T05:48:25Z", "hours": 4.0275, "text": "its too late in the day for this jusdt work for like 10 hrs today"}, {"post_id": 39784, "ts": "2026-08-02T23:52:07Z", "hours": 5.8589, "text": "ykyk"}]...
|
Title: mtg tool by @flyingfish | Stardance
Devlog Title: mtg tool by @flyingfish | Stardance
Devlogs:
ykyk
its too late in the day for this jusdt work for like 10 hrs today
it can export now
it can conect to an api now
i have spent the past 4 HOURS trying to fix a bug and nothing works(i am going to try to ship by the end of today if i can fix this stupid bug)
it works on windows
just some last minute repo fixes
Ships:
i made a tool for making custom mtg cards in bulk i dont aurally know anything about mtg my brother just wanted me to make this...
|
1792853423.222162
|
1792939823.222162
|
|
43204
|
Kasimirs Kebab by @laupi_oida | Stardance
|
laupi_oida
|
1
|
85.67
|
460
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T18:54:58Z", "hours": 48.0, "multiplier": 9.84, "payout": 460, "blessing": "neutral", "text": "I developed a rpg game with the framework LÖVE2D using Lua. I made my own textbox queue system, collision system, fight system, menu and you can change the keyboard layout. I learned that it’s important to write clean code and how to automate many processes. And somehow I learned more English than in school (I’m still bad at English).", "repo": "https://github.com/Laup0403/Kasimirs-Kebab/", "demo": "https://laupi-oida.itch.io/kasimirs-kebab"}]...
|
[{"post_id": 82214, "ts": "202 [{"post_id": 82214, "ts": "2026-10-24T09:38:39Z", "hours": 6.3717, "text": "TWIN! This is the last or the second last devlog. Here’s what i added: 1. Mobile controls In the settings you can now enable mobile mode. I think I made it really cool because I made 3 States and in 1 state you can see the arrows,in the other nothing and the complete screen is action1 and in the last you see the question buttons. That works really well I think 2. Sounds Some sounds are good some sounds are not so good but I think they match the games style and the sounds from the last chapter are really good I think 3. New main menu It looks the same but now I use buttons instead of areas and you can just control it with mouse or touchscreen and not arrow keys anymore I’m gonna send the game to my playtesters and see if they find any bugs (they are really good in bug finding) Bye Twin!"}, {"post_id": 81615, "ts": "2026-10-21T19:31:39Z", "hours": 4.5936, "text": "YOOOOOOOOOOOOOOOOOOOO TWIN!!! It’s done. I mean the story the game isn’t ready yet I added the castle and the isn’t Kasimir. Then you go into the kitchen and see a doner kebab. And what then happens I won’t spoiler. But after that comes: a paywall because why not? But I think the last chapters are a bit empty but I didn’t really had fun at the end. Löve was way more fun. Now there are the following the tasks: Updating the menu: There aren’t all chapters in the load scene Mobile controls: I want that everyone can play this game and I think mobile controls are necessary (not even all my friends have a PC) Language translation: I want German translation and Latin (just for prank), because that are the only languages I speak except English Audio: I’m really bad at sound but I think some sound will be good! We are so far but I still don’t see the end. Bye Twin!"}, {"post_id": 80813, "ts": "2026-10-18T21:04:19Z", "hours": 2.6544, "text": "Yo Twin! The City stands! The corners look a bit weird but ok. In the city there are 4 houses and 4 wise man inside that tell you something about Kasimir and if you speak to all of them the gate to the “real valley” opens. And I also changed the dialog with the doner guy, because the thief is now Kasimir and not a beetle. The next chapter will become a bit more chill, but the last chapter will be CRAZY. Trust me. Ok bye Twin!"}, {"post_id": 79979, "ts": "2026-10-15T18:38:49Z", "hours": 2.0311, "text": "Yo Twin! This time I drew more. Here’s everything I did: 1. I updated the Github readme and itch.io site 2. A smooth transition When the wall is broken there is a new path. When you go there the scene switches and the wall collapses so you can’t go back. 3. A bit of the town If you follow the path, you get into the town. This is the third chapter. The game shouldn’t be that long so after that there will come 2 more chapters: The REAL valley and then the castle where the legendary Kasimir sits and there will also be the kebab skewer(yay). Ok that was everything. Bye Twin!"}, {"post_id": 78833, "ts": "2026-10-11T18:34:52Z", "hours": 6.8011, "text": "Yo Twin! I must learn to make decisions because now I completely removed the fight system and you just do a puzzle. The Puzzle It is just some puzzle I made in PuzzleScript in the computer science lessons and I ported it to Godot but it it is a bit challenging. The crazy effects are back! Now after you solved the puzzle Hans comes to you and shows you his cool new gadget. And here I made also some plans for the future: Audio - The puzzle and the new Hans scene would be so much cooler and I already have an idea Translation - For now it should just be German because I speak that and Latin just for prank and I think for other languages I need help but I don’t want to use AI And I decided I will make the game a bit shorter I hope I will get it to like 30-60 minutes. Ok, Bye Twin!"}, {"post_id": 77367, "ts": "2026-10-06T17:53:13Z", "hours": 3.6044, "text": "UPDATE!!! Yo Twin! Finally I have a fight system I like. Actually it is just a redesign but it looks way better I think. This time I didn’t put the moves menu on the bottom but on the right side. That makes so much more space and I have big plans with it. I also removed the health bar and replaced it with a variable in the moves menu because it looks more like a hacker and Klaus looks like a hacker too. And I made something like paths I think that looks cool. I also added the Spooky man If I haven’t said this already And I made a sick new Animation that looks hacky (cool word) Ok bye Twin!"}, {"post_id": 75939, "ts": "2026-10-01T17:39:31Z", "hours": 1.5761, "text": "TWINNNNNNNNNNNNN I did fixed some textboxes, because sometimes I wrote Ms Mauer and sometimes Ms. Mauer and I did TWO BIG THINGS: 1. Mouse controls in the menu because some people didn’t understand it and 2. the new web version I host the game now on itch.io because it is less complicated and there are less issues but somehow the mouse controls aren’t working right. (Here try it: https://laupi-oida.itch.io/kasimirs-kebab ) Yeah pretty cool (like the image) , I know and now comes the fight system. Bye Twin!"}, {"post_id": 75671, "ts": "2026-09-30T18:14:55Z", "hours": 8.1503, "text": "BOOM Yo Twin it didn’t thought that I can remake the game in like 10 hours. But I did it. I also added a house for Klaus, because that’s a better starting point and the input delay in the menu is gone. Now I’m stuck at the fight system again. I think it isn’t a secret that the old fight system was just bad. I brain stormed a bit and have some thoughts in mind that I must combined. But that’s harder then I thought But I will brainstorm a bit. I think switching to Godot was a great decision. Bye Twin!"}, {"post_id": 73732, "ts": "2026-09-25T20:06:40Z", "hours": 1.8886, "text": "Twin! First of all: Thanks for all the reviews on my project! Many people reported issues and I want to fix them. But first: I will use Godot Yes I know in the other devlog I said I don’t really had a good time with Godot but somehow it is still the best open source game engine and it somehow really triggered me that GameMaker isn’t open source What is the current state of the game? I have already reprogrammed the textbox, the intro map and the player movement and it is SO MUCH FASTER than in LÖVE. I also saw that you can make like 2.5D graphics and I think this might look cool and I will try this in future. The issues reported 1. Many People couldn’t open the game Now that I use godot it will be a better web port and I will host it on itch.io so it should work for anyone 2. Some out of bounce glitches Yeah I didn’t place the collision boxes well but I will fix this. 3. Many People had problems with the controls I know I made it a bit confusing. I’ll make little markers at the bottom if you can do something and I will make mouse inputs in the menu. I will try to remake the game as fast as possible. Thanks for everything and bye Twin!"}, {"post_id": 72778, "ts": "2026-09-23T18:45:22Z", "hours": 1.6147, "text": "Twin! I wanted to finish the prototype It isn’t what it should be but I added a win screen and a game over screen and I changed the default action key to z because most people have qwerty kb and it was y because I have qwertz kb. There was much I wanted to add but I think love was a great experience but I must search new Horizons until I find an engine made for me. Bye Twin!"}, {"post_id": 71903, "ts": "2026-09-21T18:57:17Z", "hours": 3.0531, "text": "I give up Yo Twin! First of all i figured out how to make a web version and now you can test the game But now the sad news I give up with my plans to make a game with love2d. I had a great time and love2d but now the it feels like I must reinvent the wheel (like we in germany say), because I must code everything myself and it takes so long. That doesn’t mean I won’t finish Kasimirs Kebab This is now just a prototype or a beta. I will just switch my game engine! I first thought of Godot but I had bad experience and I think I will go to the game engine I started with: Game Maker! I like it and some great games were made with it that are similar to the game I want to make like undertale, deltarune or forager. The only thing I don’t like about it is that it isn’t open source but it only cost 100$ one time for a professional license and I mean that’s WAY better than Unity or Unreal and you support the developers, but I won’t sell this game so that doesn’t matter. You can try my prototype here: https://laup0403.github.io/Kasimirs-Kebab/ What did we learn? - All roads lead to rome. And bye Twin!"}, {"post_id": 70103, "ts": "2026-09-18T13:51:27Z", "hours": 6.8772, "text": "Yo Twin! After changin the concept of the fight system 4 times I wanted to give you an update on my inprovements. 1. Textbox improvements First of all I thougth the textbox was a bit boring so I added a read effect and also dots are read slower and thats very cool in some dialogues and you can also skip the reading. 2. A black bar It doesn’t sound important but on the left if I didn’t0 play at fullscreen there was always a little space on the left where it shouldn’t be and this bar fixes it 3. Spookyman He’s like an super human because I needed a way to give the player a wepon and he’s kinda cool AND NOW 4. The fight system It’s not done yet but I did it like in my last post but the bar with actions is at the bottom and I also automated the drawing. That means it shows always 3 Things and if I add more then it shows arrows as a notification and I can move up or down to see the other actions. And the Healthbar is like in the last post because I like that design. It was actually not that easy to make the healthbar (or I am dumb) because it is 62 pixels long and I needed to calculate how much the player has left in percent and then I set the healthbar further behind (this is the calculation for anyone wondering: (1-(fight.enemyhealth/fight.maxenemyhealth)) * 62) I also added my first sound effect for switching the action. That were some big changes! Sorry for bad english and Bye Twin!"}, {"post_id": 63784, "ts": "2026-09-07T18:59:41Z", "hours": 0.6903, "text": "Twin! Did’nt code that much but I made a plan: The “basic combat” should be similair to Final Fantasy or the Mario and Luigi game. You have a health bar and you enemy has one. Then there is a Action Field where you can do attacks and use items. Pretty basic, right? FALSE Now you think how? Idk either but there will be more because this is just the “basic combat” Note: I also tryed to make music loops and it worked well but I have no music right now. Bye Twin!"}, {"post_id": 61601, "ts": "2026-09-04T16:14:55Z", "hours": 5.1753, "text": "TWIN! First of all: sadly, I cannot make a web version of the game because of the push library and even if i try to do it without the library it won’t work. But there are also good news: I made the first boss! So you cannot fight yet but our first boss Ms. Mauer exists. I made a cool feature that if you make her mad she drops a stone on you. I already have a plan for the the fight. It should be similar to cuphead but rythm based. Think I might add sound Bye Twin!"}, {"post_id": 56638, "ts": "2026-08-28T14:01:24Z", "hours": 3.4297, "text": "BOOOM !!! Now I have your attention Twin and can tell you about my GREAT changes on the main menu. 1. The loading menu There is just one chapter for now and I will change the loading menu when I need to. I think I will make it look like the settings menu. 2. The settings menu You now start with the arrow keys and z and x as the default layout and in the settings you can change it! I tryed to record it but it is a bit async( I think that’s what it’s called). Bye Twin!"}, {"post_id": 53972, "ts": "2026-08-24T17:58:30Z", "hours": 3.4322, "text": "TWIN! I made a sign. But that is not crazy and because of that I made a main menu You can already start the game and exit the game. For the load button I thougth I will not make a safefile but from there you can start into the different chapters, because that’s easier to program and more stable if I make a web export. For the settings file there will be some audio settings and key bindings. And i also made custom symbols in my font for arrows and the exit symbol because my default font doesn’t have this. Bye Twin!"}, {"post_id": 51225, "ts": "2026-08-20T19:14:54Z", "hours": 4.0833, "text": "Twin! During the past few days I hadn’t much time but I made some bug fixes and: 1. a gamescene switch system This is important later for savestates and for easier debugging and it saves RAM usage (I hope). 2. a dialoge choice system or whatever this thing from zelda where you can choose an option is 3. the tickle monster very important. 4. new controls you can either play with wasd and k and l or with the arrow key and z/y and x Bye Twin!"}, {"post_id": 47160, "ts": "2026-08-14T20:54:39Z", "hours": 4.7125, "text": "TWIN!!!!!!!!!!!!!!! This is the biggest update in a game about kebab in the entire human history! Here’s what I added: 1. a new name Kasimirs Kebab sounds much cooler than everyone wants kebab and it will make more sense later. 2. the tickle monster Border are boring so if you go out of the map the tickle monster comes (there is no real tickle monster. the game closes it’s self but there will be one next update). 3. an intro You wan’t a doner kebab but the skewer was stolen and now you best friend hans flies with an jetpack trough the air or something idk 4. a cool Animation very Cool 5. a cover picture also very Cool. I know that was very much and I will try to make a web export so that you can try that crazy story but for now you must watch the video. Hope you liked it. Bye Twin!"}, {"post_id": 45624, "ts": "2026-08-12T07:22:13Z", "hours": 2.2822, "text": "Twin! I made some changes. 1. redesigned the textures The old textures looked pretty boring so I redesigned them and made flowers and grass 2. ySort For those who don’t know: ySort sorts the draw order based on the y coordinates and what that does you can see in the video. 3. a sick animation Now you can give Hans a handshake How cool is that? That was everything for this devlog. Bye Twin!"}, {"post_id": 45183, "ts": "2026-08-11T14:35:24Z", "hours": 4.4089, "text": "TWIN! I made BIG changes. 1. a static resolution Now you can scale the game to whatever size you want because I used the push library to set the resolution to 160x90 and it scales with the window. Note: If you want to use push and cameraMgr like me, you must change every love.graphics.getWidth() and love.graphics.getHeight() in cameraMgr.lua to if push then camera.w, camera.h = push:getDimensions() else camera.w = love.graphics.getWidth() camera.h = love.graphics.getHeight() end 2. a collsision box for our friend hans Yeah very BIG change but that’s important but here comes the biggest addon: 3. A TEXTBOX I made a system, were you add text to a queue and if the queue is not empty, it shows the textbox and first line of the queue and if you press K it just deletes the first line. Simple but extremly efficent. I think I must change the font because the font I use now has a good size but it looks kinda normal and that’s lowk boring. That was everything for this BIG update. Bye Twin!"}, {"post_id": 44134, "ts": "2026-08-09T18:14:46Z", "hours": 3.7253, "text": "TWIN! I made Collisionboxes and I made it WITHOUT A LIBRARY! It was very crazy and if I have more than 50 collision boxes it begins to lag but IT WORKS! I made 3 types of the collision boxes: 1.Player (It walks), 2.Areas (You can walk through ) and 3.Wall (You can’t walk through it). How wonderful! The video shows it more or less. Explanation how I made it: The collision detection: I use an aabb-collision detection so i check if the coordinates of two boxes are overlapping. The wall: First in the code, the player is moved. Then the coordinates of the player are given to the collision box of the player. After that the code checks if the collision box of the player overlaps with a wall and if that’s the case than it resets the position or smth like that. (I know I’m good at explaining) Bye Twin!"}, {"post_id": 42839, "ts": "2026-08-07T19:37:34Z", "hours": 1.4167, "text": "Do you think the word camera looks kinda weird? Yeah I know I should get some help, but: I fixed the map and now it’s smooth. I just must draw every Layer of the map seperate. And we got this cool guy with cool hat named hans. Bye twin!"}, {"post_id": 40851, "ts": "2026-08-04T17:14:13Z", "hours": 1.6425, "text": "Hi, Twin! My game has now a map (wow) It’s pretty ugly but it’s just a prototype so that’s ok. For the map I used the tiled app ( https://thorbjorn.itch.io/tiled ) and Simple-Tiled-Implementation ( https://github.com/karai17/Simple-Tiled-Implementation/ ) to implement it in love. And then I needed to move the camera and I use the camera script from hump ( https://github.com/vrld/hump ) for this, but the problem is, that the map doesn’t move and I really just move the map (I think) and that means I must write my own camera script. But that’s a project for the future. Bye twin!"}, {"post_id": 40342, "ts": "2026-08-03T19:44:22Z", "hours": 1.4144, "text": "Hello Twin! I wanted to make a game. I don’t have a big plan but it should include kebab because Everyone wants Kebab. I also want to challenge me so use no Gameengine just love2d or LÖVE or whatever. For the start I drawed a very Cool player and gave him controls and animations with the anim8 lib."}]...
|
Title: Kasimirs Kebab by @laupi_oida | Stardance
Title: Kasimirs Kebab by @laupi_oida | Stardance
Devlogs:
Hello Twin! I wanted to make a game. I don’t have a big plan but it should include kebab because Everyone wants Kebab. I also want to challenge me so use no Gameengine just love2d or LÖVE or whatever. For the start I drawed a very Cool player and gave him controls and animations with the anim8 lib.
Hi, Twin! My game has now a map (wow) It’s pretty ugly but it’s just a prototype so that’s ok. For the map I used the tiled app ( https://thorbjorn.itch.io/tiled ) and Simple-Tiled-Implementation ( https://github.com/karai17/Simple-Tiled-Implementation/ ) to implement it in love. And then I needed to move the camera and I use the camera script from hump ( https://github.com/vrld/hump ) for this, but the problem is, that the map doesn’t move and I really just move the map (I think) and that means I must write my own camera script. But that’s a project for the future. Bye twin!
Do you think the word camera looks kinda weird? Yeah I know I should get some help, but: I fixed the map and now it’s smooth. I just must draw every Layer of the map seperate. And we got this cool guy with cool hat named hans. Bye twin!
TWIN! I made Collisionboxes and I made it WITHOUT A LIBRARY! It was very crazy and if I have more than 50 collision boxes it begins to lag but IT WORKS! I made 3 types of the collision boxes: 1.Player (It walks), 2.Areas (You can walk through ) and 3.Wall (You can’t walk through it). How wonderful! The video shows it more or less. Explanation how I made it: The collision detection: I use an aabb-collision detection so i check if the coordinates of two boxes are overlapping. The wall: First in the code, the player is moved. Then the coordinates of the player are given to the collision box of the player. After that the code checks if the collision box of the player overlaps with a wall and if that’s the case than it resets the position or smth like that. (I know I’m good at explaining) Bye Twin!
TWIN! I made BIG changes. 1. a static resolution Now you can scale the game to whatever size you want because I used the push library to set the resolution to 160x90 and it scales with the window. Note: If you want to use push and cameraMgr like me, you must change every love.graphics.getWidth() and love.graphics.getHeight() in cameraMgr.lua to if push then camera.w, camera.h = push:getDimensions() else camera.w = love.graphics.getWidth() camera.h = love.graphics.getHeight() end 2. a collsision box for our friend hans Yeah very BIG change but that’s important but here comes the biggest addon: 3. A TEXTBOX I made a system, were you add text to a queue and if the queue is not empty, it shows the textbox and first line of the queue and if you press K it just deletes the first line. Simple but extremly efficent. I think I must change the font because the font I use now has a good size but it looks kinda normal and that’s lowk boring. That was everything for this BIG update. Bye Twin!
Twin! I made some changes. 1. redesigned the textures The old textures looked pretty boring so I redesigned them and made flowers and grass 2. ySort For those who don’t know: ySort sorts the draw order based on the y coordinates and what that does you can see in the video. 3. a sick animation Now you can give Hans a handshake How cool is that? That was everything for this devlog. Bye Twin!
TWIN!!!!!!!!!!!!!!! This is the biggest update in a game about kebab in the entire human history! Here’s what I added: 1. a new name Kasimirs Kebab sounds much cooler than everyone wants kebab and it will make more sense later. 2. the tickle monster Border are boring so if you go out of the map the tickle monster comes (there is no real tickle monster. the game closes it’s self but there will be one next update). 3. an intro You wan’t a doner kebab but the skewer was stolen and now you best friend hans flies with an jetpack trough the air or something idk 4. a cool Animation very Cool 5. a cover picture also very Cool. I know that was very much and I will try to make a web export so that you can try that crazy story but for now you must watch the video. Hope you liked it. Bye Twin!
Twin! During the past few days I hadn’t much time but I made some bug fixes and: 1. a gamescene switch system This is important later for savestates and for easier debugging and it saves RAM usage (I hope). 2. a dialoge choice system or whatever this thing from zelda where you can choose an option is 3. the tickle monster very important. 4. new controls you can either play with wasd and k and l or with the arrow key and z/y and x Bye Twin!
TWIN! I made a sign. But that is not crazy and because of that I made a main menu You can already start the game and exit the game. For the load button I thougth I will not make a safefile but from there you can start into the different chapters, because that’s easier to program and more stable if I make a web export. For the settings file there will be some audio settings and key bindings. And i also made custom symbols in my font for arrows and the exit symbol because my default font doesn’t have this. Bye Twin!
BOOOM !!! Now I have your attention Twin and can tell you about my GREAT changes on the main menu. 1. The loading menu There is just one chapter for now and I will change the loading menu when I need to. I think I will make it look like the settings menu. 2. The settings menu You now start with the arrow keys and z and x as the default layout and in the settings you can change it! I tryed to record it but it is a bit async( I think that’s what it’s called). Bye Twin!
TWIN! First of all: sadly, I cannot make a web version of the game because of the push library and even if i try to do it without the library it won’t work. But there are also good news: I made the first boss! So you cannot fight yet but our first boss Ms. Mauer exists. I made a cool feature that if you make her mad she drops a stone on you. I already have a plan for the the fight. It should be similar to cuphead but rythm based. Think I might add sound Bye Twin!
Twin! Did’nt code that much but I made a plan: The “basic combat” should be similair to Final Fantasy or the Mario and Luigi game. You have a health bar and you enemy has one. Then there is a Action Field where you can do attacks and use items. Pretty basic, right? FALSE Now you think how? Idk either but there will be more because this is just the “basic combat” Note: I also tryed to make music loops and it worked well but I have no music right now. Bye Twin!
Yo Twin! After changin the concept of the fight system 4 times I wanted to give you an update on my inprovements. 1. Textbox improvements First of all I thougth the textbox was a bit boring so I added a read effect and also dots are read slower and thats very cool in some dialogues and you can also skip the reading. 2. A black bar It doesn’t sound important but on the left if I didn’t0 play at fullscreen there was always a little space on the left where it shouldn’t be and this bar fixes it 3. Spookyman He’s like an super human because I needed a way to give the player a wepon and he’s kinda cool AND NOW 4. The fight system It’s not done yet but I did it like in my last post but the bar with actions is at the bottom and I also automated the drawing. That means it shows always 3 Things and if I add more then it shows arrows as a notification and I can move up or down to see the other actions. And the Healthbar is like in the last post because I like that design. It was actually not that easy to make the healthbar (or I am dumb) because it is 62 pixels long and I needed to calculate how much the player has left in percent and then I set the healthbar further behind (this is the calculation for anyone wondering: (1-(fight.enemyhealth/fight.maxenemyhealth)) * 62) I also added my first sound effect for switching the action. That were some big changes! Sorry for bad english and Bye Twin!
I give up Yo Twin! First of all i figured out how to make a web version and now you can test the game But now the sad news I give up with my plans to make a game with love2d. I had a great time and love2d but now the it feels like I must reinvent the wheel (like we in germany say), because I must code everything myself and it takes so long. That doesn’t mean I won’t finish Kasimirs Kebab This is now just a prototype or a beta. I will just switch my game engine! I first thought of Godot but I had bad experience and I think I will go to the game engine I started with: Game Maker! I like it and some great games were made with it that are similar to the game I want to make like undertale, deltarune or forager. The only thing I don’t like about it is that it isn’t open source but it only cost 100$ one time for a professional license and I mean that’s WAY better than Unity or Unreal and you support the developers, but I won’t sell this game so that doesn’t matter. You can try my prototype here: https://laup0403.github.io/Kasimirs-Kebab/ What did we learn? - All roads lead to rome. And bye Twin!
Twin! I wanted to finish the prototype It isn’t what it should be but I added a win screen and a game over screen and I changed the default action key to z because most people have qwerty kb and it was y because I have qwertz kb. There was much I wanted to add but I think love was a great experience but I must search new Horizons until I find an engine made for me. Bye Twin!
Twin! First of all: Thanks for all the reviews on my project! Many people reported issues and I want to fix them. But first: I will use Godot Yes I know in the other devlog I said I don’t really had a good time with Godot but somehow it is still the best open source game engine and it somehow really triggered me that GameMaker isn’t open source What is the current state of the game? I have already reprogrammed the textbox, the intro map and the player movement and it is SO MUCH FASTER than in LÖVE. I also saw that you can make like 2.5D graphics and I think this might look cool and I will try this in future. The issues reported 1. Many People couldn’t open the game Now that I use godot it will be a better web port and I will host it on itch.io so it should work for anyone 2. Some out of bounce glitches Yeah I didn’t place the collision boxes well but I will fix this. 3. Many People had problems with the controls I know I made it a bit confusing. I’ll make little markers at the bottom if you can do something and I will make mouse inputs in the menu. I will try to remake the game as fast as possible. Thanks for everything and bye Twin!
BOOM Yo Twin it didn’t thought that I can remake the game in like 10 hours. But I did it. I also added a house for Klaus, because that’s a better starting point and the input delay in the menu is gone. Now I’m stuck at the fight system again. I think it isn’t a secret that the old fight system was just bad. I brain stormed a bit and have some thoughts in mind that I must combined. But that’s harder then I thought But I will brainstorm a bit. I think switching to Godot was a great decision. Bye Twin!
TWINNNNNNNNNNNNN I did fixed some textboxes, because sometimes I wrote Ms Mauer and sometimes Ms. Mauer and I did TWO BIG THINGS: 1. Mouse controls in the menu because some people didn’t understand it and 2. the new web version I host the game now on itch.io because it is less complicated and there are less issues but somehow the mouse controls aren’t working right. (Here try it: https://laupi-oida.itch.io/kasimirs-kebab ) Yeah pretty cool (like the image) , I know and now comes the fight system. Bye Twin!
UPDATE!!! Yo Twin! Finally I have a fight system I like. Actually it is just a redesign but it looks way better I think. This time I didn’t put the moves menu on the bottom but on the right side. That makes so much more space and I have big plans with it. I also removed the health bar and replaced it with a variable in the moves menu because it looks more like a hacker and Klaus looks like a hacker too. And I made something like paths I think that looks cool. I also added the Spooky man If I haven’t said this already And I made a sick new Animation that looks hacky (cool word) Ok bye Twin!
Yo Twin! I must learn to make decisions because now I completely removed the fight system and you just do a puzzle. The Puzzle It is just some puzzle I made in PuzzleScript in the computer science lessons and I ported it to Godot but it it is a bit challenging. The crazy effects are back! Now after you solved the puzzle Hans comes to you and shows you his cool new gadget. And here I made also some plans for the future: Audio - The puzzle and the new Hans scene would be so much cooler and I already have an idea Translation - For now it should just be German because I speak that and Latin just for prank and I think for other languages I need help but I don’t want to use AI And I decided I will make the game a bit shorter I hope I will get it to like 30-60 minutes. Ok, Bye Twin!
Yo Twin! This time I drew more. Here’s everything I did: 1. I updated the Github readme and itch.io site 2. A smooth transition When the wall is broken there is a new path. When you go there the scene switches and the wall collapses so you can’t go back. 3. A bit of the town If you follow the path, you get into the town. This is the third chapter. The game shouldn’t be that long so after that there will come 2 more chapters: The REAL valley and then the castle where the legendary Kasimir sits and there will also be the kebab skewer(yay). Ok that was everything. Bye Twin!
Yo Twin! The City stands! The corners look a bit weird but ok. In the city there are 4 houses and 4 wise man inside that tell you something about Kasimir and if you speak to all of them the gate to the “real valley” opens. And I also changed the dialog with the doner guy, because the thief is now Kasimir and not a beetle. The next chapter will become a bit more chill, but the last chapter will be CRAZY. Trust me. Ok bye Twin!
YOOOOOOOOOOOOOOOOOOOO TWIN!!! It’s done. I mean the story the game isn’t ready yet I added the castle and the isn’t Kasimir. Then you go into the kitchen and see a doner kebab. And what then happens I won’t spoiler. But after that comes: a paywall because why not? But I think the last chapters are a bit empty but I didn’t really had fun at the end. Löve was way more fun. Now there are the following the tasks: Updating the menu: There aren’t all chapters in the load scene Mobile controls: I want that everyone can play this game and I think mobile controls are necessary (not even all my friends have a PC) Language translation: I want German translation and Latin (just for prank), because that are the only languages I speak except English Audio: I’m really bad at sound but I think some sound will be good! We are so far but I still don’t see the end. Bye Twin!
TWIN! This is the last or the second last devlog. Here’s what i added: 1. Mobile controls In the settings you can now enable mobile mode. I think I made it really cool because I made 3 States and in 1 state you can see the arrows,in the other nothing and the complete screen is action1 and in the last you see the question buttons. That works really well I think 2. Sounds Some sounds are good some sounds are not so good but I think they match the games style and the sounds from the last chapter are really good I think 3. New main menu It looks the same but now I use buttons instead of areas and you can just control it with mouse or touchscreen and not arrow keys anymore I’m gonna send the game to my playtesters and see if they find any bugs (they are really good in bug finding) Bye Twin!
Ships:
I developed a rpg game with the framework LÖVE2D using Lua. I made my own textbox queue system, collision system, fight system, menu and you can change the keyboard layout. I learned that it’s important to write clean code and how to automate many processes. And somehow I learned more English than in school (I’m still bad at English)....
|
1792853416.9992216
|
1792939816.9992216
|
|
5020
|
FLOWS by @UntitledMacaw | Stardance
|
UntitledMacaw
|
1
|
34.44
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-21T18:21:49Z", "hours": 29.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is FLOWS. It is a program that takes in terrain data and water infiltration data and finds bowl-like depressions (or simply “basins”). Why is that useful: for each basin, water-height doesn’t change (for the same rainfall). This means we can pre-calculate various rainfall scenarios and store their results, so we can have a simple and quick way of estimating flood risk. Compilation was also made focusing on lower-end hardware, were we avoid feeding the entire data into the RAM, and instead partition the dataset in smart ways so we can make it all fit within our constrains!", "repo": "https://github.com/UntitledMacaw/FLOWS", "demo": "https://github.com/UntitledMacaw/FLOWS/releases/tag/Beta"}]...
|
[{"post_id": 79403, "ts": "202 [{"post_id": 79403, "ts": "2026-10-13T20:29:07Z", "hours": 0.9344, "text": "Alright, so new changes! Today I tried to make a DEMO for my project! Since the user is originally intended to provided topological files (that for demonstration purposes may not be available), I have also packaged inside the .sh file a DEMO version, that has its own very small dataset, so everyone can see the project in action even without the needed files."}, {"post_id": 77692, "ts": "2026-10-07T22:54:32Z", "hours": 0.6186, "text": "Another day and guess what: another feature! I added a new function to the code that takes in a “starting point” for basin compilation. What this does is, given a starting point integer provided by the user (call it S), it skips all basins with an ID lower than S. This is good ’cuz we can stop the code with control + C and later keep on where we left by choosing our last compiled basin as our starting point! I probably should have done this a long time ago instead of right know when I actually needed it, but hey: Better late than never am i right?"}, {"post_id": 74665, "ts": "2026-09-27T22:24:01Z", "hours": 2.655, "text": "YEEEEAAAAH! I decided to try and create an executable for my script, and boy was hard. The problem was that major libraries like gdal and whitebox required a bunch of other system libraries to work. This means I had to try to get them into the executable, and let me tell ya: This took a lot of time. But finally, it works (i hope)! I will be posting the executable (linux only of course) on github later!"}, {"post_id": 74018, "ts": "2026-09-26T15:19:42Z", "hours": 1.2344, "text": "Update on compilation: Well, a lot of stuff happened. I can’t really keep my computer running non stop all day and night, so I was resorting to suspending the laptop so runtime would keep frozen in RAM. But today, after a week of running the program and almost halfway left, I woke up to find the computer out of battery (probably it kept running in suspend mode and just died). That was quite devastating, but the only thing I could do was to update my code with checkpoints so that if that happens again, I won’t need to run everything again like I’m about to do now. I took that chance to also fix some typos in my README and my github pages, so I guess I got something good out of this!"}, {"post_id": 71782, "ts": "2026-09-21T15:16:55Z", "hours": 5.7964, "text": "Making some minor changes so my github before posting my project!"}, {"post_id": 63759, "ts": "2026-09-07T18:33:58Z", "hours": 8.0975, "text": "Finally able to find bowl-like depressions now"}, {"post_id": 40144, "ts": "2026-08-03T15:27:42Z", "hours": 9.9969, "text": "Writing a pdf devlog for my project!"}, {"post_id": 36462, "ts": "2026-07-28T16:19:12Z", "hours": 4.8508, "text": "Just discovered this nice tool called WhiteBoxTools, and was also able to find its user manual! Now I won’t need to process terrain from scratch, and instead get I can all the data I’m looking for without reinventing the wheel."}, {"post_id": 878, "ts": "2026-06-02T16:27:54Z", "hours": 0.3542, "text": "Figured out how to read a digital elevation model with python"}]...
|
Title: FLOWS by @UntitledMacaw | Stardance
Devlog Title: FLOWS by @UntitledMacaw | Stardance
Devlogs:
Figured out how to read a digital elevation model with python
Just discovered this nice tool called WhiteBoxTools, and was also able to find its user manual! Now I won’t need to process terrain from scratch, and instead get I can all the data I’m looking for without reinventing the wheel.
Writing a pdf devlog for my project!
Finally able to find bowl-like depressions now
Making some minor changes so my github before posting my project!
Update on compilation: Well, a lot of stuff happened. I can’t really keep my computer running non stop all day and night, so I was resorting to suspending the laptop so runtime would keep frozen in RAM. But today, after a week of running the program and almost halfway left, I woke up to find the computer out of battery (probably it kept running in suspend mode and just died). That was quite devastating, but the only thing I could do was to update my code with checkpoints so that if that happens again, I won’t need to run everything again like I’m about to do now. I took that chance to also fix some typos in my README and my github pages, so I guess I got something good out of this!
YEEEEAAAAH! I decided to try and create an executable for my script, and boy was hard. The problem was that major libraries like gdal and whitebox required a bunch of other system libraries to work. This means I had to try to get them into the executable, and let me tell ya: This took a lot of time. But finally, it works (i hope)! I will be posting the executable (linux only of course) on github later!
Another day and guess what: another feature! I added a new function to the code that takes in a “starting point” for basin compilation. What this does is, given a starting point integer provided by the user (call it S), it skips all basins with an ID lower than S. This is good ’cuz we can stop the code with control + C and later keep on where we left by choosing our last compiled basin as our starting point! I probably should have done this a long time ago instead of right know when I actually needed it, but hey: Better late than never am i right?
Alright, so new changes! Today I tried to make a DEMO for my project! Since the user is originally intended to provided topological files (that for demonstration purposes may not be available), I have also packaged inside the .sh file a DEMO version, that has its own very small dataset, so everyone can see the project in action even without the needed files.
Ships:
This is FLOWS. It is a program that takes in terrain data and water infiltration data and finds bowl-like depressions (or simply “basins”). Why is that useful: for each basin, water-height doesn’t change (for the same rainfall). This means we can pre-calculate various rainfall scenarios and store their results, so we can have a simple and quick way of estimating flood risk. Compilation was also made focusing on lower-end hardware, were we avoid feeding the entire data into the RAM, and instead partition the dataset in smart ways so we can make it all fit within our constrains!...
|
1792853415.8575256
|
1792939815.8575256
|
|
48047
|
WildOS by @Raphel | Stardance
|
Raphel
|
2
|
37.0
|
452
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-16T12:17:29Z", "hours": 31.0, "multiplier": 14.67, "payout": 452, "blessing": "neutral", "text": "WILDOS at last i completed WildOS for the WebOS 2 JAM . WildOS is a web-based but nature-themed OS and my second WebOS. My first WebOS helped me understand how a WebOS works, so this time i wanted to make something bigger and more functional. What I Built I made 9 apps : Wild Notes - write notes Wild Music Player - play music Wild Files - explore and download files Wild Settings - change the appearance Wild Weather - shows the weather of the Amazon Rainforest Wild Store - download and install apps Wild Gallery - view pictures Wild Sounds - play some crazy sounds Wildo - the personal assistant of WildOS The Music Player and Wild Store took me the most time. While making them, i learned more about JavaScript , app structures and how different parts of the OS connect together. Features Custom backgrounds Appearance settings Background sounds Boot animation Boot percentage Boot music Filters Custom cursor 3 new songs Draggable windows Fullscreen support App downloading and installation I also completely changed Wildo . Now he can give guides about WildOS and generate 2 images using JavaScript . Problems I Faced One big problem i faced was having 1000+ lines of HTML in one file . As the project became bigger, it became harder to find things and fix bugs. I spent time aligning and organising the code. I also faced some lag and dragging bugs while building it. This helped me learn how important it is to keep the code organised when a project gets bigger. How It Works mainly WildOS works like a small OS inside the browser. You can open apps from the dock, move the windows around, change the appearance, play music and download apps from the Store. You can play it directly in the browser. Use fullscreen and headphones for a better experience. Easter Eggs There are some Easter Eggs hidden inside WildOS. Double-click the tree icon on the top Double-click the WildOS text on the top There are also some more things hidden around the WildOS. I really enjoyed building WildOS and learned a lot about JavaScript, app structures, dragging windows, music players and fixing bugs . That’s it for WebOS 2 . check it out, ya tried!", "repo": "https://github.com/RaphelReji/WildOS", "demo": "https://raphelreji.github.io/WildOS/"}, {"ship_num": 2, "ts": "2026-09-09T03:07:49Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "WildOS It was so cool to complete the WebOS 1 JAM. I made WildOS, a web-based but nature-themed OS. Thanks to MeowOS for inspiring me to build one too. Also thanks to the WebOS Guide that helped me understand what to build, and thanks to the team that built that guide. So what I built is a nature-themed OS called WildOS. It is fully nature-themed and has some awesome features. This one is web playable, so anyone can test it directly in the browser. I added 5 apps to it. The first one is WildNotes, where you can write your notes. The second one is a music player that lets you play some cool music. The third one is Files, which is just a simple file window. The fourth one is Settings, where you can change the theme. And the fifth one is WILDO, WildOS’s personal assistant, but it is always unreachable. I also added a booting window, text animations, a live clock, customizable themes, and draggable windows. This is my second WebOS. The first one gave me an idea of how a WebOS could work, and while building WildOS I learned more about JavaScript, especially dragging windows and making the booting screen. I also took a little inspiration from macOS for the dock and some of the icons, but I tried to make the rest of the design my own and keep everything around the nature theme. It was really interesting to build and I learned a lot from it. That’s it for WebOS 1. let’s see what I can build for WebOS 2.", "repo": "https://github.com/RaphelReji/WildOS", "demo": "https://raphelreji.github.io/WildOS/"}]...
|
[{"post_id": 68944, "ts": "202 [{"post_id": 68944, "ts": "2026-09-16T02:53:40Z", "hours": 1.4153, "text": "completed the readme for the project and made it properly written with the project details and everything needed. it took some time to arrange everything in the readme so it looks clean and understandable. i also aligned the 1000 line html code properly because it was not properly aligned before and it was hard to read and work with. now the readme is completed and the html code is properly aligned."}, {"post_id": 68735, "ts": "2026-09-15T17:19:06Z", "hours": 7.9703, "text": "WILDOS FINAL-DEVLOG at last i completed the wildos. i completed the store and the rest of the apps . the store took a long time to make but at last i completed it and made it functional. i also changed some app styles from webos1, made my own backgrounds for the boot and main window, added filters and a cursor image. also added boot percentage, boot music, some easter eggs and 3 new songs. i completely changed wildo and now he can give guides and generate 2 images. i also aligned the 1000 line html code and added the wifi logo. at last everything is done. ready to ship..!"}, {"post_id": 67756, "ts": "2026-09-14T00:10:29Z", "hours": 3.3075, "text": "WEBOS 2 today was another interesting day of working on my webos 2. i added two more apps to the webos — Gallery and Sounds . i also somehow managed to fix the lag bug that was happening when using the webos. it was a really annoying bug because sometimes the ui would get stuck or become slow, but after working on it i finally got it working much better. after that i completed the design of the Store app . the store is going to be one of the bigger parts of the webos because it can be used to show and add different apps. the design part is now completed and i also started working on the JS for it. i also added a click sound when interacting with things in the webos. its a small feature but it makes the experience feel much better and gives the webos a little more life. added Gallery app added Sounds app fixed the lag bug completed the Store design started the Store JS added click sounds today also taught me a lot about JavaScript, app structures, bugs and how different parts of the webos connect together . the wildos is slowly becoming bigger and more complete with every update. there is still a lot left to build I am trying to make it fast ,bye!"}, {"post_id": 67245, "ts": "2026-09-13T09:32:47Z", "hours": 5.0822, "text": "Devlog WildOS Today I worked on APP STORE mostly and sometime on settings as well. I added store app struture and details for apps in store . I also have some lag bugs with web but i am trying to resolve that Next, I am going to: resolve the lag bug finish the store app with js build sounds and galllery app yay bugs bugs let me complete this one"}, {"post_id": 66588, "ts": "2026-09-12T13:13:04Z", "hours": 3.57, "text": "wildOS Worked on settings today. I added appearance , customisable backgrounds and background music . I also worked on fixing javascript bugs and learned more about music ,dragging etc . Next, I am going to: completeing settings app store some music Getting closer to completing my WebOS2"}, {"post_id": 66357, "ts": "2026-09-12T04:37:35Z", "hours": 2.8344, "text": "I ADDED MUSIC PLAYER ,THE FILES- ALL BUTTONS IS WORKING ADDED A STORE BUT NOT COMPLTED ALSO FIXED SOME BUGS OF DRAGGING WINDOW"}, {"post_id": 65689, "ts": "2026-09-11T00:38:15Z", "hours": 2.0319, "text": "worked on music player added the javascript now adding the store app and inside that some apps to download also added new fonts , changed all macos style icons in green icons more comming"}, {"post_id": 65408, "ts": "2026-09-10T15:02:23Z", "hours": 4.5831, "text": "I started working on WebOS 2.Today, I added some new things:Added a new structure for the Music Player Added a Weather app Added file downloading in the File app Added full-size windows for all apps Next, I’m going to finish the Music Player and start working on a Store app."}, {"post_id": 64587, "ts": "2026-09-09T02:59:52Z", "hours": 5.2072, "text": "At last i completed it.It was so cool to complete the WebOS 1 JAM. I made WildOS, a web-based but nature-themed OS.Thanks to MeowOS for inspiring me to build one too, and also thanks to the WebOS Guide that helped me understand what to build. Also thanks to the team that built that guide.So what i built is a nature-themed OS called WildOS.It is fully nature-themed and has some awesome features. This one is web-playable, so anyone can test it directly in the browser.I added 5 apps to it. The first one is WildNotes, where you can write your notes. The second one is a music player that lets you play some cool music. The third one is Files, which is just a simple file window. The fourth one is Settings, where you can change the theme. And the fifth one is WILDO, WildOS’s personal assistant, but it is always unreachable.I also added a clock based on the WebOS Guide.I took a little inspiration from macOS, mainly for the dock and the icons, but most of the design is based around my own nature theme.Overall, it was really fun to build WildOS and learn how a WebOS works while making it.Now I’m ready for WebOS 2."}, {"post_id": 58221, "ts": "2026-08-30T16:04:35Z", "hours": 0.7883, "text": "WILDOS Hi i am using my free time to complete the webos i am mainly using html,css,and some javascript.So i making the first webOS so a very simple.btw i created the booting screen and a dragable window now i want to style it and thanks to the guide by stardance and meowos , i take it a inspiration to bulid this . see ya"}, {"post_id": 54947, "ts": "2026-08-26T11:25:46Z", "hours": 0.4189, "text": "WildOS — 2DayDevlog Day 1 The Beginning Today I started working on WildOS, The main goal is to create an OS with a unique identity SO I began by planning the overall design, user interface, and the features I want WildOS to have.I worked on the basic structure of the project and thought about how the desktop, applications, settings, and navigation should work together. I also started experimenting with the visual style and layout.There is still a lot to build, but getting the foundation started feels like a big step. Day 1 progress :Started the WildOS project Planned the basic OS structureDesigned the initial UI conceptStarted working on the desktop experienceListed features for future versions Day 2 — Building the WildOS focused more on turning the initial idea into something that actually feels like an operating system.I worked on the interface and started connecting different parts of the system together. I also thought about how users will interact with WildOS, including the desktop, applications, menus, and settings.The project is still in an early stage, but the direction is becoming much clearer. There are plenty of things left to improve. so at last i created the desktop booting and the first window ,still a lot more"}]...
|
Title: WildOS by @Raphel | Stardance
Devlogs:
Wil Title: WildOS by @Raphel | Stardance
Devlogs:
WildOS — 2DayDevlog Day 1 The Beginning Today I started working on WildOS, The main goal is to create an OS with a unique identity SO I began by planning the overall design, user interface, and the features I want WildOS to have.I worked on the basic structure of the project and thought about how the desktop, applications, settings, and navigation should work together. I also started experimenting with the visual style and layout.There is still a lot to build, but getting the foundation started feels like a big step. Day 1 progress :Started the WildOS project Planned the basic OS structureDesigned the initial UI conceptStarted working on the desktop experienceListed features for future versions Day 2 — Building the WildOS focused more on turning the initial idea into something that actually feels like an operating system.I worked on the interface and started connecting different parts of the system together. I also thought about how users will interact with WildOS, including the desktop, applications, menus, and settings.The project is still in an early stage, but the direction is becoming much clearer. There are plenty of things left to improve. so at last i created the desktop booting and the first window ,still a lot more
WILDOS Hi i am using my free time to complete the webos i am mainly using html,css,and some javascript.So i making the first webOS so a very simple.btw i created the booting screen and a dragable window now i want to style it and thanks to the guide by stardance and meowos , i take it a inspiration to bulid this . see ya
At last i completed it.It was so cool to complete the WebOS 1 JAM. I made WildOS, a web-based but nature-themed OS.Thanks to MeowOS for inspiring me to build one too, and also thanks to the WebOS Guide that helped me understand what to build. Also thanks to the team that built that guide.So what i built is a nature-themed OS called WildOS.It is fully nature-themed and has some awesome features. This one is web-playable, so anyone can test it directly in the browser.I added 5 apps to it. The first one is WildNotes, where you can write your notes. The second one is a music player that lets you play some cool music. The third one is Files, which is just a simple file window. The fourth one is Settings, where you can change the theme. And the fifth one is WILDO, WildOS’s personal assistant, but it is always unreachable.I also added a clock based on the WebOS Guide.I took a little inspiration from macOS, mainly for the dock and the icons, but most of the design is based around my own nature theme.Overall, it was really fun to build WildOS and learn how a WebOS works while making it.Now I’m ready for WebOS 2.
I started working on WebOS 2.Today, I added some new things:Added a new structure for the Music Player Added a Weather app Added file downloading in the File app Added full-size windows for all apps Next, I’m going to finish the Music Player and start working on a Store app.
worked on music player added the javascript now adding the store app and inside that some apps to download also added new fonts , changed all macos style icons in green icons more comming
I ADDED MUSIC PLAYER ,THE FILES- ALL BUTTONS IS WORKING ADDED A STORE BUT NOT COMPLTED ALSO FIXED SOME BUGS OF DRAGGING WINDOW
wildOS Worked on settings today. I added appearance , customisable backgrounds and background music . I also worked on fixing javascript bugs and learned more about music ,dragging etc . Next, I am going to: completeing settings app store some music Getting closer to completing my WebOS2
Devlog WildOS Today I worked on APP STORE mostly and sometime on settings as well. I added store app struture and details for apps in store . I also have some lag bugs with web but i am trying to resolve that Next, I am going to: resolve the lag bug finish the store app with js build sounds and galllery app yay bugs bugs let me complete this one
WEBOS 2 today was another interesting day of working on my webos 2. i added two more apps to the webos — Gallery and Sounds . i also somehow managed to fix the lag bug that was happening when using the webos. it was a really annoying bug because sometimes the ui would get stuck or become slow, but after working on it i finally got it working much better. after that i completed the design of the Store app . the store is going to be one of the bigger parts of the webos because it can be used to show and add different apps. the design part is now completed and i also started working on the JS for it. i also added a click sound when interacting with things in the webos. its a small feature but it makes the experience feel much better and gives the webos a little more life. added Gallery app added Sounds app fixed the lag bug completed the Store design started the Store JS added click sounds today also taught me a lot about JavaScript, app structures, bugs and how different parts of the webos connect together . the wildos is slowly becoming bigger and more complete with every update. there is still a lot left to build I am trying to make it fast ,bye!
WILDOS FINAL-DEVLOG at last i completed the wildos. i completed the store and the rest of the apps . the store took a long time to make but at last i completed it and made it functional. i also changed some app styles from webos1, made my own backgrounds for the boot and main window, added filters and a cursor image. also added boot percentage, boot music, some easter eggs and 3 new songs. i completely changed wildo and now he can give guides and generate 2 images. i also aligned the 1000 line html code and added the wifi logo. at last everything is done. ready to ship..!
completed the readme for the project and made it properly written with the project details and everything needed. it took some time to arrange everything in the readme so it looks clean and understandable. i also aligned the 1000 line html code properly because it was not properly aligned before and it was hard to read and work with. now the readme is completed and the html code is properly aligned.
Ships:
WildOS It was so cool to complete the WebOS 1 JAM. I made WildOS, a web-based but nature-themed OS. Thanks to MeowOS for inspiring me to build one too. Also thanks to the WebOS Guide that helped me understand what to build, and thanks to the team that built that guide. So what I built is a nature-themed OS called WildOS. It is fully nature-themed and has some awesome features. This one is web playable, so anyone can test it directly in the browser. I added 5 apps to it. The first one is WildNotes, where you can write your notes. The second one is a music player that lets you play some cool music. The third one is Files, which is just a simple file window. The fourth one is Settings, where you can change the theme. And the fifth one is WILDO, WildOS’s personal assistant, but it is always unreachable. I also added a booting window, text animations, a live clock, customizable themes, and draggable windows. This is my second WebOS. The first one gave me an idea of how a WebOS could work, and while building WildOS I learned more about JavaScript, especially dragging windows and making the booting screen. I also took a little inspiration from macOS for the dock and some of the icons, but I tried to make the rest of the design my own and keep everything around the nature theme. It was really interesting to build and I learned a lot from it. That’s it for WebOS 1. let’s see what I can build for WebOS 2.
WILDOS at last i completed WildOS for the WebOS 2 JAM . WildOS is a web-based but nature-themed OS and my second WebOS. My first WebOS helped me understand how a WebOS works, so this time i wanted to make something bigger and more functional. What I Built I made 9 apps : Wild Notes - write notes Wild Music Player - play music Wild Files - explore and download files Wild Settings - change the appearance Wild Weather - shows the weather of the Amazon Rainforest Wild Store - download and install apps Wild Gallery - view pictures Wild Sounds - play some crazy sounds Wildo - the personal assistant of WildOS The Music Player and Wild Store took me the most time. While making them, i learned more about JavaScript , app structures and how different parts of the OS connect together. Features Custom backgrounds Appearance settings Background sounds Boot animation Boot percentage Boot music Filters Custom cursor 3 new songs Draggable windows Fullscreen support App downloading and installation I also completely changed Wildo . Now he can give guides about WildOS and generate 2 images using JavaScript . Problems I Faced One big problem i faced was having 1000+ lines of HTML in one file . As the project became bigger, it became harder to find things and fix bugs. I spent time aligning and organising the code. I also faced some lag and dragging bugs while building it. This helped me learn how important it is to keep the code organised when a project gets bigger. How It Works mainly WildOS works like a small OS inside the browser. You can open apps from the dock, move the windows around, change the appearance, play music and download apps from the Store. You can play it directly in the browser. Use fullscreen and headphones for a better experience. Easter Eggs There are some Easter Eggs hidden inside WildOS. Double-click the tree icon on the top Double-click the WildOS text on the top There are also some more things hidden around the WildOS. I really enjoyed building WildOS and learned a lot about JavaScript, app structures, dragging windows, music players and fixing bugs . That’s it for WebOS 2 . check it out, ya tried!...
|
1792853414.6933799
|
1792939814.6933799
|
|
43178
|
GamEngine by @bartoszkasyna | Stardance
|
bartoszkasyna
|
1
|
244.34
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T15:49:21Z", "hours": 195.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made GPU driven game engine. It use vulkan 1.4. GTAO and VSM are still little bugged. Project will be still in development. This experimental version. More deatils are in devlogs. If engine or demo crashes on your device please send me generated logs and device specification", "repo": "https://github.com/B4rtekk1/GamEngine", "demo": "https://github.com/B4rtekk1/GamEngine/releases/tag/v0.1.0"}]...
|
[{"post_id": 79106, "ts": "202 [{"post_id": 79106, "ts": "2026-10-12T18:07:52Z", "hours": 10.8381, "text": "I was working on bug fixes and glass system. Glass is not working was I want but it havs some progress. Currently glass is highly unoptimized."}, {"post_id": 78281, "ts": "2026-10-10T08:29:57Z", "hours": 4.4117, "text": "I made custom installer for my engine. Now i willl work on optimatization"}, {"post_id": 74967, "ts": "2026-09-28T18:36:35Z", "hours": 9.7639, "text": "I mainly working on bug fixing. Now VSM and GTAO are fully stable, TAA still needs some love. I was also working on fbx model importer. On the image you can see Amazon Lumberyard Bistro which has 2.7M triangles with 140FPS. I have to work on fps stability while moving camera and make glass shader/object."}, {"post_id": 74396, "ts": "2026-09-27T09:59:55Z", "hours": 9.5208, "text": "I was trying to made my version of DDGI but it was unstable, so I made this disabled. Full DDGI would be impossible for my gpu so I used Brixelizer GI from FidelityFX SDK from AMD. It looks good and stable. Image is capyured on intel sponza which has 2.7M traingles - 13x more than original sponza so my engine scale well."}, {"post_id": 73521, "ts": "2026-09-25T09:34:28Z", "hours": 9.7292, "text": "I was working on Ray Traced Contact Shadows and DDGI. Ray traced shadows works well without droping fps that much. Currently my DDGI is bugged - its very dark. The image is taken with RTCS, DGGI disabled"}, {"post_id": 72555, "ts": "2026-09-23T06:37:29Z", "hours": 5.0792, "text": "Successfully optimized GTAO and VSM, 40FPS gain and more stable 1% low"}, {"post_id": 71260, "ts": "2026-09-20T15:17:19Z", "hours": 7.5197, "text": "I was working on game optimization, editor functionalities and standalone game building. I successfully optimized GTAO and VSM a little. GTAO still have some halo around some objects and VSM are not full stable. I added option build game in editor. I have to optimize editor a little and add some more functionalities. On the first image you can see nvidia nsight graphics profiler and on the second one standalone game build running in 160 after few seconds. This is decent score for rtx 3050."}, {"post_id": 70490, "ts": "2026-09-19T08:46:32Z", "hours": 7.4986, "text": "I was trying to fix shadows but it didint go well, so I gave up and started refactoring code for better readibiliy. On the image you can see broken verin of shadows, dont worry I went back to working ones. I fixed few smaller nearly invisible shadows bugs, so I didint waste myy time. Now I will focus on optimatization and graphics effet"}, {"post_id": 69704, "ts": "2026-09-17T16:43:10Z", "hours": 8.0603, "text": "I started migration to dynamic rendering, so rendering pipeline would be much easier for user. I also made custom title bar. Im in process of improving UI. I found two bugs - in certains camera angle shadows/AO or something doesnt work correctly. Second - some random patterns may occur while looking into sky inside sponza"}, {"post_id": 69075, "ts": "2026-09-16T10:23:21Z", "hours": 5.7283, "text": "I made water system but it look horrible and performance isnt great, so i focused next on large models importing. Big models are now devided into meshlets. On the image you can see very popular benchmark scene, its called crytek sponza. I think that 170FPS in this stage is good"}, {"post_id": 68570, "ts": "2026-09-15T10:28:57Z", "hours": 8.1017, "text": "I am working on water system. I decided to make something diffrent that normal water commonly used in every modern engine. I want to make virtual water system which is inspired by VSM. More technical details I will provide in devlog when I finish my water system. I dont have any working water image so I just upload some engine footage. PS. It might be much more optimize than normal water."}, {"post_id": 67943, "ts": "2026-09-14T08:27:35Z", "hours": 6.5411, "text": "I was working on water system and improving GTAO. While testing I found weird little horizontal strips on shadows. I thought it was my WSM bug so I was trying to fix it. After I checked all possible bugs i realized that I could downgrade GTAO by linear interpolation. I fixed it and now works fine. Water currently has implemented SSR and simple Gernster waves. On the images you can see clip levels and virutal pages shown in shadow debug mode"}, {"post_id": 67159, "ts": "2026-09-13T07:20:53Z", "hours": 7.1444, "text": "I was working on editor optimatization and bug fixes. Editor launch time jumped from ~7seconds to 1.5 seconds if editor has cache, otherwise 4.3 seconds. Launching editor no more cause vulkan errors. I also added IBL and reflects. I also bugged shadows a little."}, {"post_id": 66406, "ts": "2026-09-12T06:58:22Z", "hours": 6.8744, "text": "I was working on finishing render graph. I also optimized editor - in huge scenes it will have more stable 60FPS. I optimized game mode - 1% low are higher now"}, {"post_id": 65853, "ts": "2026-09-11T08:49:16Z", "hours": 8.0272, "text": "I was mainly working on models and textures compression. Textures are now compressed into BC7 format. I also added remdergraph so user dont have to make it manually."}, {"post_id": 65239, "ts": "2026-09-10T07:13:42Z", "hours": 7.9544, "text": "Today I was working on game optimatization and little shadows improvements. I was mainly working on game profiler as you can see in the image"}, {"post_id": 64328, "ts": "2026-09-08T16:49:40Z", "hours": 9.6778, "text": "Last 2 days I was working on editor functionalities. I added built-in powersheell terminal. I also added shadergraph which currently is doesnt want to compile properly"}, {"post_id": 63480, "ts": "2026-09-07T11:14:38Z", "hours": 6.3356, "text": "I was working on UX in editor. Then I found bug which I couldnt fix for 3 hours. Bug was caused my matrix decompose floating point"}, {"post_id": 62420, "ts": "2026-09-05T19:23:52Z", "hours": 5.1811, "text": "Today I was working on optimatization, code quality and better model imports. fps jumped from ~400 to ~430."}, {"post_id": 61744, "ts": "2026-09-04T20:02:01Z", "hours": 8.3261, "text": "I was working on game optimzatization. I made jump from around 200FPS to 400. There is still a lot more things to optimize."}, {"post_id": 59136, "ts": "2026-08-31T19:21:14Z", "hours": 5.6275, "text": "I was working on optimizing grass system. I added wind component and optimized colission with other objects. Thanks to optimatization FPS jumped from ~250 to ~320. I also modified scene saving system - binary file as main file and .terrains failes as terrain data. I added Editor layout to AppData so editor rembeber your last layout"}, {"post_id": 58356, "ts": "2026-08-30T19:03:02Z", "hours": 6.1303, "text": "Today i was adding missing tests. I also updated terrain sculping system - you can now sculp all terrain at once if multiple instances. I added some utils and deleted fps limit in play mode."}, {"post_id": 57564, "ts": "2026-08-29T19:02:32Z", "hours": 4.8972, "text": "Today I was working on better shadow implemenatation. I implemented VSM shadows - smiliar are used in UE5. I think its looks good"}, {"post_id": 56852, "ts": "2026-08-28T20:10:13Z", "hours": 5.6839, "text": "Today I was working on code quality and better terrain sculping tools. I added grass painting. I also added some nice shader to grass - A rolling ball leaves a trail in the grass. Check it out!"}, {"post_id": 56432, "ts": "2026-08-28T06:18:19Z", "hours": 5.745, "text": "I was working on terrain sculping. I was inspired by unity system generator so I wanted to make something smiliar. Now there is only one brush but i will extend possibilities of my system."}, {"post_id": 55427, "ts": "2026-08-27T07:58:03Z", "hours": 4.6125, "text": "Added gltf models importing with editor asset manager. Imported gameobject has his unique mesh collider."}, {"post_id": 54988, "ts": "2026-08-26T12:44:55Z", "hours": 2.9125, "text": "I was fixing my physics system. I fixed some bugs and created new ones. First new bug is sphere bouning up on first contact. 2 bug is cube lifting up another cube. I’m happy that I removed object shaking"}, {"post_id": 54700, "ts": "2026-08-25T19:29:26Z", "hours": 6.6933, "text": "Today I was mainly working on code quality and project refactorization. When I was testing scenes with various of configuration I found some type of physics bug - Objects are shaking for some reason, you can see this in attached video"}, {"post_id": 53759, "ts": "2026-08-24T13:13:25Z", "hours": 1.2175, "text": "last 1.25h I was adding cube physics, imo it look very satisfying."}, {"post_id": 53644, "ts": "2026-08-24T09:33:54Z", "hours": 4.9856, "text": "I was working on realistic sphere physics. I think it looks good enough. I was also working on tests. Fixed bug when ramp after start/stop was changing her location."}, {"post_id": 52942, "ts": "2026-08-23T09:58:18Z", "hours": 3.4753, "text": "I added simple gravity and colliders. I also reorganized code a little - I make high level API so user dont have to use Vulkan and SDL directly."}, {"post_id": 52275, "ts": "2026-08-22T11:51:51Z", "hours": 3.0019, "text": "Added Color picker, and updated window reloading while adding MSAA or new color. Now you can easily change color in editor"}, {"post_id": 51666, "ts": "2026-08-21T13:55:21Z", "hours": 2.4742, "text": "I made object scriptable!"}, {"post_id": 50944, "ts": "2026-08-20T12:37:57Z", "hours": 4.6658, "text": "I messed something up and m editor wasnt responding I couldt click anything. I was trying to fix it almost 5 hours. What I fixed? - vulkan and SDL were recreating while turning MSAA on and GPU was loosing context"}, {"post_id": 49752, "ts": "2026-08-18T17:53:31Z", "hours": 3.2764, "text": "Editor Update The editor has been significantly improved and now looks much better. Cross-Platform Support The editor no longer depends on the Windows API, which means it should work on both Windows and Linux . Technology Stack The original goal was to use only: C++ Vulkan SDK SDL3 GLM These are all standard components that come with a typical Vulkan development setup. After further research, Dear ImGui was also added. It is currently the only third-party dependency . Performance Both the Scene View and Game View are capped at 60 FPS . The Scene View captures the 90th frame of the particle effect so that it remains static. Next Steps Focus will now shift to expanding the editor’s functionality."}, {"post_id": 49441, "ts": "2026-08-18T09:01:45Z", "hours": 1.725, "text": "I made basic editor. Now looks like terrible but I will make it better"}, {"post_id": 49021, "ts": "2026-08-17T16:44:03Z", "hours": 1.5692, "text": "Added movement, you can move by using wasd, scroll and RMB"}, {"post_id": 48153, "ts": "2026-08-16T13:31:10Z", "hours": 4.0589, "text": "Particle System I was trying to add .glb models importer but this is very hard to do without third parties dependencies and i messed up something - Tree looks flat(second attachment). After many failed attempts I decided to start making particle system, as you can see it looks good. It is also optimized. FPS drop which you can see on video is caused by cmake compilation in background. I hope you like my particles :) All of this is made in C++ and the Vulkan SDK."}, {"post_id": 47579, "ts": "2026-08-15T15:41:56Z", "hours": 2.8206, "text": "Progress Update – Last 3 Hours Focused on two main things: Engine Optimization Font Rasterizer – added support for rendering fonts in the HUD Optimizations: Integrated VMA (Vulkan Memory Allocator) Added object instancing Fixed a buffer bug that was causing a memory leak Image: Cube made of 30×30×30 (27 000) smaller cubes + HUD with rendered font. All of this is made in C++ and the Vulkan SDK."}, {"post_id": 47338, "ts": "2026-08-15T06:56:33Z", "hours": 5.75, "text": "Engine Updates Added GPU-driven Hi-Z culling Added canvas — you can now make HUDs Optimized scenes a little Added Scene Serializer Added Asset Manager Added Color class — you no longer have to work with plain vectors Showcase On the image you can see a cube made from 30×30×30 smaller cubes, each one casting a shadow. In the bottom-left corner you can see the canvas. All of this is made in C++ and the Vulkan SDK ."}, {"post_id": 46339, "ts": "2026-08-13T14:18:08Z", "hours": 4.5861, "text": "Added Engine Math based on glm. Optimized multi object drawing. Made better project structure"}, {"post_id": 45817, "ts": "2026-08-12T15:21:12Z", "hours": 2.5969, "text": "Added shadows, game objects, engine vectors and matrixs, standaole camera, position and transforms"}, {"post_id": 40303, "ts": "2026-08-03T18:52:30Z", "hours": 3.1914, "text": "I have reorganized code. I added MSAA and rotaing cube!"}, {"post_id": 39619, "ts": "2026-08-02T18:45:09Z", "hours": 0.8017, "text": "I finished my previus project so now i can have two concurrent - this and c++/cuda custom llm. Successfully rendered triangle :) Its only about ~1000 lines of code. I used offical tutorial for start."}]...
|
Title: GamEngine by @bartoszkasyna | Stardance
De Title: GamEngine by @bartoszkasyna | Stardance
Devlogs:
I finished my previus project so now i can have two concurrent - this and c++/cuda custom llm. Successfully rendered triangle :) Its only about ~1000 lines of code. I used offical tutorial for start.
I have reorganized code. I added MSAA and rotaing cube!
Added shadows, game objects, engine vectors and matrixs, standaole camera, position and transforms
Added Engine Math based on glm. Optimized multi object drawing. Made better project structure
Engine Updates Added GPU-driven Hi-Z culling Added canvas — you can now make HUDs Optimized scenes a little Added Scene Serializer Added Asset Manager Added Color class — you no longer have to work with plain vectors Showcase On the image you can see a cube made from 30×30×30 smaller cubes, each one casting a shadow. In the bottom-left corner you can see the canvas. All of this is made in C++ and the Vulkan SDK .
Progress Update – Last 3 Hours Focused on two main things: Engine Optimization Font Rasterizer – added support for rendering fonts in the HUD Optimizations: Integrated VMA (Vulkan Memory Allocator) Added object instancing Fixed a buffer bug that was causing a memory leak Image: Cube made of 30×30×30 (27 000) smaller cubes + HUD with rendered font. All of this is made in C++ and the Vulkan SDK.
Particle System I was trying to add .glb models importer but this is very hard to do without third parties dependencies and i messed up something - Tree looks flat(second attachment). After many failed attempts I decided to start making particle system, as you can see it looks good. It is also optimized. FPS drop which you can see on video is caused by cmake compilation in background. I hope you like my particles :) All of this is made in C++ and the Vulkan SDK.
Added movement, you can move by using wasd, scroll and RMB
I made basic editor. Now looks like terrible but I will make it better
Editor Update The editor has been significantly improved and now looks much better. Cross-Platform Support The editor no longer depends on the Windows API, which means it should work on both Windows and Linux . Technology Stack The original goal was to use only: C++ Vulkan SDK SDL3 GLM These are all standard components that come with a typical Vulkan development setup. After further research, Dear ImGui was also added. It is currently the only third-party dependency . Performance Both the Scene View and Game View are capped at 60 FPS . The Scene View captures the 90th frame of the particle effect so that it remains static. Next Steps Focus will now shift to expanding the editor’s functionality.
I messed something up and m editor wasnt responding I couldt click anything. I was trying to fix it almost 5 hours. What I fixed? - vulkan and SDL were recreating while turning MSAA on and GPU was loosing context
I made object scriptable!
Added Color picker, and updated window reloading while adding MSAA or new color. Now you can easily change color in editor
I added simple gravity and colliders. I also reorganized code a little - I make high level API so user dont have to use Vulkan and SDL directly.
I was working on realistic sphere physics. I think it looks good enough. I was also working on tests. Fixed bug when ramp after start/stop was changing her location.
last 1.25h I was adding cube physics, imo it look very satisfying.
Today I was mainly working on code quality and project refactorization. When I was testing scenes with various of configuration I found some type of physics bug - Objects are shaking for some reason, you can see this in attached video
I was fixing my physics system. I fixed some bugs and created new ones. First new bug is sphere bouning up on first contact. 2 bug is cube lifting up another cube. I’m happy that I removed object shaking
Added gltf models importing with editor asset manager. Imported gameobject has his unique mesh collider.
I was working on terrain sculping. I was inspired by unity system generator so I wanted to make something smiliar. Now there is only one brush but i will extend possibilities of my system.
Today I was working on code quality and better terrain sculping tools. I added grass painting. I also added some nice shader to grass - A rolling ball leaves a trail in the grass. Check it out!
Today I was working on better shadow implemenatation. I implemented VSM shadows - smiliar are used in UE5. I think its looks good
Today i was adding missing tests. I also updated terrain sculping system - you can now sculp all terrain at once if multiple instances. I added some utils and deleted fps limit in play mode.
I was working on optimizing grass system. I added wind component and optimized colission with other objects. Thanks to optimatization FPS jumped from ~250 to ~320. I also modified scene saving system - binary file as main file and .terrains failes as terrain data. I added Editor layout to AppData so editor rembeber your last layout
I was working on game optimzatization. I made jump from around 200FPS to 400. There is still a lot more things to optimize.
Today I was working on optimatization, code quality and better model imports. fps jumped from ~400 to ~430.
I was working on UX in editor. Then I found bug which I couldnt fix for 3 hours. Bug was caused my matrix decompose floating point
Last 2 days I was working on editor functionalities. I added built-in powersheell terminal. I also added shadergraph which currently is doesnt want to compile properly
Today I was working on game optimatization and little shadows improvements. I was mainly working on game profiler as you can see in the image
I was mainly working on models and textures compression. Textures are now compressed into BC7 format. I also added remdergraph so user dont have to make it manually.
I was working on finishing render graph. I also optimized editor - in huge scenes it will have more stable 60FPS. I optimized game mode - 1% low are higher now
I was working on editor optimatization and bug fixes. Editor launch time jumped from ~7seconds to 1.5 seconds if editor has cache, otherwise 4.3 seconds. Launching editor no more cause vulkan errors. I also added IBL and reflects. I also bugged shadows a little.
I was working on water system and improving GTAO. While testing I found weird little horizontal strips on shadows. I thought it was my WSM bug so I was trying to fix it. After I checked all possible bugs i realized that I could downgrade GTAO by linear interpolation. I fixed it and now works fine. Water currently has implemented SSR and simple Gernster waves. On the images you can see clip levels and virutal pages shown in shadow debug mode
I am working on water system. I decided to make something diffrent that normal water commonly used in every modern engine. I want to make virtual water system which is inspired by VSM. More technical details I will provide in devlog when I finish my water system. I dont have any working water image so I just upload some engine footage. PS. It might be much more optimize than normal water.
I made water system but it look horrible and performance isnt great, so i focused next on large models importing. Big models are now devided into meshlets. On the image you can see very popular benchmark scene, its called crytek sponza. I think that 170FPS in this stage is good
I started migration to dynamic rendering, so rendering pipeline would be much easier for user. I also made custom title bar. Im in process of improving UI. I found two bugs - in certains camera angle shadows/AO or something doesnt work correctly. Second - some random patterns may occur while looking into sky inside sponza
I was trying to fix shadows but it didint go well, so I gave up and started refactoring code for better readibiliy. On the image you can see broken verin of shadows, dont worry I went back to working ones. I fixed few smaller nearly invisible shadows bugs, so I didint waste myy time. Now I will focus on optimatization and graphics effet
I was working on game optimization, editor functionalities and standalone game building. I successfully optimized GTAO and VSM a little. GTAO still have some halo around some objects and VSM are not full stable. I added option build game in editor. I have to optimize editor a little and add some more functionalities. On the first image you can see nvidia nsight graphics profiler and on the second one standalone game build running in 160 after few seconds. This is decent score for rtx 3050.
Successfully optimized GTAO and VSM, 40FPS gain and more stable 1% low
I was working on Ray Traced Contact Shadows and DDGI. Ray traced shadows works well without droping fps that much. Currently my DDGI is bugged - its very dark. The image is taken with RTCS, DGGI disabled
I was trying to made my version of DDGI but it was unstable, so I made this disabled. Full DDGI would be impossible for my gpu so I used Brixelizer GI from FidelityFX SDK from AMD. It looks good and stable. Image is capyured on intel sponza which has 2.7M traingles - 13x more than original sponza so my engine scale well.
I mainly working on bug fixing. Now VSM and GTAO are fully stable, TAA still needs some love. I was also working on fbx model importer. On the image you can see Amazon Lumberyard Bistro which has 2.7M triangles with 140FPS. I have to work on fps stability while moving camera and make glass shader/object.
I made custom installer for my engine. Now i willl work on optimatization
I was working on bug fixes and glass system. Glass is not working was I want but it havs some progress. Currently glass is highly unoptimized.
Ships:
I made GPU driven game engine. It use vulkan 1.4. GTAO and VSM are still little bugged. Project will be still in development. This experimental version. More deatils are in devlogs. If engine or demo crashes on your device please send me generated logs and device specification...
|
1792853413.3946517
|
1792939813.3946517
|
|
15796
|
blowupthenoobs' website by @blowupthenoobs | S blowupthenoobs' website by @blowupthenoobs | Stardance...
|
blowupthenoobs
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T18:48:48Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Got the main stuff laid out on the home page. Still need to integrate some stuff like the art portfolio widgets and whatnot, but that’s going to come in when my google drive clone thingy is further along in completion. Other stuff like the discord widget and nuggets of wisdom are intended to be further worked on, but it is in a good state for right now I think.", "repo": "https://github.com/blowupthenoobs/PortfolioSite", "demo": "https://blowupthenoobs.dev/"}]...
|
[{"post_id": 63382, "ts": "202 [{"post_id": 63382, "ts": "2026-09-07T05:28:55Z", "hours": 0.995, "text": "Finished the basic mockup and such with a couple working features, so I should hopefully be able to qualify for the pulse mission."}, {"post_id": 63360, "ts": "2026-09-07T04:23:56Z", "hours": 0.9889, "text": "Almost finished the mockup. Added random scrolling thing cuz I saw it in someone else’s personal site, lol (It was a thing I was thinking of putting in anyways though. Scrolling’s a nice touch for it tho.)"}, {"post_id": 63337, "ts": "2026-09-07T03:19:28Z", "hours": 1.8997, "text": "Added a music detection widget (powered by a discord-based api)"}, {"post_id": 63215, "ts": "2026-09-06T21:57:32Z", "hours": 2.135, "text": "Finally got to actually working on the main page, lol."}]...
|
Title: blowupthenoobs' website by @blowuptheno Title: blowupthenoobs' website by @blowupthenoobs | Stardance
Devlogs:
Finally got to actually working on the main page, lol.
Added a music detection widget (powered by a discord-based api)
Almost finished the mockup. Added random scrolling thing cuz I saw it in someone else’s personal site, lol (It was a thing I was thinking of putting in anyways though. Scrolling’s a nice touch for it tho.)
Finished the basic mockup and such with a couple working features, so I should hopefully be able to qualify for the pulse mission.
Ships:
Got the main stuff laid out on the home page. Still need to integrate some stuff like the art portfolio widgets and whatnot, but that’s going to come in when my google drive clone thingy is further along in completion. Other stuff like the discord widget and nuggets of wisdom are intended to be further worked on, but it is in a good state for right now I think....
|
1792853412.2686338
|
1792939812.2686338
|
|
43116
|
X-Revenant by @nejenabinupa | Stardance
|
nejenabinupa
|
1
|
49.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-06T17:17:01Z", "hours": 49.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this model is finished now all of the details are in the readme how you like it", "repo": "https://github.com/binupax6699/X-REVENANT-3D-MODLE", "demo": "https://sketchfab.com/3d-models/x-revenant-d105edc6008d4e148df14087eecc2355"}]...
|
[{"post_id": 77351, "ts": "202 [{"post_id": 77351, "ts": "2026-10-06T17:11:44Z", "hours": 1.4131, "text": "finished up all and its ready now"}, {"post_id": 43397, "ts": "2026-08-08T16:48:16Z", "hours": 6.4225, "text": "Finally finished baking the textures to the body"}, {"post_id": 42499, "ts": "2026-08-07T08:42:02Z", "hours": 9.8578, "text": "I did the texturing for the all and I make the interior and put weapons that come out from openings, next will be backing the texture and sum small details to make it perfect."}, {"post_id": 41340, "ts": "2026-08-05T14:27:20Z", "hours": 10.5606, "text": "I added small details and sum small changes to the topology and cut out opening to add this that come out and I add the landing gear and it was the most complex part today and i even animated it and it look so perfect."}, {"post_id": 40203, "ts": "2026-08-03T16:38:36Z", "hours": 10.9303, "text": "Did so much changes and I think this is the final model I can get, maybe little more changes and textures I can add in next devlog, it’s looking good i think I did a great job to get to here and make it much more my style and better over time"}, {"post_id": 39555, "ts": "2026-08-02T16:15:05Z", "hours": 10.265, "text": "Took so long to make the based mash and it was good enough to work ok and need to make it perfect and make some small small changes along the way."}]...
|
Title: X-Revenant by @nejenabinupa | Stardance
De Title: X-Revenant by @nejenabinupa | Stardance
Devlogs:
Took so long to make the based mash and it was good enough to work ok and need to make it perfect and make some small small changes along the way.
Did so much changes and I think this is the final model I can get, maybe little more changes and textures I can add in next devlog, it’s looking good i think I did a great job to get to here and make it much more my style and better over time
I added small details and sum small changes to the topology and cut out opening to add this that come out and I add the landing gear and it was the most complex part today and i even animated it and it look so perfect.
I did the texturing for the all and I make the interior and put weapons that come out from openings, next will be backing the texture and sum small details to make it perfect.
Finally finished baking the textures to the body
finished up all and its ready now
Ships:
this model is finished now all of the details are in the readme how you like it...
|
1792853411.1223686
|
1792939811.1223686
|
|
47952
|
Valorant Prime Vandal by @colgation | Stardance
|
colgation
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T03:02:35Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Prime Vandal from Valorant in real life! It shoots foam darts, takes standard nerf magazines, and is easy to make. All the files and build instructions are available in the github source. It is made to be as accessible as possible, so even A1 mini printers can print it. It only takes up around ~500g of filament. All you need is a printer and Nerf Retaliator (easy to find anywhere, especially in second hand stores for less than 3 dollars). Go make your own one!", "repo": "https://github.com/194500-cpu/Prime-Vandal", "demo": ""}]...
|
[{"post_id": 61339, "ts": "202 [{"post_id": 61339, "ts": "2026-09-04T06:35:10Z", "hours": 1.0839, "text": "Today I painted the gold trims on my Prime Vandal. Once it dries, the rough model should be complete, after I add smoothing and finishing touches with an acrylic pen."}, {"post_id": 57065, "ts": "2026-08-29T04:45:31Z", "hours": 1.3, "text": "Spray painted the parts using gloss spray paint. Took me some time to set up, and will let dry. My Valorant Prime Vandal will be ready soon!"}, {"post_id": 50719, "ts": "2026-08-20T01:53:34Z", "hours": 0.6303, "text": "#4: Created the top of the prime vandal build. This one was a bit easier to make as all I needed to do was fill the bottom. Anyways, print underway!"}, {"post_id": 50664, "ts": "2026-08-19T22:54:31Z", "hours": 0.3, "text": "#3: Prime Vandal resemblance Finally managed to create both the muzzle and stock. I just made the priming bolt and its underway. I’m planning to paint it later on, as well as glue panels to the main body."}, {"post_id": 47361, "ts": "2026-08-15T08:05:23Z", "hours": 1.6167, "text": "Created the barrel! All that is left is making the shell to cover the main body. It took a long time to make it, since I had to remake the barrel to match nerf bullet sizes."}, {"post_id": 47250, "ts": "2026-08-15T01:39:15Z", "hours": 0.3, "text": "#2 Disassembled the nerf gun to fix internals and make it ready. Problem: I just finished 3dprinting and realised that the inside was filled in a lightning pattern (very weak)."}, {"post_id": 47210, "ts": "2026-08-14T23:40:42Z", "hours": 0.8553, "text": "Making a Prime Vandal Shell for Nerf retaliator! #1: Made the stock and sent it to print! As a side note, I am planning to share the .blend files as well so anyone can make it at home. the end product should fire nerf darts, have a swappable magazine and more! Follow this project to support me and keep up?"}]...
|
Title: Valorant Prime Vandal by @colgation | Stard Title: Valorant Prime Vandal by @colgation | Stardance
Devlogs:
Making a Prime Vandal Shell for Nerf retaliator! #1: Made the stock and sent it to print! As a side note, I am planning to share the .blend files as well so anyone can make it at home. the end product should fire nerf darts, have a swappable magazine and more! Follow this project to support me and keep up?
#2 Disassembled the nerf gun to fix internals and make it ready. Problem: I just finished 3dprinting and realised that the inside was filled in a lightning pattern (very weak).
Created the barrel! All that is left is making the shell to cover the main body. It took a long time to make it, since I had to remake the barrel to match nerf bullet sizes.
#3: Prime Vandal resemblance Finally managed to create both the muzzle and stock. I just made the priming bolt and its underway. I’m planning to paint it later on, as well as glue panels to the main body.
#4: Created the top of the prime vandal build. This one was a bit easier to make as all I needed to do was fill the bottom. Anyways, print underway!
Spray painted the parts using gloss spray paint. Took me some time to set up, and will let dry. My Valorant Prime Vandal will be ready soon!
Today I painted the gold trims on my Prime Vandal. Once it dries, the rough model should be complete, after I add smoothing and finishing touches with an acrylic pen.
Ships:
I made a Prime Vandal from Valorant in real life! It shoots foam darts, takes standard nerf magazines, and is easy to make. All the files and build instructions are available in the github source. It is made to be as accessible as possible, so even A1 mini printers can print it. It only takes up around ~500g of filament. All you need is a printer and Nerf Retaliator (easy to find anywhere, especially in second hand stores for less than 3 dollars). Go make your own one!...
|
1792853409.9467206
|
1792939809.9467206
|
|
12938
|
PetTrack by @szabence | Stardance
|
szabence
|
1
|
72.63
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T14:24:17Z", "hours": 71.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "PetTrack! A beautiful Pet Monitoring system that upcycles old smartphones into IP-cameras that you can use to see your small pet I made this project because I took in a Rabbit in May 2026 and I didn’t know what she was doing when i wasn’t home, so I decided to code this app that you can install on any Android 7+ / iPhone 6s or newer device, and use it to check on your pet, with a beautiful UI, Zone tracking, replays, medicine and vaccine tracking, and a lot more :) The hardest part was, getting used to writing Flutter. I have never used Flutter in the past, but I read about it and I liked the mentality and the mechanics of the code or how should I say, and I decided to give it a go. I love it. Simple but effective, and I can use this 1 codebase on the web, on my iPhone, on my Android and even on my WearOS smartwatch :) The project is working, and you can check it by the bottom below, select language, select Client and press Demo mode, it will show the UI. You can see it working in action on the screenshots. Check the README, and thank you for reading this!", "repo": "https://github.com/szbnce/PetTrack", "demo": "https://pettrackdemo.szabence.com"}]...
|
[{"post_id": 68851, "ts": "202 [{"post_id": 68851, "ts": "2026-09-15T21:18:20Z", "hours": 1.6314, "text": "PetTrack reship no.2 Hey guys, I have shipped the project last week, but I got rejected because I’ve used the project logo as banner and not a screenshot… Anyways, I fixed some bugs that Ive seen since shipping, which was the Notification, on both iOS and Android and Web, it wasn’t working correctly anywhere, but because of lack of time at the moment, I have removed the Notification option. on iOS it will never work self-hosted, because it requires apple dev account and the app to be on the app store or have a real backend behind it, or something like that I’ve read. I also removed the Sync with watch button from the iOS builds and Web builds, since there is only WearOS build. Google play! I have started the process to put the app on the Google Play. I was originally against this, as y’all have read in one of the first devlogs, but I thought, 25 bucks once isn’t that much, so PetTrack will be on the Play store soon, but by the looks of things, only after Stardance has already finished. WearOS I started school once again, and I couldn’t always get to my phone so I have made a minimalist app to use on the watch, it’s not that full, you can only see 1 frame / 5 seconds, and you can’t edit anything, only check the live feed, check the Monitors battery percentage and the last seen in X zone. I will ship my project once again, thank you for reading! EDIT: I did not know I just need recertification instead of a full reship lol"}, {"post_id": 62924, "ts": "2026-09-06T13:52:19Z", "hours": 5.8556, "text": "PetTrack has been released! Hello guys! I’m not going to mess around with Markdown for this last devlog, I have been testing the project for 2 weeks now, and it is working great. I fixed up minor bugs that I found, added 5 AI-translated languages for more multilang support, though Hungarian and English has been translated by me, so those are definetly correct :) I changed on the UI a bit, removed the last seen and most seen cards from the dashboard and changed it to a diagram about the Zone visits, and changed the Medical UI cards a bit. Also made the resolution in the app better, now you can make pictures from the app, and instantly share them, replays work now on both iOS and Android. The first release of PetTrack has been finally published on GitHub, so please go and check it out! https://github.com/szbnce/PetTrack/releases/tag/1.0.0 Thank you everybody who has been though this journey over 3 months with me. Thank you!"}, {"post_id": 53494, "ts": "2026-08-24T02:11:25Z", "hours": 5.7447, "text": "PetTrack Demo is finally here! I haven’t worked on PetTrack in the past 1,5 months, mostly because I just couldn’t bring myself to code, and I am going on vacation as I am writing this, and I figured, omg, if i come home, it will be already september, and besides school, i will definetly not finish this, and then, what was I working for for days on end? So, I got my sxit together, and started working on the project. Sadly, because of the time, I had to use AI so I will finish until I leave for vacation. I almost did not. It’s 3:45 AM, I left 2 hours ago, and I set up the server 15 whole minutes before leaving my house. So it was calculated, but I managed. Unified Flutter codebase: I merged the pettrack_client , pettrack_montior and pettrack_web , into one package, and is written in Flutter. The app is entirely in Flutter, I kept designs of the Client so it won’t look very different. Deployment & OS Support: The new one app method is Docker compatible, so the project will offer a Docker option, and a non-docker MacOS and Linux native installer, and a Windows installer aswell, without docker :) Branching: The one where I used AI has been moved to a new branch \"allFlutter\" . iOS Support: I initally did not want to make an iOS version because I don’t really agree with the yearly 100 usd developer program payment, and I don’t really agree with Google Play 25usd purchase aswell, but that’s very much more manageable than a yearly model, on a FOSS app. Anyways, I will publish the .ipa file, and do what you want with it :) If you have the courage and understanding, you can jailbreak and install it indefinetly, or you can sideload it, though you will have to renew it every week. If you don’t want to do that, you can of course use the Web version in a browser, it will work the exact same way, they are the same codebase under. Web support: This was my original plan to make PetTrack work on iOS devices, but then, I decided why not make it fully work on any browser? One codebase, the Webapp, the Android app and iOS app will work the EXACT SAME WAY! if you want to install a full app, you may, but if you don’t, you have all options. Medical panel: I think I have made a devlog about that, or mentioned that, but I will write it once again. We have a Medical tab now, where you will be able to track Medications and get notifications to give them to your pet, and the Vaccines tab, where you can track what the pet has gotten, when, and when its next Due. You can also set more colors. Replay: You can now replay movement. Currently for some reason, It does not work (I started implementing it at 0:30 AM, left at 1:30 so I could’ve expected that), or atleast it does not work from the browser. If i log into the server, and check it, the videos are there, and visible. It records a few seconds before and after the movement. Demo! Now you can check out PetTrack at: 👉 https://pettrackdemo.szabence.com How to access: Select language (colors are broken i know) Select Viewer For IP write asd or something, just dont leave it empty For password, write 8068 Press next, and you will see it asking if you want to go into Demo Press yes, and you are in! Its a quite basic demo, its the same codebase, just no server behind. You can add medications, test zones, etc. After you close the tab, everything will be deleted. I will test the project as I am going about my week, fix errors at night, and I will ship the project next week. Have a great week guys, and thank you for watching the project."}, {"post_id": 40217, "ts": "2026-08-03T16:58:52Z", "hours": 4.8564, "text": "Hey guys.. Its been 17 days since the last Devlog, I dont even know what I “upgraded” or didn’t. I wont’t try to make it a big devlog or anything, really i just want to get the hours logged so I can start fresh. I’ve decided to ditch all 3 (pettrack_monitor, pettrack_client and pettrack_web) codebases and rewrite everything as one flutter app. Making sure 4 sections of the app written in 3 different languages wasn’t easy on my level so I decided to ditch all and write one “pettrack_app” codebase. It will work on Android, iOS and Web, and for iOS users also PWA app, so you don’t have to install anything, and it will all work under one codebase, so everything will be the same across all devices. So. I don’t know when I will finish or anything, or write the next devlog, because I have so many things to do this month, soo…"}, {"post_id": 30037, "ts": "2026-07-17T09:22:29Z", "hours": 6.6725, "text": "The Flutter apps and the Server is 99% done until shipping! This is rather a bigger devlog, I didn’t make a more smaller ones, but let’s see what I’ve done: Easier pairing : Now instead of using a qr code (which in the Docker terminal is unreliable), you get a 4 number pairing code, which you can use to communicate the 64 char JWT token. It’s much easier, and much more reliable. Docker : I implemented Docker, but it seems like at the moment that it only really works on MacOS, i might phase Docker out and make setup commands for each, maybe a oneliner with curl, or something like that. Bugfixes : Lots of bugfixes in those 6,5 hours, I can’t even list all of them, connectivity issues, pairing issues, camera issues, UI Cleanup : I removed developer overlays from the web e.g Eruda mobile console overlay. I will be focusing a lot more on the Mock API for the demo site, and polishing for Shipping EXCEPT for one feature that I still want to add, and that would be insanely good. Bye guys!"}, {"post_id": 27994, "ts": "2026-07-13T23:20:55Z", "hours": 4.0786, "text": "🚀 WebClient is getting ready! I’ve done multiple things with the WebClient over the last 4 hours, and we are getting closer and closer to shipping! Here is a quick rundown of the progress: 🛠️ Key Features & Updates Unified Multi-Mode: You can now choose whether you want to use a device as a Client (Viewer) or a Monitor (Camera). Zone Management: Zone adding now works! (Showing current zones is still slightly broken, but we are getting there). Event Tracking: Zone enter/exit detection is fully functional. Dashboard Stats: Added panels to show “Last seen” and “Most seen” locations. Pet Profiles: You can now edit your pet’s profile directly from the Settings tab. Settings Reset: Added the ability to wipe all local settings if you want a fresh start. 🎨 UI & UX Polish Dark Mode: Synced theme with Client, dark and light mode aswell. Cleaned up the UI: Removed all unnecessary buttons. P.S. Berci got vaccinated today! 💉🐇 So now he’s immune to both physical viruses and mental breakdowns over JavaScript!"}, {"post_id": 27081, "ts": "2026-07-12T10:04:49Z", "hours": 5.1319, "text": "now i understand why web developers are all bald and angry… Okkkay so, little bit of a backgound here, I do not agree on the fact that I should pay for FOSS apps to be put on the play store and app store, that for one company i should pay 25 bucks once and then i can put my app on the app store and i have to pay 100 BUCKS YEARLY TO APPLE. So, instead of creating an app for iOS, since you can’t really sideload (there are ways for people in Europe and you can jailbreak bla bla bla…) and this app is made for ordinary people. Not developers. So, as a last resort, I am making a WebClient and WebMonitor, so the apps are able to run without even installing anything. Obviously the installed apps will run better and feel better, but then no iOS support, which I did not want. So, I started working with AI on a WebClient and WebMonitor and started learning JavaScript, but that…. Dart next to Javascript is a kids game honestly, very hard, I tried to make it easier for me by using TailwindCSS which I have some experience in, but it wasn’t that easy. To eliminate AI slop, I have a great Web developer friend (became bald at the bold age of 30), and he’ll monitor the code and check if it is alright for “prod”…"}, {"post_id": 25564, "ts": "2026-07-09T21:53:54Z", "hours": 4.0792, "text": "🛠️ BUGFIXES! BUGFIXES! I didn’t really add any new features this time, but rather focused on fixing and polishing already existing features. 🔒 Security and Stability Token Generation: I removed hardcoded “placeholder” tokens; the system now creates a new API token seamlessly. Storage Limits: Added a maximum 500 picture limit on the server, so it doesn’t fill up the storage if the cleanup task fails. Syntax Fixes: Fixed a broken dictionary on the server which threw garbage JSON. ✨ UI and Usability Notification Cooldown: Added a 1-minute cooldown between notifications to prevent spam. Better Statistics: Now the Activities tab shows 50 events instead of 5 for more accurate data. Dynamic Names: Removed fallback placeholder names (no more hardcoded fake names). 100% Localization: Removed all hardcoded UI strings and moved absolutely everything into l10n and .arb dictionaries. 🏗️ Architecture Hardware JPEG Streaming: Switched to native hardware JPEG streaming for faster picture taking, completely replacing the heavy RepaintBoundary method. 🚧 IN THE WORKS: WebSocket migration! I will tackle that tomorrow to achieve real-time streaming. Here is a picture showing git graph (lol) and Berci as I was fixing up issues. Bye guys!"}, {"post_id": 25297, "ts": "2026-07-09T14:26:21Z", "hours": 6.7308, "text": "More seamless Setup! I have edited the Setups, so now, it is more seamless: When you Install the server, it spits out a QR-code, which you have to scan while setting up the Client app, they connect, and you have to set up the profile of the pet, and a 4 digit pin code, which will be for the WebClient that I am planning to make. After that, the phone spits out another QR code, which you have to scan with the Monitor, and it will connect automatically, and only then will the app let you in. Also, I added E2EE to the server - client connection, to make it more secure, and I also did some bugfixes. I will start to Polish the apps, make it so easy to set up that even somebody who doesn’t use technology day-to-day would be able to set it up perfectly. Bye guys!"}, {"post_id": 24346, "ts": "2026-07-07T21:10:21Z", "hours": 4.4408, "text": "Monitor ready, server working, Client UI is mostly done, we are shipping soon! I made a few adjustments today: Monitor: Synced theme with Client Fixed alignment issues Added Auto reconnect and Auto capture Monitor is basically finished, I don’t think I will add anything to the monitor before shipping now. New README.md: I completly redesigned the README, now in my opinion its almost perfect. Tomorrow, I will start to make a webpage for the project, and I might make a WebUI before the project ships, and add some more tests, but I will sleep on that. Bye guys!"}, {"post_id": 22216, "ts": "2026-07-04T16:05:40Z", "hours": 3.8428, "text": "Frontend Changes to PetTrack! Today I worked a lot on PetTrack, and I made a few small but nice changes: Zone Notifications: You now get notified if a pet enters or exits a zone. Battery Alerts: Get notifications if the monitor’s battery is low (can be set between 5% and 50%). Camera Placeholder: Added a placeholder picture for when the camera is offline. Pet Types: You can now set the type of pet you have. I’ve added a few common ones, but I can add more if needed! Dynamic Live Badge: Fixed the hardcoded “Live” text on the dashboard. Now it shows exactly when the picture was taken (e.g., “30 seconds ago”), and if it’s under 10 seconds, it will say “Live”. “Continuous” Video: It’s still using pictures, but instead of updating every 30 seconds, it now updates roughly every 2 seconds. UI Cleanup: Removed the zoom buttons from the Zones screen since they were unnecessary. Custom Zones & Icons: When adding a new zone, you can now assign it a category (play area, toilet, food, water, bed) with matching icons. I’ll add a fully customizable option later! Bug Fixes: Fixed some minor layout issues. That’s all I think. Bye guys!"}, {"post_id": 21821, "ts": "2026-07-03T23:05:28Z", "hours": 3.5933, "text": "Miscellaneous Updates to PetTrack! Hey guys! I know I haven’t posted in almost 2 weeks at this point. I needed a break from coding and doing work at the PC/PetTrack. We have a few miscellaneous updates to share: Custom Monitor IDs : You can now set a custom Monitor ID, and it will show up properly in the PetTrack app as well, instead of just defaulting to “Main Monitor”. Battery Status : You can now see the battery percentage and whether it’s charging directly in the app! I plan to add a feature later that will send a notification to the PetTrack Client app when the monitor phone’s battery is running low. Backend Testing : Added testing to the PetTrack server for both the WebSocket and REST API, so you can easily check if the API and WS are working correctly. I will put more effort and hours into the project soon, but I have a lot of other things going on besides this project, and I don’t want to risk burning out. Bye! P.S: This is Berci from a few days ago and I pushed everything to GH!"}, {"post_id": 12162, "ts": "2026-06-19T21:23:36Z", "hours": 5.9286, "text": "Hey guys! I haven’t posted a devlog in a few days now, I have been working on some stuff here, and I have to say that I have some very good news! We finally have a Client app! It is a work in progress, but it is something! I don’t remember everything I have changed in the code, but: API adjusted, added a layer of security, because the API wasn’t secured. Added zones to pettrack_server, and added an API to edit it, Added Database (maybe mentioned in last devlog) Takes pictures every 2 seconds, only saves every 30 seconds for 12 hours (will add a replay mode or something like that) pettrack_monitor almost fully done, only need to add some stuff here and there. pettrack_server is in an MVP state now, it works beautifully but some features are still missing before shipping pettrack_client has been made (not pushed to GH yet), works well, though I am pretty fking shyt in UI design, so I made the UI with stitch.withgoogle.com and coded some of it with Gemini, though it still needs a lot of work. Live camera somewhat works (TODO: need to add when watching in the app to show the new pictures (that are taken every 2 seconds and not the 30 seconds saved)) Shows which zone was the most used- Shows last interaction (movement) Last 15 activities (entered zone, left zone, will add more later ? (NEED IDEAS!)) You can add zones (see the live camera and set it via adding points on the picture) You can set a picture and name for your pet in the client app- Always changing welcome greetings No logo / face for the program yet, and no website, will start working on that later The Client app seems very stable for now, no issues found, pettrack_monitor has issues with focusing, server seems stable aswell. I am soon looking for testers for the program, before shipping I want to make sure that this is functional and useful for small pet owners, and what might work for me in my use case, it might not for somebody else, and I want to make it as stable as I am able to. Everything is opensource, available on https://github.com/szbnce/PetTrack (will push everything to GH tomorrow!), DM me on Slack if interested, currently only available for Android. I will start working on the UI and fix the bugs, and get back to you guys soon! Here are some pictures of the UI!"}, {"post_id": 10248, "ts": "2026-06-16T21:39:22Z", "hours": 2.5683, "text": "Hey guys! It’s been a long day, once again, but I have some good news! I have started working on PetTrack Client, started writing the UI and the functions of the app, but that’s when I realised that I still have no way of storing the data, analyzing the data and I don’t have any API routes where I could check or see the NON EXISTENT DATA! so, I left pettrack_client and started working on the backend, it’s getting somewhere, but I have not pushed changes to GH yet, because I haven’t finished it yet and it would not run in this state. I will try to finish changes with the backend tomorrow so I can start working on the frontend / client with real, actual data. Until then, here is a picture of PetTrack Monitor running on a somewhat low end Android 8.0 device and my IDE :D"}, {"post_id": 8371, "ts": "2026-06-13T22:29:10Z", "hours": 2.42, "text": "Good day everybody! It’s been a long day. I have done a lot of things today, mainly with pettrack_monitor. Basically: Firstly, I did a git rebase and made my last few commits make a bit more sense. There were commits that weren’t that useful or had the wrong name; it’s always better to have a good commit history. Next, I finally installed the app on a real device, and let’s just say, there were some problems. The flashlight was on while taking pictures, which is what I fixed first. It was quite easy, just one line: await _controller.setFlashMode(FlashMode.off); Afterward, it dawned on me that most people (including me) will use this app in Landscape mode, not Portrait. I fixed that issue next, but that itself came with a batch of new problems. The layout broke, like, fully. I couldn’t use the app at all, so I had to rewrite the whole layout with flexes and SizedBoxes; it was a pain in the a**. After this issue, instead of showing the SetupScreen every time the app opens, I made it a one-time thing and added a Settings menu and an About page. There were some issues with overflowing, but I fixed that as well. Now the app is fully functional. However, there is an issue I haven’t gotten around to fixing yet: when I exit the SetupScreen and go into MonitorScreen, the Xiaomi Camera API kills itself for whatever reason. I tried fixing it, but to no avail. It’s currently 12:30 AM, and I am very tired now. Tomorrow, I hope I will fix all remaining issues with the Monitor app and move onto the Server-side logic, zones, database, etc. And while doing that, I will start working on the Client-side app (at least an MVP) so I can start testing the app and server together. Berci is also looking forward to testing the app! (And don’t ask why he is there he is there because he wants to I have no idea why that’s good for him) Peace out!"}, {"post_id": 7131, "ts": "2026-06-11T22:16:46Z", "hours": 1.8947, "text": "We finally have the server in Docker up and running! I haven’t had much time to work on the project yesterday and today, but I started working on the Docker and Dockerfile, and well this is still whichcraft for me :p But, we are developing and we are getting ahead, and I hope that after the MVP for the server is working, I can start working on the client side MVP of the app, and we can start implementing features from there. I am very tired, and I have a long day tomorrow. Until then, there is another picture of Berci! P.S: Tomorrow I hope I can show some of the actual project!"}, {"post_id": 5844, "ts": "2026-06-09T19:49:41Z", "hours": 3.1944, "text": "Hey! Welcome to my project, PetTrack, this is the first Devlog of the project. I just recently got a rabbit, and while in school, I don’t know what she’s doing. And I assume a lot of animal parents face the same issue, or not an issue but just an uncomfortable feeling, maybe she/he got out, maybe they are doing something wrong, maybe they are not doing well, etc. This is what PetTrack aims to solve, so this uncomfortable feeling goes away, and you can be sure that your pet is safe and sound, while you are away. It uses an old phone as a “Monitor”, which will be attached to for example the cage of a pet, and connected to external power. Originally I wanted to make it so that there is no “central” computing, but after thinking about this for some time, and figuring that most of the people who are going to use this are going to use a close to min requirement phone (assuming low range old phone, and not a new flagship/new anything basically) and the issues with if the monitor dies for some issue, I decided on using a “central server” and using FastAPI with WebSockets to make the usage more seamless. It will be a simple Docker image that you will need to compose and run on a RPI or your server. The Client will be the “main” app, the one you will use the most, the one you’ll use daily. This is my last priority at the moment, let’s get the data first (Monitor), analyze and make use of the data (Server/backend), and the last is to see the data (Client). I’m open to any and all feedback on the project, any tips, help with Py/Flutter, would appreciate! Thanks for reading! Pic Description: My rabbit, named Berci, and an MVP of the server and Monitor."}]...
|
Title: PetTrack by @szabence | Stardance
Devlogs: Title: PetTrack by @szabence | Stardance
Devlogs:
Hey! Welcome to my project, PetTrack, this is the first Devlog of the project. I just recently got a rabbit, and while in school, I don’t know what she’s doing. And I assume a lot of animal parents face the same issue, or not an issue but just an uncomfortable feeling, maybe she/he got out, maybe they are doing something wrong, maybe they are not doing well, etc. This is what PetTrack aims to solve, so this uncomfortable feeling goes away, and you can be sure that your pet is safe and sound, while you are away. It uses an old phone as a “Monitor”, which will be attached to for example the cage of a pet, and connected to external power. Originally I wanted to make it so that there is no “central” computing, but after thinking about this for some time, and figuring that most of the people who are going to use this are going to use a close to min requirement phone (assuming low range old phone, and not a new flagship/new anything basically) and the issues with if the monitor dies for some issue, I decided on using a “central server” and using FastAPI with WebSockets to make the usage more seamless. It will be a simple Docker image that you will need to compose and run on a RPI or your server. The Client will be the “main” app, the one you will use the most, the one you’ll use daily. This is my last priority at the moment, let’s get the data first (Monitor), analyze and make use of the data (Server/backend), and the last is to see the data (Client). I’m open to any and all feedback on the project, any tips, help with Py/Flutter, would appreciate! Thanks for reading! Pic Description: My rabbit, named Berci, and an MVP of the server and Monitor.
We finally have the server in Docker up and running! I haven’t had much time to work on the project yesterday and today, but I started working on the Docker and Dockerfile, and well this is still whichcraft for me :p But, we are developing and we are getting ahead, and I hope that after the MVP for the server is working, I can start working on the client side MVP of the app, and we can start implementing features from there. I am very tired, and I have a long day tomorrow. Until then, there is another picture of Berci! P.S: Tomorrow I hope I can show some of the actual project!
Good day everybody! It’s been a long day. I have done a lot of things today, mainly with pettrack_monitor. Basically: Firstly, I did a git rebase and made my last few commits make a bit more sense. There were commits that weren’t that useful or had the wrong name; it’s always better to have a good commit history. Next, I finally installed the app on a real device, and let’s just say, there were some problems. The flashlight was on while taking pictures, which is what I fixed first. It was quite easy, just one line: await _controller.setFlashMode(FlashMode.off); Afterward, it dawned on me that most people (including me) will use this app in Landscape mode, not Portrait. I fixed that issue next, but that itself came with a batch of new problems. The layout broke, like, fully. I couldn’t use the app at all, so I had to rewrite the whole layout with flexes and SizedBoxes; it was a pain in the a**. After this issue, instead of showing the SetupScreen every time the app opens, I made it a one-time thing and added a Settings menu and an About page. There were some issues with overflowing, but I fixed that as well. Now the app is fully functional. However, there is an issue I haven’t gotten around to fixing yet: when I exit the SetupScreen and go into MonitorScreen, the Xiaomi Camera API kills itself for whatever reason. I tried fixing it, but to no avail. It’s currently 12:30 AM, and I am very tired now. Tomorrow, I hope I will fix all remaining issues with the Monitor app and move onto the Server-side logic, zones, database, etc. And while doing that, I will start working on the Client-side app (at least an MVP) so I can start testing the app and server together. Berci is also looking forward to testing the app! (And don’t ask why he is there he is there because he wants to I have no idea why that’s good for him) Peace out!
Hey guys! It’s been a long day, once again, but I have some good news! I have started working on PetTrack Client, started writing the UI and the functions of the app, but that’s when I realised that I still have no way of storing the data, analyzing the data and I don’t have any API routes where I could check or see the NON EXISTENT DATA! so, I left pettrack_client and started working on the backend, it’s getting somewhere, but I have not pushed changes to GH yet, because I haven’t finished it yet and it would not run in this state. I will try to finish changes with the backend tomorrow so I can start working on the frontend / client with real, actual data. Until then, here is a picture of PetTrack Monitor running on a somewhat low end Android 8.0 device and my IDE :D
Hey guys! I haven’t posted a devlog in a few days now, I have been working on some stuff here, and I have to say that I have some very good news! We finally have a Client app! It is a work in progress, but it is something! I don’t remember everything I have changed in the code, but: API adjusted, added a layer of security, because the API wasn’t secured. Added zones to pettrack_server, and added an API to edit it, Added Database (maybe mentioned in last devlog) Takes pictures every 2 seconds, only saves every 30 seconds for 12 hours (will add a replay mode or something like that) pettrack_monitor almost fully done, only need to add some stuff here and there. pettrack_server is in an MVP state now, it works beautifully but some features are still missing before shipping pettrack_client has been made (not pushed to GH yet), works well, though I am pretty fking shyt in UI design, so I made the UI with stitch.withgoogle.com and coded some of it with Gemini, though it still needs a lot of work. Live camera somewhat works (TODO: need to add when watching in the app to show the new pictures (that are taken every 2 seconds and not the 30 seconds saved)) Shows which zone was the most used- Shows last interaction (movement) Last 15 activities (entered zone, left zone, will add more later ? (NEED IDEAS!)) You can add zones (see the live camera and set it via adding points on the picture) You can set a picture and name for your pet in the client app- Always changing welcome greetings No logo / face for the program yet, and no website, will start working on that later The Client app seems very stable for now, no issues found, pettrack_monitor has issues with focusing, server seems stable aswell. I am soon looking for testers for the program, before shipping I want to make sure that this is functional and useful for small pet owners, and what might work for me in my use case, it might not for somebody else, and I want to make it as stable as I am able to. Everything is opensource, available on https://github.com/szbnce/PetTrack (will push everything to GH tomorrow!), DM me on Slack if interested, currently only available for Android. I will start working on the UI and fix the bugs, and get back to you guys soon! Here are some pictures of the UI!
Miscellaneous Updates to PetTrack! Hey guys! I know I haven’t posted in almost 2 weeks at this point. I needed a break from coding and doing work at the PC/PetTrack. We have a few miscellaneous updates to share: Custom Monitor IDs : You can now set a custom Monitor ID, and it will show up properly in the PetTrack app as well, instead of just defaulting to “Main Monitor”. Battery Status : You can now see the battery percentage and whether it’s charging directly in the app! I plan to add a feature later that will send a notification to the PetTrack Client app when the monitor phone’s battery is running low. Backend Testing : Added testing to the PetTrack server for both the WebSocket and REST API, so you can easily check if the API and WS are working correctly. I will put more effort and hours into the project soon, but I have a lot of other things going on besides this project, and I don’t want to risk burning out. Bye! P.S: This is Berci from a few days ago and I pushed everything to GH!
Frontend Changes to PetTrack! Today I worked a lot on PetTrack, and I made a few small but nice changes: Zone Notifications: You now get notified if a pet enters or exits a zone. Battery Alerts: Get notifications if the monitor’s battery is low (can be set between 5% and 50%). Camera Placeholder: Added a placeholder picture for when the camera is offline. Pet Types: You can now set the type of pet you have. I’ve added a few common ones, but I can add more if needed! Dynamic Live Badge: Fixed the hardcoded “Live” text on the dashboard. Now it shows exactly when the picture was taken (e.g., “30 seconds ago”), and if it’s under 10 seconds, it will say “Live”. “Continuous” Video: It’s still using pictures, but instead of updating every 30 seconds, it now updates roughly every 2 seconds. UI Cleanup: Removed the zoom buttons from the Zones screen since they were unnecessary. Custom Zones & Icons: When adding a new zone, you can now assign it a category (play area, toilet, food, water, bed) with matching icons. I’ll add a fully customizable option later! Bug Fixes: Fixed some minor layout issues. That’s all I think. Bye guys!
Monitor ready, server working, Client UI is mostly done, we are shipping soon! I made a few adjustments today: Monitor: Synced theme with Client Fixed alignment issues Added Auto reconnect and Auto capture Monitor is basically finished, I don’t think I will add anything to the monitor before shipping now. New README.md: I completly redesigned the README, now in my opinion its almost perfect. Tomorrow, I will start to make a webpage for the project, and I might make a WebUI before the project ships, and add some more tests, but I will sleep on that. Bye guys!
More seamless Setup! I have edited the Setups, so now, it is more seamless: When you Install the server, it spits out a QR-code, which you have to scan while setting up the Client app, they connect, and you have to set up the profile of the pet, and a 4 digit pin code, which will be for the WebClient that I am planning to make. After that, the phone spits out another QR code, which you have to scan with the Monitor, and it will connect automatically, and only then will the app let you in. Also, I added E2EE to the server - client connection, to make it more secure, and I also did some bugfixes. I will start to Polish the apps, make it so easy to set up that even somebody who doesn’t use technology day-to-day would be able to set it up perfectly. Bye guys!
🛠️ BUGFIXES! BUGFIXES! I didn’t really add any new features this time, but rather focused on fixing and polishing already existing features. 🔒 Security and Stability Token Generation: I removed hardcoded “placeholder” tokens; the system now creates a new API token seamlessly. Storage Limits: Added a maximum 500 picture limit on the server, so it doesn’t fill up the storage if the cleanup task fails. Syntax Fixes: Fixed a broken dictionary on the server which threw garbage JSON. ✨ UI and Usability Notification Cooldown: Added a 1-minute cooldown between notifications to prevent spam. Better Statistics: Now the Activities tab shows 50 events instead of 5 for more accurate data. Dynamic Names: Removed fallback placeholder names (no more hardcoded fake names). 100% Localization: Removed all hardcoded UI strings and moved absolutely everything into l10n and .arb dictionaries. 🏗️ Architecture Hardware JPEG Streaming: Switched to native hardware JPEG streaming for faster picture taking, completely replacing the heavy RepaintBoundary method. 🚧 IN THE WORKS: WebSocket migration! I will tackle that tomorrow to achieve real-time streaming. Here is a picture showing git graph (lol) and Berci as I was fixing up issues. Bye guys!
now i understand why web developers are all bald and angry… Okkkay so, little bit of a backgound here, I do not agree on the fact that I should pay for FOSS apps to be put on the play store and app store, that for one company i should pay 25 bucks once and then i can put my app on the app store and i have to pay 100 BUCKS YEARLY TO APPLE. So, instead of creating an app for iOS, since you can’t really sideload (there are ways for people in Europe and you can jailbreak bla bla bla…) and this app is made for ordinary people. Not developers. So, as a last resort, I am making a WebClient and WebMonitor, so the apps are able to run without even installing anything. Obviously the installed apps will run better and feel better, but then no iOS support, which I did not want. So, I started working with AI on a WebClient and WebMonitor and started learning JavaScript, but that…. Dart next to Javascript is a kids game honestly, very hard, I tried to make it easier for me by using TailwindCSS which I have some experience in, but it wasn’t that easy. To eliminate AI slop, I have a great Web developer friend (became bald at the bold age of 30), and he’ll monitor the code and check if it is alright for “prod”…
🚀 WebClient is getting ready! I’ve done multiple things with the WebClient over the last 4 hours, and we are getting closer and closer to shipping! Here is a quick rundown of the progress: 🛠️ Key Features & Updates Unified Multi-Mode: You can now choose whether you want to use a device as a Client (Viewer) or a Monitor (Camera). Zone Management: Zone adding now works! (Showing current zones is still slightly broken, but we are getting there). Event Tracking: Zone enter/exit detection is fully functional. Dashboard Stats: Added panels to show “Last seen” and “Most seen” locations. Pet Profiles: You can now edit your pet’s profile directly from the Settings tab. Settings Reset: Added the ability to wipe all local settings if you want a fresh start. 🎨 UI & UX Polish Dark Mode: Synced theme with Client, dark and light mode aswell. Cleaned up the UI: Removed all unnecessary buttons. P.S. Berci got vaccinated today! 💉🐇 So now he’s immune to both physical viruses and mental breakdowns over JavaScript!
The Flutter apps and the Server is 99% done until shipping! This is rather a bigger devlog, I didn’t make a more smaller ones, but let’s see what I’ve done: Easier pairing : Now instead of using a qr code (which in the Docker terminal is unreliable), you get a 4 number pairing code, which you can use to communicate the 64 char JWT token. It’s much easier, and much more reliable. Docker : I implemented Docker, but it seems like at the moment that it only really works on MacOS, i might phase Docker out and make setup commands for each, maybe a oneliner with curl, or something like that. Bugfixes : Lots of bugfixes in those 6,5 hours, I can’t even list all of them, connectivity issues, pairing issues, camera issues, UI Cleanup : I removed developer overlays from the web e.g Eruda mobile console overlay. I will be focusing a lot more on the Mock API for the demo site, and polishing for Shipping EXCEPT for one feature that I still want to add, and that would be insanely good. Bye guys!
Hey guys.. Its been 17 days since the last Devlog, I dont even know what I “upgraded” or didn’t. I wont’t try to make it a big devlog or anything, really i just want to get the hours logged so I can start fresh. I’ve decided to ditch all 3 (pettrack_monitor, pettrack_client and pettrack_web) codebases and rewrite everything as one flutter app. Making sure 4 sections of the app written in 3 different languages wasn’t easy on my level so I decided to ditch all and write one “pettrack_app” codebase. It will work on Android, iOS and Web, and for iOS users also PWA app, so you don’t have to install anything, and it will all work under one codebase, so everything will be the same across all devices. So. I don’t know when I will finish or anything, or write the next devlog, because I have so many things to do this month, soo…
PetTrack Demo is finally here! I haven’t worked on PetTrack in the past 1,5 months, mostly because I just couldn’t bring myself to code, and I am going on vacation as I am writing this, and I figured, omg, if i come home, it will be already september, and besides school, i will definetly not finish this, and then, what was I working for for days on end? So, I got my sxit together, and started working on the project. Sadly, because of the time, I had to use AI so I will finish until I leave for vacation. I almost did not. It’s 3:45 AM, I left 2 hours ago, and I set up the server 15 whole minutes before leaving my house. So it was calculated, but I managed. Unified Flutter codebase: I merged the pettrack_client , pettrack_montior and pettrack_web , into one package, and is written in Flutter. The app is entirely in Flutter, I kept designs of the Client so it won’t look very different. Deployment & OS Support: The new one app method is Docker compatible, so the project will offer a Docker option, and a non-docker MacOS and Linux native installer, and a Windows installer aswell, without docker :) Branching: The one where I used AI has been moved to a new branch "allFlutter" . iOS Support: I initally did not want to make an iOS version because I don’t really agree with the yearly 100 usd developer program payment, and I don’t really agree with Google Play 25usd purchase aswell, but that’s very much more manageable than a yearly model, on a FOSS app. Anyways, I will publish the .ipa file, and do what you want with it :) If you have the courage and understanding, you can jailbreak and install it indefinetly, or you can sideload it, though you will have to renew it every week. If you don’t want to do that, you can of course use the Web version in a browser, it will work the exact same way, they are the same codebase under. Web support: This was my original plan to make PetTrack work on iOS devices, but then, I decided why not make it fully work on any browser? One codebase, the Webapp, the Android app and iOS app will work the EXACT SAME WAY! if you want to install a full app, you may, but if you don’t, you have all options. Medical panel: I think I have made a devlog about that, or mentioned that, but I will write it once again. We have a Medical tab now, where you will be able to track Medications and get notifications to give them to your pet, and the Vaccines tab, where you can track what the pet has gotten, when, and when its next Due. You can also set more colors. Replay: You can now replay movement. Currently for some reason, It does not work (I started implementing it at 0:30 AM, left at 1:30 so I could’ve expected that), or atleast it does not work from the browser. If i log into the server, and check it, the videos are there, and visible. It records a few seconds before and after the movement. Demo! Now you can check out PetTrack at: 👉 https://pettrackdemo.szabence.com How to access: Select language (colors are broken i know) Select Viewer For IP write asd or something, just dont leave it empty For password, write 8068 Press next, and you will see it asking if you want to go into Demo Press yes, and you are in! Its a quite basic demo, its the same codebase, just no server behind. You can add medications, test zones, etc. After you close the tab, everything will be deleted. I will test the project as I am going about my week, fix errors at night, and I will ship the project next week. Have a great week guys, and thank you for watching the project.
PetTrack has been released! Hello guys! I’m not going to mess around with Markdown for this last devlog, I have been testing the project for 2 weeks now, and it is working great. I fixed up minor bugs that I found, added 5 AI-translated languages for more multilang support, though Hungarian and English has been translated by me, so those are definetly correct :) I changed on the UI a bit, removed the last seen and most seen cards from the dashboard and changed it to a diagram about the Zone visits, and changed the Medical UI cards a bit. Also made the resolution in the app better, now you can make pictures from the app, and instantly share them, replays work now on both iOS and Android. The first release of PetTrack has been finally published on GitHub, so please go and check it out! https://github.com/szbnce/PetTrack/releases/tag/1.0.0 Thank you everybody who has been though this journey over 3 months with me. Thank you!
PetTrack reship no.2 Hey guys, I have shipped the project last week, but I got rejected because I’ve used the project logo as banner and not a screenshot… Anyways, I fixed some bugs that Ive seen since shipping, which was the Notification, on both iOS and Android and Web, it wasn’t working correctly anywhere, but because of lack of time at the moment, I have removed the Notification option. on iOS it will never work self-hosted, because it requires apple dev account and the app to be on the app store or have a real backend behind it, or something like that I’ve read. I also removed the Sync with watch button from the iOS builds and Web builds, since there is only WearOS build. Google play! I have started the process to put the app on the Google Play. I was originally against this, as y’all have read in one of the first devlogs, but I thought, 25 bucks once isn’t that much, so PetTrack will be on the Play store soon, but by the looks of things, only after Stardance has already finished. WearOS I started school once again, and I couldn’t always get to my phone so I have made a minimalist app to use on the watch, it’s not that full, you can only see 1 frame / 5 seconds, and you can’t edit anything, only check the live feed, check the Monitors battery percentage and the last seen in X zone. I will ship my project once again, thank you for reading! EDIT: I did not know I just need recertification instead of a full reship lol
Ships:
PetTrack! A beautiful Pet Monitoring system that upcycles old smartphones into IP-cameras that you can use to see your small pet I made this project because I took in a Rabbit in May 2026 and I didn’t know what she was doing when i wasn’t home, so I decided to code this app that you can install on any Android 7+ / iPhone 6s or newer device, and use it to check on your pet, with a beautiful UI, Zone tracking, replays, medicine and vaccine tracking, and a lot more :) The hardest part was, getting used to writing Flutter. I have never used Flutter in the past, but I read about it and I liked the mentality and the mechanics of the code or how should I say, and I decided to give it a go. I love it. Simple but effective, and I can use this 1 codebase on the web, on my iPhone, on my Android and even on my WearOS smartwatch :) The project is working, and you can check it by the bottom below, select language, select Client and press Demo mode, it will show the UI. You can see it working in action on the screenshots. Check the README, and thank you for reading this!...
|
1792853408.7243705
|
1792939808.7243705
|
|
16233
|
See-TreePiO by @Aryana | Stardance
|
Aryana
|
1
|
142.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-18T06:32:43Z", "hours": 142.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a project that can detect tree/plant species and temperature to determine whether it is dead or not. It displays the result on an LCD in the back, and will start the process of scanning a tree/plant once a button is pressed. The wiring is enclosed in a 3D printed prototype. The most difficult thing I did in this project was likely trying to fit it all in the enclosure. There were a lot of wires here and there, and the button was also quite difficult to fit in, as I needed to solder it on. However, this project was really fun to do, as it helped me gain knowledge about the environment around me, and I got to practice my software and hardware skills. I am really proud of myself, as I completed this project from start to finish, and didn’t give up. To test my project, all you have to do is plug in the battery pack, wait for a minute or so, point the prototype at the tree you want to scan, press the button, and wait for the results. Sometimes, it will take a little longer to get the results, resulting from a difficulty figuring out either the temperature or species of that particular plant/tree.", "repo": "https://github.com/dawinner395/tree-health-scanner", "demo": ""}]...
|
[{"post_id": 69981, "ts": "202 [{"post_id": 69981, "ts": "2026-09-18T05:40:56Z", "hours": 0.35, "text": "I completed the prototype by combining the enclosure with the prototype. I encased the sensors and the LCD. The prototype is finally complete!"}, {"post_id": 69965, "ts": "2026-09-18T04:18:13Z", "hours": 1.5167, "text": "I combined the parts in the bottom half of the prototype, and fit it in the encolsure."}, {"post_id": 67575, "ts": "2026-09-13T18:30:05Z", "hours": 1.3167, "text": "I researched the different types of prevalent trees in California and their temperatures during different seasons. I plan to add this to my database, as I hadn’t previously done this. I used many websites, but Our City Forest was the most helpful."}, {"post_id": 66887, "ts": "2026-09-12T20:45:05Z", "hours": 0.9333, "text": "I fixed the issues that the prototype was facing. I also added a button. The main thing I did was make the prototype able to function without the computer nearby, which can make it so that anyone in the world can use it with a battery pack."}, {"post_id": 64447, "ts": "2026-09-08T20:39:44Z", "hours": 12.0014, "text": "I 3D printed the top half of the housing for the prototype. Next, I will print the bottom half."}, {"post_id": 48288, "ts": "2026-08-16T16:26:44Z", "hours": 10.6833, "text": "I build a CAD of the structure that will house the prototype. I left holes for all the different parts, and will print it later today."}, {"post_id": 36195, "ts": "2026-07-28T03:59:06Z", "hours": 1.7667, "text": "I connected the database to the Raspberry Pi, and tested it out using a house plant. It worked really well, and the next step is to test it outside with a real tree."}, {"post_id": 35375, "ts": "2026-07-26T18:41:48Z", "hours": 1.8333, "text": "I researched about how to use the specific PlantNet API database with the Raspberry Pi and hook that database to a Machine Learning algorthim. I am finally ready to actually make the Machine Learning algorithm and get my hands dirty now that I have the information I need to continue on with the project."}, {"post_id": 32105, "ts": "2026-07-21T01:22:30Z", "hours": 0.3333, "text": "I researched more about the tree datasets, and I found one that has plenty of accurate information: PlantNet API."}, {"post_id": 31560, "ts": "2026-07-20T02:06:06Z", "hours": 0.6333, "text": "I researched the different datasets I can use for the project, as well as the amount of tree data each have in them. I still need to do some more research, but as of now, creating a dataset is the best option if I want to get a wide, accurate range of data. I haven’t found any datasets that match the amount of data I can collect by myself in my neighborhood."}, {"post_id": 29878, "ts": "2026-07-17T01:24:55Z", "hours": 0.6, "text": "I tested the camera and battery pack that came. They both worked really well. Now, I can start inputting the ML algrothm."}, {"post_id": 28665, "ts": "2026-07-15T01:45:42Z", "hours": 3.7747, "text": "I fiinshed the Machine Learning book."}, {"post_id": 28079, "ts": "2026-07-14T03:24:59Z", "hours": 1.0333, "text": "I read Chapters 14 and 15 of the Machine Learning book. The parts will come tomorrow."}, {"post_id": 27961, "ts": "2026-07-13T22:13:23Z", "hours": 0.6833, "text": "I read Chapter 13 of the Machine Learning book."}, {"post_id": 27279, "ts": "2026-07-12T18:33:41Z", "hours": 1.65, "text": "I planned the way I am going to connect the ArduCam to the Raspberry Pi with the thermal sensor. I realized I might have to solder some wires together so that more than one wire can fit on one pin on the Pi. I planned the way the wires are going to connect to the Pi and how I am going to integrate ML into the Pi using the camera and thermal sensor."}, {"post_id": 26242, "ts": "2026-07-10T22:09:55Z", "hours": 1.7667, "text": "I researched more about using the ArduCam with the Raspberry Pi 5. I found troubleshooting techniques and what I need to do after I get the camera (the setup)."}, {"post_id": 25652, "ts": "2026-07-10T02:04:39Z", "hours": 1.6847, "text": "I read Chapters 11 and 12 of the Machine Learning book."}, {"post_id": 25543, "ts": "2026-07-09T21:16:12Z", "hours": 1.5167, "text": "I watched a video about using the ArduCam with the Raspberry Pi 5."}, {"post_id": 25481, "ts": "2026-07-09T19:38:18Z", "hours": 1.2369, "text": "I read Chapters 9 and 10 of the Machine Learning book."}, {"post_id": 25077, "ts": "2026-07-09T01:30:27Z", "hours": 0.4, "text": "I read Chapter 8 of the Machine Learning book. I will stop watching the AI on the Edge videos because they are not accessible on YouTube after Lesson 31. The parts will come day after tomorrow, so I plan to finish reading this book by then."}, {"post_id": 24895, "ts": "2026-07-08T19:02:48Z", "hours": 2.1167, "text": "I watched Lesson 31 of the AI on the Edge videos."}, {"post_id": 24517, "ts": "2026-07-08T03:43:40Z", "hours": 2.1914, "text": "I watched Lesson 30 of the AI on the Edge videos."}, {"post_id": 24471, "ts": "2026-07-08T01:31:47Z", "hours": 1.9167, "text": "I watched Lesson 29 of the AI on the Edge videos."}, {"post_id": 24422, "ts": "2026-07-07T23:28:04Z", "hours": 3.2, "text": "I watched Lesson 28 of the AI on the Edge videos."}, {"post_id": 24308, "ts": "2026-07-07T19:58:17Z", "hours": 2.1003, "text": "I watched Lesson 27 of the AI on the Edge videos."}, {"post_id": 23795, "ts": "2026-07-06T23:03:10Z", "hours": 2.7667, "text": "I watched Lesson 26 of the AI on the Edge videos."}, {"post_id": 23280, "ts": "2026-07-06T04:18:00Z", "hours": 2.3625, "text": "I watched Lesson 25 of the AI on the Edge videos."}, {"post_id": 23236, "ts": "2026-07-06T01:55:59Z", "hours": 3.1667, "text": "I watched Lesson 24 of the AI on the Edge videos."}, {"post_id": 23150, "ts": "2026-07-05T22:46:20Z", "hours": 0.9167, "text": "I read chapters 6 and 7 of the Machine Learning book. I’m just reading and watching the videos until the parts arrive in three or four days. Then, I will work on the technical aspect of the prototype. I have some free time now, so I thought I would learn about Machine Learning and using the Raspberry Pi in the time I have instead of wasting it."}, {"post_id": 22461, "ts": "2026-07-04T22:37:08Z", "hours": 2.0494, "text": "I watched Lesson 23 of the AI on the Edge videos."}, {"post_id": 22380, "ts": "2026-07-04T20:34:29Z", "hours": 3.2, "text": "I watched Lesson 22 of the AI on the Edge videos."}, {"post_id": 21779, "ts": "2026-07-03T21:41:25Z", "hours": 1.5, "text": "I watched Lesson 21 of the AI on the Edge videos."}, {"post_id": 21716, "ts": "2026-07-03T20:11:28Z", "hours": 1.9, "text": "I watched Lesson 20 of the AI on the Edge videos."}, {"post_id": 21285, "ts": "2026-07-03T04:02:15Z", "hours": 2.8383, "text": "I watched Lesson 19 of the AI on the Edge videos."}, {"post_id": 21215, "ts": "2026-07-03T01:11:38Z", "hours": 2.3, "text": "I watched Lesson 18 of the AI on the Edge videos."}, {"post_id": 21101, "ts": "2026-07-02T21:55:09Z", "hours": 3.7, "text": "I watched Lesson 17 of the AI on the Edge videos."}, {"post_id": 20495, "ts": "2026-07-02T03:07:09Z", "hours": 1.9072, "text": "I watched Lesson 16 of the AI on the Edge videos."}, {"post_id": 20442, "ts": "2026-07-02T01:11:45Z", "hours": 2.3333, "text": "I watched Lesson 15 of the AI on the Edge videos."}, {"post_id": 20318, "ts": "2026-07-01T21:43:50Z", "hours": 3.6667, "text": "I watched Lesson 14 of the AI on the Edge videos."}, {"post_id": 19770, "ts": "2026-07-01T04:50:30Z", "hours": 2.7167, "text": "I watched Lesson 13 of the AI on the Edge videos."}, {"post_id": 19679, "ts": "2026-07-01T02:07:59Z", "hours": 1.4167, "text": "I watched Lesson 12 of the AI on the Edge videos."}, {"post_id": 19634, "ts": "2026-07-01T00:35:15Z", "hours": 1.6167, "text": "I read chapters 5 and 6 of the Machine Learning book."}, {"post_id": 19586, "ts": "2026-06-30T22:40:26Z", "hours": 1.6167, "text": "I watched Lesson 11 of the AI on the Edge videos."}, {"post_id": 19523, "ts": "2026-06-30T21:02:23Z", "hours": 1.0494, "text": "I watched Lesson 10 of the AI on the Edge videos."}, {"post_id": 19468, "ts": "2026-06-30T19:58:25Z", "hours": 2.1, "text": "I watched Lesson 9 of the AI on the Edge videos."}, {"post_id": 19018, "ts": "2026-06-30T05:48:49Z", "hours": 2.7, "text": "I watched Lesson 8 of the AI on the Edge videos."}, {"post_id": 18914, "ts": "2026-06-30T03:06:50Z", "hours": 0.75, "text": "I finished reading Chapter 4 of the Machine Learning book. I am also taking more notes on the book now."}, {"post_id": 18878, "ts": "2026-06-30T02:18:01Z", "hours": 0.9, "text": "I sent an email to Ms. Mint (the one I met previosuly) asking if we could meet again for some feedback on my project idea. I also converted my paper plan onto a document and calendar so I can keep track of any deadlines I might have for the project."}, {"post_id": 18760, "ts": "2026-06-29T23:18:51Z", "hours": 4.0, "text": "I watched Lesson 7 of the AI on the Edge videos."}, {"post_id": 17910, "ts": "2026-06-28T20:55:18Z", "hours": 1.2, "text": "I watched Lesson 6 of the AI on the Edge videos."}, {"post_id": 17840, "ts": "2026-06-28T19:40:59Z", "hours": 1.0667, "text": "I watched Lesson 5 of AI on the Edge. In the previous DevLog about the AI on the Edge videos, I actually watched Lesson 4, not Lesson 3."}, {"post_id": 17786, "ts": "2026-06-28T18:35:28Z", "hours": 1.7667, "text": "I made a plan on how to spend my time during this summer, as a lot of time will be dedicated to the ML aspect of my project."}, {"post_id": 17345, "ts": "2026-06-28T02:58:04Z", "hours": 2.0833, "text": "I watched Lesson 3 of the AI on the Edge videos."}, {"post_id": 17217, "ts": "2026-06-27T22:37:39Z", "hours": 3.05, "text": "I finished the 3rd lesson of the AI on the Edge."}, {"post_id": 17106, "ts": "2026-06-27T19:33:57Z", "hours": 1.5667, "text": "I watched the Lesson 2 of the AI on the Edge Raspberry Pi videos."}, {"post_id": 16603, "ts": "2026-06-27T00:34:57Z", "hours": 1.5, "text": "I watched a video about using the Raspberry Pi 5 with ML. Though the Machine Learning book is helpful (and I will keep reading it), I felt that it was not enough to help me with this specific project."}, {"post_id": 16000, "ts": "2026-06-25T23:50:46Z", "hours": 0.9333, "text": "I researched exactly what camera and battery pack to buy (to power the Raspberry Pi). I added them to the cart and will buy it as soon as possible to further develop the prototype. I can’t wait to see how it works with the thermal sensor!"}, {"post_id": 15917, "ts": "2026-06-25T21:22:07Z", "hours": 1.0667, "text": "I just researched about how to combine a thermal sensor with a camera. I found a helpful video and took notes on that video. I also found the specific type of camera I can use, which is a standard Raspberry Pi Camera Module, as well as the connector."}, {"post_id": 15877, "ts": "2026-06-25T20:08:12Z", "hours": 0.6167, "text": "Instead of physically testing the prototypes out (because my dog accidentally stepped on the ultrasonic sensor prototype), I just researched a bit more about the two sensors. I researched the benefits and downsides of each sensor, as well as how accurae they are at specifcally detecting dead trees. I found that people have used ultrasonic sensors before to detect dead trees, but no one has used thermal sensors in the way that I am before to do so. Therefore, I will stick with using a thermal sensor for this prototype. I will have to do more research about the actual pairing between a thermal sensor, a camera, and ML, but the book will help me a lot in the coding of the ML portion."}, {"post_id": 15231, "ts": "2026-06-24T18:49:08Z", "hours": 0.5333, "text": "I compared the 2 prototypes to see which sensor is more accurate (with research, not actual testing). I found that the thermal sensor is more accurate, especially when paired with a camera and an ML algorithm. However, the pairing will be new to me because of the Raspberry Pi. I am more used to working with Aruinos, but through research and practice, I will be able to implement ML. Also, the book I am reading is going to help increase my knowledge on ML. In a future DevLog, I might just test this research just to be sure the thermal sensor is the right choice."}, {"post_id": 14069, "ts": "2026-06-23T01:29:08Z", "hours": 2.3667, "text": "I created the new prototype using the ultrasonic sensor. I coded it, and it successfully functions properly. However, when I tested it with a tree, it didn’t detect it correctly (it said it was dead, not healthy). When I tested it a few more times, it showed accurate readings. I still need to compare the two prototypes together."}, {"post_id": 13982, "ts": "2026-06-22T23:01:27Z", "hours": 0.7219, "text": "I started taking notes on how to work with a thermal sensor, a camera, and ML. I found that it might be hard to integrate all 3 of these things, so I started looking in a different path. I found that I could use ultrasonic distance sensors to detect the unique ultrasonic waves emitted from trees. Therefore, I will start creating a prototype using the ultrasonic sensor and compare the 2 prototypes together."}, {"post_id": 13915, "ts": "2026-06-22T20:24:35Z", "hours": 1.6833, "text": "I copied the code from Command Prompt to GitHub so I have a way to store it somewhere safe. I also double-checkked that the code was correct, and fixed any errors."}, {"post_id": 13555, "ts": "2026-06-22T06:01:12Z", "hours": 3.0333, "text": "I interviewed a tree expert, Ms. Mint, who works at a local farm. She brought up some interesting points, and helped me narrow down what sensors I want to use for my project. She said that using a thermal sensor would be a good idea becuase of its accuracy and easy use. However, when I interviewed her, I had to record the video on my phone instead of on this Hackatime. Therefore, I screen recorded the video and that is the video shown here on this Devlog. I was also with a few other people interested in Ms. Mint’s work, so it wasn’t a one-on-one session, more of a broader overview with a lot of Q-and-A. Overall, this experience was really nice because I got to meet a curator of a nature center, feel the nature all around me, see the difference between dead and healthy trees, and get feedback on my idea."}, {"post_id": 13494, "ts": "2026-06-22T02:51:43Z", "hours": 1.1878, "text": "I wired the thermal sensor, the LCD, the Raspberry Pi, and the LCD backpack. At first, the wiring was not working, so I switched to planning the wiring on paper. Once I finished that, I used a soldering iron to combine two wires to fit in one slot. This is the completed wiring."}, {"post_id": 13467, "ts": "2026-06-22T01:34:43Z", "hours": 0.4833, "text": "I continued reading the Machine Learning book and got to Chapter 4. The book is really interesting and I already feel like I have some knowledge (not a lot, but some) about ML."}, {"post_id": 13450, "ts": "2026-06-22T01:01:41Z", "hours": 2.55, "text": "I continued reading the Machine Learning book and got to Chapter 4. The book is really interesting and I already feel like I have some knowledge (not a lot, but some) about ML."}, {"post_id": 13342, "ts": "2026-06-21T21:15:14Z", "hours": 0.4833, "text": "I have started reading a book about Machine Learning, its history, and how to train/use it to the best of my ability. I have been taking some notes and answering some questions presented in the book. I have gotten through the first 2 chapters so far and plan to finish the book in the next few weeks. This book will really help me use ML in my project, as well as use it in other projects that I may decide to pursue."}, {"post_id": 12793, "ts": "2026-06-20T22:25:53Z", "hours": 0.8169, "text": "I created the code for the basic part of the prototype. The code makes the prototype able to detect the thermal signature of a Redwood Tree and determine whether it is dead or healthy. In the future, I wil re-make the code to incorporate a camera and a Machine Learning algorithm that can be used for more accurate and broader readings, not just for Redwood trees."}, {"post_id": 12756, "ts": "2026-06-20T21:19:55Z", "hours": 1.4667, "text": "Researched about the different techniques and sensors I could use for this project. I found that using a thermal sensor with Machine Learning algorithms and a camera would be the best for my project."}, {"post_id": 12708, "ts": "2026-06-20T19:07:36Z", "hours": 0.6164, "text": "Testing and editing the code and the wiring of the prototype"}]...
|
Title: See-TreePiO by @Aryana | Stardance
Devlogs Title: See-TreePiO by @Aryana | Stardance
Devlogs:
Testing and editing the code and the wiring of the prototype
Researched about the different techniques and sensors I could use for this project. I found that using a thermal sensor with Machine Learning algorithms and a camera would be the best for my project.
I created the code for the basic part of the prototype. The code makes the prototype able to detect the thermal signature of a Redwood Tree and determine whether it is dead or healthy. In the future, I wil re-make the code to incorporate a camera and a Machine Learning algorithm that can be used for more accurate and broader readings, not just for Redwood trees.
I have started reading a book about Machine Learning, its history, and how to train/use it to the best of my ability. I have been taking some notes and answering some questions presented in the book. I have gotten through the first 2 chapters so far and plan to finish the book in the next few weeks. This book will really help me use ML in my project, as well as use it in other projects that I may decide to pursue.
I continued reading the Machine Learning book and got to Chapter 4. The book is really interesting and I already feel like I have some knowledge (not a lot, but some) about ML.
I continued reading the Machine Learning book and got to Chapter 4. The book is really interesting and I already feel like I have some knowledge (not a lot, but some) about ML.
I wired the thermal sensor, the LCD, the Raspberry Pi, and the LCD backpack. At first, the wiring was not working, so I switched to planning the wiring on paper. Once I finished that, I used a soldering iron to combine two wires to fit in one slot. This is the completed wiring.
I interviewed a tree expert, Ms. Mint, who works at a local farm. She brought up some interesting points, and helped me narrow down what sensors I want to use for my project. She said that using a thermal sensor would be a good idea becuase of its accuracy and easy use. However, when I interviewed her, I had to record the video on my phone instead of on this Hackatime. Therefore, I screen recorded the video and that is the video shown here on this Devlog. I was also with a few other people interested in Ms. Mint’s work, so it wasn’t a one-on-one session, more of a broader overview with a lot of Q-and-A. Overall, this experience was really nice because I got to meet a curator of a nature center, feel the nature all around me, see the difference between dead and healthy trees, and get feedback on my idea.
I copied the code from Command Prompt to GitHub so I have a way to store it somewhere safe. I also double-checkked that the code was correct, and fixed any errors.
I started taking notes on how to work with a thermal sensor, a camera, and ML. I found that it might be hard to integrate all 3 of these things, so I started looking in a different path. I found that I could use ultrasonic distance sensors to detect the unique ultrasonic waves emitted from trees. Therefore, I will start creating a prototype using the ultrasonic sensor and compare the 2 prototypes together.
I created the new prototype using the ultrasonic sensor. I coded it, and it successfully functions properly. However, when I tested it with a tree, it didn’t detect it correctly (it said it was dead, not healthy). When I tested it a few more times, it showed accurate readings. I still need to compare the two prototypes together.
I compared the 2 prototypes to see which sensor is more accurate (with research, not actual testing). I found that the thermal sensor is more accurate, especially when paired with a camera and an ML algorithm. However, the pairing will be new to me because of the Raspberry Pi. I am more used to working with Aruinos, but through research and practice, I will be able to implement ML. Also, the book I am reading is going to help increase my knowledge on ML. In a future DevLog, I might just test this research just to be sure the thermal sensor is the right choice.
Instead of physically testing the prototypes out (because my dog accidentally stepped on the ultrasonic sensor prototype), I just researched a bit more about the two sensors. I researched the benefits and downsides of each sensor, as well as how accurae they are at specifcally detecting dead trees. I found that people have used ultrasonic sensors before to detect dead trees, but no one has used thermal sensors in the way that I am before to do so. Therefore, I will stick with using a thermal sensor for this prototype. I will have to do more research about the actual pairing between a thermal sensor, a camera, and ML, but the book will help me a lot in the coding of the ML portion.
I just researched about how to combine a thermal sensor with a camera. I found a helpful video and took notes on that video. I also found the specific type of camera I can use, which is a standard Raspberry Pi Camera Module, as well as the connector.
I researched exactly what camera and battery pack to buy (to power the Raspberry Pi). I added them to the cart and will buy it as soon as possible to further develop the prototype. I can’t wait to see how it works with the thermal sensor!
I watched a video about using the Raspberry Pi 5 with ML. Though the Machine Learning book is helpful (and I will keep reading it), I felt that it was not enough to help me with this specific project.
I watched the Lesson 2 of the AI on the Edge Raspberry Pi videos.
I finished the 3rd lesson of the AI on the Edge.
I watched Lesson 3 of the AI on the Edge videos.
I made a plan on how to spend my time during this summer, as a lot of time will be dedicated to the ML aspect of my project.
I watched Lesson 5 of AI on the Edge. In the previous DevLog about the AI on the Edge videos, I actually watched Lesson 4, not Lesson 3.
I watched Lesson 6 of the AI on the Edge videos.
I watched Lesson 7 of the AI on the Edge videos.
I sent an email to Ms. Mint (the one I met previosuly) asking if we could meet again for some feedback on my project idea. I also converted my paper plan onto a document and calendar so I can keep track of any deadlines I might have for the project.
I finished reading Chapter 4 of the Machine Learning book. I am also taking more notes on the book now.
I watched Lesson 8 of the AI on the Edge videos.
I watched Lesson 9 of the AI on the Edge videos.
I watched Lesson 10 of the AI on the Edge videos.
I watched Lesson 11 of the AI on the Edge videos.
I read chapters 5 and 6 of the Machine Learning book.
I watched Lesson 12 of the AI on the Edge videos.
I watched Lesson 13 of the AI on the Edge videos.
I watched Lesson 14 of the AI on the Edge videos.
I watched Lesson 15 of the AI on the Edge videos.
I watched Lesson 16 of the AI on the Edge videos.
I watched Lesson 17 of the AI on the Edge videos.
I watched Lesson 18 of the AI on the Edge videos.
I watched Lesson 19 of the AI on the Edge videos.
I watched Lesson 20 of the AI on the Edge videos.
I watched Lesson 21 of the AI on the Edge videos.
I watched Lesson 22 of the AI on the Edge videos.
I watched Lesson 23 of the AI on the Edge videos.
I read chapters 6 and 7 of the Machine Learning book. I’m just reading and watching the videos until the parts arrive in three or four days. Then, I will work on the technical aspect of the prototype. I have some free time now, so I thought I would learn about Machine Learning and using the Raspberry Pi in the time I have instead of wasting it.
I watched Lesson 24 of the AI on the Edge videos.
I watched Lesson 25 of the AI on the Edge videos.
I watched Lesson 26 of the AI on the Edge videos.
I watched Lesson 27 of the AI on the Edge videos.
I watched Lesson 28 of the AI on the Edge videos.
I watched Lesson 29 of the AI on the Edge videos.
I watched Lesson 30 of the AI on the Edge videos.
I watched Lesson 31 of the AI on the Edge videos.
I read Chapter 8 of the Machine Learning book. I will stop watching the AI on the Edge videos because they are not accessible on YouTube after Lesson 31. The parts will come day after tomorrow, so I plan to finish reading this book by then.
I read Chapters 9 and 10 of the Machine Learning book.
I watched a video about using the ArduCam with the Raspberry Pi 5.
I read Chapters 11 and 12 of the Machine Learning book.
I researched more about using the ArduCam with the Raspberry Pi 5. I found troubleshooting techniques and what I need to do after I get the camera (the setup).
I planned the way I am going to connect the ArduCam to the Raspberry Pi with the thermal sensor. I realized I might have to solder some wires together so that more than one wire can fit on one pin on the Pi. I planned the way the wires are going to connect to the Pi and how I am going to integrate ML into the Pi using the camera and thermal sensor.
I read Chapter 13 of the Machine Learning book.
I read Chapters 14 and 15 of the Machine Learning book. The parts will come tomorrow.
I fiinshed the Machine Learning book.
I tested the camera and battery pack that came. They both worked really well. Now, I can start inputting the ML algrothm.
I researched the different datasets I can use for the project, as well as the amount of tree data each have in them. I still need to do some more research, but as of now, creating a dataset is the best option if I want to get a wide, accurate range of data. I haven’t found any datasets that match the amount of data I can collect by myself in my neighborhood.
I researched more about the tree datasets, and I found one that has plenty of accurate information: PlantNet API.
I researched about how to use the specific PlantNet API database with the Raspberry Pi and hook that database to a Machine Learning algorthim. I am finally ready to actually make the Machine Learning algorithm and get my hands dirty now that I have the information I need to continue on with the project.
I connected the database to the Raspberry Pi, and tested it out using a house plant. It worked really well, and the next step is to test it outside with a real tree.
I build a CAD of the structure that will house the prototype. I left holes for all the different parts, and will print it later today.
I 3D printed the top half of the housing for the prototype. Next, I will print the bottom half.
I fixed the issues that the prototype was facing. I also added a button. The main thing I did was make the prototype able to function without the computer nearby, which can make it so that anyone in the world can use it with a battery pack.
I researched the different types of prevalent trees in California and their temperatures during different seasons. I plan to add this to my database, as I hadn’t previously done this. I used many websites, but Our City Forest was the most helpful.
I combined the parts in the bottom half of the prototype, and fit it in the encolsure.
I completed the prototype by combining the enclosure with the prototype. I encased the sensors and the LCD. The prototype is finally complete!
Ships:
I made a project that can detect tree/plant species and temperature to determine whether it is dead or not. It displays the result on an LCD in the back, and will start the process of scanning a tree/plant once a button is pressed. The wiring is enclosed in a 3D printed prototype. The most difficult thing I did in this project was likely trying to fit it all in the enclosure. There were a lot of wires here and there, and the button was also quite difficult to fit in, as I needed to solder it on. However, this project was really fun to do, as it helped me gain knowledge about the environment around me, and I got to practice my software and hardware skills. I am really proud of myself, as I completed this project from start to finish, and didn’t give up. To test my project, all you have to do is plug in the battery pack, wait for a minute or so, point the prototype at the tree you want to scan, press the button, and wait for the results. Sometimes, it will take a little longer to get the results, resulting from a difficulty figuring out either the temperature or species of that particular plant/tree....
|
1792853406.5089006
|
1792939806.5089006
|
|
12432
|
SlackyssaLiu - Slack Bot by @AidenHammy | Stardanc SlackyssaLiu - Slack Bot by @AidenHammy | Stardance...
|
AidenHammy
|
1
|
7.39
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T12:42:18Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Started as a standard “first Slack bot” with catfacts, jokes, quotes, the usual starter-project stuff. It was redesigned into something actually worth using. A space-themed bot that tracks the ISS in real time, counts down to the next rocket launch, posts NASA’s daily astronomy photo (with zero effort on your part) and pulls random Mars rover photos on demand. It also remembers things now. SQLite-backed mission logs per channel and custom callsigns per user and shows up uninvited with scheduled posts instead of only responding when poked. Built with Node.js + Slack Bolt (Socket Mode, no public URL needed), SQLite for persistence, node-cron for scheduling and free APIs (Open Notify, NASA, Launch Library 2) for the live data. Deployed and running 24/7 on Hack Club Nest.", "repo": "https://github.com/AidenHammy/SlackyssaLiu", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 67226, "ts": "202 [{"post_id": 67226, "ts": "2026-09-13T08:58:32Z", "hours": 3.3922, "text": "Devlog 3: Three Hours of My Life I’m Never Getting Back (And Slack’s Media Renderer Can Thank Me For It) The false confidence I thought the bot was done. I really did. The commands worked, the database was syncing, the cron jobs were firing. It was a fully functional space bot. I sat down to do what I thought would be a 15-min final polish before shipping. Three hours later, I was found questioning my reality and whether I should just delete the folder and take up farming. What started as a quick polish turned into a full-blown war against dead community APIs, Slack’s deeply picky Block Kit renderer and the absolute garbage fire that is Node.js DNS resolution on free hosting platforms. The dead API saga First, /skl-mars completely died. Not a graceful failure. Not a friendly JSON error. It just silently redirected to a GitHub Pages 404 HTML page. Axios, bless its optimistic little heart, tried to parse that HTML as JSON, choked and took the whole bot down with it. I made the executive decision to ditch that entirely. The rover is probably tired of taking photos anyway. I swapped it out for NASA’s EPIC API, which takes photos of Earth from the DSCOVR satellite. But EPIC had its own trap. If you just ask for the “most recent” photos, it returns a tiny array of about 13 photos from the last active day. The bot kept spamming the exact same image of Earth. I had to rewrite the endpoint to fetch the archive of all available dates, shuffle the entire history of the satellite and pull a random day from the past just to get some variety. Then, the Open Notify API (used for ISS location and crew data) went offline too. Same GitHub 404 redirect. I had to write nested try/catch fallbacks with 5-second timeouts to route requests to wheretheiss.at just to keep the telemetry commands alive. It was a war of attrition against community-run infrastructure. Slack Block Kit & the APOD nightmare Getting the APOD (/skl-apod) to actually render in the chat was an absolute nightmare. Originally, the bot just dropped a raw URL into the chat. Slack looked at it and said “Cool link, not displaying it” so I rebuilt the command using Slack’s Block Kit image block. That fixed images. But.. a video? Because of course, if you pass an .mp4 URL into an image block, Slack silently drops the message entirely. I had to write logic to check the media_type: if it was a YouTube link, I parsed the URL and rendered it using Slack’s native video block. If it was a raw .mp4, I had to stream the video file directly into Slack using filesUploadV2 so it would embed and play right in the chat. And to prevent the bot from OOM-crashing the server on large videos, I had to use responseType: \"stream\" so it chunked the download instead of loading a 50MB video into RAM all at once. The Nest hosting quirk Right when I thought I was victorious, APOD and Earth started failing with getaddrinfo ENOTFOUND api.nasa.gov . After staring at my screen wondering if I had forgotten how URLs work, I learned that Node.js 17+ defaults to IPv6 for DNS resolution and the hosting platform (Nest) doesn’t fully support IPv6 routing. The server literally couldn’t find NASA. Adding dns.setDefaultResultOrder('ipv4first') to the top of the service file fixed it instantly. Extremely normal behavior, I love computers. The actual architecture shift Amidst all the API firefighting, I also ripped out the hardcoded .env channel routing. Making someone edit a .env file just to move a bot to a new channel is a crime. I moved the scheduled announcements to a SQLite-backed system with /skl-setup and /skl-unset commands so the bot could support multiple servers dynamically without touching environment variables. What started as a simple script turned into a much more reliable bot with backup APIs, saved data, scheduled posts and the ability to handle images and videos directly in Slack. It was hella exhausting, my brain is completely fried but atleast it’s done."}, {"post_id": 64173, "ts": "2026-09-08T12:10:49Z", "hours": 2.9514, "text": "Devlog: SlackyssaLiu Went to Space (and I Forgot to Write Any of This Down) The itch SlackyssaLiu started as a pretty standard first Slack bot. Slash commands, a few API wrappers, the usual suspects: catfacts, jokes, quotes, echo, ping, some sneeze/wave filler commands for personality. It worked fine. It also looked exactly like every other “my first slackbot” project out there because it basically followed the same recipe everyone does. Integrate a joke API, integrate a weather-adjacent API, call it done. I wanted to know how to make it stand out so I asked around for ideas. The answer was pretty obvious in hindsight. Stop building the demo everyone builds and build something around an actual theme with actual state instead of a stateless command list wrapped around whatever free API came up first. I bounced between a few themes.. figure skating (RIP, no usable free API), medieval history (also no API, just Wikipedia scraping, hard pass) and space. Space won because it had exactly what I needed. Solid free APIs with no bureaucracy (Open Notify needs zero auth, NASA’s API just needs a free key) and enough surface area to build something that actually feels alive instead of just answering when poked. What actually changed This ended up being a full redesign not a patch job. Rough shape of it (RIP to /skl-achoo, you were doing your best). Killed the old command set! No more catfact/joke/quote/echo/achoo/wave. None of it fit the new direction and it was the generic stuff I was trying to get away from in the first place. A moment of silence for the bot that could sneeze but not tell you when a rocket was launching. New space-themed commands: /skl-iss and /skl-crew (Open Notify, no key needed), /skl-launch (Launch Library 2, with an actual countdown for maximum dramatic tension), /skl-apod and /skl-mars (NASA’s API, APOD + random Curiosity rover photos the rover did not consent to being featured but also cannot complain). Added actual persistence. SQLite via better-sqlite3. This was the real shift. The old bot had the memory of a goldfish with amnesia. It never remembered anything between requests. Now it tracks mission logs per channel, user callsigns and which launches it’s already announced (so it doesn’t spam the same countdown twice like an overeager intern). Added scheduled behavior. node-cron jobs that post NASA’s picture of the day every morning and ping the channel when a launch is within the hour. This is the part I think actually makes it feel like a running thing instead of a command list. It does stuff without being asked which is more initiative than I show most mornings. I gave it an actual personality module! pulled every joke/flavor line out of the command handlers and centralized them in personality.js. Went through two tone passes because apparently I couldn’t decide if the bot should sound like a stoic AI from a space movie or like it’s been on Twitter since 2019. It landed somewhere in between and honestly that’s a personality a lot of people have. Having it centralized meant the whole voice-swap was a single-file change instead of hunting through every command like a raccoon going through someone’s trash. Fixed real bugs from the original file along the way, typos that would’ve crashed the bot. cool, cool, very cool, glad I caught that before it caught me. Why I forgot to log any of this Short version, I was moving fast across a lot of files at once. db setup, service wrappers, command rewiring, personality, scheduler and treated it like “just get it working” instead of “document as I go”. I was working on a lot of projects at the same time and this was something I did just after finding about Stardance so I barely remembered to ship it. But I’m doing so now, several weeks late, riding in on a horse made of retroactive commit messages. I barely had any brainpower left for side projects at 1am because of my “awesome” uni."}, {"post_id": 5868, "ts": "2026-06-09T20:22:36Z", "hours": 1.3881, "text": "Devlog 1 — Building SlackyssaLiu (Slack Bot) What I set out to build: Create a simple Slack bot that can respond to slash commands in real time and make interactions inside a workspace more dynamic and useful. How I approached it: I started by following Stardance’s mission guide to understand how Slack apps connect to a backend and handle real-time events. After setting up the base bot with Socket Mode and environment variables, I focused on implementing slash commands and structuring them in a clean and scalable way. What I built: A deployed Slack bot running 24/7 with real-time command handling A working Slack bot using Node.js and the Bolt framework Multiple slash commands such as: /skl-ping for latency checking /skl-echo for message reflection /skl-time and /skl-date for utility /skl-help for command discovery API integrations: Cat facts using an external API Random jokes Inspirational quotes Basic error handling for API failures A consistent command-response structure using async functions Deployment: The bot is deployed and runs continuously 24/7, allowing it to respond to Slack commands in real time without requiring a local environment. This helped me understand how to keep services running beyond development and make the bot usable in a live workspace. What I learned: How Slack’s Bolt framework handles commands and events The importance of ack() in Slack interactions How to structure asynchronous command handlers How to integrate external APIs into a Node.js application How to handle failures gracefully using try-catch Challenges I faced: Understanding how Slack’s command lifecycle works Managing async responses correctly without breaking Slack’s timing requirements Debugging API responses and ensuring consistent formatting What I improved beyond the mission guide: While the initial setup followed Stardance’s mission guide, I expanded the bot by adding multiple custom commands and integrating external APIs to make it more interactive and useful. Future improvements: Add command history or logging Introduce smarter responses or context awareness Improve response formatting for better readability Expand the command set with more utility features Final thoughts: This project helped me understand how real-time systems work and how to build something that interacts with users in a live environment. It started with guided steps and evolved into a customizable and extendable Slack bot."}]...
|
Title: SlackyssaLiu - Slack Bot by @AidenHammy | S Title: SlackyssaLiu - Slack Bot by @AidenHammy | Stardance
Devlogs:
Devlog 1 — Building SlackyssaLiu (Slack Bot) What I set out to build: Create a simple Slack bot that can respond to slash commands in real time and make interactions inside a workspace more dynamic and useful. How I approached it: I started by following Stardance’s mission guide to understand how Slack apps connect to a backend and handle real-time events. After setting up the base bot with Socket Mode and environment variables, I focused on implementing slash commands and structuring them in a clean and scalable way. What I built: A deployed Slack bot running 24/7 with real-time command handling A working Slack bot using Node.js and the Bolt framework Multiple slash commands such as: /skl-ping for latency checking /skl-echo for message reflection /skl-time and /skl-date for utility /skl-help for command discovery API integrations: Cat facts using an external API Random jokes Inspirational quotes Basic error handling for API failures A consistent command-response structure using async functions Deployment: The bot is deployed and runs continuously 24/7, allowing it to respond to Slack commands in real time without requiring a local environment. This helped me understand how to keep services running beyond development and make the bot usable in a live workspace. What I learned: How Slack’s Bolt framework handles commands and events The importance of ack() in Slack interactions How to structure asynchronous command handlers How to integrate external APIs into a Node.js application How to handle failures gracefully using try-catch Challenges I faced: Understanding how Slack’s command lifecycle works Managing async responses correctly without breaking Slack’s timing requirements Debugging API responses and ensuring consistent formatting What I improved beyond the mission guide: While the initial setup followed Stardance’s mission guide, I expanded the bot by adding multiple custom commands and integrating external APIs to make it more interactive and useful. Future improvements: Add command history or logging Introduce smarter responses or context awareness Improve response formatting for better readability Expand the command set with more utility features Final thoughts: This project helped me understand how real-time systems work and how to build something that interacts with users in a live environment. It started with guided steps and evolved into a customizable and extendable Slack bot.
Devlog: SlackyssaLiu Went to Space (and I Forgot to Write Any of This Down) The itch SlackyssaLiu started as a pretty standard first Slack bot. Slash commands, a few API wrappers, the usual suspects: catfacts, jokes, quotes, echo, ping, some sneeze/wave filler commands for personality. It worked fine. It also looked exactly like every other “my first slackbot” project out there because it basically followed the same recipe everyone does. Integrate a joke API, integrate a weather-adjacent API, call it done. I wanted to know how to make it stand out so I asked around for ideas. The answer was pretty obvious in hindsight. Stop building the demo everyone builds and build something around an actual theme with actual state instead of a stateless command list wrapped around whatever free API came up first. I bounced between a few themes.. figure skating (RIP, no usable free API), medieval history (also no API, just Wikipedia scraping, hard pass) and space. Space won because it had exactly what I needed. Solid free APIs with no bureaucracy (Open Notify needs zero auth, NASA’s API just needs a free key) and enough surface area to build something that actually feels alive instead of just answering when poked. What actually changed This ended up being a full redesign not a patch job. Rough shape of it (RIP to /skl-achoo, you were doing your best). Killed the old command set! No more catfact/joke/quote/echo/achoo/wave. None of it fit the new direction and it was the generic stuff I was trying to get away from in the first place. A moment of silence for the bot that could sneeze but not tell you when a rocket was launching. New space-themed commands: /skl-iss and /skl-crew (Open Notify, no key needed), /skl-launch (Launch Library 2, with an actual countdown for maximum dramatic tension), /skl-apod and /skl-mars (NASA’s API, APOD + random Curiosity rover photos the rover did not consent to being featured but also cannot complain). Added actual persistence. SQLite via better-sqlite3. This was the real shift. The old bot had the memory of a goldfish with amnesia. It never remembered anything between requests. Now it tracks mission logs per channel, user callsigns and which launches it’s already announced (so it doesn’t spam the same countdown twice like an overeager intern). Added scheduled behavior. node-cron jobs that post NASA’s picture of the day every morning and ping the channel when a launch is within the hour. This is the part I think actually makes it feel like a running thing instead of a command list. It does stuff without being asked which is more initiative than I show most mornings. I gave it an actual personality module! pulled every joke/flavor line out of the command handlers and centralized them in personality.js. Went through two tone passes because apparently I couldn’t decide if the bot should sound like a stoic AI from a space movie or like it’s been on Twitter since 2019. It landed somewhere in between and honestly that’s a personality a lot of people have. Having it centralized meant the whole voice-swap was a single-file change instead of hunting through every command like a raccoon going through someone’s trash. Fixed real bugs from the original file along the way, typos that would’ve crashed the bot. cool, cool, very cool, glad I caught that before it caught me. Why I forgot to log any of this Short version, I was moving fast across a lot of files at once. db setup, service wrappers, command rewiring, personality, scheduler and treated it like “just get it working” instead of “document as I go”. I was working on a lot of projects at the same time and this was something I did just after finding about Stardance so I barely remembered to ship it. But I’m doing so now, several weeks late, riding in on a horse made of retroactive commit messages. I barely had any brainpower left for side projects at 1am because of my “awesome” uni.
Devlog 3: Three Hours of My Life I’m Never Getting Back (And Slack’s Media Renderer Can Thank Me For It) The false confidence I thought the bot was done. I really did. The commands worked, the database was syncing, the cron jobs were firing. It was a fully functional space bot. I sat down to do what I thought would be a 15-min final polish before shipping. Three hours later, I was found questioning my reality and whether I should just delete the folder and take up farming. What started as a quick polish turned into a full-blown war against dead community APIs, Slack’s deeply picky Block Kit renderer and the absolute garbage fire that is Node.js DNS resolution on free hosting platforms. The dead API saga First, /skl-mars completely died. Not a graceful failure. Not a friendly JSON error. It just silently redirected to a GitHub Pages 404 HTML page. Axios, bless its optimistic little heart, tried to parse that HTML as JSON, choked and took the whole bot down with it. I made the executive decision to ditch that entirely. The rover is probably tired of taking photos anyway. I swapped it out for NASA’s EPIC API, which takes photos of Earth from the DSCOVR satellite. But EPIC had its own trap. If you just ask for the “most recent” photos, it returns a tiny array of about 13 photos from the last active day. The bot kept spamming the exact same image of Earth. I had to rewrite the endpoint to fetch the archive of all available dates, shuffle the entire history of the satellite and pull a random day from the past just to get some variety. Then, the Open Notify API (used for ISS location and crew data) went offline too. Same GitHub 404 redirect. I had to write nested try/catch fallbacks with 5-second timeouts to route requests to wheretheiss.at just to keep the telemetry commands alive. It was a war of attrition against community-run infrastructure. Slack Block Kit & the APOD nightmare Getting the APOD (/skl-apod) to actually render in the chat was an absolute nightmare. Originally, the bot just dropped a raw URL into the chat. Slack looked at it and said “Cool link, not displaying it” so I rebuilt the command using Slack’s Block Kit image block. That fixed images. But.. a video? Because of course, if you pass an .mp4 URL into an image block, Slack silently drops the message entirely. I had to write logic to check the media_type: if it was a YouTube link, I parsed the URL and rendered it using Slack’s native video block. If it was a raw .mp4, I had to stream the video file directly into Slack using filesUploadV2 so it would embed and play right in the chat. And to prevent the bot from OOM-crashing the server on large videos, I had to use responseType: "stream" so it chunked the download instead of loading a 50MB video into RAM all at once. The Nest hosting quirk Right when I thought I was victorious, APOD and Earth started failing with getaddrinfo ENOTFOUND api.nasa.gov . After staring at my screen wondering if I had forgotten how URLs work, I learned that Node.js 17+ defaults to IPv6 for DNS resolution and the hosting platform (Nest) doesn’t fully support IPv6 routing. The server literally couldn’t find NASA. Adding dns.setDefaultResultOrder('ipv4first') to the top of the service file fixed it instantly. Extremely normal behavior, I love computers. The actual architecture shift Amidst all the API firefighting, I also ripped out the hardcoded .env channel routing. Making someone edit a .env file just to move a bot to a new channel is a crime. I moved the scheduled announcements to a SQLite-backed system with /skl-setup and /skl-unset commands so the bot could support multiple servers dynamically without touching environment variables. What started as a simple script turned into a much more reliable bot with backup APIs, saved data, scheduled posts and the ability to handle images and videos directly in Slack. It was hella exhausting, my brain is completely fried but atleast it’s done.
Ships:
Started as a standard “first Slack bot” with catfacts, jokes, quotes, the usual starter-project stuff. It was redesigned into something actually worth using. A space-themed bot that tracks the ISS in real time, counts down to the next rocket launch, posts NASA’s daily astronomy photo (with zero effort on your part) and pulls random Mars rover photos on demand. It also remembers things now. SQLite-backed mission logs per channel and custom callsigns per user and shows up uninvited with scheduled posts instead of only responding when poked. Built with Node.js + Slack Bolt (Socket Mode, no public URL needed), SQLite for persistence, node-cron for scheduling and free APIs (Open Notify, NASA, Launch Library 2) for the live data. Deployed and running 24/7 on Hack Club Nest....
|
1792853405.4065444
|
1792939805.4065444
|
|
47907
|
Supra Tooler Custom Shortcut MacOS Application by Supra Tooler Custom Shortcut MacOS Application by @SaathvikSowmyanarayanan | Stardance...
|
SaathvikSowmyanarayanan
|
1
|
7.4
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T23:46:27Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a custom python shortcuts application. Using simple shortucts, this application is meant for those on MacOS devices who use a external keyboard. If you don’t know the function keys, and some others are glitched out and don’t properly work on external keyboards on mac. There for I created simple cursor-moving shortucts that give the function keys a use. Thanks so much for reviewing my project.", "repo": "https://github.com/SupraSilvr/Gold-Shell", "demo": "https://github.com/SupraSilvr/Gold-Shell/releases/tag/v2.1.0"}]...
|
[{"post_id": 72429, "ts": "202 [{"post_id": 72429, "ts": "2026-09-22T22:41:16Z", "hours": 0.4047, "text": "Fixed changes that the reviews asked me to do. I fixed the broken images in my github README file, and I changed the banner image of my project to the icon."}, {"post_id": 68340, "ts": "2026-09-14T23:43:00Z", "hours": 0.3264, "text": "Made the 3 shortcuts that my application was designed to run. After that, I packaged my python script as a MacOS Application using Pyinstaller. I tested if it works, it does :). Lastly I posted a release on github and updated all of the files. I’m so happy for the end of this project. It was so fun and I hoped you enjoyed watching my journey. I wasn’t able to focus on this project as much as I wanted to, but I finished it. With that, I saw thanks. Thank you so much, Stardance for giving me this opportunity. :)"}, {"post_id": 65147, "ts": "2026-09-10T02:46:43Z", "hours": 0.8206, "text": "I found out the error in the bug. It was the little piece of code, that was to try to run the shortcuts. It was not indented properly into a function. After fixing it, I created 3 working functions, one that goes to the top bar, to see the battery, the volume, and the time. The hotkey for this is the function 1 key. The second functions, goes to the bottom of your screen where you can easily chose an app. This is fun from pressing function 2. The third and last function moves your mouse to the area with the options to close, minimize, and go into the application. I am very happy with my work today. Also renamed the file to da1.9.py (development application 1.9) :)"}, {"post_id": 61226, "ts": "2026-09-04T01:51:57Z", "hours": 0.4469, "text": "Worked on dividing on the pynput syntax to test the bug. I had a lot of trouble with the yanking with vim. If you don’t know yanking is copying in vim. Vim told me that the yanking was successful, but it didn’t paste the correct lines. I managed to find the bug. It says keyboard is not defined, which indicates some missing definition for the class. I will fix this bug soon, now that I have found the error. :)"}, {"post_id": 60567, "ts": "2026-09-03T00:01:52Z", "hours": 0.2567, "text": "After much trouble shooting, I determined that the bug is not from pyautogui ( the library that moves your mouse). Its from the pynput input recognition. Thats about all of the work I did today. I do want to talk about my coding editor. I use a editor called vim. It’s a terminal based editor that is very fast and has many shortcuts to optimize your coding experience. I am not a experianced dev, but I’m practicing it. Hope you give it a try too. :) Link to Vim https://www.vim.org"}, {"post_id": 59911, "ts": "2026-09-01T22:52:35Z", "hours": 0.7111, "text": "I realized the SupraTooler1.0.py file didn’t actually work. It seems that the terminal lost the accesability permisions or the syntax was changed. I started debuging this and temporarily disabled the startup sequence function when I develop. I’m not going to update the github repo until I fixed this bug. I also created new line of code so that if i delete a line it removes disables the startup sequence. This can be useful in the future when bugs occur. the image below is the function and the code to disable it."}, {"post_id": 47124, "ts": "2026-08-14T19:42:53Z", "hours": 4.0639, "text": "Supra Tooler 1.0 has been released. This is the first version of the python script. It has keyboard shortcuts that move the mousecursor to useful locations like top info bar on Mac to check the time. Also has other life changing features. Must be run in terminal, since I haven’t packaged it with pyinstaller yet. It may or may not run, if this problem occurs, run with sudo access or check system settings. There go to input monitering and accessibility settings and approve both for the terminal. I didn’t package this version as an application because the starting screen was still in development and would not run in terminal if it was an app. The file to look at is SupraTooler1.0.py. The other supra.py file is the development stage of SupraTooler2.0. I’m planning on adding a popup when you start the application in customtkinter, but i found out that macos isn’t fully supporting it anymore and can remove it in any update so i want to use pygame. This is a lot more difficult and has unnecessary features but should still work. Also I am adding other shortcuts. So yeah, that wraps it up. Thanks for looking at my project, feel free to try it out. :)"}]...
|
Title: Supra Tooler Custom Shortcut MacOS Applicat Title: Supra Tooler Custom Shortcut MacOS Application by @SaathvikSowmyanarayanan | Stardance
Devlogs:
Supra Tooler 1.0 has been released. This is the first version of the python script. It has keyboard shortcuts that move the mousecursor to useful locations like top info bar on Mac to check the time. Also has other life changing features. Must be run in terminal, since I haven’t packaged it with pyinstaller yet. It may or may not run, if this problem occurs, run with sudo access or check system settings. There go to input monitering and accessibility settings and approve both for the terminal. I didn’t package this version as an application because the starting screen was still in development and would not run in terminal if it was an app. The file to look at is SupraTooler1.0.py. The other supra.py file is the development stage of SupraTooler2.0. I’m planning on adding a popup when you start the application in customtkinter, but i found out that macos isn’t fully supporting it anymore and can remove it in any update so i want to use pygame. This is a lot more difficult and has unnecessary features but should still work. Also I am adding other shortcuts. So yeah, that wraps it up. Thanks for looking at my project, feel free to try it out. :)
I realized the SupraTooler1.0.py file didn’t actually work. It seems that the terminal lost the accesability permisions or the syntax was changed. I started debuging this and temporarily disabled the startup sequence function when I develop. I’m not going to update the github repo until I fixed this bug. I also created new line of code so that if i delete a line it removes disables the startup sequence. This can be useful in the future when bugs occur. the image below is the function and the code to disable it.
After much trouble shooting, I determined that the bug is not from pyautogui ( the library that moves your mouse). Its from the pynput input recognition. Thats about all of the work I did today. I do want to talk about my coding editor. I use a editor called vim. It’s a terminal based editor that is very fast and has many shortcuts to optimize your coding experience. I am not a experianced dev, but I’m practicing it. Hope you give it a try too. :) Link to Vim https://www.vim.org
Worked on dividing on the pynput syntax to test the bug. I had a lot of trouble with the yanking with vim. If you don’t know yanking is copying in vim. Vim told me that the yanking was successful, but it didn’t paste the correct lines. I managed to find the bug. It says keyboard is not defined, which indicates some missing definition for the class. I will fix this bug soon, now that I have found the error. :)
I found out the error in the bug. It was the little piece of code, that was to try to run the shortcuts. It was not indented properly into a function. After fixing it, I created 3 working functions, one that goes to the top bar, to see the battery, the volume, and the time. The hotkey for this is the function 1 key. The second functions, goes to the bottom of your screen where you can easily chose an app. This is fun from pressing function 2. The third and last function moves your mouse to the area with the options to close, minimize, and go into the application. I am very happy with my work today. Also renamed the file to da1.9.py (development application 1.9) :)
Made the 3 shortcuts that my application was designed to run. After that, I packaged my python script as a MacOS Application using Pyinstaller. I tested if it works, it does :). Lastly I posted a release on github and updated all of the files. I’m so happy for the end of this project. It was so fun and I hoped you enjoyed watching my journey. I wasn’t able to focus on this project as much as I wanted to, but I finished it. With that, I saw thanks. Thank you so much, Stardance for giving me this opportunity. :)
Fixed changes that the reviews asked me to do. I fixed the broken images in my github README file, and I changed the banner image of my project to the icon.
Ships:
I made a custom python shortcuts application. Using simple shortucts, this application is meant for those on MacOS devices who use a external keyboard. If you don’t know the function keys, and some others are glitched out and don’t properly work on external keyboards on mac. There for I created simple cursor-moving shortucts that give the function keys a use. Thanks so much for reviewing my project....
|
1792853404.2157927
|
1792939804.2157927
|
|
37708
|
WinFlow by @Advay-CMD | Stardance
|
Advay-CMD
|
1
|
44.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T19:07:15Z", "hours": 44.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Windows is incomplete, incoherent, and Microslop copyrights every code and then doesn’t listen to their consumers. I am here to change this. Fix windows from the disasterous state, where you own the operating system, Microsoft doesn’t. Colors, textures - everything is just Microsoft’ed. Privacy doesn’t exist, it is like giving your life’s data to Microsoft to have convinence in return. I am here to prove that privacy and convinence can co-exist. Windows is long way, and STILL, Microsoft has to bring more SLOP. Let’s fix this. Lets fix it, how things should be… WinFlow is a massive productivity and beautified UI/UX app suite. It helps you have productivity, convenience and neat UI/UX all adapted for people who work a LOT and complain about simple things in comp and also for people who have a candyeye. It aims 4 fundmentals: Functionality: How well the users problem is solved? Polish: How good is the UI/UX of the app? Simplicity: How simple is the app to use? Speed: How FAST is it? All of them combine to create WinFlow!", "repo": "https://github.com/Advay-CMD/WinFlow/", "demo": "https://github.com/Advay-CMD/WinFlow/releases"}]...
|
[{"post_id": 67602, "ts": "202 [{"post_id": 67602, "ts": "2026-09-13T19:02:29Z", "hours": 0.7736, "text": "WinFlow -> Devlog 6 Finally done. Its DONE! I know, shipwrights would call this AI, maybe. But really, I can’t belive that I coded the whole UI, only learning concepts of css from Duckduckgo and Gemini. I always thought this project will have a lot of AI, but no. I have finally mastered my CSS, and HTML. I love it! I am at least proud of the app, and even though its a simple home screen, it shows a glimpse of a full app, that is usable, and loved by people! Any suggestions can be made to make this project better! Please do give suggestions! It will make this project better! Thanks for the attention."}, {"post_id": 67280, "ts": "2026-09-13T10:54:56Z", "hours": 10.0781, "text": "WinFlow -> Devlog 5 Finally, I am somewhere, my project is FINALLY usable!! I have File and Folder linked to the backend working independently, and it works. Somehow there is some errors in system, I have no idea why… But, it still creates the folder! Let’s go! Good right? And now I am just creating the readme, and after that I guess, I will be ready to publish my thing. Any suggestions you guys want to give, you can! I will try my best to improve my UI/backend. Until then, take care! Even after the release, the WinFlow Explorer will STILL be very experimental. Unusable for normal use, due to very less features. But, just wait. Just wait. Probably later I will make more UI elements, make it better!"}, {"post_id": 53925, "ts": "2026-08-24T17:02:50Z", "hours": 8.6008, "text": "WinFlow -> Devlog 4 Oh, yes, time = 8h 36min, which is ~516min, and, I don’t want to spam seconds. Let me be frank. It is a pain to devlop the simple-simple goody app WinFlow Explorer. It is a headache a little…. I still gotta do MORE AND MORE WIDGETS!!! HONEST! But I promise you they are not going to be microsoft ads and Xbox promotion and all that crap. In the UI part, I have GELLED major components, made it according to my set of rules for UI called TrueUI, and a LOT of components are liqidised(made in variables, ready to be changed). I still gotta make components more liquid tho, like for cards, tabs, almost everything, so that the user has UNLIMITED customizablity. Yes, for all of the people who are crazy meniacs like in my class boys, you can PINK AND BLACK and ASSIGN ANY COLOR TO COMPONENTS! YES!!! You can! Unlimited Customisability is one of the features… I am going to do pixel anim in the future, but future. Right now I have A LOOOOOTT of widgets to make. Oh btw, I have STILL NOT DONE MY OTHER FILES IN GENERAL UI STUFF . Anyway I will implement and don’t worry boys, or girls, we can black the ui, pink the ui, and (my fav color) blue the UI. It is kindda in testing so, it is not THAT pretty sight, but the amount of hardwork it takes…. I think it will take time to realise. I have to sit and finetune the values until perfect, and that IS NOT easy. It is immensly hard and feels very rubbish. But whatever. Part of software devlopment. I also hope I get a SuperStar, tho that somehow feels highly unlikely. Anyway, I don’t care if I get that or not, I just want user satisfaction. I want the user to be immensly pleased. And I swear if someone from the shipwrights say: “This is fully vibecoded”. I swear I will feel like choke them….. I hate people who have one glance and say “Extremely Likely Used AI”. Honestly, I have used AI 1%-2%, not for UI, but for the latter backend… I still gotta make UI better, somehow it feels plain and boring. idk why… If you have some UI ideas, tell me, I can then improve my app~ I would love if you follow me for more devlogs and keep up with my journey though: Dark and Difficult things lie ahead…"}, {"post_id": 40835, "ts": "2026-08-04T16:50:25Z", "hours": 7.7931, "text": "WinFlow -> Devlog 3 YES! YES!!!! *, I KNOW, you would be screaming WHY ADVAY?? WHY DON’T YOU POST ANOTHER DEVLOG!!?? IT IS 7H 44MIN DONE!!! I know. I know. Sorry, just get too carried away with the code… ehh So, what am I done with? Am I supossed to dance? NO! This is a very complex project. Honest. Even the home page, EVEN AFTER ~21H, is NOT YET completed. But look at the vid! neat result. My journey to making a software, so complex and so pleasing at same time is TOOO hard. And ppl, I am only 13y, a normal child studing in school, kind of sneaking time to code! 😭 Lets look at the different aspects that I coded Backend Yes, backend, I made lsa, “testmodel1” is the nickname. And it is sucessful, so I am merging with ls, and making current ls, lsa. TestModel1 has MFT(Master Boot Record) scan, which ofc requires admin permissions, but see the speed. You might not notice it, but when you have ~a LOT A LOT of files to list, TestModel1 cruises and litrally halves the time. In search model, this would be EXTREMELY USEFUL. Scan the MFT and then find the file. It is that simple. (Not at ALL simple to code. HONEST. It is a risk with the disk. One thing coded wrong, I am cooked. But don’t worry, it works, and AI also helped and tested.) Frontend You can see the vid for yourself(special bonus… pls watch) That’s it. Follow if you want me to keep working on this and give motivation. Also like, and YES! if you think this can be a super star project write “superstar” in comments(tho i am not making for the sake of earning superstar, it is to rectify windows.)"}, {"post_id": 35772, "ts": "2026-07-27T12:32:07Z", "hours": 10.2056, "text": "WinFlow -> Devlog 2 I was soooo into coding, I forgot all about my time. Now the 9min I coded are LOST. Sorry, Hackclub staff! 😭 Pls give me that! Anyway, I have coded WinFlow UI in tauri with html and css, an explorer -> I have also added gradients, fresh and unique to my explorer… What else? I have also implemented in the files area a drag selection box, neat animation wrapped in good color and border-radius. Honestly, this HAS been a BIG learning experience in css, I used to go away when I heard CSS, now, I kindda got the hang. Loving it! Anyway, here is the progress img > And PLS, some of you in the stardance said that it is created using AI, but PLEASE, believe me, I didn’t. Any proof, pls check the hackatime. Pls Follow, it will make me more motivated to complete this project(right now, to create this, I was on a emotional burnout😭) Any suggetions pls comment. (few bugs like , recents and fav is selected. and the 2,3,4. pls forgive me for that…)"}, {"post_id": 32477, "ts": "2026-07-21T17:59:38Z", "hours": 6.3036, "text": "WinFlow -> Devlog 1 I am making a project called WinFlow WinFlow => App that makes your workspace more fluent buttery with awsome UI. Tech stack: Tauri(RUST, html, css, js) C++(Rust IPC) I am building a litral file explorer called WinFlow Explorer , but for that I have to do CLI part. I implemented a prototype, well commented code, and here is the result. I will then begin by rust IPC and then start buiding the app and the UI. My app is also better and faster than microsoft, because the explorer is not made by microsoft, it’s made by me (secret: I use recursive method, while windows struggles to calculate the estimated time :))"}]...
|
Title: WinFlow by @Advay-CMD | Stardance
Devlogs: Title: WinFlow by @Advay-CMD | Stardance
Devlogs:
WinFlow -> Devlog 1 I am making a project called WinFlow WinFlow => App that makes your workspace more fluent buttery with awsome UI. Tech stack: Tauri(RUST, html, css, js) C++(Rust IPC) I am building a litral file explorer called WinFlow Explorer , but for that I have to do CLI part. I implemented a prototype, well commented code, and here is the result. I will then begin by rust IPC and then start buiding the app and the UI. My app is also better and faster than microsoft, because the explorer is not made by microsoft, it’s made by me (secret: I use recursive method, while windows struggles to calculate the estimated time :))
WinFlow -> Devlog 2 I was soooo into coding, I forgot all about my time. Now the 9min I coded are LOST. Sorry, Hackclub staff! 😭 Pls give me that! Anyway, I have coded WinFlow UI in tauri with html and css, an explorer -> I have also added gradients, fresh and unique to my explorer… What else? I have also implemented in the files area a drag selection box, neat animation wrapped in good color and border-radius. Honestly, this HAS been a BIG learning experience in css, I used to go away when I heard CSS, now, I kindda got the hang. Loving it! Anyway, here is the progress img > And PLS, some of you in the stardance said that it is created using AI, but PLEASE, believe me, I didn’t. Any proof, pls check the hackatime. Pls Follow, it will make me more motivated to complete this project(right now, to create this, I was on a emotional burnout😭) Any suggetions pls comment. (few bugs like , recents and fav is selected. and the 2,3,4. pls forgive me for that…)
WinFlow -> Devlog 3 YES! YES!!!! *, I KNOW, you would be screaming WHY ADVAY?? WHY DON’T YOU POST ANOTHER DEVLOG!!?? IT IS 7H 44MIN DONE!!! I know. I know. Sorry, just get too carried away with the code… ehh So, what am I done with? Am I supossed to dance? NO! This is a very complex project. Honest. Even the home page, EVEN AFTER ~21H, is NOT YET completed. But look at the vid! neat result. My journey to making a software, so complex and so pleasing at same time is TOOO hard. And ppl, I am only 13y, a normal child studing in school, kind of sneaking time to code! 😭 Lets look at the different aspects that I coded Backend Yes, backend, I made lsa, “testmodel1” is the nickname. And it is sucessful, so I am merging with ls, and making current ls, lsa. TestModel1 has MFT(Master Boot Record) scan, which ofc requires admin permissions, but see the speed. You might not notice it, but when you have ~a LOT A LOT of files to list, TestModel1 cruises and litrally halves the time. In search model, this would be EXTREMELY USEFUL. Scan the MFT and then find the file. It is that simple. (Not at ALL simple to code. HONEST. It is a risk with the disk. One thing coded wrong, I am cooked. But don’t worry, it works, and AI also helped and tested.) Frontend You can see the vid for yourself(special bonus… pls watch) That’s it. Follow if you want me to keep working on this and give motivation. Also like, and YES! if you think this can be a super star project write “superstar” in comments(tho i am not making for the sake of earning superstar, it is to rectify windows.)
WinFlow -> Devlog 4 Oh, yes, time = 8h 36min, which is ~516min, and, I don’t want to spam seconds. Let me be frank. It is a pain to devlop the simple-simple goody app WinFlow Explorer. It is a headache a little…. I still gotta do MORE AND MORE WIDGETS!!! HONEST! But I promise you they are not going to be microsoft ads and Xbox promotion and all that crap. In the UI part, I have GELLED major components, made it according to my set of rules for UI called TrueUI, and a LOT of components are liqidised(made in variables, ready to be changed). I still gotta make components more liquid tho, like for cards, tabs, almost everything, so that the user has UNLIMITED customizablity. Yes, for all of the people who are crazy meniacs like in my class boys, you can PINK AND BLACK and ASSIGN ANY COLOR TO COMPONENTS! YES!!! You can! Unlimited Customisability is one of the features… I am going to do pixel anim in the future, but future. Right now I have A LOOOOOTT of widgets to make. Oh btw, I have STILL NOT DONE MY OTHER FILES IN GENERAL UI STUFF . Anyway I will implement and don’t worry boys, or girls, we can black the ui, pink the ui, and (my fav color) blue the UI. It is kindda in testing so, it is not THAT pretty sight, but the amount of hardwork it takes…. I think it will take time to realise. I have to sit and finetune the values until perfect, and that IS NOT easy. It is immensly hard and feels very rubbish. But whatever. Part of software devlopment. I also hope I get a SuperStar, tho that somehow feels highly unlikely. Anyway, I don’t care if I get that or not, I just want user satisfaction. I want the user to be immensly pleased. And I swear if someone from the shipwrights say: “This is fully vibecoded”. I swear I will feel like choke them….. I hate people who have one glance and say “Extremely Likely Used AI”. Honestly, I have used AI 1%-2%, not for UI, but for the latter backend… I still gotta make UI better, somehow it feels plain and boring. idk why… If you have some UI ideas, tell me, I can then improve my app~ I would love if you follow me for more devlogs and keep up with my journey though: Dark and Difficult things lie ahead…
WinFlow -> Devlog 5 Finally, I am somewhere, my project is FINALLY usable!! I have File and Folder linked to the backend working independently, and it works. Somehow there is some errors in system, I have no idea why… But, it still creates the folder! Let’s go! Good right? And now I am just creating the readme, and after that I guess, I will be ready to publish my thing. Any suggestions you guys want to give, you can! I will try my best to improve my UI/backend. Until then, take care! Even after the release, the WinFlow Explorer will STILL be very experimental. Unusable for normal use, due to very less features. But, just wait. Just wait. Probably later I will make more UI elements, make it better!
WinFlow -> Devlog 6 Finally done. Its DONE! I know, shipwrights would call this AI, maybe. But really, I can’t belive that I coded the whole UI, only learning concepts of css from Duckduckgo and Gemini. I always thought this project will have a lot of AI, but no. I have finally mastered my CSS, and HTML. I love it! I am at least proud of the app, and even though its a simple home screen, it shows a glimpse of a full app, that is usable, and loved by people! Any suggestions can be made to make this project better! Please do give suggestions! It will make this project better! Thanks for the attention.
Ships:
Windows is incomplete, incoherent, and Microslop copyrights every code and then doesn’t listen to their consumers. I am here to change this. Fix windows from the disasterous state, where you own the operating system, Microsoft doesn’t. Colors, textures - everything is just Microsoft’ed. Privacy doesn’t exist, it is like giving your life’s data to Microsoft to have convinence in return. I am here to prove that privacy and convinence can co-exist. Windows is long way, and STILL, Microsoft has to bring more SLOP. Let’s fix this. Lets fix it, how things should be… WinFlow is a massive productivity and beautified UI/UX app suite. It helps you have productivity, convenience and neat UI/UX all adapted for people who work a LOT and complain about simple things in comp and also for people who have a candyeye. It aims 4 fundmentals: Functionality: How well the users problem is solved? Polish: How good is the UI/UX of the app? Simplicity: How simple is the app to use? Speed: How FAST is it? All of them combine to create WinFlow!...
|
1792853403.0867715
|
1792939803.0867715
|
|
47889
|
sorting algs by @Lumethra | Stardance
|
Lumethra
|
1
|
16.0
|
212
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T19:32:31Z", "hours": 16.0, "multiplier": 13.53, "payout": 212, "blessing": "neutral", "text": "A 3d sorting algorithm visualizer with NextJS and ThreeJS. Also its made with luve and happiness.", "repo": "https://github.com/Lumethra/sorting-algs", "demo": "https://lumethra-sorting-algs.vercel.app/"}]...
|
[{"post_id": 73291, "ts": "202 [{"post_id": 73291, "ts": "2026-09-24T19:30:47Z", "hours": 0.4911, "text": "I wrote my readme in this session, so nothing really to say. It was just typing typing typing and finishing this beautiful readme to be able to submit this project."}, {"post_id": 73279, "ts": "2026-09-24T18:57:15Z", "hours": 0.4069, "text": "Implemented pause logic. I implemented pause logic and added an indicator, which shows, which sorting algorithm is currently active. The pause logic was quite painful, cause it just didnt want to stop. Neither with break, nor with return. After a long long long trouble shooting session, I found out, that I forgot .current and it just wont detect correctly, what a stupid bug to troubleshoot 20 min for. Also I fixed an edge case in the demo vid xD"}, {"post_id": 73266, "ts": "2026-09-24T18:19:33Z", "hours": 2.58, "text": "FINALLYYYY Today was the final coding session. I finally got the UI right and am okay with it. Its not the best, but its acceptable. I decided to only use icons, to keep it clean, but I ran into the problem, that the icons arent clear enough to showcase the specific sorting algorithm. So I decided on making a tooltip. But the build in HTML tooltip is too ugly and the delay is annoying. I did some research and found a W3Schools tutorial, they are the goat ( here it is ). I didnt expect front end being so time intensive, but I did need to adjust every value so it looks good, which is very hard to do :(. Ah, I also fixed the bug that when there is the minimal amount of pillars, it will be weird while shuffling (that wasnt proper english). Also the icons changes depending if we are shuffling or sorting and the disables and reinables, which is cool. Uhh, I remembered sth, I need to implement canceling while sorting. Also the vid is one fix old, i did fix the typo in the sorting alg."}, {"post_id": 72326, "ts": "2026-09-22T17:49:27Z", "hours": 1.4453, "text": "Thats enough, Ima do CSS tomorrow. Today I added a slider style and 2 other sliders for the shuffling and sorting speed. Then I hid those 2 and the remove and adding pillar buttons. Also added some CSS for flex, justify content, space between, to seperate the drop down, which I added too. I tried to add a scrolling drop down thing, but failed, uhh, I also adjusted the pillar speed and camera angle. Also I found out, that I can call functions from an array, so I can store a function in an array and then call it like that, thats weird, but also huge. Dont wanna write too much today, cause I still have stuff to do. Ah, also added prevention of shuffling while sorting."}, {"post_id": 71209, "ts": "2026-09-20T13:27:14Z", "hours": 1.2819, "text": "Slider!! Today I added a slider that controls the adding and removing of pillars. I had some minor problems. (No, they were huge, but I feel better saying that they were minor ). First of all, I needed to figure out how to set default values. Normally its just value=””, but this doesnt work for a input type range. After some research I found out that its simply defaultValue, I feel dumb. Then I tried to add/remove pillars with useEffect and monitor the changes of the slider. This worked, but also didnt. I needed to manually update the pillars. It didnt do it automatically. Then my brain suggested something genius. Using onChange. But now I need to do an extra function for it. I thought, maybe I use a while loop once. While the number array is smaller run add function and while its bigger, the remove function. This was uhh, not that good, because it somehow resulted into an infinite while loop, because js is asynchronous. I also tried with a for loop. This threw the error, that I set the 2 useState too often. After some experimenting I ended up with my current solution. I also added 2 useState variables for the sorting delay and shuffling delay. I am still searching for a great mathematical, anti-proportional, linear function to adjust it corresponding to the pillars count. Ahh and I also updated the camera adjusting logic a bit."}, {"post_id": 70217, "ts": "2026-09-18T18:42:46Z", "hours": 1.0872, "text": "HOLY WAS THIS A STRUGGLE !! In this session I implemented adding and removing numbers for a slider in the future (hopefully tomorrow). THIS WAS A PAIN. Especially the camera handling. The very very basic adding and removing function was quite easy, since its only adding numbers or splicing numbers from the array (stack overflow my goat). The camera thing was quite hard though. When I add enough numbers it could make the pillars taller than the viewheight, making them sticking “off screen”. The fix was zooming out. But the fix on stack overflow needed to let it be a JSX element, which somehow didnt work. Finding the fix was one problem. The other problem is, that after finding the fix, it still didnt work and the camera “fell” down. After a long debugging session with various console.logs, I finally found the problem and it was one of the stupid ones. I used z, where it should have been y, thats dumb, but eyy, here we go. There were also a few other bugs, like having an infinite while loop when only having one pillar and shuffling. This was fixed by making the minimum number 2. The other bug was, weird camera behaviors happen, when reducing the number while its shuffled. Fixing it with an instant sort before reducing the number of pillars was my approach. Ya, that was about it. I am done for today."}, {"post_id": 70112, "ts": "2026-09-18T14:17:37Z", "hours": 1.1447, "text": "Better Shuffling logic!!! Before the refinement of the shuffling logic today I just simply randomized the numbers in the array, so that there are new numbers. That introduced one problem, actually two. Numbers could dupe!! I tried to fix it while using numbers with one decimal. The other problem was I could not add an animation anywhere. This is why I decided to make a brand new shuffling logic today. I first tried to fix the duping problem, by checking if this number already exists. This took a while, because I need to figure out how to only watch an array to a specific point, to ignore the upcoming numbers. This resulted in a growing or shrinking animation, which wasnt what I wanted. Then I thought, maybe I can shuffle in another way. Not by changing the value, rather by swapping numbers randomly. Just like in a deck of cards. So I loop through each digit and randomly choose a number in the whole array and then swapping those. This ensures every place got changed. Now there was another problem. It sometimes changed with it self causing it not to do anything. This was fixed by adding a while loop which generates new positions if the position is the own position. While writing this devlog I also thought of another problem. When the total count of numbers is very low, this shuffling method might not shuffle it enough, so I am looping it 2 times, if there are less then 10 numbers in it. Ya, thats about it. Now lets get to the slider which increases the blocks."}, {"post_id": 67381, "ts": "2026-09-13T14:07:06Z", "hours": 1.6225, "text": "Finally something after a long time. I was on vacation during that time, so I needed to use some time to understand what I have done before that. Then I implemented another sorting algorithm!! Selection Sort!! If you take a look inside my commits, you can see it being committed. After implementing selection sort I took a small break and didnt devlog, cause it didnt even took that long. After the break I decided to add a little highlighting animation, that changes the color of the pillars, that are being swapped. That took waay longer that expected, but was the easiest thing to do. I just had to save the 2 values being swapped and somehow pass it inside and get the colors changed. After the highlighting, I decided its time for another sorting alg. The Insertion Sort. That somehow took longer that selection sort. Due to it being almost the exact opposite of bubble sort, I always fell back to it. While researching for insertion sort, I found this great website and quite liked its finishing animation. I also felt that the selecting animation is kinda off for insertion sort. It shouldnt be 2 pillars that are selected. It should be 3 or 1, since one pillar is inserted between 2 other ones and not 2 pillars being swapped. So I made a highlighting version with only one pillar being highlighted and created an if statement of doom inside the meshStandartMaterial. I thought this version was also better for bubble sort than the selection one and switched it too. Ya, that was all of it, I think, Have a great day though :)"}, {"post_id": 48929, "ts": "2026-08-17T14:21:47Z", "hours": 1.9594, "text": "AHHHHHHHHHHHHHHHHHHHHHH Sorting algorithm was made today. I decided on the most basic bubble sort. It is basically just 2 nested for-loops. This wikipedia article ( https://en.wikipedia.org/wiki/Bubble_sort ) has a great code example for it. It was relative easy. But the hard part was to get the animation going. The second part of the vid shows how it was without the fix for the animation. Finding out what the error was, was the first major problem. Fixing it was also hard, because I needed to save the target position after the box was created. This doesnt work, because you cannot call things after a return. Then after a good half hour of struggling and no progress, I asked my father for help. He is a full time developer aaand I hoped, that we could fix this together. He did gave some good calls, but the coding is still done by myself. After some together struggling, that lasted around 30 to 40 min, he proposed something genius. Save a version of the array of numbers, before every sorting step. That meant we need to compare the 2 arrays to get the difference and how the numbers got moved. I then said we could use some complicated for loops and then comparing stuff. He smiled and let me do. After some programming it was finally done and worked. But it wasnt optimized at all and was a bit laggy. Then he couldnt hold on anymore, laughed and told me that there is a dedicated js function just for that. I almost crashed out . Ya, that was todays session. I only implemented the dedicated js function instead of that. Ahh and before asking my father I also found out that js async is weird and that we need to use useEffect, kinda an event listener to see when the useState value changes. Ya, now that was it. See u later or tmrw."}, {"post_id": 48190, "ts": "2026-08-16T14:16:24Z", "hours": 1.0175, "text": "Shuffle mechanism Today was very successful day. The two major breakthroughs are creating the boxes dynamically and shuffle the height by math.random. I am happy that I remembered, that I could use useState to make an array and use the Array.prototype.map() function to simultaneously create the different boxes. And I can change the order of the boxes with changing the order of the components in the array, sooooo, that should be quite easy to archive. The random shuffle thingi was also quite successful. I just Math.random’ed some value and floor it to 2 decimals. Then I do that for every place of the numbers array and set it as new numbers array. This will update the numbers array, because of useState and let React-Three-Fiber rerender the boxes, resulting in a shuffling. The sorting will need an async function though, or else it will be instant sorting, which isnt the goal of this sorting thing. Enough yap, back to coding, eventually, maybe."}, {"post_id": 47505, "ts": "2026-08-15T13:45:14Z", "hours": 1.2922, "text": "After messing around abit and finding out that it is possible to have multiple meshes, I finally started with the actual project and made a Box func. While making it I decided on doing it with an Interface to be able to learn that (the whole point of this proj was to learn ThreeJS and NextJS). This Box func can be reused and the properties of this box can also be parsed inside. Soo every Box is the same and makes animating easier. I also added a simple moving animation. Then the quest was to level the boxes on the bottom. After a whole 5 min of struggling, I found a random post saying I could do scale / 2, which also worked. The moving the box was the hard part, because NextJS requires me to use useState, or else it wont get updated. This took me very long, very very very long to get right. The moving seems abit laggy in the vid, but in real life its smooth, i dunno why, but ya. The last part, was centering this whole thing, because the camera always points to [0, 0, 0] which is strange, but whatever, so i needed to move the boxes collectively somewhere else. So I tried alot of stuff, but finally found out that groups have props too, so I can group them and move them to the left and down. This was great !! Later I need to find out how to do this automatically, but thats not present-me problem, its a future-me problem."}, {"post_id": 47096, "ts": "2026-08-14T18:50:47Z", "hours": 1.3286, "text": "First devlog My friend @Leon gave me this idea to work with ThreeJS in NextJS, so I can get familiar with both at the same time. And I said, fine whatever. I had the idea to do a sorting algorithm showcaser with pillars of different heights. And code different sorting methods to sort these pillars. Soo I created a Next instance like my personal site aaaand messed up. So I had to delete it and install again, WITHOUT TailwindCSS. Finally having a working NextJS instance I installed ThreeJS, but then I ran into the problem that ThreeJS didnt like pnpm, soo I reinstalled the whole shit with npm, which obviously didnt work. So I debugged the whole shit and every reddit post and stackoverflow post said to reinstall it again, so the installer cleanly installs the JSX module that was missing, which it didnt. So I decided to just paste the whole error message into google and there it was. The holy stackoverflow post that gave me a command to reinstall the dependencies and advised me to reload my vscode window to prevent cache. THIS WORKED!!! My next task was to read and follow the React Three Fiber docs, which is threejs but in better for react, so also for nextjs. I followed it (which was very hard, since its written unclearly, but I think when you know the normal threejs it should be fine, which I obviously am not familiar with) and after some time got an overall idea how this thing works. Then I found a task in this doc and it is to create a spinning cube. I took it seriously and made it todays goal. And here we are. To be fair, it was okay to finish, since there was already a sample code written in vite or whatever it was. I just needed to rewrite that for my nextjs instance. Ya that was todays progress. I think when I got the motivation to continue later, it will be waay easier to do, since I know the basics now. Holy yap, bye, see u later, maybe, well, bye"}]...
|
Title: sorting algs by @Lumethra | Stardance
Devl Title: sorting algs by @Lumethra | Stardance
Devlogs:
First devlog My friend @Leon gave me this idea to work with ThreeJS in NextJS, so I can get familiar with both at the same time. And I said, fine whatever. I had the idea to do a sorting algorithm showcaser with pillars of different heights. And code different sorting methods to sort these pillars. Soo I created a Next instance like my personal site aaaand messed up. So I had to delete it and install again, WITHOUT TailwindCSS. Finally having a working NextJS instance I installed ThreeJS, but then I ran into the problem that ThreeJS didnt like pnpm, soo I reinstalled the whole shit with npm, which obviously didnt work. So I debugged the whole shit and every reddit post and stackoverflow post said to reinstall it again, so the installer cleanly installs the JSX module that was missing, which it didnt. So I decided to just paste the whole error message into google and there it was. The holy stackoverflow post that gave me a command to reinstall the dependencies and advised me to reload my vscode window to prevent cache. THIS WORKED!!! My next task was to read and follow the React Three Fiber docs, which is threejs but in better for react, so also for nextjs. I followed it (which was very hard, since its written unclearly, but I think when you know the normal threejs it should be fine, which I obviously am not familiar with) and after some time got an overall idea how this thing works. Then I found a task in this doc and it is to create a spinning cube. I took it seriously and made it todays goal. And here we are. To be fair, it was okay to finish, since there was already a sample code written in vite or whatever it was. I just needed to rewrite that for my nextjs instance. Ya that was todays progress. I think when I got the motivation to continue later, it will be waay easier to do, since I know the basics now. Holy yap, bye, see u later, maybe, well, bye
After messing around abit and finding out that it is possible to have multiple meshes, I finally started with the actual project and made a Box func. While making it I decided on doing it with an Interface to be able to learn that (the whole point of this proj was to learn ThreeJS and NextJS). This Box func can be reused and the properties of this box can also be parsed inside. Soo every Box is the same and makes animating easier. I also added a simple moving animation. Then the quest was to level the boxes on the bottom. After a whole 5 min of struggling, I found a random post saying I could do scale / 2, which also worked. The moving the box was the hard part, because NextJS requires me to use useState, or else it wont get updated. This took me very long, very very very long to get right. The moving seems abit laggy in the vid, but in real life its smooth, i dunno why, but ya. The last part, was centering this whole thing, because the camera always points to [0, 0, 0] which is strange, but whatever, so i needed to move the boxes collectively somewhere else. So I tried alot of stuff, but finally found out that groups have props too, so I can group them and move them to the left and down. This was great !! Later I need to find out how to do this automatically, but thats not present-me problem, its a future-me problem.
Shuffle mechanism Today was very successful day. The two major breakthroughs are creating the boxes dynamically and shuffle the height by math.random. I am happy that I remembered, that I could use useState to make an array and use the Array.prototype.map() function to simultaneously create the different boxes. And I can change the order of the boxes with changing the order of the components in the array, sooooo, that should be quite easy to archive. The random shuffle thingi was also quite successful. I just Math.random’ed some value and floor it to 2 decimals. Then I do that for every place of the numbers array and set it as new numbers array. This will update the numbers array, because of useState and let React-Three-Fiber rerender the boxes, resulting in a shuffling. The sorting will need an async function though, or else it will be instant sorting, which isnt the goal of this sorting thing. Enough yap, back to coding, eventually, maybe.
AHHHHHHHHHHHHHHHHHHHHHH Sorting algorithm was made today. I decided on the most basic bubble sort. It is basically just 2 nested for-loops. This wikipedia article ( https://en.wikipedia.org/wiki/Bubble_sort ) has a great code example for it. It was relative easy. But the hard part was to get the animation going. The second part of the vid shows how it was without the fix for the animation. Finding out what the error was, was the first major problem. Fixing it was also hard, because I needed to save the target position after the box was created. This doesnt work, because you cannot call things after a return. Then after a good half hour of struggling and no progress, I asked my father for help. He is a full time developer aaand I hoped, that we could fix this together. He did gave some good calls, but the coding is still done by myself. After some together struggling, that lasted around 30 to 40 min, he proposed something genius. Save a version of the array of numbers, before every sorting step. That meant we need to compare the 2 arrays to get the difference and how the numbers got moved. I then said we could use some complicated for loops and then comparing stuff. He smiled and let me do. After some programming it was finally done and worked. But it wasnt optimized at all and was a bit laggy. Then he couldnt hold on anymore, laughed and told me that there is a dedicated js function just for that. I almost crashed out . Ya, that was todays session. I only implemented the dedicated js function instead of that. Ahh and before asking my father I also found out that js async is weird and that we need to use useEffect, kinda an event listener to see when the useState value changes. Ya, now that was it. See u later or tmrw.
Finally something after a long time. I was on vacation during that time, so I needed to use some time to understand what I have done before that. Then I implemented another sorting algorithm!! Selection Sort!! If you take a look inside my commits, you can see it being committed. After implementing selection sort I took a small break and didnt devlog, cause it didnt even took that long. After the break I decided to add a little highlighting animation, that changes the color of the pillars, that are being swapped. That took waay longer that expected, but was the easiest thing to do. I just had to save the 2 values being swapped and somehow pass it inside and get the colors changed. After the highlighting, I decided its time for another sorting alg. The Insertion Sort. That somehow took longer that selection sort. Due to it being almost the exact opposite of bubble sort, I always fell back to it. While researching for insertion sort, I found this great website and quite liked its finishing animation. I also felt that the selecting animation is kinda off for insertion sort. It shouldnt be 2 pillars that are selected. It should be 3 or 1, since one pillar is inserted between 2 other ones and not 2 pillars being swapped. So I made a highlighting version with only one pillar being highlighted and created an if statement of doom inside the meshStandartMaterial. I thought this version was also better for bubble sort than the selection one and switched it too. Ya, that was all of it, I think, Have a great day though :)
Better Shuffling logic!!! Before the refinement of the shuffling logic today I just simply randomized the numbers in the array, so that there are new numbers. That introduced one problem, actually two. Numbers could dupe!! I tried to fix it while using numbers with one decimal. The other problem was I could not add an animation anywhere. This is why I decided to make a brand new shuffling logic today. I first tried to fix the duping problem, by checking if this number already exists. This took a while, because I need to figure out how to only watch an array to a specific point, to ignore the upcoming numbers. This resulted in a growing or shrinking animation, which wasnt what I wanted. Then I thought, maybe I can shuffle in another way. Not by changing the value, rather by swapping numbers randomly. Just like in a deck of cards. So I loop through each digit and randomly choose a number in the whole array and then swapping those. This ensures every place got changed. Now there was another problem. It sometimes changed with it self causing it not to do anything. This was fixed by adding a while loop which generates new positions if the position is the own position. While writing this devlog I also thought of another problem. When the total count of numbers is very low, this shuffling method might not shuffle it enough, so I am looping it 2 times, if there are less then 10 numbers in it. Ya, thats about it. Now lets get to the slider which increases the blocks.
HOLY WAS THIS A STRUGGLE !! In this session I implemented adding and removing numbers for a slider in the future (hopefully tomorrow). THIS WAS A PAIN. Especially the camera handling. The very very basic adding and removing function was quite easy, since its only adding numbers or splicing numbers from the array (stack overflow my goat). The camera thing was quite hard though. When I add enough numbers it could make the pillars taller than the viewheight, making them sticking “off screen”. The fix was zooming out. But the fix on stack overflow needed to let it be a JSX element, which somehow didnt work. Finding the fix was one problem. The other problem is, that after finding the fix, it still didnt work and the camera “fell” down. After a long debugging session with various console.logs, I finally found the problem and it was one of the stupid ones. I used z, where it should have been y, thats dumb, but eyy, here we go. There were also a few other bugs, like having an infinite while loop when only having one pillar and shuffling. This was fixed by making the minimum number 2. The other bug was, weird camera behaviors happen, when reducing the number while its shuffled. Fixing it with an instant sort before reducing the number of pillars was my approach. Ya, that was about it. I am done for today.
Slider!! Today I added a slider that controls the adding and removing of pillars. I had some minor problems. (No, they were huge, but I feel better saying that they were minor ). First of all, I needed to figure out how to set default values. Normally its just value=””, but this doesnt work for a input type range. After some research I found out that its simply defaultValue, I feel dumb. Then I tried to add/remove pillars with useEffect and monitor the changes of the slider. This worked, but also didnt. I needed to manually update the pillars. It didnt do it automatically. Then my brain suggested something genius. Using onChange. But now I need to do an extra function for it. I thought, maybe I use a while loop once. While the number array is smaller run add function and while its bigger, the remove function. This was uhh, not that good, because it somehow resulted into an infinite while loop, because js is asynchronous. I also tried with a for loop. This threw the error, that I set the 2 useState too often. After some experimenting I ended up with my current solution. I also added 2 useState variables for the sorting delay and shuffling delay. I am still searching for a great mathematical, anti-proportional, linear function to adjust it corresponding to the pillars count. Ahh and I also updated the camera adjusting logic a bit.
Thats enough, Ima do CSS tomorrow. Today I added a slider style and 2 other sliders for the shuffling and sorting speed. Then I hid those 2 and the remove and adding pillar buttons. Also added some CSS for flex, justify content, space between, to seperate the drop down, which I added too. I tried to add a scrolling drop down thing, but failed, uhh, I also adjusted the pillar speed and camera angle. Also I found out, that I can call functions from an array, so I can store a function in an array and then call it like that, thats weird, but also huge. Dont wanna write too much today, cause I still have stuff to do. Ah, also added prevention of shuffling while sorting.
FINALLYYYY Today was the final coding session. I finally got the UI right and am okay with it. Its not the best, but its acceptable. I decided to only use icons, to keep it clean, but I ran into the problem, that the icons arent clear enough to showcase the specific sorting algorithm. So I decided on making a tooltip. But the build in HTML tooltip is too ugly and the delay is annoying. I did some research and found a W3Schools tutorial, they are the goat ( here it is ). I didnt expect front end being so time intensive, but I did need to adjust every value so it looks good, which is very hard to do :(. Ah, I also fixed the bug that when there is the minimal amount of pillars, it will be weird while shuffling (that wasnt proper english). Also the icons changes depending if we are shuffling or sorting and the disables and reinables, which is cool. Uhh, I remembered sth, I need to implement canceling while sorting. Also the vid is one fix old, i did fix the typo in the sorting alg.
Implemented pause logic. I implemented pause logic and added an indicator, which shows, which sorting algorithm is currently active. The pause logic was quite painful, cause it just didnt want to stop. Neither with break, nor with return. After a long long long trouble shooting session, I found out, that I forgot .current and it just wont detect correctly, what a stupid bug to troubleshoot 20 min for. Also I fixed an edge case in the demo vid xD
I wrote my readme in this session, so nothing really to say. It was just typing typing typing and finishing this beautiful readme to be able to submit this project.
Ships:
A 3d sorting algorithm visualizer with NextJS and ThreeJS. Also its made with luve and happiness....
|
1792853401.529373
|
1792939801.529373
|
|
43024
|
nwwm by @pinetree182 | Stardance
|
pinetree182
|
1
|
30.0
|
496
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T02:18:12Z", "hours": 30.0, "multiplier": 16.48, "payout": 496, "blessing": "neutral", "text": "I made nwwm, a simple tiling window manager for the X windowing system, a popular display server for Linux. Its job is basically to decide where windows go on the screen and how they should look, as well as listen to keypresses and decide what should happen. I ran into quite a few issues since I was using Rust which is not a language I’m 100% familiar with, and this was also my first proper systems-level project, but I managed to pull through and I’m really happy with where nwwm has gotten. Some features include: Tiling Multiple workspaces Support for docked windows, like statusbars Config loading from ~/.config/nwwm/config.toml Configurable keybinds (Barebones) EWMH support Since this is a Linux project, I know that most people won’t be able to test it so I’ve made a small video showing off some of the core features. You can view this video on the website, just scroll down to the “Demo” section and play the video.", "repo": "https://github.com/annaxiomm/nwwm", "demo": "https://annaxiomm.github.io/nwwm"}]...
|
[{"post_id": 72932, "ts": "202 [{"post_id": 72932, "ts": "2026-09-24T02:13:03Z", "hours": 5.9592, "text": "devlog #8 - the end is near stardance is coming to a close, the school holidays are nearing, and I’m running out of things to add to nwwm so I think I’m going to ship it here. I’m really happy with how far I’ve come in this project and I’ve learned a ton about X11, Rust, and myself. GAPS!! every good modern tiling window manager has gaps, so naturally I added them to nwwm. you can configure them in the config.toml through the gaps_inner and gaps_outer rules. gaps_inner controls the gaps between the windows themselves, and gaps_outer controls the gaps between the windows and the outer edge of the screen. other essentials I also added the ability to move windows between two workspaces. you can now set keybinds with the movetoworkspace <workspace> action to move the currently focused window to <workspace> . this was fairly easy to implement but I did run into a bug where the wm wasn’t correctly selecting a new window to focus after the focused window was moved to another workspace. I also finally added the ability to move focus backwards instead of just forwards, which you can do with the focus last action. promotional material I also sunk a few hours into making a cool little website for nwwm. it’s pretty generic but it gets the job done, and has a demo, config, screenshot, project description, and an example config file. you can see the website at annaxiomm.github.io/nwwm . finally, I made a simple logo in the form of a compass (because nwwm stands for N orth W est W indow M anager ) next steps ship it cash in my loot"}, {"post_id": 67018, "ts": "2026-09-13T01:49:32Z", "hours": 1.0403, "text": "devlog #7 - sanity check a bit of a short devlog here, but I decided to take a break from programming to make the repo look a bit more presentable (I’m planning to ship soon so it needs to look good for the camera!) README changes the existing README was quite barebones so I fully fleshed it out with a bunch of new stuff, including a proper testing tutorial, configuration help, and an entire section dedicated to what’s wrong with the project and what I’m going to fix when I decide to try and rewrite this bowl of spaghetti at some point next steps cleaning up the project, writting code comments, etc polishing up the project with some final features, like vanity gaps making a landing page for the wm because I know that when it comes time to ship, most people won’t be able to try out nwwm for themselves so I want to make a little showcase (so I don’t get a bad grade for usability!)"}, {"post_id": 66302, "ts": "2026-09-12T02:00:06Z", "hours": 3.9894, "text": "devlog #6 - CONFIGURATION!!! adding a config file has been in the next steps of just about every devlog i’ve made, and i finally got around to doing it! config.toml nwwm wouldn’t be a cliche rust project without a config.toml . but in all seriousness, i really like toml as a configuration language and it integrates really cleanly with rust anyway. so far, you can set parameters like window border, mod key, and default layout in $HOME/.config/nwwm/config.toml and nwwm will read those and apply them at runtime. unfortunately, config isn’t reloadable at the moment (next step?). you can also configure keybinds and even startup commands! i would really have liked to have lua scripting as a config but it’s just a bit too hard for a first wm project. the error handling is pretty hairy at the moment but i’ll fix that soon i promise other stuff i’ve changed not much else happened, but i added a feature where debug logging only happens if you run nwwm with -v or --verbose . next steps better error handling in config loading config re loading at runtime better documentation (maybe a website?)"}, {"post_id": 64645, "ts": "2026-09-09T06:37:27Z", "hours": 6.4375, "text": "devlog #5 - self hosted? ok it’s been quite a while since my last devlog but i’ve added a ton of new stuff - to the point where nwwm might become my main window manager soon! docks n’ struts “what even are those?” i hear you ask, and fear not because i am here to answer. a docked window is any kind of window that isn’t tiled, doesn’t belong to any workspace, and reserves space on the screen that other windows can’t take up. a really common example is a status bar: it persists between desktops, and reserves space on the screen. a strut is basically the space on the screen that it reserves. i implemented support for this so you can now use your favourite status bar with nwwm! i also spent like 3 hours debugging an error that happened sometimes when you closed a docked window, and ended up fixing it by complete accident workspaces 🧰 a window manager is basically useless without workspaces, so naturally i’ve added them to nwwm. they were actually quite easy to implement since i’ve technically supported them since day 1 i just never added workspace switching. basically when you switch a workspace it checks to see if the workspace exists, then it unfocuses the current window, unmaps (hides) all the windows in the current workspace, switches to the new workspace, maps (shows) all the windows in the new workspace, and focuses the first window in the new workspace. phew, try saying that in one breath! status bar compatibility as i mentioned earlier, i added struts and docks so that status bars can reserve space on the screen, but i also added some ewmh hints that allow status bars to see and change the current desktop. this was really easy, i just had to add some atoms and listen for ClientMessage events, and then connect those to my existing code next steps config file loading more ewmh 😭"}, {"post_id": 46047, "ts": "2026-08-12T23:48:13Z", "hours": 3.6097, "text": "devlog #4 - +10 usability! we’re now shifting from the realm of “experimental” to “experimental but usable ”. i’ve added a ton of new features recently and i’m really happy with how nwwm is coming together. actually good tiling i’ve added 2 new tiling layouts: monocle, and master/stack. monocle is the easiest to understand: all windows are the same size as the screen, and the currently focused window is brought to the front. master/stack is the traditional layout you see in wms like dwm, where there is a “master” window that takes up half of the screen and the rest split vertically (or “stack”) on the other half of the screen. i also added keybinds that switch between layouts revamped keybind system previously, the keybind system was just using raw x11 keycodes which were really annoying because they don’t match up with any other system (25 = w??) and are keymap-dependant. so, i switched to using xkbcommon and now keybinds are defined with more human-readable keysyms like KEY_w or KEY_Return . i also implemented a small command runner system so now you can launch commands with keybinds. so far i’ve set Mod+Enter to launch kitty and ofc these will all be configurable through the config file mysterious bugs i spent ages trying to debug some weird behaviour where bound keys wouldn’t register as keypresses if no windows had been opened in nwwm yet. after a lot of trial and error, and a few ChatGPT therapy sessions, i discovered that my error was one letter: i had keyboard_mode in the global mouse grab (which i need for click to focus) set to GrabMode::Sync instead of GrabMode::Async (fml) next steps more usability (moving windows, closing windows) better EWMH compliance support for temporary and permanent floating windows (i.e. tiled windows that you make float, and windows that only float like rofi) config file when?"}, {"post_id": 42968, "ts": "2026-08-07T23:32:08Z", "hours": 3.5736, "text": "devlog #3 - wow! visuals! how many times can i call conn.send_request() in one program?? config file i made a struct called Config which the wm owns, and it has values like border width, color, and keybinds. eventually it will read from a config.toml file but for now it’s all hard coded in the source code. window borders windows now have borders with color and width deriving from the Config (meaning they’ll be configurable through a config file at some point!). also, the currently focused window has a different border color (also configurable!) modular keybinds instead of hard-coding keybinds, i gave Config a child called Keybinds , which are hard coded in the source code… but eventually they’ll be part of the config file. when each keybind is called, it calls an Action which is linked to a function call in the wm. later there’ll be plenty of actions for anything you can think of, but for now theres only FocusNext which… focuses the next window! next steps config.toml loading better tiling (again) gaps EWMH compliance"}, {"post_id": 42307, "ts": "2026-08-06T23:15:26Z", "hours": 2.8794, "text": "devlog #2 - an actual window manager x11 is an ancient beast, full of mismatched types (screen height is a u16, window height is a u32, window position is an i32, etc), difficult protocols, and more double colons than you can shake a stick at, but i’m working through it. a (tiling) window manager i started off by storing a list of open workspaces in the main wm struct, and each workspace has a list of open windows (and a tiling layout). then, i made the wm listen for DestroyNotify events and remove them from their respective workspaces. soon after marvelling at my creation i realised that i could only see one window at a time, so i worked on implementing a basic tiling algorithm. so far, all i have is columns ( window_width = screen_width / num_of_windows ) but i’m working on adding master-stack tiling (what dwm uses) focus! i also realised that it’s no use having multiple windows if you can only use type on one, so i made each window grab the left click, and then listen for ButtonPress events, focusing the clicked window. next steps more tiling layouts cosmetic stuff (borders, gaps) keyboard shortcuts"}, {"post_id": 40452, "ts": "2026-08-03T23:38:06Z", "hours": 2.6114, "text": "devlog #1 - getting things started after working on tundra I decided that I wanted to make a window manager for an actual os instead, so I loaded arch onto an old macbook and got started. xlib woes I initially started by loosely following a tutorial that uses xlib for rust, but I soon realised that any direct mapping to C from rust is going to be an absolute horror to use (literally every function call had to be unsafe), so I switched to xcb. it has a slightly different API but it’s cleaner and i3 uses it so it must be good. current features: it runs it doesn’t crash you can open a window (by externally injecting it from a command prompt next steps: storing open windows in a struct / list basic tiling"}]...
|
Title: nwwm by @pinetree182 | Stardance
Devlogs:
Title: nwwm by @pinetree182 | Stardance
Devlogs:
devlog #1 - getting things started after working on tundra I decided that I wanted to make a window manager for an actual os instead, so I loaded arch onto an old macbook and got started. xlib woes I initially started by loosely following a tutorial that uses xlib for rust, but I soon realised that any direct mapping to C from rust is going to be an absolute horror to use (literally every function call had to be unsafe), so I switched to xcb. it has a slightly different API but it’s cleaner and i3 uses it so it must be good. current features: it runs it doesn’t crash you can open a window (by externally injecting it from a command prompt next steps: storing open windows in a struct / list basic tiling
devlog #2 - an actual window manager x11 is an ancient beast, full of mismatched types (screen height is a u16, window height is a u32, window position is an i32, etc), difficult protocols, and more double colons than you can shake a stick at, but i’m working through it. a (tiling) window manager i started off by storing a list of open workspaces in the main wm struct, and each workspace has a list of open windows (and a tiling layout). then, i made the wm listen for DestroyNotify events and remove them from their respective workspaces. soon after marvelling at my creation i realised that i could only see one window at a time, so i worked on implementing a basic tiling algorithm. so far, all i have is columns ( window_width = screen_width / num_of_windows ) but i’m working on adding master-stack tiling (what dwm uses) focus! i also realised that it’s no use having multiple windows if you can only use type on one, so i made each window grab the left click, and then listen for ButtonPress events, focusing the clicked window. next steps more tiling layouts cosmetic stuff (borders, gaps) keyboard shortcuts
devlog #3 - wow! visuals! how many times can i call conn.send_request() in one program?? config file i made a struct called Config which the wm owns, and it has values like border width, color, and keybinds. eventually it will read from a config.toml file but for now it’s all hard coded in the source code. window borders windows now have borders with color and width deriving from the Config (meaning they’ll be configurable through a config file at some point!). also, the currently focused window has a different border color (also configurable!) modular keybinds instead of hard-coding keybinds, i gave Config a child called Keybinds , which are hard coded in the source code… but eventually they’ll be part of the config file. when each keybind is called, it calls an Action which is linked to a function call in the wm. later there’ll be plenty of actions for anything you can think of, but for now theres only FocusNext which… focuses the next window! next steps config.toml loading better tiling (again) gaps EWMH compliance
devlog #4 - +10 usability! we’re now shifting from the realm of “experimental” to “experimental but usable ”. i’ve added a ton of new features recently and i’m really happy with how nwwm is coming together. actually good tiling i’ve added 2 new tiling layouts: monocle, and master/stack. monocle is the easiest to understand: all windows are the same size as the screen, and the currently focused window is brought to the front. master/stack is the traditional layout you see in wms like dwm, where there is a “master” window that takes up half of the screen and the rest split vertically (or “stack”) on the other half of the screen. i also added keybinds that switch between layouts revamped keybind system previously, the keybind system was just using raw x11 keycodes which were really annoying because they don’t match up with any other system (25 = w??) and are keymap-dependant. so, i switched to using xkbcommon and now keybinds are defined with more human-readable keysyms like KEY_w or KEY_Return . i also implemented a small command runner system so now you can launch commands with keybinds. so far i’ve set Mod+Enter to launch kitty and ofc these will all be configurable through the config file mysterious bugs i spent ages trying to debug some weird behaviour where bound keys wouldn’t register as keypresses if no windows had been opened in nwwm yet. after a lot of trial and error, and a few ChatGPT therapy sessions, i discovered that my error was one letter: i had keyboard_mode in the global mouse grab (which i need for click to focus) set to GrabMode::Sync instead of GrabMode::Async (fml) next steps more usability (moving windows, closing windows) better EWMH compliance support for temporary and permanent floating windows (i.e. tiled windows that you make float, and windows that only float like rofi) config file when?
devlog #5 - self hosted? ok it’s been quite a while since my last devlog but i’ve added a ton of new stuff - to the point where nwwm might become my main window manager soon! docks n’ struts “what even are those?” i hear you ask, and fear not because i am here to answer. a docked window is any kind of window that isn’t tiled, doesn’t belong to any workspace, and reserves space on the screen that other windows can’t take up. a really common example is a status bar: it persists between desktops, and reserves space on the screen. a strut is basically the space on the screen that it reserves. i implemented support for this so you can now use your favourite status bar with nwwm! i also spent like 3 hours debugging an error that happened sometimes when you closed a docked window, and ended up fixing it by complete accident workspaces 🧰 a window manager is basically useless without workspaces, so naturally i’ve added them to nwwm. they were actually quite easy to implement since i’ve technically supported them since day 1 i just never added workspace switching. basically when you switch a workspace it checks to see if the workspace exists, then it unfocuses the current window, unmaps (hides) all the windows in the current workspace, switches to the new workspace, maps (shows) all the windows in the new workspace, and focuses the first window in the new workspace. phew, try saying that in one breath! status bar compatibility as i mentioned earlier, i added struts and docks so that status bars can reserve space on the screen, but i also added some ewmh hints that allow status bars to see and change the current desktop. this was really easy, i just had to add some atoms and listen for ClientMessage events, and then connect those to my existing code next steps config file loading more ewmh 😭
devlog #6 - CONFIGURATION!!! adding a config file has been in the next steps of just about every devlog i’ve made, and i finally got around to doing it! config.toml nwwm wouldn’t be a cliche rust project without a config.toml . but in all seriousness, i really like toml as a configuration language and it integrates really cleanly with rust anyway. so far, you can set parameters like window border, mod key, and default layout in $HOME/.config/nwwm/config.toml and nwwm will read those and apply them at runtime. unfortunately, config isn’t reloadable at the moment (next step?). you can also configure keybinds and even startup commands! i would really have liked to have lua scripting as a config but it’s just a bit too hard for a first wm project. the error handling is pretty hairy at the moment but i’ll fix that soon i promise other stuff i’ve changed not much else happened, but i added a feature where debug logging only happens if you run nwwm with -v or --verbose . next steps better error handling in config loading config re loading at runtime better documentation (maybe a website?)
devlog #7 - sanity check a bit of a short devlog here, but I decided to take a break from programming to make the repo look a bit more presentable (I’m planning to ship soon so it needs to look good for the camera!) README changes the existing README was quite barebones so I fully fleshed it out with a bunch of new stuff, including a proper testing tutorial, configuration help, and an entire section dedicated to what’s wrong with the project and what I’m going to fix when I decide to try and rewrite this bowl of spaghetti at some point next steps cleaning up the project, writting code comments, etc polishing up the project with some final features, like vanity gaps making a landing page for the wm because I know that when it comes time to ship, most people won’t be able to try out nwwm for themselves so I want to make a little showcase (so I don’t get a bad grade for usability!)
devlog #8 - the end is near stardance is coming to a close, the school holidays are nearing, and I’m running out of things to add to nwwm so I think I’m going to ship it here. I’m really happy with how far I’ve come in this project and I’ve learned a ton about X11, Rust, and myself. GAPS!! every good modern tiling window manager has gaps, so naturally I added them to nwwm. you can configure them in the config.toml through the gaps_inner and gaps_outer rules. gaps_inner controls the gaps between the windows themselves, and gaps_outer controls the gaps between the windows and the outer edge of the screen. other essentials I also added the ability to move windows between two workspaces. you can now set keybinds with the movetoworkspace <workspace> action to move the currently focused window to <workspace> . this was fairly easy to implement but I did run into a bug where the wm wasn’t correctly selecting a new window to focus after the focused window was moved to another workspace. I also finally added the ability to move focus backwards instead of just forwards, which you can do with the focus last action. promotional material I also sunk a few hours into making a cool little website for nwwm. it’s pretty generic but it gets the job done, and has a demo, config, screenshot, project description, and an example config file. you can see the website at annaxiomm.github.io/nwwm . finally, I made a simple logo in the form of a compass (because nwwm stands for N orth W est W indow M anager ) next steps ship it cash in my loot
Ships:
I made nwwm, a simple tiling window manager for the X windowing system, a popular display server for Linux. Its job is basically to decide where windows go on the screen and how they should look, as well as listen to keypresses and decide what should happen. I ran into quite a few issues since I was using Rust which is not a language I’m 100% familiar with, and this was also my first proper systems-level project, but I managed to pull through and I’m really happy with where nwwm has gotten. Some features include: Tiling Multiple workspaces Support for docked windows, like statusbars Config loading from ~/.config/nwwm/config.toml Configurable keybinds (Barebones) EWMH support Since this is a Linux project, I know that most people won’t be able to test it so I’ve made a small video showing off some of the core features. You can view this video on the website, just scroll down to the “Demo” section and play the video....
|
1792853400.3687747
|
1792939800.3687747
|
|
43023
|
Worlds Unbound - Terrain Engine by @alpeka | Stard Worlds Unbound - Terrain Engine by @alpeka | Stardance...
|
alpeka
|
1
|
125.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:05:30Z", "hours": 125.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "— SHIP No.1 — I spent the last couple of months making a model terrain, which I will use for my game that I will continue to build after this competition. My game idea is quite ambitious, and given how long it took for me to get this basic terrain to work properly and well, that won’t even be coming with the extra month added one. I lot of you may be thinking though, what on earth were you doing for 125 hours, when all you came up with is a glorified green and grey piece of paper you could walk on. Well, not only was I learning and using Godot for the first time, it was the first time I learnt anything as complicated as this. I had to wrap my head around complex (at least for me) maths and computer science topics, like vectors and cross product, noise and FBM, TBN model, and UVs, not to mention just the sheer amount of logic I had to get through. It was so tiring to keep getting bugs for the chunking system I had, or the collisions. But thankfully, all that is behind me 😼. I’ll give you a more indepth look into what I’ve done over the past couple months. Devlogs 1-12: This period was the general beginning of my project. Not only was I learning Godot, and watching tutorials on it, I was also spending time on the player character, the camera system, and the world environment. Devlogs 13-15: I tried to implement LODs into my chunks, since the performance was simply too bad. Somehow this made it worse, possibly because of more chunks (the ones at the broder of LOD borders) being forced to be unloaded and loaded back in. Devlogs 16-21: I used my current technique, heavily based from devmars video on youtube about procedural terrain during this period. School had also started, so I spent less and less time on it, being significantly burnt out and tired. So I basically went through 3 iterations of terrain for my game, so that is why it took so long to get to this point.", "repo": "https://github.com/jona-mtw/Celestial", "demo": "https://alpeka.itch.io/worlds-unbound-terrain-engine"}]...
|
[{"post_id": 73370, "ts": "202 [{"post_id": 73370, "ts": "2026-09-25T00:42:51Z", "hours": 2.2056, "text": "Devlog 21 - Ship Prep!!! Colours I added colours to the terrain depending on how high the vertex is. This does create a very harsh border between the two colours, but I didn’t want to learn lerping, ik how to larp enough. Cleaned up my commits My commits were, and probably are still messy, and when I went ahead to revert some changes it said there were errors, but now thankfully that’s all fixed. :) I also updated quite small normals and some technical stuff."}, {"post_id": 72564, "ts": "2026-09-23T07:21:06Z", "hours": 3.9622, "text": "Devlog 20: GPU noise I found a way to make noise using a Godot addon called FastNoiseLite Runtime Shader . It was apparently identical to the FastNoiseLite in GDScript. So I gave it a try. I knew it was a gamble, given how much time I got left to ship an decent project, but I gave it a try since it seemed interesting. It wasn’t that hard to get the noise working, but to get it to sync with the collisions was a nightmare. In the end, I decided that even though the README stated it was 99.9% the same, the output seed by seed was different. So I decided to scrap it and now I’m going back to the old version with heightmaps. Why did I really want to switch? Because of the limited colour depth in images (has to be 8-bit for GDShader to read), theres not enough heights for each vertex to be at, so every so often, there’s this massive wall. It looks fine from afar, but thats probably because my terrain is 20km x 20km, so of course an 8m tall wall would look fine. (the image is from the addon readme)"}, {"post_id": 70779, "ts": "2026-09-19T19:04:39Z", "hours": 6.5594, "text": "Devlog 19 - Main Menu Added (and other things)! I spent quite a lot of time making the background for the main menu in Blender. After just copy and pasting the player model used in the game, I went ahead and made the main attraction: ✨ the planet in the background ✨ . My knowledge of noise that I gained from my previous attempts at the terrain generation helped me create the stars in the background, and the texture for the actual planet in the shader editor. I also added a slight atmosphere, which is (somewhat?) noticeable. I also went ahead and updated the shader code. Before, I used to use the visual shaders, since it was quite similar to the shader editor in Blender, which I was familiar with. But then I realised there’s just more flexibility with using GLSL . I can group uniforms in the inspector, making it clearer and less cluttered if I want to add textures in the future, including different images for the same texture (like Ambient Occlusion, Normals, Colours, and Roughness). Thus being able to group those different types images for the same texture was very important for future usability. Thankfully, Godot allows you to see the shader code that is generated from the visual shaders. Unfortunately, it was not readable at all. The generated code used a random(ish) collection of numbers and letters, and it was too long. Look below for the comparision for just the vertex shader, but it was something like 84 lines that was shruken down to 10 for the vertex shader. Even if you account for spaces in the generated code (which then it might be like 50-60 lines) thats a huge difference. So it took quite some time to get it to a readable state. edit: idk why the actual background looks so bumcheeks compared to the banner, hopefully itll be fixed by then 🤞"}, {"post_id": 67802, "ts": "2026-09-14T01:51:22Z", "hours": 4.0497, "text": "Devlog 18 - I am happy once again!! I FINALLY got the collisions to work!! Basically, it looks at the terrain model that is imported into Godot, and aligns the vertices of the CollisionShape3D with it. It also updates its position every time the player moves 1 unit (whatever the size of a quad of the mesh is). Then it looks at the heightmap, looks up the height of its coresponding pixel, multiplies that by the height shader param (2000, like in the vertex shaders), and thats the collision shape done. I noticed while walking around the world, that there were these massive ridges on the terrain. This is due to the lack of precision in the heightmap. The heightmap only has 256 shades of grey, and I need 2000 values. It is quite impossible to make a image file with that much precision, so instead, I’ll make it so that the CPU will just send an array to the vertex shader. Also, I’ve rebranded my project to Worlds Unbound, and this specific Stardance project will just be handling the terrain stuff for the game. p.s, it never goes above 16ms, i think thats probably because i was recording"}, {"post_id": 65723, "ts": "2026-09-11T02:05:18Z", "hours": 6.0086, "text": "Devlog 17 - I am incredibly frustrated. No matter what I do it feels like I just can’t get the collisions to work. Basically, I’m trying to fetch the heights from the height map to input into the CollisionShape3D, but the coordinates are always offset in some way or the other. I even used AI my friend to basically rewrite the entire script over and over again, but that didn’t work either. Maybe it’s cos school has started now, and I haven’t been able to spend that much time on this project than I would like to As you can see in the photo, the collision mesh (in blue) is offset from the normal terrain (in white)"}, {"post_id": 63142, "ts": "2026-09-06T19:41:46Z", "hours": 7.2203, "text": "Devlog 16 - AMAZING PROGRESS!! I’ve managed to get a massive 20km render distance with huge mountains and ridges using FastNoiseLite and vertex shaders. I used devmar ’s terrain technique, which he named the “Wandering Clipmap Terrain Technique”. The reason why the technique is called the “ Wandering Clipmap Terrain Technique” is because a flat plane that is subdivided a bunch (to make varrying levels of detail (LODs)) that follows the player. The vertex shaders then offset the heightmap so it gives off the illusions that your moving about in a massive world. All the displacement is done by the vertex shaders, which looks at a heightmap. In the future, I might make this heightmap be generated in gdscript instead of in the inspector, to deal with texture resolutions. Currently, from afar, the terrain looks amazing (except from the fact its not textured) but upclose, you can see rings in the terrain, which is caused by the heightmap’s resolution being too low. In fact each ring is about 8m tall so I really need to fix that 😭 The normals are calculated by just copying the heightmap and setting it ‘as normals’ in the inspector. They also are multiplied by a normal basis matrix, which allows me to configure the specific normal settings. I’ll need to calculate the normals in the fragment shader as well in the future for more convincing shadows, but for the mean time, the vertex shaders should do just fine. I’m planning on adding collisions, then maybe textures, biomes and vegetation soon!!"}, {"post_id": 61230, "ts": "2026-09-04T01:57:24Z", "hours": 4.8533, "text": "Devlog 15 - I’m an Idiot For the past 95ish hours, I’ve been working on a way to make procedural terrain for my game. I tried 2 main methods, one centred round the CPU, and one I was building centred around the GPU. The endless chunk seam bugs caused me to burnout/get tired of the entire project, and there was so many stuff (that I won’t really be explaining for the sake of my poor reader’s sanity) leading to me ✨ youtube ✨ I saw this AMAZINGLY smart video by devmar, showing an alternate way of generating terrain. I urge you to watch the video as well, the whole technique is very very clever, and he even goes on to make further videos on making collisions, recalculating normals and adding vegetation, especially if your interested in procedural generation. After watching this video however, I became incredibly frustrated. I spent nearly 100hrs of my summer making this procedural terrain which I know hadn’t gotten anywhere and theres this incredibly smart video from 4yrs ago that pops up on my feed. Welp, now ig i gotta try out this way, and quick cos my parents are on my tail talking about me finishing this project before school starts 🙏 (its my gcse year so ig its valid but still ) Now what I actually did that counted to my time Experimented with vertex shaders, and sending heightmaps to vertex shaders to displace. This however caused immense lag and caused VERY ANNOYING chunk seams. #epicfails"}, {"post_id": 59673, "ts": "2026-09-01T16:27:07Z", "hours": 9.5572, "text": "Devlog 14 - LOD chunks ——— OPTIMISATION IS SOO HARDD 10hrs to do practically do something I’ve already done? (i had already made a chunk system in previous devlogs) Well, whilst some of that time was transferring code from my old commits to the current one and making sure it works, most of the time I spent on this devlog was spent on ✨ “optimisation” ✨ Optimisation First of all, I added LODs into the chunk mesh. What this means is that since further away chunks take up less of your screen, the level of detail (LOD) is reduced the further away it is. I had already made the script that handled the creation of those different meshes with different LODs, so in this devlog, I added it to the main terrain generation script, and assigned each LOD to a certain distance, so that any chunk with a certain distance has a certain LOD. In my last version of the terrain generation, I relied on the name of the MeshInstance3d nodes created to identify what chunk they were. I realised when making this updated version that it was prone to failure, since if the node did not exist or a node with the same name were some how added to the scene tree, errors would be raised or at the very least, a logic error would occur. To recetify this, I switched to using dictionaries to house all the information of all the chunks: chunks : Dictionary [ Vector2i , int ] = { Vector2i ( 0 , 0 ): 0 , Vector2i ( 0 , 1 ): 0 , #etc } The key is chunk coordinate, and the value is the LOD (0 being the highest, 4 being the lowest) Every time I wanted to update the terrain, I would search the scene tree if a particular node was unwanted (again, by looking at the name) and then generating the rest of the ones wanted. This way would not work with LODs, since some chunks may still exist, but may have to change LOD depending on where the player is. So I made use of the dictionary and also created a new one that would store the chunks that I want created. It would loop through the dictionarys, checking certain conditions, and the terrain would be updated. All this looping is somewhat inefficient, and did cause some lag spikes, so I will try to fix that next devlog by only checking the chunks that would be affected based on which way the player moved. To help with the looping, I created chunk and lod lookup tables, that can be offset based on the players_position. These lookup tables are only changed when the render distance is changed, so the same calculation doesn’t have to run hundreds of times in 16ms (60 fps)."}, {"post_id": 57389, "ts": "2026-08-29T15:03:50Z", "hours": 3.8103, "text": "Devlog 13 - LOD template I basically deleted all the old code, and started over, by making a function where the noise will be given to the vertex shader, and one that will generate the actual flat mesh for it (which is going to be changed by the vertex shader). I made the template for making flat planes with different levels of detail (LOD), which will be changed by the vertex shaders, applying the noise to the mesh. I created a new script called lod.gd and gave it a class name, so that I can call multiple instances of it in the main terrain generation program. Every time the program wants to make another chunk, I have to pass the arguements: resolution - what ive defined as a synoymn of LOD chunk_pos - where the chunk is The function then loads an ArrayMesh from a pre-generated list of possible meshes and creates a new MeshInstance3D node to display it. Extra stuff I also added player coords and chunk position in the debug_screen :)"}, {"post_id": 56938, "ts": "2026-08-28T23:24:46Z", "hours": 4.2589, "text": "Devlog 12 - General updates 3.0 I PROMISE THIS IS THE LAST ONE GUYS 🙏 Performance Stats I added a little HUD showing the FPS, the time it takes to make one frame (has to be below 16.67ms (60fps) or there will be noticeable lag), and the memory usage. Lighting, Shadows, and World Environment I slightly changed the shadow bias and normal bias so that shadow artifacts are to a minimum. On top of that, I set it so that shadows aren’t cast for the terrain, which unintentionally handles with some of the artifacts, whilst keeping the “shadows” by illuminating the terrain depending on where the DirectionalLight3d is, making the “shadows” reponsive to a future day-night cycle. Also the volumetric fog and lighting looks better Camera Issues 2.0 So previously I had the player hide() when you go into first person, but that also effects the shadows. So instead I made the visor disappear when you go into first person. But then there was another problem. The head would move during the idle and walking animations, which is quite distracting and could be problematic for some players. So I stopped the animtions whilst in first person. It is a very rudimentary fix, since players can look at their shadows and see the lack of animation. Furthermore if I want to add multiplayer in the future, it’ll look very weird. Performance checks In preparation of the biome generation, I wanted to make sure the performance is fine. It takes a bit for the terrain to generate at the start, but thats common across nearly every game. And this will be lightened a bit when I implement LODs. Once the game is running, it runs relatively fine, except with (very quick) lag spikes when the chunks update. To address this, I’m planning of offloading some of the terrain generation to the GPU, which can calculate normals a LOT more effeciently and quicker than the CPU. Current, the CPU calculates all the vertices, indices, normals, and then compiles it into an ArrayMesh , which is given to the GPU for rendering. This can put a lot of strain on the CPU, especially later down the line, so it’s better and more effiecient if the GPU does the very repetetive calculations, by making it do all the normal calculations, including other stuff."}, {"post_id": 56302, "ts": "2026-08-28T01:02:37Z", "hours": 5.1292, "text": "Devlog 11 - General updates 2.0 Editor Tools!! - (to see the terrain in the editor) So in a previous devlog, I think I talked about how I added @tool in my terrain generation program to be able to see it in the editor. Once I made it dependent on the player position, it didn’t generate in the editor because the player wasn’t loaded in. So now I made it so that if the script was running while the editor (not the game) is open, the terrain would generate around (0, 0) based on how ever big the render distance is. Also I made it so that if you tweak the value of any of the primary noise settings in the editor, it updates in the editor. On top of that, I set the viewport to display wireframe so that I can see the triangles at different resolutions, which is where I came across:…. FLOATING POINT ERRORS!!! (yay ) I noticed that if I set the resolution to a decimal value that was not a power of 2, the triangles would be off by some amount, causing neighbouring triangles to overlap each other, causing normal and collision problems. The resolution variable is going to be eventually used for LODs, so since I’ll be the only setting it, I’ll just make sure to use a value thats a power of 2 The reason why this happens is because 16 (my chunk size) can be multplied and divided by 0.125 (2^-3) evenly to create an integer, compared to 0.1 which results in 1.6. Any smaller power of two is rounded it to the nearest 3dp, so 0.0625 (2^-4) doesn’t work. Camera Issues So I made functionality with the camera where you can scroll to zoom the camera in and out, and if you scroll far enough in, you’ll be in first person, much like how it works in Roblox. There was one problem though. Since the material for the visor on the player model was somewhat transluscent, your view would get darker. Also, you could free look inside the helmet, looking at the areas I wasn’t bothered to model and texture hadn’t modelled. So I disabled that in first person. The biggest timewaste of my life In an attempt to offload some of the generation to the GPU for more effecient parallel processing, I tried to figure out which parts of the algorthim were going to be handled by the CPU and GPU. There were some that had to be handled by the CPU, and there was no choice about those, and they were: collisions and figuring out what chunks should be rendered. At first I thought, how about I offload nearly everything to the GPU, including the noise function. Then I learnt that FastNoiseLite didn’t exist in .gdshader . So I did what any normal person would do, and CODE PERLIN NOISE BY HAND. I spent HOURS learning everything my dumbass could about it: vectors, normals, gradients, deviation, erosional generation, and finite difference approximation. At least I probably learnt something useful for FSMQ 🤷 (a British maths exam most students do in yr11 along with their other GCSEs)."}, {"post_id": 55266, "ts": "2026-08-26T23:25:21Z", "hours": 4.5936, "text": "Devlog 10 - General updates Alright, so ik I said I would work on the procedural terrain, but instead I worked on:… Debugging Tools!! (yayy! ) When tab is pressed, it toggles on debug mode, where all meshes turn into wireframes (to check LOD) and chunk boudaries are shown. There are problems with chunk boundaries not despawning when the terrain its on is gone, but that’s fixed when you toggle debug mode again :). I could fix it but icba I have other stuff that needs to be prioritsed. Resizabile UI So before, if you resized the window, the pause menu and settings menu would be offset from the centre and wouldn’t scale with the window. Now when you scale it, the pause and settings menu stay in the centre and scale accordingly. (the flickering in the video is just an artifact created by the godot editor, and will apparently be fixed once exported)"}, {"post_id": 55025, "ts": "2026-08-26T13:34:07Z", "hours": 7.725, "text": "Devlog 9 - Player Animation!! Walking and Idle Animations I finished a basic walking and idle animation for the player. The walking animation is also somewhat inspired from the kerbals from KSP. Both the animations are kinda choppy, especially when the animation loops round, but frankly icba I didn’t have enough time to fix them rn (mbmb 😭 ). Thankfully the walking animation is timed properly so that the player doesn’t look like its sliding around. Camera updates I added functionality to the camera where you can freelook around the player when holding the right mouse button. Once released, it goes back to the normal position (motion is lerped). Prepartions for next steps For the next steps, I want to go back to the terrain_generation program and start to add variation across the world (like biomes, mountains, etc.). I’m also looking to optimise it, making it generate terrain and collisions faster in prepartion for any future implementation of faster travel. So I added functionality that can allow me to make LODs, which will likely be implemented next devlog."}, {"post_id": 53506, "ts": "2026-08-24T02:34:01Z", "hours": 9.7758, "text": "Devlog 8 - Player Model and other assets! Player Model I finished with texturing, rigging and weight painting. Next Step is to make the walking and jumping animations. Worked on the settings menu I updated the setting menu layout to account for different settings I’ll add in the future Stupid Bugs So when trying to break the terrain generation, I set the speed of the player to like 300 (which it will never be in the game except when in a space ship) but when I tried to do that, the game kept crashing, spitting out an error saying that something didn’t exist. It was coming from my unload_terrain() function. Basically how it works is it checks for all the instances of the MeshInstance3D node, and checks the name of it. For every chunk that is created, I assigned a unique name to it on creation based on the x and y coordinates of it. The function would checking all the nodes, and seeing which ones were out of the “ collision_chunk_size ” radius, and then would delete them. But when going super fast, the processing of things got all weird, meaning that when it tried to delete a chunk, and if it didn’t exist, it would crash. So I added a simple if statement if len(child_name_array) > 2: (basically it would check if the length of the name was long enough to see if there was the coord data). Stupidly I wrote the greater than sign the wrong way round, which led to me being stumped for SO long on why the terrain was just not unloading. tldr: > was the wrong way round and cost me hours."}, {"post_id": 48656, "ts": "2026-08-17T04:20:08Z", "hours": 6.7203, "text": "Devlog 7 - Chunks # 2: PROCEDURAL GENERATION DONE (mostly) Bugs Managed to fix all the bugs related to this part of terrain generation. Weird chunk errors There was an if statement (I changed it out for something else that’s more efficient) that was like: if abs(player_position.x - chunk_pos.x) > collision_chunk_size or abs(player_position.y - chunk_pos.y) > collision_chunk_size This logic error create weird stuttering issues and lag. The fix was to switch or with and . Normals DEFINITELY the bane of my existence. I know roughly what normals are due to me doing 3D modelling/rendering, but I have no clue how it actually works. And plus, I’ve barely covered the maths I need for this in school, so I spent sooo much time (much of which wasn’t recorded) just researching about normals and how they work. I think that definitely helped me find a solution to the annoying chunk borders and random artifacts found inside each chunk. Chunk Sizing I stupidly and randomly changed the chunk size from 16 to 10, which worked completely fine, except for the fact that the player script was still using the 16x16 chunk system, causing the generation to lag behind, eventually leading to the player falling off the map. New Features There were also some ✨ features ✨ that I added. Colour I added colour to the world, and if I match it to the fog and sky, I think it would look AMAZING I will make it so that the colour does vary across the planet. Player I added the rig and refined the topology for animation."}, {"post_id": 47230, "ts": "2026-08-15T00:41:31Z", "hours": 7.1208, "text": "Devlog 6 - Chunks # 1 Previously, I had it so that the entire world was one big mesh, that could not be expanded without unloading and reloading the whole thing and more. This is obviously very inefficient, especially if I want the terrain to load in and out based on where the player is. Chunks is the answer to that. Split the world into chunks of your choice (I chose 16x16), and load/unload just the chunks you need to, not the whole thing. It seemed easy for me at first, clearly it wasn’t (the #1 for the header, ik this isnt gonna be the only devlog on this 😭 ). Bug 1 - The Normals aren’t normal Last devlog, I talked about calculating the normals, which went smoothly… For the old mesh… You see, to calculate normals, you need the vertices surrounding the vertex your trying to find out, and with chunks, that meant every 16 vertices, the normals were being calculated incorrectly, causing seams to be found in the terrain. However, since we did calculate the normals (for the most part) some pretty nice shadows have been cast on our terrain. Despite it being a bug, it is useful to find out where the chunk boundaries are, which is EXTREMELY useful for debugging, so I haven’t tried fixing it just yet. Bug 2 - Not so Good Performance After dividing the terrain into chunks, and making new chunks generate when the player moved into a new chunk, I tested it out. And every time I tried to cross a chunk border, there would be a huge lag spike. This would be caused by the fact the game prioritised the generation of chunks instead of the game. Thankfully I was able to make it so that the chunks would load whenever the processor was ready, to make sure not to overload it too much. Bug 3 - (Lack of) Collisions Another reason why chunks are useful is for limiting the area with active collisions. When the terrain was one big mesh, the entire mesh had active collisions, which would all be checking if something hit it, which is very resource intensive. Which is why I limited the area with collisions to a small radius around the player. While coding it, many logic erros came up, such as one that caused the collisions to just not work."}, {"post_id": 46583, "ts": "2026-08-13T22:19:41Z", "hours": 8.0178, "text": "Devlog 5 - Procedural Terrain (FINALLY!!) I made a start at making the procedural terrain, made some progress with the player model, and with configuring the basic shaders of the game. Elephant in the Room - Procedural Terrain Technically calling it procedural terrain is cheating a bit, cos really all it is right now is perlin noise applied to each vertex’s height. And with that, you can change the shape of the terrain by changing the values of some variables, like the seed, frequency, and octaves. I exported these variables so I could change them in the editor, and added @tool at the start so I can see it in the editor. I’m starting to work on a chunk system at the moment, which will load and unload chunks of the world as the player moves about. Player Model I finished modelling the player (added this version to the game) and added the bones for rigging, except when I move the arm bone, the helmet deforms, so next time I will be doing some weight painting Thankfully UV unwrapping is done as well so I should be able to texture everything before the next devlog. Also, addressing my last devlog, I said Lapse wasn’t syncing with hackatime. Turns out, if I just told it to create a new project called Celestial (which is what my project is called on hackatime), it’ll just add the time to it, so thats amazing!!! The WorldEnvironment Node I accidentally deleted my old configuration of this node while experimenting with stuff, and so I made some changes to the shading of the world. Next up is to recalculate all the normals of each triangle so shadows can be cast properly. I tried using SSAO, but every time I used that to make some sort of shadow, it changed depending on where the camera was and it made the terrain very pixelated. As you can see in the video, you can see the outlines of the terrain. That is because of the volumetric fog added. It sounds resource intensive, so if it starts to lag out my game I might remove it, which is a shame cos it looks really nice."}, {"post_id": 45513, "ts": "2026-08-12T01:47:27Z", "hours": 6.4792, "text": "Devlog 4 - A little bit of a few things I mostly did a combination of small bits, which is probably bad in terms of github commits and actual progress, but at least it’s not burning me out because I’m doing whatever part of the project I fancy at the time. UI I spent most of the time making a (hopefully) futuristic(?) looking pause menu that can also redirect you to a settings page, where I’m planning to hold the settings for terrain generation for the player to manipulate. Much of this time was spent experimenting with different Control nodes, finding out what they do and what they’re helpful for and manipulating the styles of them. I ended up with a style shown below 👇👇👇 Player Model I think I’ve finalised on a particular style, now I basically just have to make it and then texture it. The sad thing is that for some reason lapse doesn’t recognise my hackclub project anymore (already logged 5+ hrs on lapse), so all the time I spent on Blender wasn’t actually logged. If someone could please tell me how to fix this or if theres an extension for blender that would be SO helpful 🙏. Extras I also added the devlogs to my repository, it should appear there when I next commit, which should be soon!! I realise that the popular devlogs have assets from the get-go, so I probably might focus more on that, despite lapse not working if I wanna record time on Blender or Affinity. Again, if someone could please tell me if something is up with lapse or if there’s an extension that I can download for Blender or Affinity, that would be SOO helpful!! 🙏"}, {"post_id": 44908, "ts": "2026-08-10T23:37:53Z", "hours": 2.1228, "text": "Devlog 3 - Flat Plane I know this sounds INCREDIBLY trivial, but I finally figured out how to make a flat plane in Godot, that can be used to make an actual terrain. There were 2 main ways that I could have used to make this: Method 1: I can use a PlaneMesh and then subdivide it down into triangles. Then use vertex shaders or custom scripts to displace the plane as a whole based on noise. It is faster to make the flat plane using this method since you give Godot most of the control over the tessellation, and the individual vertex placement. This means however that it is a lot harder to load and unload certain parts of the terrain, and it is generally harder to add noise to the terrain since you do not have control over each vertex. Method 2: I can use an ArrayMesh , where I create the grid from scratch, telling Godot how to connect every single vertex to create triangles. The downside to this is how long this took. I know it seems short compared to my first devlog (I think the main reason I took so long in that one was not only because I was learning Godot, but it was also because I was experimenting with player models on Blender but hopefully now I’ll be more time efficient) but it is still more time consuming to tell Godot how to connect each and every vertex. I was in fact so stumped on how to go about doing this that it suddenly came to me when I was playing with my little cousin. I even noted down how to do it on my phones notes app (excuse my bad handwriting I was in the car writing with my finger) :/ Despite it being longer to setup, it is overall better for the needs of my game, since I’ll not only need to be able to change the height of each vertex based on a heightmap, but it can also aid with making biomes, by adding custom values to each vertex, which is simply not possible with PlaneMesh . It is also easier to load and unload certain parts of the mesh, and it is better for larger maps, since your CPU isnt doing all the hard work of choosing all the vertices and indexing them. In order to make the actually interesting part of the terrain (which btw I haven’t done in this devlog, I guess this is just like a future plans part) I can use either vertex shaders or custom scripts to make noise in the terrain. Both of these have their respective use cases, and I wouldn’t be able to say one is better than the other for my case. Vertex Shaders: GPU based no collisions (purely visual) written in Godot Shader Language (which is written in C, which is terrifying for me who practically only knows Python ( GDScript and Python are similar enough for me)) Custom Scripts: CPU based can create collisions (actually changes the vertex’s height) written in GDScript (happy days (ik I can write it in C# , but I’m staying far away from that)) Despite my fear of anything not similar to Python , I will still need to use vertex shaders. And I will explain that in my next devlog because this is getting too long. Now onto my struggles incredible skill when making a.. flat plane in Godot. I chose to do Method 2, because of it’s functionality later down the line. But that means I have to tell Godot what vertices to make, and how to connect them up. Obviously that was as simple as could be.. (you can see my failures in the screen recordings below)"}, {"post_id": 44630, "ts": "2026-08-10T15:03:15Z", "hours": 1.7508, "text": "Devlog 2 - One Lone Triangle I spent 2ish hours trying to make a triangle. In GDScript.. Absoutely terrible progress. I see people on Stardance making whole ass projects in 2 hours, and I’m spending those 2 hours making a simple triangle. I have no idea why decided to do a game with procedural terrain generation as my FIRST Godot project. I somewhat understand the theory behind procedural generation, mainly from watching a video on the breakdown of Minecraft’s code when I was like 10, but yeah 🤷 Unfortunately, I have no clue how to do it in practise.. so I guess hours of looking through the Godot docs awaits me yay -_-. (jk the docs are extremely helpful tysm godot 🙏)"}, {"post_id": 43355, "ts": "2026-08-08T15:43:46Z", "hours": 12.8333, "text": "Devlog 1 - Player Movement Okay I know what your thinking. 12 hours for just player movement. Surely you must be wasting time just to get as much stardust as possible. The thing is.. I’ve never used Godot before. Everything from the node tree, to project settings was all pretty much new to me. I should have honestly done the WarioWave Godot mission thingy, so that I would have at least been fimilarised with how Godot worked in 3D. And here I am thinking about making a game where you explore a procedurally generated world. Never before have I touched Godot, and I’m dreaming of making a game with procedural terrain, like in Minecraft or No Mans Sky. Time Waste No. 1 - Learning Godot I had to look through the docs just to figure out how to assign a key to going forwards, mind you all the code needed is given to you when you use the PlayerCharacter3D class. This is on of the many things I struggled with in Godot. 😭 Time Waste No. 2 - Experimenting with player models in blender I experiemented with different styles of player models to use in the game, and I landed on one inspired from the infamous space game Kerbal Space Program. Time Waste No. 3 - Being petty about a camera system 📷 I think this is what took up most of my time. As soon as I made a moveable player that doesn’t fall through the ground (a very quickly made glorified cube in blender), I thought about adding a third person camera. I initially thought of making it toggleable, like in Minecraft, where you press F5, it toggles between first, second(?) and third person. But you can’t change the distance away the camera is from the player in third person. Besides, my stupid ass made it so that each time you pressed F, the camera would keep zooming out endlessly instead of toggling between first and third person. So instead I made it zoomable, like in Roblox. First I tried to manually change the offset based on the scroll wheel (that took me so much time because I had no clue how to get inputs from the scroll wheel). But that posed a problem, which was that the player could clip through walls. Then I found there was a literal node called SpringArm3D to do all of this for me 😭 And its so useful, like I can change how much it zoom’s out by my just changing one variable, and it automatically detects collisions an stops clipping through them. This may seem like somehting that is really basic to some of you who have actually cared to read this far (ty btw :)) but this was crazy for me. And now, I realised you can’t orbit around the camera without the player moving. But that’s something to add next time 🤷 lmao this feels like smth to convince ppl that i wasnt afk or smth to farm stardust. i PROMISE im not trying to farm them, although i would love to get some, im not trying to cheat the system guys 😭"}]...
|
Title: Worlds Unbound - Terrain Engine by @alpeka Title: Worlds Unbound - Terrain Engine by @alpeka | Stardance
Devlogs:
Devlog 1 - Player Movement Okay I know what your thinking. 12 hours for just player movement. Surely you must be wasting time just to get as much stardust as possible. The thing is.. I’ve never used Godot before. Everything from the node tree, to project settings was all pretty much new to me. I should have honestly done the WarioWave Godot mission thingy, so that I would have at least been fimilarised with how Godot worked in 3D. And here I am thinking about making a game where you explore a procedurally generated world. Never before have I touched Godot, and I’m dreaming of making a game with procedural terrain, like in Minecraft or No Mans Sky. Time Waste No. 1 - Learning Godot I had to look through the docs just to figure out how to assign a key to going forwards, mind you all the code needed is given to you when you use the PlayerCharacter3D class. This is on of the many things I struggled with in Godot. 😭 Time Waste No. 2 - Experimenting with player models in blender I experiemented with different styles of player models to use in the game, and I landed on one inspired from the infamous space game Kerbal Space Program. Time Waste No. 3 - Being petty about a camera system 📷 I think this is what took up most of my time. As soon as I made a moveable player that doesn’t fall through the ground (a very quickly made glorified cube in blender), I thought about adding a third person camera. I initially thought of making it toggleable, like in Minecraft, where you press F5, it toggles between first, second(?) and third person. But you can’t change the distance away the camera is from the player in third person. Besides, my stupid ass made it so that each time you pressed F, the camera would keep zooming out endlessly instead of toggling between first and third person. So instead I made it zoomable, like in Roblox. First I tried to manually change the offset based on the scroll wheel (that took me so much time because I had no clue how to get inputs from the scroll wheel). But that posed a problem, which was that the player could clip through walls. Then I found there was a literal node called SpringArm3D to do all of this for me 😭 And its so useful, like I can change how much it zoom’s out by my just changing one variable, and it automatically detects collisions an stops clipping through them. This may seem like somehting that is really basic to some of you who have actually cared to read this far (ty btw :)) but this was crazy for me. And now, I realised you can’t orbit around the camera without the player moving. But that’s something to add next time 🤷 lmao this feels like smth to convince ppl that i wasnt afk or smth to farm stardust. i PROMISE im not trying to farm them, although i would love to get some, im not trying to cheat the system guys 😭
Devlog 2 - One Lone Triangle I spent 2ish hours trying to make a triangle. In GDScript.. Absoutely terrible progress. I see people on Stardance making whole ass projects in 2 hours, and I’m spending those 2 hours making a simple triangle. I have no idea why decided to do a game with procedural terrain generation as my FIRST Godot project. I somewhat understand the theory behind procedural generation, mainly from watching a video on the breakdown of Minecraft’s code when I was like 10, but yeah 🤷 Unfortunately, I have no clue how to do it in practise.. so I guess hours of looking through the Godot docs awaits me yay -_-. (jk the docs are extremely helpful tysm godot 🙏)
Devlog 3 - Flat Plane I know this sounds INCREDIBLY trivial, but I finally figured out how to make a flat plane in Godot, that can be used to make an actual terrain. There were 2 main ways that I could have used to make this: Method 1: I can use a PlaneMesh and then subdivide it down into triangles. Then use vertex shaders or custom scripts to displace the plane as a whole based on noise. It is faster to make the flat plane using this method since you give Godot most of the control over the tessellation, and the individual vertex placement. This means however that it is a lot harder to load and unload certain parts of the terrain, and it is generally harder to add noise to the terrain since you do not have control over each vertex. Method 2: I can use an ArrayMesh , where I create the grid from scratch, telling Godot how to connect every single vertex to create triangles. The downside to this is how long this took. I know it seems short compared to my first devlog (I think the main reason I took so long in that one was not only because I was learning Godot, but it was also because I was experimenting with player models on Blender but hopefully now I’ll be more time efficient) but it is still more time consuming to tell Godot how to connect each and every vertex. I was in fact so stumped on how to go about doing this that it suddenly came to me when I was playing with my little cousin. I even noted down how to do it on my phones notes app (excuse my bad handwriting I was in the car writing with my finger) :/ Despite it being longer to setup, it is overall better for the needs of my game, since I’ll not only need to be able to change the height of each vertex based on a heightmap, but it can also aid with making biomes, by adding custom values to each vertex, which is simply not possible with PlaneMesh . It is also easier to load and unload certain parts of the mesh, and it is better for larger maps, since your CPU isnt doing all the hard work of choosing all the vertices and indexing them. In order to make the actually interesting part of the terrain (which btw I haven’t done in this devlog, I guess this is just like a future plans part) I can use either vertex shaders or custom scripts to make noise in the terrain. Both of these have their respective use cases, and I wouldn’t be able to say one is better than the other for my case. Vertex Shaders: GPU based no collisions (purely visual) written in Godot Shader Language (which is written in C, which is terrifying for me who practically only knows Python ( GDScript and Python are similar enough for me)) Custom Scripts: CPU based can create collisions (actually changes the vertex’s height) written in GDScript (happy days (ik I can write it in C# , but I’m staying far away from that)) Despite my fear of anything not similar to Python , I will still need to use vertex shaders. And I will explain that in my next devlog because this is getting too long. Now onto my struggles incredible skill when making a.. flat plane in Godot. I chose to do Method 2, because of it’s functionality later down the line. But that means I have to tell Godot what vertices to make, and how to connect them up. Obviously that was as simple as could be.. (you can see my failures in the screen recordings below)
Devlog 4 - A little bit of a few things I mostly did a combination of small bits, which is probably bad in terms of github commits and actual progress, but at least it’s not burning me out because I’m doing whatever part of the project I fancy at the time. UI I spent most of the time making a (hopefully) futuristic(?) looking pause menu that can also redirect you to a settings page, where I’m planning to hold the settings for terrain generation for the player to manipulate. Much of this time was spent experimenting with different Control nodes, finding out what they do and what they’re helpful for and manipulating the styles of them. I ended up with a style shown below 👇👇👇 Player Model I think I’ve finalised on a particular style, now I basically just have to make it and then texture it. The sad thing is that for some reason lapse doesn’t recognise my hackclub project anymore (already logged 5+ hrs on lapse), so all the time I spent on Blender wasn’t actually logged. If someone could please tell me how to fix this or if theres an extension for blender that would be SO helpful 🙏. Extras I also added the devlogs to my repository, it should appear there when I next commit, which should be soon!! I realise that the popular devlogs have assets from the get-go, so I probably might focus more on that, despite lapse not working if I wanna record time on Blender or Affinity. Again, if someone could please tell me if something is up with lapse or if there’s an extension that I can download for Blender or Affinity, that would be SOO helpful!! 🙏
Devlog 5 - Procedural Terrain (FINALLY!!) I made a start at making the procedural terrain, made some progress with the player model, and with configuring the basic shaders of the game. Elephant in the Room - Procedural Terrain Technically calling it procedural terrain is cheating a bit, cos really all it is right now is perlin noise applied to each vertex’s height. And with that, you can change the shape of the terrain by changing the values of some variables, like the seed, frequency, and octaves. I exported these variables so I could change them in the editor, and added @tool at the start so I can see it in the editor. I’m starting to work on a chunk system at the moment, which will load and unload chunks of the world as the player moves about. Player Model I finished modelling the player (added this version to the game) and added the bones for rigging, except when I move the arm bone, the helmet deforms, so next time I will be doing some weight painting Thankfully UV unwrapping is done as well so I should be able to texture everything before the next devlog. Also, addressing my last devlog, I said Lapse wasn’t syncing with hackatime. Turns out, if I just told it to create a new project called Celestial (which is what my project is called on hackatime), it’ll just add the time to it, so thats amazing!!! The WorldEnvironment Node I accidentally deleted my old configuration of this node while experimenting with stuff, and so I made some changes to the shading of the world. Next up is to recalculate all the normals of each triangle so shadows can be cast properly. I tried using SSAO, but every time I used that to make some sort of shadow, it changed depending on where the camera was and it made the terrain very pixelated. As you can see in the video, you can see the outlines of the terrain. That is because of the volumetric fog added. It sounds resource intensive, so if it starts to lag out my game I might remove it, which is a shame cos it looks really nice.
Devlog 6 - Chunks # 1 Previously, I had it so that the entire world was one big mesh, that could not be expanded without unloading and reloading the whole thing and more. This is obviously very inefficient, especially if I want the terrain to load in and out based on where the player is. Chunks is the answer to that. Split the world into chunks of your choice (I chose 16x16), and load/unload just the chunks you need to, not the whole thing. It seemed easy for me at first, clearly it wasn’t (the #1 for the header, ik this isnt gonna be the only devlog on this 😭 ). Bug 1 - The Normals aren’t normal Last devlog, I talked about calculating the normals, which went smoothly… For the old mesh… You see, to calculate normals, you need the vertices surrounding the vertex your trying to find out, and with chunks, that meant every 16 vertices, the normals were being calculated incorrectly, causing seams to be found in the terrain. However, since we did calculate the normals (for the most part) some pretty nice shadows have been cast on our terrain. Despite it being a bug, it is useful to find out where the chunk boundaries are, which is EXTREMELY useful for debugging, so I haven’t tried fixing it just yet. Bug 2 - Not so Good Performance After dividing the terrain into chunks, and making new chunks generate when the player moved into a new chunk, I tested it out. And every time I tried to cross a chunk border, there would be a huge lag spike. This would be caused by the fact the game prioritised the generation of chunks instead of the game. Thankfully I was able to make it so that the chunks would load whenever the processor was ready, to make sure not to overload it too much. Bug 3 - (Lack of) Collisions Another reason why chunks are useful is for limiting the area with active collisions. When the terrain was one big mesh, the entire mesh had active collisions, which would all be checking if something hit it, which is very resource intensive. Which is why I limited the area with collisions to a small radius around the player. While coding it, many logic erros came up, such as one that caused the collisions to just not work.
Devlog 7 - Chunks # 2: PROCEDURAL GENERATION DONE (mostly) Bugs Managed to fix all the bugs related to this part of terrain generation. Weird chunk errors There was an if statement (I changed it out for something else that’s more efficient) that was like: if abs(player_position.x - chunk_pos.x) > collision_chunk_size or abs(player_position.y - chunk_pos.y) > collision_chunk_size This logic error create weird stuttering issues and lag. The fix was to switch or with and . Normals DEFINITELY the bane of my existence. I know roughly what normals are due to me doing 3D modelling/rendering, but I have no clue how it actually works. And plus, I’ve barely covered the maths I need for this in school, so I spent sooo much time (much of which wasn’t recorded) just researching about normals and how they work. I think that definitely helped me find a solution to the annoying chunk borders and random artifacts found inside each chunk. Chunk Sizing I stupidly and randomly changed the chunk size from 16 to 10, which worked completely fine, except for the fact that the player script was still using the 16x16 chunk system, causing the generation to lag behind, eventually leading to the player falling off the map. New Features There were also some ✨ features ✨ that I added. Colour I added colour to the world, and if I match it to the fog and sky, I think it would look AMAZING I will make it so that the colour does vary across the planet. Player I added the rig and refined the topology for animation.
Devlog 8 - Player Model and other assets! Player Model I finished with texturing, rigging and weight painting. Next Step is to make the walking and jumping animations. Worked on the settings menu I updated the setting menu layout to account for different settings I’ll add in the future Stupid Bugs So when trying to break the terrain generation, I set the speed of the player to like 300 (which it will never be in the game except when in a space ship) but when I tried to do that, the game kept crashing, spitting out an error saying that something didn’t exist. It was coming from my unload_terrain() function. Basically how it works is it checks for all the instances of the MeshInstance3D node, and checks the name of it. For every chunk that is created, I assigned a unique name to it on creation based on the x and y coordinates of it. The function would checking all the nodes, and seeing which ones were out of the “ collision_chunk_size ” radius, and then would delete them. But when going super fast, the processing of things got all weird, meaning that when it tried to delete a chunk, and if it didn’t exist, it would crash. So I added a simple if statement if len(child_name_array) > 2: (basically it would check if the length of the name was long enough to see if there was the coord data). Stupidly I wrote the greater than sign the wrong way round, which led to me being stumped for SO long on why the terrain was just not unloading. tldr: > was the wrong way round and cost me hours.
Devlog 9 - Player Animation!! Walking and Idle Animations I finished a basic walking and idle animation for the player. The walking animation is also somewhat inspired from the kerbals from KSP. Both the animations are kinda choppy, especially when the animation loops round, but frankly icba I didn’t have enough time to fix them rn (mbmb 😭 ). Thankfully the walking animation is timed properly so that the player doesn’t look like its sliding around. Camera updates I added functionality to the camera where you can freelook around the player when holding the right mouse button. Once released, it goes back to the normal position (motion is lerped). Prepartions for next steps For the next steps, I want to go back to the terrain_generation program and start to add variation across the world (like biomes, mountains, etc.). I’m also looking to optimise it, making it generate terrain and collisions faster in prepartion for any future implementation of faster travel. So I added functionality that can allow me to make LODs, which will likely be implemented next devlog.
Devlog 10 - General updates Alright, so ik I said I would work on the procedural terrain, but instead I worked on:… Debugging Tools!! (yayy! ) When tab is pressed, it toggles on debug mode, where all meshes turn into wireframes (to check LOD) and chunk boudaries are shown. There are problems with chunk boundaries not despawning when the terrain its on is gone, but that’s fixed when you toggle debug mode again :). I could fix it but icba I have other stuff that needs to be prioritsed. Resizabile UI So before, if you resized the window, the pause menu and settings menu would be offset from the centre and wouldn’t scale with the window. Now when you scale it, the pause and settings menu stay in the centre and scale accordingly. (the flickering in the video is just an artifact created by the godot editor, and will apparently be fixed once exported)
Devlog 11 - General updates 2.0 Editor Tools!! - (to see the terrain in the editor) So in a previous devlog, I think I talked about how I added @tool in my terrain generation program to be able to see it in the editor. Once I made it dependent on the player position, it didn’t generate in the editor because the player wasn’t loaded in. So now I made it so that if the script was running while the editor (not the game) is open, the terrain would generate around (0, 0) based on how ever big the render distance is. Also I made it so that if you tweak the value of any of the primary noise settings in the editor, it updates in the editor. On top of that, I set the viewport to display wireframe so that I can see the triangles at different resolutions, which is where I came across:…. FLOATING POINT ERRORS!!! (yay ) I noticed that if I set the resolution to a decimal value that was not a power of 2, the triangles would be off by some amount, causing neighbouring triangles to overlap each other, causing normal and collision problems. The resolution variable is going to be eventually used for LODs, so since I’ll be the only setting it, I’ll just make sure to use a value thats a power of 2 The reason why this happens is because 16 (my chunk size) can be multplied and divided by 0.125 (2^-3) evenly to create an integer, compared to 0.1 which results in 1.6. Any smaller power of two is rounded it to the nearest 3dp, so 0.0625 (2^-4) doesn’t work. Camera Issues So I made functionality with the camera where you can scroll to zoom the camera in and out, and if you scroll far enough in, you’ll be in first person, much like how it works in Roblox. There was one problem though. Since the material for the visor on the player model was somewhat transluscent, your view would get darker. Also, you could free look inside the helmet, looking at the areas I wasn’t bothered to model and texture hadn’t modelled. So I disabled that in first person. The biggest timewaste of my life In an attempt to offload some of the generation to the GPU for more effecient parallel processing, I tried to figure out which parts of the algorthim were going to be handled by the CPU and GPU. There were some that had to be handled by the CPU, and there was no choice about those, and they were: collisions and figuring out what chunks should be rendered. At first I thought, how about I offload nearly everything to the GPU, including the noise function. Then I learnt that FastNoiseLite didn’t exist in .gdshader . So I did what any normal person would do, and CODE PERLIN NOISE BY HAND. I spent HOURS learning everything my dumbass could about it: vectors, normals, gradients, deviation, erosional generation, and finite difference approximation. At least I probably learnt something useful for FSMQ 🤷 (a British maths exam most students do in yr11 along with their other GCSEs).
Devlog 12 - General updates 3.0 I PROMISE THIS IS THE LAST ONE GUYS 🙏 Performance Stats I added a little HUD showing the FPS, the time it takes to make one frame (has to be below 16.67ms (60fps) or there will be noticeable lag), and the memory usage. Lighting, Shadows, and World Environment I slightly changed the shadow bias and normal bias so that shadow artifacts are to a minimum. On top of that, I set it so that shadows aren’t cast for the terrain, which unintentionally handles with some of the artifacts, whilst keeping the “shadows” by illuminating the terrain depending on where the DirectionalLight3d is, making the “shadows” reponsive to a future day-night cycle. Also the volumetric fog and lighting looks better Camera Issues 2.0 So previously I had the player hide() when you go into first person, but that also effects the shadows. So instead I made the visor disappear when you go into first person. But then there was another problem. The head would move during the idle and walking animations, which is quite distracting and could be problematic for some players. So I stopped the animtions whilst in first person. It is a very rudimentary fix, since players can look at their shadows and see the lack of animation. Furthermore if I want to add multiplayer in the future, it’ll look very weird. Performance checks In preparation of the biome generation, I wanted to make sure the performance is fine. It takes a bit for the terrain to generate at the start, but thats common across nearly every game. And this will be lightened a bit when I implement LODs. Once the game is running, it runs relatively fine, except with (very quick) lag spikes when the chunks update. To address this, I’m planning of offloading some of the terrain generation to the GPU, which can calculate normals a LOT more effeciently and quicker than the CPU. Current, the CPU calculates all the vertices, indices, normals, and then compiles it into an ArrayMesh , which is given to the GPU for rendering. This can put a lot of strain on the CPU, especially later down the line, so it’s better and more effiecient if the GPU does the very repetetive calculations, by making it do all the normal calculations, including other stuff.
Devlog 13 - LOD template I basically deleted all the old code, and started over, by making a function where the noise will be given to the vertex shader, and one that will generate the actual flat mesh for it (which is going to be changed by the vertex shader). I made the template for making flat planes with different levels of detail (LOD), which will be changed by the vertex shaders, applying the noise to the mesh. I created a new script called lod.gd and gave it a class name, so that I can call multiple instances of it in the main terrain generation program. Every time the program wants to make another chunk, I have to pass the arguements: resolution - what ive defined as a synoymn of LOD chunk_pos - where the chunk is The function then loads an ArrayMesh from a pre-generated list of possible meshes and creates a new MeshInstance3D node to display it. Extra stuff I also added player coords and chunk position in the debug_screen :)
Devlog 14 - LOD chunks ——— OPTIMISATION IS SOO HARDD 10hrs to do practically do something I’ve already done? (i had already made a chunk system in previous devlogs) Well, whilst some of that time was transferring code from my old commits to the current one and making sure it works, most of the time I spent on this devlog was spent on ✨ “optimisation” ✨ Optimisation First of all, I added LODs into the chunk mesh. What this means is that since further away chunks take up less of your screen, the level of detail (LOD) is reduced the further away it is. I had already made the script that handled the creation of those different meshes with different LODs, so in this devlog, I added it to the main terrain generation script, and assigned each LOD to a certain distance, so that any chunk with a certain distance has a certain LOD. In my last version of the terrain generation, I relied on the name of the MeshInstance3d nodes created to identify what chunk they were. I realised when making this updated version that it was prone to failure, since if the node did not exist or a node with the same name were some how added to the scene tree, errors would be raised or at the very least, a logic error would occur. To recetify this, I switched to using dictionaries to house all the information of all the chunks: chunks : Dictionary [ Vector2i , int ] = { Vector2i ( 0 , 0 ): 0 , Vector2i ( 0 , 1 ): 0 , #etc } The key is chunk coordinate, and the value is the LOD (0 being the highest, 4 being the lowest) Every time I wanted to update the terrain, I would search the scene tree if a particular node was unwanted (again, by looking at the name) and then generating the rest of the ones wanted. This way would not work with LODs, since some chunks may still exist, but may have to change LOD depending on where the player is. So I made use of the dictionary and also created a new one that would store the chunks that I want created. It would loop through the dictionarys, checking certain conditions, and the terrain would be updated. All this looping is somewhat inefficient, and did cause some lag spikes, so I will try to fix that next devlog by only checking the chunks that would be affected based on which way the player moved. To help with the looping, I created chunk and lod lookup tables, that can be offset based on the players_position. These lookup tables are only changed when the render distance is changed, so the same calculation doesn’t have to run hundreds of times in 16ms (60 fps).
Devlog 15 - I’m an Idiot For the past 95ish hours, I’ve been working on a way to make procedural terrain for my game. I tried 2 main methods, one centred round the CPU, and one I was building centred around the GPU. The endless chunk seam bugs caused me to burnout/get tired of the entire project, and there was so many stuff (that I won’t really be explaining for the sake of my poor reader’s sanity) leading to me ✨ youtube ✨ I saw this AMAZINGLY smart video by devmar, showing an alternate way of generating terrain. I urge you to watch the video as well, the whole technique is very very clever, and he even goes on to make further videos on making collisions, recalculating normals and adding vegetation, especially if your interested in procedural generation. After watching this video however, I became incredibly frustrated. I spent nearly 100hrs of my summer making this procedural terrain which I know hadn’t gotten anywhere and theres this incredibly smart video from 4yrs ago that pops up on my feed. Welp, now ig i gotta try out this way, and quick cos my parents are on my tail talking about me finishing this project before school starts 🙏 (its my gcse year so ig its valid but still ) Now what I actually did that counted to my time Experimented with vertex shaders, and sending heightmaps to vertex shaders to displace. This however caused immense lag and caused VERY ANNOYING chunk seams. #epicfails
Devlog 16 - AMAZING PROGRESS!! I’ve managed to get a massive 20km render distance with huge mountains and ridges using FastNoiseLite and vertex shaders. I used devmar ’s terrain technique, which he named the “Wandering Clipmap Terrain Technique”. The reason why the technique is called the “ Wandering Clipmap Terrain Technique” is because a flat plane that is subdivided a bunch (to make varrying levels of detail (LODs)) that follows the player. The vertex shaders then offset the heightmap so it gives off the illusions that your moving about in a massive world. All the displacement is done by the vertex shaders, which looks at a heightmap. In the future, I might make this heightmap be generated in gdscript instead of in the inspector, to deal with texture resolutions. Currently, from afar, the terrain looks amazing (except from the fact its not textured) but upclose, you can see rings in the terrain, which is caused by the heightmap’s resolution being too low. In fact each ring is about 8m tall so I really need to fix that 😭 The normals are calculated by just copying the heightmap and setting it ‘as normals’ in the inspector. They also are multiplied by a normal basis matrix, which allows me to configure the specific normal settings. I’ll need to calculate the normals in the fragment shader as well in the future for more convincing shadows, but for the mean time, the vertex shaders should do just fine. I’m planning on adding collisions, then maybe textures, biomes and vegetation soon!!
Devlog 17 - I am incredibly frustrated. No matter what I do it feels like I just can’t get the collisions to work. Basically, I’m trying to fetch the heights from the height map to input into the CollisionShape3D, but the coordinates are always offset in some way or the other. I even used AI my friend to basically rewrite the entire script over and over again, but that didn’t work either. Maybe it’s cos school has started now, and I haven’t been able to spend that much time on this project than I would like to As you can see in the photo, the collision mesh (in blue) is offset from the normal terrain (in white)
Devlog 18 - I am happy once again!! I FINALLY got the collisions to work!! Basically, it looks at the terrain model that is imported into Godot, and aligns the vertices of the CollisionShape3D with it. It also updates its position every time the player moves 1 unit (whatever the size of a quad of the mesh is). Then it looks at the heightmap, looks up the height of its coresponding pixel, multiplies that by the height shader param (2000, like in the vertex shaders), and thats the collision shape done. I noticed while walking around the world, that there were these massive ridges on the terrain. This is due to the lack of precision in the heightmap. The heightmap only has 256 shades of grey, and I need 2000 values. It is quite impossible to make a image file with that much precision, so instead, I’ll make it so that the CPU will just send an array to the vertex shader. Also, I’ve rebranded my project to Worlds Unbound, and this specific Stardance project will just be handling the terrain stuff for the game. p.s, it never goes above 16ms, i think thats probably because i was recording
Devlog 19 - Main Menu Added (and other things)! I spent quite a lot of time making the background for the main menu in Blender. After just copy and pasting the player model used in the game, I went ahead and made the main attraction: ✨ the planet in the background ✨ . My knowledge of noise that I gained from my previous attempts at the terrain generation helped me create the stars in the background, and the texture for the actual planet in the shader editor. I also added a slight atmosphere, which is (somewhat?) noticeable. I also went ahead and updated the shader code. Before, I used to use the visual shaders, since it was quite similar to the shader editor in Blender, which I was familiar with. But then I realised there’s just more flexibility with using GLSL . I can group uniforms in the inspector, making it clearer and less cluttered if I want to add textures in the future, including different images for the same texture (like Ambient Occlusion, Normals, Colours, and Roughness). Thus being able to group those different types images for the same texture was very important for future usability. Thankfully, Godot allows you to see the shader code that is generated from the visual shaders. Unfortunately, it was not readable at all. The generated code used a random(ish) collection of numbers and letters, and it was too long. Look below for the comparision for just the vertex shader, but it was something like 84 lines that was shruken down to 10 for the vertex shader. Even if you account for spaces in the generated code (which then it might be like 50-60 lines) thats a huge difference. So it took quite some time to get it to a readable state. edit: idk why the actual background looks so bumcheeks compared to the banner, hopefully itll be fixed by then 🤞
Devlog 20: GPU noise I found a way to make noise using a Godot addon called FastNoiseLite Runtime Shader . It was apparently identical to the FastNoiseLite in GDScript. So I gave it a try. I knew it was a gamble, given how much time I got left to ship an decent project, but I gave it a try since it seemed interesting. It wasn’t that hard to get the noise working, but to get it to sync with the collisions was a nightmare. In the end, I decided that even though the README stated it was 99.9% the same, the output seed by seed was different. So I decided to scrap it and now I’m going back to the old version with heightmaps. Why did I really want to switch? Because of the limited colour depth in images (has to be 8-bit for GDShader to read), theres not enough heights for each vertex to be at, so every so often, there’s this massive wall. It looks fine from afar, but thats probably because my terrain is 20km x 20km, so of course an 8m tall wall would look fine. (the image is from the addon readme)
Devlog 21 - Ship Prep!!! Colours I added colours to the terrain depending on how high the vertex is. This does create a very harsh border between the two colours, but I didn’t want to learn lerping, ik how to larp enough. Cleaned up my commits My commits were, and probably are still messy, and when I went ahead to revert some changes it said there were errors, but now thankfully that’s all fixed. :) I also updated quite small normals and some technical stuff.
Ships:
— SHIP No.1 — I spent the last couple of months making a model terrain, which I will use for my game that I will continue to build after this competition. My game idea is quite ambitious, and given how long it took for me to get this basic terrain to work properly and well, that won’t even be coming with the extra month added one. I lot of you may be thinking though, what on earth were you doing for 125 hours, when all you came up with is a glorified green and grey piece of paper you could walk on. Well, not only was I learning and using Godot for the first time, it was the first time I learnt anything as complicated as this. I had to wrap my head around complex (at least for me) maths and computer science topics, like vectors and cross product, noise and FBM, TBN model, and UVs, not to mention just the sheer amount of logic I had to get through. It was so tiring to keep getting bugs for the chunking system I had, or the collisions. But thankfully, all that is behind me 😼. I’ll give you a more indepth look into what I’ve done over the past couple months. Devlogs 1-12: This period was the general beginning of my project. Not only was I learning Godot, and watching tutorials on it, I was also spending time on the player character, the camera system, and the world environment. Devlogs 13-15: I tried to implement LODs into my chunks, since the performance was simply too bad. Somehow this made it worse, possibly because of more chunks (the ones at the broder of LOD borders) being forced to be unloaded and loaded back in. Devlogs 16-21: I used my current technique, heavily based from devmars video on youtube about procedural terrain during this period. School had also started, so I spent less and less time on it, being significantly burnt out and tired. So I basically went through 3 iterations of terrain for my game, so that is why it took so long to get to this point....
|
1792853399.1686566
|
1792939799.1686566
|
|
4906
|
spot-electricity-display by @viivi | Stardance
|
viivi
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T11:25:22Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "spot-electricity-display It’s a small ESP-8266 project for displaying the current spot electricity price. I used Arduino IDE for coding the code to fetch and update the data displayed on the screen. I also 3D modelled a case for it with Tinkercad but I haven’t tried to actually print or build it because I don’t have a 3D printer or materials for it. The first photo is an edited demonstration photo how it could look like (perspectives failed). The second photo shows what I actually have. I made this because it could make life easier. Instead of opening an app it would be much easier to check this to see the price. It wasn’t easy to make this because I felt like everything was against me. Libraries weren’t the easiest to use, the screen tweaked all the time and there isn’t many guides for this specific board because it’s quite rare.", "repo": "https://github.com/ViLP357/spot-electricity-display", "demo": ""}]...
|
[{"post_id": 70552, "ts": "202 [{"post_id": 70552, "ts": "2026-09-19T11:11:43Z", "hours": 0.4169, "text": "#4 devlog I guessed it rght, on the next day it worked again. One possible reason it didn’t work then was that the text wasn’t set to white, though it should be white as default. I finished readme and filmed a short demo video."}, {"post_id": 55666, "ts": "2026-08-27T17:01:57Z", "hours": 1.4514, "text": "#3 devlog Today I… tried to add timing for API requests, and I think it works but now my oled screen won’t display anything. There’s 50/50 chance it works tomorrow with exact same code :(. Finished 3D modelling by making a back plate for the case. Wrote something to the README"}, {"post_id": 33636, "ts": "2026-07-23T18:27:06Z", "hours": 2.0792, "text": "#2 devlog Coding Lot of time, no progress. I spent quite a long time trying to make buttons on my board work with my code. I couldn’t make them work :) . Instead of buttons I might make text change with specific a frequence. 3D-modelling I started making box case for simple electronics (the board and battery case). I used Tinkercad for modelling. I had used Tinkercad before but it’s been long time since I used it last time. I really liked that Tinkercad has ready models of electronics even though it didn’t have the ones I’m using. That’s why I had to use components as close as possible to my actual components."}, {"post_id": 9143, "ts": "2026-06-15T09:47:02Z", "hours": 0.9778, "text": "#1 devlog, days 1-2 This project has now officially started. Git and github are set up and the core feature works! Currently the arduino (it’s actually Wemos, not arduino) is able to show current price. I use free API to get spot electricity price (it’s price in Finland). https://api.spot-hinta.fi/JustNow The board I use is Lolin D1 mini Pro V2.0.0 My plan for this project: make the screen display current spot electricity price design and maybe build box/casing for electronics add leds to indicate how cheap or expensive electricity is now add buttons for scrolling future prices"}]...
|
Title: spot-electricity-display by @viivi | Starda Title: spot-electricity-display by @viivi | Stardance
Devlogs:
#1 devlog, days 1-2 This project has now officially started. Git and github are set up and the core feature works! Currently the arduino (it’s actually Wemos, not arduino) is able to show current price. I use free API to get spot electricity price (it’s price in Finland). https://api.spot-hinta.fi/JustNow The board I use is Lolin D1 mini Pro V2.0.0 My plan for this project: make the screen display current spot electricity price design and maybe build box/casing for electronics add leds to indicate how cheap or expensive electricity is now add buttons for scrolling future prices
#2 devlog Coding Lot of time, no progress. I spent quite a long time trying to make buttons on my board work with my code. I couldn’t make them work :) . Instead of buttons I might make text change with specific a frequence. 3D-modelling I started making box case for simple electronics (the board and battery case). I used Tinkercad for modelling. I had used Tinkercad before but it’s been long time since I used it last time. I really liked that Tinkercad has ready models of electronics even though it didn’t have the ones I’m using. That’s why I had to use components as close as possible to my actual components.
#3 devlog Today I… tried to add timing for API requests, and I think it works but now my oled screen won’t display anything. There’s 50/50 chance it works tomorrow with exact same code :(. Finished 3D modelling by making a back plate for the case. Wrote something to the README
#4 devlog I guessed it rght, on the next day it worked again. One possible reason it didn’t work then was that the text wasn’t set to white, though it should be white as default. I finished readme and filmed a short demo video.
Ships:
spot-electricity-display It’s a small ESP-8266 project for displaying the current spot electricity price. I used Arduino IDE for coding the code to fetch and update the data displayed on the screen. I also 3D modelled a case for it with Tinkercad but I haven’t tried to actually print or build it because I don’t have a 3D printer or materials for it. The first photo is an edited demonstration photo how it could look like (perspectives failed). The second photo shows what I actually have. I made this because it could make life easier. Instead of opening an app it would be much easier to check this to see the price. It wasn’t easy to make this because I felt like everything was against me. Libraries weren’t the easiest to use, the screen tweaked all the time and there isn’t many guides for this specific board because it’s quite rare....
|
1792853398.0100896
|
1792939798.0100896
|
|
47841
|
EpicSquirrelWare by @Epicninja3 | Stardance
|
Epicninja3
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-18T22:48:49Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a WarioWare-style videogame featuring a squirrel collecting acorns on Godot! There are 3 levels, a platformer, a clicker, and a custom game where you dodge asteroids! I also added my own death and win screens and created my own sprites for the character and a few other features.", "repo": "https://github.com/epicninja3/EpicWare", "demo": "https://epicninja3.itch.io/epicsquirrelware"}]...
|
[{"post_id": 63848, "ts": "202 [{"post_id": 63848, "ts": "2026-09-07T20:34:16Z", "hours": 0.9986, "text": "Finished the last level!!! Space Squirrel got himself a spaceship (don’t ask) and has to navigate through asteroids to collect acorns! Use W/Up and S/Down to move up and down to collect the acorns! I animated the spaceship booster and drew out the asteroids. I’m planning on making the asteroids rotate as they move across the screen. Next Steps: I’m going to make it look a bit cooler, maybe change a few backgrounds. Refine some of the code Ship it!"}, {"post_id": 63263, "ts": "2026-09-07T00:06:04Z", "hours": 7.1731, "text": "Mostly finished working on the Platformer Minigame and the Clicker minigame! Our amazing Space Squirrel is collecting acorns floating in space! I am now going to work on the third minigame as well as the title and ending screens."}]...
|
Title: EpicSquirrelWare by @Epicninja3 | Stardance Title: EpicSquirrelWare by @Epicninja3 | Stardance
Devlogs:
Mostly finished working on the Platformer Minigame and the Clicker minigame! Our amazing Space Squirrel is collecting acorns floating in space! I am now going to work on the third minigame as well as the title and ending screens.
Finished the last level!!! Space Squirrel got himself a spaceship (don’t ask) and has to navigate through asteroids to collect acorns! Use W/Up and S/Down to move up and down to collect the acorns! I animated the spaceship booster and drew out the asteroids. I’m planning on making the asteroids rotate as they move across the screen. Next Steps: I’m going to make it look a bit cooler, maybe change a few backgrounds. Refine some of the code Ship it!
Ships:
I made a WarioWare-style videogame featuring a squirrel collecting acorns on Godot! There are 3 levels, a platformer, a clicker, and a custom game where you dodge asteroids! I also added my own death and win screens and created my own sprites for the character and a few other features....
|
1792853396.8334217
|
1792939796.8334217
|
|
16472
|
DuckyPaste by @ZiggyZonko | Stardance
|
ZiggyZonko
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-11T04:34:16Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple clipboard tool that is backed up by a .json file to prevent loss of entries. The app features a pinning, searching and deleting system to not only store pasted content, but manage them. I created this to categorise and sort my pasted content rather than the usual windows / linux clipboard ( which I actually didn’t know existed prior 😿 ). The sorting by topic is coming in a future update…. The Qol improvements I created: Pinning of entries to help hold on to important content. Deletion of entries, I’m unsure if there is a simple way to delete clipboard entries within the built-in clipboards. Easy to find (as I had no idea about Windows+V). All backed up in a stored .json file in the /db folder, meaning you can easily sort through that if data the application stops. Additionally, the searching of entries helps be organised with your entries, locating important content quickly.", "repo": "https://github.com/ZiggyZonko/DuckyPaste", "demo": "https://github.com/ZiggyZonko/DuckyPaste/releases/tag/1.0"}]...
|
[{"post_id": 8642, "ts": "2026 [{"post_id": 8642, "ts": "2026-06-14T11:22:05Z", "hours": 0.5542, "text": "Implemented a tray icon with a show and quit button, so it runs in the background and picks up on your clipboard when it’s merely running as a task. I also fixed the pinning button, so when pinned, the entry adds a pin emoji 📌 and places it at the top of the list. Release 1.0 is being shipped soon…."}, {"post_id": 8019, "ts": "2026-06-13T11:45:29Z", "hours": 0.555, "text": "Added a working delete button and fixed a few bugs associated with the search bar and the history array, soon to be finalised"}, {"post_id": 7452, "ts": "2026-06-12T12:46:53Z", "hours": 1.0428, "text": "Created a json saving and loading system so you can close down the application and still have the clipboard saved. Added a search bar and pinning button, search bar functionality is added while pinning is not. More to come!"}, {"post_id": 6773, "ts": "2026-06-11T10:50:23Z", "hours": 1.0197, "text": "I created the basis of the clipboard, overiding duplicates, adding a nice aesthetic and consolidating the foundation of DuckyPaste."}]...
|
Title: DuckyPaste by @ZiggyZonko | Stardance
Devl Title: DuckyPaste by @ZiggyZonko | Stardance
Devlogs:
I created the basis of the clipboard, overiding duplicates, adding a nice aesthetic and consolidating the foundation of DuckyPaste.
Created a json saving and loading system so you can close down the application and still have the clipboard saved. Added a search bar and pinning button, search bar functionality is added while pinning is not. More to come!
Added a working delete button and fixed a few bugs associated with the search bar and the history array, soon to be finalised
Implemented a tray icon with a show and quit button, so it runs in the background and picks up on your clipboard when it’s merely running as a task. I also fixed the pinning button, so when pinned, the entry adds a pin emoji 📌 and places it at the top of the list. Release 1.0 is being shipped soon….
Ships:
I made a simple clipboard tool that is backed up by a .json file to prevent loss of entries. The app features a pinning, searching and deleting system to not only store pasted content, but manage them. I created this to categorise and sort my pasted content rather than the usual windows / linux clipboard ( which I actually didn’t know existed prior 😿 ). The sorting by topic is coming in a future update…. The Qol improvements I created: Pinning of entries to help hold on to important content. Deletion of entries, I’m unsure if there is a simple way to delete clipboard entries within the built-in clipboards. Easy to find (as I had no idea about Windows+V). All backed up in a stored .json file in the /db folder, meaning you can easily sort through that if data the application stops. Additionally, the searching of entries helps be organised with your entries, locating important content quickly....
|
1792853394.8984184
|
1792939794.8984184
|
|
15258
|
My Website About my life by @citunek22 | Stardance
|
citunek22
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T18:08:40Z", "hours": 2.0, "multiplier": 1.11, "payout": 0, "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...
|
1792853394.032044
|
1792939794.032044
|
|
36389
|
Cyberdeck by @sn3ak | Stardance
|
sn3ak
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-28T19:01:42Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my cyberdeck. Its powered by a raspberry pi 5 and has a 5 inch touchscreen. it is also equipped with a touch pad and keyboard (yes the keyboard says keyboard on it). This is my first hardware project, I have learnt many new things like how to 3d design and how to use a 3d printer. Stardance has really motivated me to complete this project as before it was just an idea in my head that would probably never see the light of day.", "repo": "https://github.com/sn3ak14/Cyberdeck", "demo": ""}]...
|
[{"post_id": 74960, "ts": "202 [{"post_id": 74960, "ts": "2026-09-28T18:13:56Z", "hours": 2.6008, "text": "I finished! After a lot of work and tears a I have finished my cyberdeck! I am ready to ship my project thank you all for the support and good luck with your projects."}, {"post_id": 65499, "ts": "2026-09-10T18:01:27Z", "hours": 2.0503, "text": "New prototype design. I took a break from the project but I’m back now and have decided to take a different approach to the design, rather than putting it inside of a pelican case I’m making its own outer shell this new design should be a lot smaller and easier to work with it is currently a very crude and basic design but this will change, don’t worry. I plan on printing it very soon."}, {"post_id": 37751, "ts": "2026-07-30T17:42:09Z", "hours": 0.5, "text": "Printed the base for my Cyberdeck. I finely was able to print the bottom half of the deck and it went well! the keyboard hole was to small and I haven’t ordered the trackpad yet so I don’t know if it fits. My biggest problem right now is I cant 3d print parts all the time and usually have to wait days between designs this is because I have to travel to use the 3D printer and it also is a shared printer so I cant always use it making time between prints take ages hopefully when I ship my project I will be able to get a 3d printer it would make all of my future projects so much easier to do. Next I plan on printing MK2 for the top half of the design and after I iron out all of the problems I can start to make the deck look amazing."}, {"post_id": 34777, "ts": "2026-07-25T19:24:27Z", "hours": 0.2836, "text": "MK2 Cyberdeck panel. I re-model MK1 to have a better fit for all of the components and rearranged them a bit however the Cyberdeck is looking empty and boring I am thinking of adding switches or possibly another screen but can think of what they will do, my plan is by the next model to decide what the theme should be by making some kind of mood board and then add things accordingly if you have any ideas please let me know in the comments."}, {"post_id": 34201, "ts": "2026-07-24T18:36:07Z", "hours": 0.3325, "text": "Fixing old keyboard. the wires were broken near the connection points I performed a temporary twist and splice on the exposed wired I plan to solder a new cable later but for now it works!"}, {"post_id": 34148, "ts": "2026-07-24T17:25:45Z", "hours": 0.2844, "text": "2 updates to the project, I 3d printed the MK1 top piece with varying success and modelled the MK1 base panel. after ages of waiting for the 3d printer I rent to be free I printed it, it fits the case and the components well (although the screen hole was a lot bigger than it needed to be) however I encountered 2 major errors 1. the dowels I used to connect the two half’s were to big and made gaps in the model, and 2. I may or may not have forgotten to turn supports on witched caused the model to sag a bit but it turned out ok in the end. Next I plan on printing the base panel and re-modelling the top panel."}, {"post_id": 30752, "ts": "2026-07-18T16:10:06Z", "hours": 0.2533, "text": "Cut the panel in half, added dowels to connect them. next I plan on printing it and seeing what i can do to improve it"}, {"post_id": 30099, "ts": "2026-07-17T12:30:05Z", "hours": 0.5225, "text": "MK1 the first test design for the top panel of my cyber deck very early design and will be subject to change. one problem I’m facing is the 3d printer that is available to me (its not mine its kinda like a rental) is to small to fit the whole panel so I will have to print it in separate parts and figure out a way to connect them."}]...
|
Title: Cyberdeck by @sn3ak | Stardance
Devlogs:
M Title: Cyberdeck by @sn3ak | Stardance
Devlogs:
MK1 the first test design for the top panel of my cyber deck very early design and will be subject to change. one problem I’m facing is the 3d printer that is available to me (its not mine its kinda like a rental) is to small to fit the whole panel so I will have to print it in separate parts and figure out a way to connect them.
Cut the panel in half, added dowels to connect them. next I plan on printing it and seeing what i can do to improve it
2 updates to the project, I 3d printed the MK1 top piece with varying success and modelled the MK1 base panel. after ages of waiting for the 3d printer I rent to be free I printed it, it fits the case and the components well (although the screen hole was a lot bigger than it needed to be) however I encountered 2 major errors 1. the dowels I used to connect the two half’s were to big and made gaps in the model, and 2. I may or may not have forgotten to turn supports on witched caused the model to sag a bit but it turned out ok in the end. Next I plan on printing the base panel and re-modelling the top panel.
Fixing old keyboard. the wires were broken near the connection points I performed a temporary twist and splice on the exposed wired I plan to solder a new cable later but for now it works!
MK2 Cyberdeck panel. I re-model MK1 to have a better fit for all of the components and rearranged them a bit however the Cyberdeck is looking empty and boring I am thinking of adding switches or possibly another screen but can think of what they will do, my plan is by the next model to decide what the theme should be by making some kind of mood board and then add things accordingly if you have any ideas please let me know in the comments.
Printed the base for my Cyberdeck. I finely was able to print the bottom half of the deck and it went well! the keyboard hole was to small and I haven’t ordered the trackpad yet so I don’t know if it fits. My biggest problem right now is I cant 3d print parts all the time and usually have to wait days between designs this is because I have to travel to use the 3D printer and it also is a shared printer so I cant always use it making time between prints take ages hopefully when I ship my project I will be able to get a 3d printer it would make all of my future projects so much easier to do. Next I plan on printing MK2 for the top half of the design and after I iron out all of the problems I can start to make the deck look amazing.
New prototype design. I took a break from the project but I’m back now and have decided to take a different approach to the design, rather than putting it inside of a pelican case I’m making its own outer shell this new design should be a lot smaller and easier to work with it is currently a very crude and basic design but this will change, don’t worry. I plan on printing it very soon.
I finished! After a lot of work and tears a I have finished my cyberdeck! I am ready to ship my project thank you all for the support and good luck with your projects.
Ships:
This is my cyberdeck. Its powered by a raspberry pi 5 and has a 5 inch touchscreen. it is also equipped with a touch pad and keyboard (yes the keyboard says keyboard on it). This is my first hardware project, I have learnt many new things like how to 3d design and how to use a 3d printer. Stardance has really motivated me to complete this project as before it was just an idea in my head that would probably never see the light of day....
|
1792853392.9154952
|
1792939792.9154952
|
|
42948
|
Space-Os by @joelj | Stardance
|
joelj
|
1
|
26.08
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T03:25:53Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Space themed Operating system .(or aleast tried to 😅) It features a : - Welcome page : introduces the os -Space notes : a notes app based on actual nasa apollo framework - Orbital rader: a visual representation of our dear solar system with a small description for each planet - Custom cursor : a small cute rocket Main problems : The hacktime setup : this was the problem that took the longest . The standard WakaTime extension out of the box was attempting to sync with official WakaTime proprietary servers rather than the specialized Hackatime endpoints, resulting in broke communication loops. Small bugs for each feature : Its always there , its expected and we can solve them -The curser problem : The custom cursor was only apearng in the main html and not the iframes Things i learned : -How to use html and code a site Mastered divs -Used css a lot Most importantly : Persistence and determination", "repo": "https://github.com/Johan-jim123/JJ-OS", "demo": "https://johan-jim123.github.io/Space-Os/"}]...
|
[{"post_id": 76617, "ts": "202 [{"post_id": 76617, "ts": "2026-10-04T06:01:35Z", "hours": 2.1844, "text": "Devlog#5😁: -Added the music feature ( now you will be able to listenspace ambience) -Added a button to activate it -My codespace is back to copied my code from pycharm to there🥳🥳"}, {"post_id": 74339, "ts": "2026-09-27T06:16:59Z", "hours": 0.6183, "text": "Devlog #4😎😎 : -Made different themes : Using css variables theme-color and theme-glow , changed the look of all elemtns based on the theme . Added the Mode//button to change the theme -Added a special theme button to the notes app so u can miss-match theme combos"}, {"post_id": 73835, "ts": "2026-09-26T03:46:58Z", "hours": 3.56, "text": "Devlog#3 : -added a login-page 😁😁 -my free codespaces ended , so switched to pycharmm used the localstorage to save ur username and password"}, {"post_id": 69711, "ts": "2026-09-17T16:56:22Z", "hours": 4.4192, "text": "Devlog#2: -added localStorage: Bascially u store ur data locally so that when u refresh ur window or clsoe it it doesnt dissapear Added this feature to my Space notes , now u guys r able to add more logs TOO MUCH DEBUGING😭😭"}, {"post_id": 66586, "ts": "2026-09-12T13:05:32Z", "hours": 5.2986, "text": "Rewrote the entire css and made base for the new apps"}, {"post_id": 63321, "ts": "2026-09-07T02:36:26Z", "hours": 0.8678, "text": "Devlog#8: Made a visual representation of our solar system added all our planets (srry pluto) -visualised them with the glowing circle -Made a CUSTOM curser (the little rocket) -with particles that follow it Guys this marks the end of my WebOS 1. thanks for all your support that pushed me this far . See you on WebOs2"}, {"post_id": 62705, "ts": "2026-09-06T06:08:41Z", "hours": 1.4828, "text": "Devlog#7🥳: worked on my space notes app designed it based on real nasa notes and framework😎 -added 4 logs containing actual notes from the apollo and other renowned missions -Made the new log button , helping the user to create their own logs"}, {"post_id": 62025, "ts": "2026-09-05T07:34:54Z", "hours": 1.8303, "text": "Devlog#6👍: Made a new app ( Space notes)😎 -Added it to the desktop with a animated icon -Created a window for the app -Created functions to make the selected window come front -Solved bugs that came with it😭"}, {"post_id": 61361, "ts": "2026-09-04T07:29:35Z", "hours": 1.5322, "text": "Devlog#5😁:(spend a lot more time than i expected) Made the window draggable (by the heading) -Added the close and open buttons ( nasa themed😎 Made the class for those buttons -solved the bugs that came with each step"}, {"post_id": 60919, "ts": "2026-09-03T16:05:51Z", "hours": 0.9767, "text": "Devlog #4 😎: Make the destop of the Os and added my welcome page to it -customized the welcome page by finding this cool bg and added different styles to my div (8 to be precise 😭 ) and solved the bugs that came with it Make the clock and customized it with the Courier New font"}, {"post_id": 60323, "ts": "2026-09-02T16:35:01Z", "hours": 0.3964, "text": "Devlog #4 : - Made a working demo link , started with the Live Server extension by Ritwick Dey. But the link doesn’t work when the codespace is offline 😭. - Then i decided to make a github page which provided as a vaiable solution and allowed to run the website even without the codespace being online 😎."}, {"post_id": 59603, "ts": "2026-09-01T14:52:17Z", "hours": 0.9997, "text": "Worked on these neon pop up texts and found a good bg . Solved many bugs (that’s why it took soo loong 😭)"}, {"post_id": 59018, "ts": "2026-08-31T16:30:05Z", "hours": 0.4831, "text": "Added a coulourful bg , and worked wiht different fonts and colours 😎😎"}, {"post_id": 58182, "ts": "2026-08-30T15:18:00Z", "hours": 1.7658, "text": "Yoo started working on the project 😎. Finally figured out the hacktime in codespace😅. hope to create something speciall!"}]...
|
Title: Space-Os by @joelj | Stardance
Devlogs:
Yo Title: Space-Os by @joelj | Stardance
Devlogs:
Yoo started working on the project 😎. Finally figured out the hacktime in codespace😅. hope to create something speciall!
Added a coulourful bg , and worked wiht different fonts and colours 😎😎
Worked on these neon pop up texts and found a good bg . Solved many bugs (that’s why it took soo loong 😭)
Devlog #4 : - Made a working demo link , started with the Live Server extension by Ritwick Dey. But the link doesn’t work when the codespace is offline 😭. - Then i decided to make a github page which provided as a vaiable solution and allowed to run the website even without the codespace being online 😎.
Devlog #4 😎: Make the destop of the Os and added my welcome page to it -customized the welcome page by finding this cool bg and added different styles to my div (8 to be precise 😭 ) and solved the bugs that came with it Make the clock and customized it with the Courier New font
Devlog#5😁:(spend a lot more time than i expected) Made the window draggable (by the heading) -Added the close and open buttons ( nasa themed😎 Made the class for those buttons -solved the bugs that came with each step
Devlog#6👍: Made a new app ( Space notes)😎 -Added it to the desktop with a animated icon -Created a window for the app -Created functions to make the selected window come front -Solved bugs that came with it😭
Devlog#7🥳: worked on my space notes app designed it based on real nasa notes and framework😎 -added 4 logs containing actual notes from the apollo and other renowned missions -Made the new log button , helping the user to create their own logs
Devlog#8: Made a visual representation of our solar system added all our planets (srry pluto) -visualised them with the glowing circle -Made a CUSTOM curser (the little rocket) -with particles that follow it Guys this marks the end of my WebOS 1. thanks for all your support that pushed me this far . See you on WebOs2
Rewrote the entire css and made base for the new apps
Devlog#2: -added localStorage: Bascially u store ur data locally so that when u refresh ur window or clsoe it it doesnt dissapear Added this feature to my Space notes , now u guys r able to add more logs TOO MUCH DEBUGING😭😭
Devlog#3 : -added a login-page 😁😁 -my free codespaces ended , so switched to pycharmm used the localstorage to save ur username and password
Devlog #4😎😎 : -Made different themes : Using css variables theme-color and theme-glow , changed the look of all elemtns based on the theme . Added the Mode//button to change the theme -Added a special theme button to the notes app so u can miss-match theme combos
Devlog#5😁: -Added the music feature ( now you will be able to listenspace ambience) -Added a button to activate it -My codespace is back to copied my code from pycharm to there🥳🥳
Ships:
I made a Space themed Operating system .(or aleast tried to 😅) It features a : - Welcome page : introduces the os -Space notes : a notes app based on actual nasa apollo framework - Orbital rader: a visual representation of our dear solar system with a small description for each planet - Custom cursor : a small cute rocket Main problems : The hacktime setup : this was the problem that took the longest . The standard WakaTime extension out of the box was attempting to sync with official WakaTime proprietary servers rather than the specialized Hackatime endpoints, resulting in broke communication loops. Small bugs for each feature : Its always there , its expected and we can solve them -The curser problem : The custom cursor was only apearng in the main html and not the iframes Things i learned : -How to use html and code a site Mastered divs -Used css a lot Most importantly : Persistence and determination...
|
1792853391.7241359
|
1792939791.7241359
|
|
42942
|
PikaOS by @notvedansh | Stardance
|
notvedansh
|
1
|
29.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T08:32:02Z", "hours": 29.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The main idea behind this project was to make an operating system with a virtual assistant, so I chose Pikachu as the main theme. Now, for the cool features: the Pikachu assistant can move on your screen. Clicking it will make it stop, and it will open a panel where you can type things from a selected range of inputs that will make Pikachu do the certain things I have written about in my devlogs; you can see those. Well, it also has a terminal and a file manager which are fully functional. The main thing I see from this project is a base for version 2 of the project. I have a set of goals which I would complete in the next version. I think I learned a lot from handling the CMake errors; at least, I think almost every time I compiled the code, I had at least atleast one error. And yh i think that’s it.", "repo": "https://github.com/vedansh201/PikaOS", "demo": "https://github.com/vedansh201/PikaOS/releases/tag/Version-1"}]...
|
[{"post_id": 74985, "ts": "202 [{"post_id": 74985, "ts": "2026-09-28T19:35:22Z", "hours": 1.5372, "text": "#Final Devlog Alright so yeah you all haven’t heard from me in a while now, and I am very,, very sorry for that like I couldn’t manage a project of this level with my daily life and there were some family complications. But long story short, I created version 1 of this operating system. Now it’s not fancy and does not have all the desired features i promised it would have, but it’s version 1 so yeah. There will be new versions of this, and I think the next version will be the final version of it. I am proud of it what i have made, like, most of my time was wasted in handling the cmake errors so yeah, but still I think it has the perfect base for upcoming features. And for what i did to complete it - i did all the wiring of the system like i completed the main base and did the panel work so like now when we click the start button it opens a panel with two options file manager and terminal. So yeah, that’s it, guys: version 1 of PikaOS is finally complete."}, {"post_id": 60166, "ts": "2026-09-02T11:43:24Z", "hours": 8.6597, "text": "Devlog 6 Well, every Operating system needs a file manager, so I completed one. It now has folder navigation, sidebar locations, creating files and folders, renaming, deleting, properties, right-click menus, multi-selection, and multi-file copy/cut/paste. I have added it to the assistant so that typing “open files” will open the file manager. Now I will add more features to this, but I want to complete the base of the whole O.S. first. I had to handle so many CMake errors; handling them took most of my time."}, {"post_id": 52281, "ts": "2026-08-22T12:01:52Z", "hours": 5.48, "text": "Devlog 5 Well sorry for the late devlog i was little busy with my school life. The good thing is the terminal is now finally ready in the operating system. I initially had the terminal running Bash through QProcess, which worked for simple commands, but it had limitations. Things like Ctrl+C, interactive programs, terminal formatting, and commands such as ping weren’t behaving like they would in a real terminal. So I switched to a PTY (pseudo-terminal) approach using Linux’s forkpty(). Last time u saw the assistant working, I also connected my assistant to this terminal, not the Konsole which I was using earlier. Also sorry for the vid quality and voice"}, {"post_id": 44732, "ts": "2026-08-10T17:52:16Z", "hours": 3.9169, "text": "Devlog 4 So I don’t think I have mentioned why I’m tinkering with a Pikachu image. So I think it’s time to reveal to you my plan for this operating system. I wanted my operating system to have an assistant that would help with small tasks such as creating folders open terminal. So, like now, when you click Pikachu, you will open a dialogue box in which you can type things. ** FEW FUNCTIONS IT CAN DO RIGHT NOW ** –> It can open the terminal. –> It can tell the battery status. –> It can tell the date and time. –> It can create files and folders. –> It has a help command too, so that if you want to know what things it can do. Now, what happens when you type something it doesn’t understand? It says, “I don’t know this command”. I will be improving the assistant more in the upcoming days, but setting up the logic for this much part only is exhausting."}, {"post_id": 42787, "ts": "2026-08-07T17:52:08Z", "hours": 3.2186, "text": "Devlog 3 So, over the last two days, I spent making Pikachu move left to right; I mean, now Pikachu can move a random distance in a random time. He can move 50 pixels in the left direction and then wait for some random time and then start moving again in random directions. Also, it flips the image, so if it moves left, the image gets flipped, and up and down motion is as it is. Now this may seem very little, but trust me, the level of errors I have encountered is crazy. Here is a video attached. ignore the vid quality."}, {"post_id": 41232, "ts": "2026-08-05T09:40:04Z", "hours": 2.2336, "text": "Devlog 2 So after spending a considerable amount of time thinking about which thing to start from, I went with polishing the Pikachu transparent image I have on the desktop. So now it is draggable!! And you can drag it from one place to another. I also added a simple up-and-down animation to it. So now the image moves up and down, and once you drag it to some other place, it will do the same at that place too. My plan for it is that after this, I will add walking, sleeping and idle motion. PS - sorry for the video quality."}, {"post_id": 40806, "ts": "2026-08-04T15:53:23Z", "hours": 3.6608, "text": "#Devlog 1 So I planned to build an operating system that is built around my favourite Pokémon, Pikachu. I am building it in Oracle VirtualBox. I will mainly use C++ for this because they are faster and also because I want to build something using my C++ skills. So what I did is not that interesting: I set up my vbox, installed git and connected hackatime to it. What I actually coded: Created a dedicated Pikachuwidget Loaded the sprite through Qt’s resource system Fixed resource loading issues and CMake errors I downloaded an image from browser that is transparent and added it to the desktop layer of pikashell. I also added functions so that it shows the time in the panel. Now I know it sounds simple, but it took me lots of time to figure out why the image is not showing up on the desktop layer."}]...
|
Title: PikaOS by @notvedansh | Stardance
Devlogs: Title: PikaOS by @notvedansh | Stardance
Devlogs:
#Devlog 1 So I planned to build an operating system that is built around my favourite Pokémon, Pikachu. I am building it in Oracle VirtualBox. I will mainly use C++ for this because they are faster and also because I want to build something using my C++ skills. So what I did is not that interesting: I set up my vbox, installed git and connected hackatime to it. What I actually coded: Created a dedicated Pikachuwidget Loaded the sprite through Qt’s resource system Fixed resource loading issues and CMake errors I downloaded an image from browser that is transparent and added it to the desktop layer of pikashell. I also added functions so that it shows the time in the panel. Now I know it sounds simple, but it took me lots of time to figure out why the image is not showing up on the desktop layer.
Devlog 2 So after spending a considerable amount of time thinking about which thing to start from, I went with polishing the Pikachu transparent image I have on the desktop. So now it is draggable!! And you can drag it from one place to another. I also added a simple up-and-down animation to it. So now the image moves up and down, and once you drag it to some other place, it will do the same at that place too. My plan for it is that after this, I will add walking, sleeping and idle motion. PS - sorry for the video quality.
Devlog 3 So, over the last two days, I spent making Pikachu move left to right; I mean, now Pikachu can move a random distance in a random time. He can move 50 pixels in the left direction and then wait for some random time and then start moving again in random directions. Also, it flips the image, so if it moves left, the image gets flipped, and up and down motion is as it is. Now this may seem very little, but trust me, the level of errors I have encountered is crazy. Here is a video attached. ignore the vid quality.
Devlog 4 So I don’t think I have mentioned why I’m tinkering with a Pikachu image. So I think it’s time to reveal to you my plan for this operating system. I wanted my operating system to have an assistant that would help with small tasks such as creating folders open terminal. So, like now, when you click Pikachu, you will open a dialogue box in which you can type things. ** FEW FUNCTIONS IT CAN DO RIGHT NOW ** –> It can open the terminal. –> It can tell the battery status. –> It can tell the date and time. –> It can create files and folders. –> It has a help command too, so that if you want to know what things it can do. Now, what happens when you type something it doesn’t understand? It says, “I don’t know this command”. I will be improving the assistant more in the upcoming days, but setting up the logic for this much part only is exhausting.
Devlog 5 Well sorry for the late devlog i was little busy with my school life. The good thing is the terminal is now finally ready in the operating system. I initially had the terminal running Bash through QProcess, which worked for simple commands, but it had limitations. Things like Ctrl+C, interactive programs, terminal formatting, and commands such as ping weren’t behaving like they would in a real terminal. So I switched to a PTY (pseudo-terminal) approach using Linux’s forkpty(). Last time u saw the assistant working, I also connected my assistant to this terminal, not the Konsole which I was using earlier. Also sorry for the vid quality and voice
Devlog 6 Well, every Operating system needs a file manager, so I completed one. It now has folder navigation, sidebar locations, creating files and folders, renaming, deleting, properties, right-click menus, multi-selection, and multi-file copy/cut/paste. I have added it to the assistant so that typing “open files” will open the file manager. Now I will add more features to this, but I want to complete the base of the whole O.S. first. I had to handle so many CMake errors; handling them took most of my time.
#Final Devlog Alright so yeah you all haven’t heard from me in a while now, and I am very,, very sorry for that like I couldn’t manage a project of this level with my daily life and there were some family complications. But long story short, I created version 1 of this operating system. Now it’s not fancy and does not have all the desired features i promised it would have, but it’s version 1 so yeah. There will be new versions of this, and I think the next version will be the final version of it. I am proud of it what i have made, like, most of my time was wasted in handling the cmake errors so yeah, but still I think it has the perfect base for upcoming features. And for what i did to complete it - i did all the wiring of the system like i completed the main base and did the panel work so like now when we click the start button it opens a panel with two options file manager and terminal. So yeah, that’s it, guys: version 1 of PikaOS is finally complete.
Ships:
The main idea behind this project was to make an operating system with a virtual assistant, so I chose Pikachu as the main theme. Now, for the cool features: the Pikachu assistant can move on your screen. Clicking it will make it stop, and it will open a panel where you can type things from a selected range of inputs that will make Pikachu do the certain things I have written about in my devlogs; you can see those. Well, it also has a terminal and a file manager which are fully functional. The main thing I see from this project is a base for version 2 of the project. I have a set of goals which I would complete in the next version. I think I learned a lot from handling the CMake errors; at least, I think almost every time I compiled the code, I had at least atleast one error. And yh i think that’s it....
|
1792853390.5577152
|
1792939790.5577152
|
|
47789
|
Whats-the-tea by @Zemra | Stardance
|
Zemra
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T13:46:38Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Slack bot called “What’s the Tea?” ☕️ I originally wanted it to fetch news and this is the first version of that idea. The challenging part was setting up the Slack app and figuring out how everything worked. This was also my first time working with JavaScript, so there was definitely a lot of learning and figuring things out along the way. I’m most proud of actually getting something to work and shipping my first project. This is my first ship and even though it’s a small project, going from an idea to something I could actually run in Slack feels really good. The current version is a prototype, so the news-fetching feature isn’t implemented yet though you can still try it on Slack.", "repo": "https://github.com/av-arch-bit/Whats-the-tea", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354"}]...
|
[{"post_id": 63827, "ts": "202 [{"post_id": 63827, "ts": "2026-09-07T19:59:27Z", "hours": 0.4058, "text": "A bot that gives you news so you stay updated"}]...
|
Title: Whats-the-tea by @Zemra | Stardance
Devlog Title: Whats-the-tea by @Zemra | Stardance
Devlogs:
A bot that gives you news so you stay updated
Ships:
I made a Slack bot called “What’s the Tea?” ☕️ I originally wanted it to fetch news and this is the first version of that idea. The challenging part was setting up the Slack app and figuring out how everything worked. This was also my first time working with JavaScript, so there was definitely a lot of learning and figuring things out along the way. I’m most proud of actually getting something to work and shipping my first project. This is my first ship and even though it’s a small project, going from an idea to something I could actually run in Slack feels really good. The current version is a prototype, so the news-fetching feature isn’t implemented yet though you can still try it on Slack....
|
1792853389.667334
|
1792939789.667334
|
|
42920
|
Personal Portfolio Website by @self-taught-scribe Personal Portfolio Website by @self-taught-scribe | Stardance...
|
self-taught-scribe
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T01:09:23Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This started as a school web dev assessment and passion project I’ve been meaning to do for a while, but quickly grew way past that. I built a full portfolio site with a Catppuccin based light/dark theme, Home/About/Blog/Projects/Contact pages, and a system that auto-generates cards for blog posts and projects from JSON data. Along the way I fixed a bunch of bugs, such as my broken image fallback logic (was checking .ok on an unresolved fetch Promise), an undiscoverable native multi-select filter (replaced with clickable pill buttons), a missing closing that broke my page layout, and hardcoded NZ date formatting. The part I’m proudest of is three live data widgets. They’re a GitHub commit tracker, a GitHub contribution graph matching my profile heatmap, and a Hackatime coding time dashboard. All three needed lots of debugging. I finished by adding responsive breakpoints, since none of my layouts adapted to mobile at all. Most of this project was debugging, not writing new code, which taught me more than the actual building did.", "repo": "https://github.com/Astral-Scribe/Personal-Portfolio-Site", "demo": "https://owhitedevportfolio.ddns.net/"}]...
|
[{"post_id": 61892, "ts": "202 [{"post_id": 61892, "ts": "2026-09-05T01:53:12Z", "hours": 6.1092, "text": "This started as a school web dev assessment and passion project I’ve been meaning to do for a while, but quickly grew way past that. I built a full portfolio site with a Catppuccin based light/dark theme, Home/About/Blog/Projects/Contact pages, and a system that auto-generates cards for blog posts and projects from JSON data. Along the way I fixed a bunch of bugs, such as my broken image fallback logic (was checking .ok on an unresolved fetch Promise), an undiscoverable native multi-select filter (replaced with clickable pill buttons), a missing closing that broke my page layout, and hardcoded NZ date formatting. The part I’m proudest of is three live data widgets. They’re a GitHub commit tracker, a GitHub contribution graph matching my profile heatmap, and a Hackatime coding time dashboard. All three needed lots of debugging. I finished by adding responsive breakpoints, since none of my layouts adapted to mobile at all. Most of this project was debugging, not writing new code, which taught me more than the actual building did."}]...
|
Title: Personal Portfolio Website by @self-taught- Title: Personal Portfolio Website by @self-taught-scribe | Stardance
Devlogs:
This started as a school web dev assessment and passion project I’ve been meaning to do for a while, but quickly grew way past that. I built a full portfolio site with a Catppuccin based light/dark theme, Home/About/Blog/Projects/Contact pages, and a system that auto-generates cards for blog posts and projects from JSON data. Along the way I fixed a bunch of bugs, such as my broken image fallback logic (was checking .ok on an unresolved fetch Promise), an undiscoverable native multi-select filter (replaced with clickable pill buttons), a missing closing that broke my page layout, and hardcoded NZ date formatting. The part I’m proudest of is three live data widgets. They’re a GitHub commit tracker, a GitHub contribution graph matching my profile heatmap, and a Hackatime coding time dashboard. All three needed lots of debugging. I finished by adding responsive breakpoints, since none of my layouts adapted to mobile at all. Most of this project was debugging, not writing new code, which taught me more than the actual building did.
Ships:
This started as a school web dev assessment and passion project I’ve been meaning to do for a while, but quickly grew way past that. I built a full portfolio site with a Catppuccin based light/dark theme, Home/About/Blog/Projects/Contact pages, and a system that auto-generates cards for blog posts and projects from JSON data. Along the way I fixed a bunch of bugs, such as my broken image fallback logic (was checking .ok on an unresolved fetch Promise), an undiscoverable native multi-select filter (replaced with clickable pill buttons), a missing closing that broke my page layout, and hardcoded NZ date formatting. The part I’m proudest of is three live data widgets. They’re a GitHub commit tracker, a GitHub contribution graph matching my profile heatmap, and a Hackatime coding time dashboard. All three needed lots of debugging. I finished by adding responsive breakpoints, since none of my layouts adapted to mobile at all. Most of this project was debugging, not writing new code, which taught me more than the actual building did....
|
1792853388.788694
|
1792939788.788694
|
|
42916
|
willie and lue :D by @lueyun | Stardance
|
lueyun
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T06:50:31Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "hello guys! i present to you my personal website!! this project introduced me to many things, and some of them include how much variety there is to the world of coding. there is so much you can do, and also many places to start. i hope you like this (boring-ish) personal website about my characters and me!!", "repo": "https://github.com/lueyun0110/willie-and-lue-website", "demo": "https://lueyun0110.github.io/willie-and-lue-website/website/"}]...
|
[{"post_id": 74347, "ts": "202 [{"post_id": 74347, "ts": "2026-09-27T06:47:02Z", "hours": 0.6217, "text": "day 6? HIII i finally figured out my dilemma with my shipping issue!! even though this personalized website isn’t that extraordinary, i hope you get to understand my ocs (+ me)!"}, {"post_id": 72103, "ts": "2026-09-22T05:28:08Z", "hours": 0.7317, "text": "day 5 haha short update- i just added the final touch-ups: new page to show you guys their latest adventures new button to direct you to it now i need to figure out how to ship this 🥲🥲"}, {"post_id": 72081, "ts": "2026-09-22T04:06:24Z", "hours": 2.6869, "text": "day 4 hello!! im back 😎😎 ive been very off lately due to school but its alright. i really wanted to keep on doing this, so here i am! heres what i did: added CSS (color, font, sizing, etc) added gifs to make this website have personality lol changed the instagram link to just instagram username i’m planning on making final touches as this is close to being finished (imo lol)"}, {"post_id": 65225, "ts": "2026-09-10T06:35:56Z", "hours": 1.1033, "text": "day 3 hi guys!! long time no see…. ive been recently busy with many things. i have no clue what to do so this project will take longer than expected. 😓😓 anyways, i added: -more for their backstory -added a NEW page about myself since this website is a personal one to introduce the world to yourself hahaa…. -finally using css to format this website i hope to continue more on the format because rn, this looks so bright 😭"}, {"post_id": 39892, "ts": "2026-08-03T05:31:21Z", "hours": 0.8778, "text": "day 2 heh this is where i wanted to add more, but i truly didn’t know how, so i decided to go with some lore/background info about them. i added a new page with buttons to go back and forth with so everything can be kept organized. the lore is currently incomplete as i made them all in the spot (💀) so im planning on updating them soon (not very soon though). as for the visuals, i plan on doing them later since i want to get the main stuff done :D"}, {"post_id": 39838, "ts": "2026-08-03T02:57:15Z", "hours": 0.4386, "text": "starting a personal website for willie and lue! its my first time coding html btw ahah but heres a simple introduction of my two adventurous ocs!! i want to expand on this by documenting more about their adventures than posting on insta 😅 as for right now, i added a title, brief introduction, image to see who they are, and outside links if you want to check out some of their adventures im planning on (well attempting to) create something interactive that will bring both characters alive… idk when that will be so we shall seee 👀✨"}]...
|
Title: willie and lue :D by @lueyun | Stardance
D Title: willie and lue :D by @lueyun | Stardance
Devlogs:
starting a personal website for willie and lue! its my first time coding html btw ahah but heres a simple introduction of my two adventurous ocs!! i want to expand on this by documenting more about their adventures than posting on insta 😅 as for right now, i added a title, brief introduction, image to see who they are, and outside links if you want to check out some of their adventures im planning on (well attempting to) create something interactive that will bring both characters alive… idk when that will be so we shall seee 👀✨
day 2 heh this is where i wanted to add more, but i truly didn’t know how, so i decided to go with some lore/background info about them. i added a new page with buttons to go back and forth with so everything can be kept organized. the lore is currently incomplete as i made them all in the spot (💀) so im planning on updating them soon (not very soon though). as for the visuals, i plan on doing them later since i want to get the main stuff done :D
day 3 hi guys!! long time no see…. ive been recently busy with many things. i have no clue what to do so this project will take longer than expected. 😓😓 anyways, i added: -more for their backstory -added a NEW page about myself since this website is a personal one to introduce the world to yourself hahaa…. -finally using css to format this website i hope to continue more on the format because rn, this looks so bright 😭
day 4 hello!! im back 😎😎 ive been very off lately due to school but its alright. i really wanted to keep on doing this, so here i am! heres what i did: added CSS (color, font, sizing, etc) added gifs to make this website have personality lol changed the instagram link to just instagram username i’m planning on making final touches as this is close to being finished (imo lol)
day 5 haha short update- i just added the final touch-ups: new page to show you guys their latest adventures new button to direct you to it now i need to figure out how to ship this 🥲🥲
day 6? HIII i finally figured out my dilemma with my shipping issue!! even though this personalized website isn’t that extraordinary, i hope you get to understand my ocs (+ me)!
Ships:
hello guys! i present to you my personal website!! this project introduced me to many things, and some of them include how much variety there is to the world of coding. there is so much you can do, and also many places to start. i hope you like this (boring-ish) personal website about my characters and me!!...
|
1792853387.5891595
|
1792939787.5891595
|
|
17783
|
PepperPeople by @ThatFairyFijia | Stardance
|
ThatFairyFijia
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T00:39:39Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my first blog– PepperPeople! I’m really proud of this being my first fully fleshed out ship, and while it may not look the prettiest sometimes, it’s something I’ve poured heart, soul, and interest into and finished until the end. Maybe I’ll even keep up the project later on. Though please note, the gardening tips sections are still works in progress for later on. This ship is primarily for the work I’ve done on the home page and pepper species.", "repo": "https://github.com/ZoomingLightningbugGirl/PepperBlog", "demo": "https://zoominglightningbuggirl.github.io/PepperBlog/"}]...
|
[{"post_id": 75410, "ts": "202 [{"post_id": 75410, "ts": "2026-09-30T00:35:41Z", "hours": 0.9111, "text": "Primarily quality of life fixes, as I’ve been working on improving my home page and landing page"}, {"post_id": 22573, "ts": "2026-07-05T03:05:09Z", "hours": 3.3794, "text": "Essentially, this is a website I made while I was still fresh as a developer. I’ve primarily been going through this old site and debugging it and replacing it with more sophisticated coding practices. I also intend to make it more robust and styled better (my color palette picking was NOT the best, back then). I anticipate I will also apply some JavaScript into this project. So far, I’ve replaced non-semantic elements like with more semantic elements like to help with screen readers and SEO. I also have been deleting all the elements I put in while I didn’t know what the margin attribute was… yikes O.O I also coded an image carousel that I’ll be implementing on some of the variety pages soon, and I’m looking to code a new feature that creates a drop-down on the maintenance page for each topic. This would be mainly organizational."}]...
|
Title: PepperPeople by @ThatFairyFijia | Stardance Title: PepperPeople by @ThatFairyFijia | Stardance
Devlogs:
Essentially, this is a website I made while I was still fresh as a developer. I’ve primarily been going through this old site and debugging it and replacing it with more sophisticated coding practices. I also intend to make it more robust and styled better (my color palette picking was NOT the best, back then). I anticipate I will also apply some JavaScript into this project. So far, I’ve replaced non-semantic elements like with more semantic elements like to help with screen readers and SEO. I also have been deleting all the elements I put in while I didn’t know what the margin attribute was… yikes O.O I also coded an image carousel that I’ll be implementing on some of the variety pages soon, and I’m looking to code a new feature that creates a drop-down on the maintenance page for each topic. This would be mainly organizational.
Primarily quality of life fixes, as I’ve been working on improving my home page and landing page
Ships:
I made my first blog– PepperPeople! I’m really proud of this being my first fully fleshed out ship, and while it may not look the prettiest sometimes, it’s something I’ve poured heart, soul, and interest into and finished until the end. Maybe I’ll even keep up the project later on. Though please note, the gardening tips sections are still works in progress for later on. This ship is primarily for the work I’ve done on the home page and pepper species....
|
1792853383.803061
|
1792939783.803061
|
|
47715
|
MailOnAPI by @Drew_Fitzgerald | Stardance
|
Drew_Fitzgerald
|
1
|
38.79
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-15T02:16:59Z", "hours": 29.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’ve made an email server, email client and an IMAP server to allow it to be used in external email clients. The IMAP server is quite feature ful to 2003 standards, um not recent standards it is a custom implementation of RFC3501 which is from 2003 but it was only made obsolete in 2022 and is still used by gmail for it’s IMAP so it’s still very well supported. Right now I’m using Resend as the email service to send out emails but the implementation makes it very easy to support more.", "repo": "https://github.com/Sheep26/MailOnAPI", "demo": "https://mail.drewfitzgerald.co.nz"}]...
|
[{"post_id": 76982, "ts": "202 [{"post_id": 76982, "ts": "2026-10-05T08:08:31Z", "hours": 2.9119, "text": "Many improvements to the code and WE GOT ATTACHMENTS WORKING IN IMAP."}, {"post_id": 75043, "ts": "2026-09-28T23:50:28Z", "hours": 6.8733, "text": "We added the search command and improved the code quite signifigantly."}, {"post_id": 68380, "ts": "2026-09-15T01:06:50Z", "hours": 0.3844, "text": "Today we finished TLS WOOO. Now we actually have a secure IMAP server."}, {"post_id": 68002, "ts": "2026-09-14T11:09:28Z", "hours": 0.9003, "text": "We’ve pretty much finished our IMAP integration, we’ve added copy and expunge today and fixed our idle handler."}, {"post_id": 67889, "ts": "2026-09-14T05:57:27Z", "hours": 5.5586, "text": "I reworked the way we manage things listening in to the socket to add a proper listener module instead of having it all in the handle command function. The handle command function worked until now but now that we want commands that expect more data than just one line we do need to expand it to something more streamlined. Commands can now register listeners on the feed from the socket and remove them as they please in order for them to get the required data. We also added a few commands and Idling which allows email clients to idle instead of just sit and poll the server for new mail. I kinda changed the process buffer function so that it can dynamicly figure out if the newline is crlf or lf instead of guess and so it includes that in it’s output. Because we now have listeners we can now add the append command and it will recieve a stream of data from the listener."}, {"post_id": 66332, "ts": "2026-09-12T03:17:30Z", "hours": 1.1906, "text": "I allowed our IMAP parser to be able to understand parenthasis WOO, i had to change a little bit with our fetch function because it didn’t expect that and I added some more IMAP commands our command repertoire now looks like this."}, {"post_id": 65220, "ts": "2026-09-10T06:12:50Z", "hours": 2.4739, "text": "Users can now change their username, we also made many changes to the fetch function in the IMAP server to make it work properly. haha"}, {"post_id": 62680, "ts": "2026-09-06T05:13:18Z", "hours": 2.9642, "text": "IMAP Server WOOOOO! Today I made an IMAP server for the email server/client so it can be used with say Thunderbird. Now there’s a very very basic implementation but it’s there and you can read emails. WOO."}, {"post_id": 62050, "ts": "2026-09-05T08:47:23Z", "hours": 2.3347, "text": "I significantly improved the code for mailboxes. Now we have table for mailboxes and I also made it more clear which mailbox you’re currently in. This makes it easier for me to eventually implement IMAP."}, {"post_id": 61913, "ts": "2026-09-05T02:45:11Z", "hours": 1.6956, "text": "We have mailboxes now, you can move mail there and yeah."}, {"post_id": 55453, "ts": "2026-08-27T09:38:18Z", "hours": 1.2, "text": "We added custom mailboxes, you can now add and remove maliboxes but we can’t move emails there or setup filters."}, {"post_id": 53642, "ts": "2026-08-24T09:33:11Z", "hours": 1.5769, "text": "Today I completely revamped the way emails are stored in the database to make it better. I also added seen checking to mark emails as read. I added mail boxes as well instead of just inbox and sent so users can have custom mailboxes."}, {"post_id": 48724, "ts": "2026-08-17T07:52:59Z", "hours": 0.6217, "text": "We got replies working WOO, we can send emails, reply, recieve replies and continue on reply chains."}, {"post_id": 48056, "ts": "2026-08-16T10:34:05Z", "hours": 0.9753, "text": "We got attachments working WOOO"}, {"post_id": 47918, "ts": "2026-08-16T05:57:14Z", "hours": 0.6972, "text": "We got viewing our sent emails working"}, {"post_id": 47403, "ts": "2026-08-15T09:57:02Z", "hours": 1.4622, "text": "We can send emails from a ui now WOOO"}, {"post_id": 47337, "ts": "2026-08-15T06:53:01Z", "hours": 0.6708, "text": "We can read our emails now."}, {"post_id": 47304, "ts": "2026-08-15T05:25:04Z", "hours": 1.8989, "text": "We’ve started building the inbox, we can view our emails and see when they were sent to us."}, {"post_id": 46833, "ts": "2026-08-14T11:05:59Z", "hours": 1.3553, "text": "We added the Database, AND GOT RECIEVING EMAILS WORKING WOOOO"}, {"post_id": 46799, "ts": "2026-08-14T09:39:53Z", "hours": 1.11, "text": "We got sending emails, WOOO. No accounts yet but we can send emails over stmp."}]...
|
Title: MailOnAPI by @Drew_Fitzgerald | Stardance
Title: MailOnAPI by @Drew_Fitzgerald | Stardance
Devlogs:
We got sending emails, WOOO. No accounts yet but we can send emails over stmp.
We added the Database, AND GOT RECIEVING EMAILS WORKING WOOOO
We’ve started building the inbox, we can view our emails and see when they were sent to us.
We can read our emails now.
We can send emails from a ui now WOOO
We got viewing our sent emails working
We got attachments working WOOO
We got replies working WOO, we can send emails, reply, recieve replies and continue on reply chains.
Today I completely revamped the way emails are stored in the database to make it better. I also added seen checking to mark emails as read. I added mail boxes as well instead of just inbox and sent so users can have custom mailboxes.
We added custom mailboxes, you can now add and remove maliboxes but we can’t move emails there or setup filters.
We have mailboxes now, you can move mail there and yeah.
I significantly improved the code for mailboxes. Now we have table for mailboxes and I also made it more clear which mailbox you’re currently in. This makes it easier for me to eventually implement IMAP.
IMAP Server WOOOOO! Today I made an IMAP server for the email server/client so it can be used with say Thunderbird. Now there’s a very very basic implementation but it’s there and you can read emails. WOO.
Users can now change their username, we also made many changes to the fetch function in the IMAP server to make it work properly. haha
I allowed our IMAP parser to be able to understand parenthasis WOO, i had to change a little bit with our fetch function because it didn’t expect that and I added some more IMAP commands our command repertoire now looks like this.
I reworked the way we manage things listening in to the socket to add a proper listener module instead of having it all in the handle command function. The handle command function worked until now but now that we want commands that expect more data than just one line we do need to expand it to something more streamlined. Commands can now register listeners on the feed from the socket and remove them as they please in order for them to get the required data. We also added a few commands and Idling which allows email clients to idle instead of just sit and poll the server for new mail. I kinda changed the process buffer function so that it can dynamicly figure out if the newline is crlf or lf instead of guess and so it includes that in it’s output. Because we now have listeners we can now add the append command and it will recieve a stream of data from the listener.
We’ve pretty much finished our IMAP integration, we’ve added copy and expunge today and fixed our idle handler.
Today we finished TLS WOOO. Now we actually have a secure IMAP server.
We added the search command and improved the code quite signifigantly.
Many improvements to the code and WE GOT ATTACHMENTS WORKING IN IMAP.
Ships:
I’ve made an email server, email client and an IMAP server to allow it to be used in external email clients. The IMAP server is quite feature ful to 2003 standards, um not recent standards it is a custom implementation of RFC3501 which is from 2003 but it was only made obsolete in 2022 and is still used by gmail for it’s IMAP so it’s still very well supported. Right now I’m using Resend as the email service to send out emails but the implementation makes it very easy to support more....
|
1792853382.3250923
|
1792939782.3250923
|
|
42886
|
Resumight by @ABN | Stardance
|
ABN
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T20:10:05Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Resumight: a resume-building tool specifically catered towards early job seekers and students. For anyone testing it out, make sure to be using a Chromium browser to use the voice feature, and be patient with the AI analysis of inputted PDF’s or resumes (it might take a bit). Now for features. There’s the resume maker, which easily formats your experience into appropriate categories, and can even use AI to smartly sort your spoken experience. Then there’s the tailor, which takes your resume and makes it perfect for any job description you paste in. Finally, the coach helps turn your resume into notes that can be used in an interview. The most challenging part of this was getting the AI integration to work; even with AI Studio being made by the same company as Gemini AI, there were a lot of problems with the way it analyzed and especially generated resume PDF’s. I am most proud of getting the voice integration to work so intelligently, since it can automatically sort things and even understand abbreviations.", "repo": "https://github.com/abn3000/Resumight", "demo": "https://resumight.ai.studio/"}]...
|
[{"post_id": 64425, "ts": "202 [{"post_id": 64425, "ts": "2026-09-08T19:54:23Z", "hours": 0.7389, "text": "#5: Final Tool A problem I think a lot of people face with job applications is actually putting their resume stuff into words in an interview. Even if you have all the qualifications, you can’t exactly list them bullet-point style when face-to-face with someone. The new Coach feature solves this issue with direct integration between Resumight and Tailor. Basically, it tells you how you can best present your unique skills to the hiring team. The End With that, I believe the crux of the project is complete. There’s obviously more stuff I could add, and I still haven’t figured out how to speed up the AI integration, but I’ve also noticed that I’m reaching the end of the line for what I actually know how to make, and have been relying on AI Studio suggestions a bit more."}, {"post_id": 59795, "ts": "2026-09-01T18:45:42Z", "hours": 0.5925, "text": "#4: Back Up It’s been a while since I’ve made changes to Resumight, so I want to take things slow for a bit to make sure nothing breaks. After all, I’m really proud of the tools it has so far! Running from my problems API keys don’t last forever, so my solution was to add a section for a backup API key that only gets used once the first one comes up empty. I couldn’t think of anything else. In case you’re wondering, since the app is hosted using Google AI Studio, I can integrate the keys without having them directly in code or anything. That way this can stay open source and have a GitHub. Adding on I realised that the most useful thing for me to do with Resumight would actually be to update my old resume. Adding the PDF upload feature to Resumaker was very easy, but this does require token usage again. I’m also a bit concerned about how long it took to parse my one page resume, but it does work for now. Next The website really feels like a one and done sort of thing right now. I want to have some sort of multi-resume management system: nothing fancy, but it would use cookies and help people stay organised. Also, voice recognition really does not like any browser other than Chrome."}, {"post_id": 40424, "ts": "2026-08-03T22:42:47Z", "hours": 1.5378, "text": "#3: It lives! I cleaned up the layout and created my Resumaker and Tailor sections. One makes your resume, and the other gears it up for any possible job listing. AI Integration (Misery) Resumight sort of needs AI to function. Without an AI parsing and sorting your speech, the Resumaker is a glorified document editor. Without an AI to tailor your resume to a job listing, the best I can do is match keywords Solution Google has an awesome free tool called AI Studio which lets you get an API key, which I was able to hook up directly to Resumight. Now, Google’s Gemini automatically sorts everything you say into where it needs to go! It’s pretty smart, too (see images). No master list necessary! The Tailor uses AI to specifically let you know what to update about your bullet points, and then makes a downloadable version for you. It’s not just buzzwords this time, since Gemini can actually explain what it wants to delete. Next Time API sustainability is at a critical point."}, {"post_id": 39686, "ts": "2026-08-02T20:28:21Z", "hours": 0.9136, "text": "#2: Spoken Language is Hard It’s kind of a hassle to have to input all your information into a website every time, right? I decided to start making a speech parsing thing that directly translates microphone input to words. I found an open-source base script online, which I was able to use to create my own speech-to-text which works with just code. Just to see how far it would go, I even tried seeing if I could get it to recognize shorthands and list them accordingly. I found a list of popular majors and schools, and just went from there. Categorization is still messy. Solution(?) Yeah, I’m probably going to have to use AI integration for this part, but we’ll cross the bridge of token limits once we get there."}, {"post_id": 39207, "ts": "2026-08-02T00:38:12Z", "hours": 0.7419, "text": "#1: Warm regards from BPT Figured out the color palette for my project; a crisp white and soft green are pretty nice to look at. This has been coded in HTML, CSS (so much CSS) and JS. An app might be more functional, but I like GitHub Pages too much for that. This image should give you a hint as to what we’ll be moving into. Let the suspense eat away at you. Main order of business : I’m working on getting that cool scrolling effect you see on Apple websites working now, just to make the website seem more legit."}]...
|
Title: Resumight by @ABN | Stardance
Devlogs:
#1: Title: Resumight by @ABN | Stardance
Devlogs:
#1: Warm regards from BPT Figured out the color palette for my project; a crisp white and soft green are pretty nice to look at. This has been coded in HTML, CSS (so much CSS) and JS. An app might be more functional, but I like GitHub Pages too much for that. This image should give you a hint as to what we’ll be moving into. Let the suspense eat away at you. Main order of business : I’m working on getting that cool scrolling effect you see on Apple websites working now, just to make the website seem more legit.
#2: Spoken Language is Hard It’s kind of a hassle to have to input all your information into a website every time, right? I decided to start making a speech parsing thing that directly translates microphone input to words. I found an open-source base script online, which I was able to use to create my own speech-to-text which works with just code. Just to see how far it would go, I even tried seeing if I could get it to recognize shorthands and list them accordingly. I found a list of popular majors and schools, and just went from there. Categorization is still messy. Solution(?) Yeah, I’m probably going to have to use AI integration for this part, but we’ll cross the bridge of token limits once we get there.
#3: It lives! I cleaned up the layout and created my Resumaker and Tailor sections. One makes your resume, and the other gears it up for any possible job listing. AI Integration (Misery) Resumight sort of needs AI to function. Without an AI parsing and sorting your speech, the Resumaker is a glorified document editor. Without an AI to tailor your resume to a job listing, the best I can do is match keywords Solution Google has an awesome free tool called AI Studio which lets you get an API key, which I was able to hook up directly to Resumight. Now, Google’s Gemini automatically sorts everything you say into where it needs to go! It’s pretty smart, too (see images). No master list necessary! The Tailor uses AI to specifically let you know what to update about your bullet points, and then makes a downloadable version for you. It’s not just buzzwords this time, since Gemini can actually explain what it wants to delete. Next Time API sustainability is at a critical point.
#4: Back Up It’s been a while since I’ve made changes to Resumight, so I want to take things slow for a bit to make sure nothing breaks. After all, I’m really proud of the tools it has so far! Running from my problems API keys don’t last forever, so my solution was to add a section for a backup API key that only gets used once the first one comes up empty. I couldn’t think of anything else. In case you’re wondering, since the app is hosted using Google AI Studio, I can integrate the keys without having them directly in code or anything. That way this can stay open source and have a GitHub. Adding on I realised that the most useful thing for me to do with Resumight would actually be to update my old resume. Adding the PDF upload feature to Resumaker was very easy, but this does require token usage again. I’m also a bit concerned about how long it took to parse my one page resume, but it does work for now. Next The website really feels like a one and done sort of thing right now. I want to have some sort of multi-resume management system: nothing fancy, but it would use cookies and help people stay organised. Also, voice recognition really does not like any browser other than Chrome.
#5: Final Tool A problem I think a lot of people face with job applications is actually putting their resume stuff into words in an interview. Even if you have all the qualifications, you can’t exactly list them bullet-point style when face-to-face with someone. The new Coach feature solves this issue with direct integration between Resumight and Tailor. Basically, it tells you how you can best present your unique skills to the hiring team. The End With that, I believe the crux of the project is complete. There’s obviously more stuff I could add, and I still haven’t figured out how to speed up the AI integration, but I’ve also noticed that I’m reaching the end of the line for what I actually know how to make, and have been relying on AI Studio suggestions a bit more.
Ships:
I made Resumight: a resume-building tool specifically catered towards early job seekers and students. For anyone testing it out, make sure to be using a Chromium browser to use the voice feature, and be patient with the AI analysis of inputted PDF’s or resumes (it might take a bit). Now for features. There’s the resume maker, which easily formats your experience into appropriate categories, and can even use AI to smartly sort your spoken experience. Then there’s the tailor, which takes your resume and makes it perfect for any job description you paste in. Finally, the coach helps turn your resume into notes that can be used in an interview. The most challenging part of this was getting the AI integration to work; even with AI Studio being made by the same company as Gemini AI, there were a lot of problems with the way it analyzed and especially generated resume PDF’s. I am most proud of getting the voice integration to work so intelligently, since it can automatically sort things and even understand abbreviations....
|
1792853381.1727378
|
1792939781.1727378
|
|
42856
|
Focus Manager by @CatOwlDev | Stardance
|
CatOwlDev
|
1
|
44.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T23:33:16Z", "hours": 44.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created FocusManager, which includes a to-do list, a timer (Pomodoro by default) and a programme blocker. The aim was to help myself (and others) avoid being distracted by external factors. In terms of the code, the most challenging part was creating the user interface and doing a bit of work with JSON files. As for publishing the project on GitHub, GitHub Actions was probably the most difficult part for me, as this is the first time I’ve created a project with the aim of allowing others to install and try it out. In fact, this is all a first for me. I’ll try to take all these mistakes into account in future. I’m proud that I managed to see the project through to the end. What do people need to know to be able to test my project? To be honest, I don’t know where you can host console programmes, so I’ve included a GIF as a demo video. I don’t think ordinary users need any particular programming skills.", "repo": "https://github.com/CatOwlDev/FocusManager", "demo": "https://github.com/CatOwlDev/FocusManager/releases"}]...
|
[{"post_id": 75750, "ts": "202 [{"post_id": 75750, "ts": "2026-09-30T23:12:43Z", "hours": 5.4956, "text": "Those five hours were spent fixing bugs, testing the code to ensure it worked properly, and doing a bit of code refactoring. And then publishing it on GitHub."}, {"post_id": 62124, "ts": "2026-09-05T11:44:59Z", "hours": 11.9847, "text": "I’ve written almost the entire user interface; all that’s left is to remove the unnecessary bits, tweak the design, and it’ll be ready soon"}, {"post_id": 55474, "ts": "2026-08-27T10:47:49Z", "hours": 9.5528, "text": "Having finished writing the Timer and Blocker, I’m now starting to build the UI using the FTXUI library. The documentation and AI are proving helpful"}, {"post_id": 49565, "ts": "2026-08-18T13:22:33Z", "hours": 7.3856, "text": "I reckon I’ve almost finished the second part of the project – the Timer, that is. I’ll need to tweak it to fit the UI in future"}, {"post_id": 45157, "ts": "2026-08-11T13:49:26Z", "hours": 9.2492, "text": "I’ve outlined roughly what the first part of the project itself (ToDoList) should look like. I’ve also noted what I need to save to a JSON file and how to log error reports should any errors occur whilst the programme is running"}]...
|
Title: Focus Manager by @CatOwlDev | Stardance
De Title: Focus Manager by @CatOwlDev | Stardance
Devlogs:
I’ve outlined roughly what the first part of the project itself (ToDoList) should look like. I’ve also noted what I need to save to a JSON file and how to log error reports should any errors occur whilst the programme is running
I reckon I’ve almost finished the second part of the project – the Timer, that is. I’ll need to tweak it to fit the UI in future
Having finished writing the Timer and Blocker, I’m now starting to build the UI using the FTXUI library. The documentation and AI are proving helpful
I’ve written almost the entire user interface; all that’s left is to remove the unnecessary bits, tweak the design, and it’ll be ready soon
Those five hours were spent fixing bugs, testing the code to ensure it worked properly, and doing a bit of code refactoring. And then publishing it on GitHub.
Ships:
I created FocusManager, which includes a to-do list, a timer (Pomodoro by default) and a programme blocker. The aim was to help myself (and others) avoid being distracted by external factors. In terms of the code, the most challenging part was creating the user interface and doing a bit of work with JSON files. As for publishing the project on GitHub, GitHub Actions was probably the most difficult part for me, as this is the first time I’ve created a project with the aim of allowing others to install and try it out. In fact, this is all a first for me. I’ll try to take all these mistakes into account in future. I’m proud that I managed to see the project through to the end. What do people need to know to be able to test my project? To be honest, I don’t know where you can host console programmes, so I’ve included a GIF as a demo video. I don’t think ordinary users need any particular programming skills....
|
1792853379.9688365
|
1792939779.9688365
|
|
7084
|
ALL of the board games I like or Invented by @Nezr ALL of the board games I like or Invented by @Nezruceuil | Stardance...
|
Nezruceuil
|
1
|
151.0
|
1265
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T19:52:05Z", "hours": 151.0, "multiplier": 8.44, "payout": 1265, "blessing": "neutral", "text": "I coded a Game in which you can play all of my favorite board games and the games that I invented. I deepened my Godot coding knowledge by recreating complicated games like: Chess, Reversi, Go, Tafl and Shōgi. I really enjoyed doing this project and now you can enjoy it too! hey, if you write **Stardance** in the background texture you can get this amazing background ↓. ✨", "repo": "https://github.com/Nezruceuil/my-board-games", "demo": "https://nezruceuil.itch.io/cool-board-games"}]...
|
[{"post_id": 75686, "ts": "202 [{"post_id": 75686, "ts": "2026-09-30T19:11:44Z", "hours": 1.1744, "text": "Fixed Bugs and added new secrets panels."}, {"post_id": 71414, "ts": "2026-09-20T19:42:26Z", "hours": 9.54, "text": "Fixed bugs, improved my game, added recommendation, added a way to order the games however you want, added art for amazons game fire and added a Chess panel."}, {"post_id": 61656, "ts": "2026-09-04T17:57:46Z", "hours": 5.3467, "text": "Improve my board game, fixed bugs, added a texture for the walls, added a play time estimation for every games, added Amazons and added Gomoku."}, {"post_id": 58882, "ts": "2026-08-31T13:38:25Z", "hours": 1.7225, "text": "Fixed more bugs (tafl and text in wrong place.) and improved Castle War and added some art to it."}, {"post_id": 58076, "ts": "2026-08-30T12:49:31Z", "hours": 10.0364, "text": "Fixed Bugs (tafl,drawback chess,ect…), Added a Spring panel, Added Amazons and Added Castle War (my own strategy game)."}, {"post_id": 48101, "ts": "2026-08-16T12:03:28Z", "hours": 9.0517, "text": "fixed Bugs, added 2 new chess variants and Added 15 unique drawbacks to drawback chess!"}, {"post_id": 46333, "ts": "2026-08-13T14:07:53Z", "hours": 9.0744, "text": "Fixed bugs, added a Hazelnut fight ai (not entirely done) and added more drawbacks to drawback chess."}, {"post_id": 43342, "ts": "2026-08-08T15:20:23Z", "hours": 8.5814, "text": "Added better panel for the main page (added a Summer panel a Winter panel that you can get by being on the game at the right season. and a star dance panel that you can get by typing “Stardance”. (I drew all of the panels myself.)) , added a Save and Load function, change all of the text font to be better and added a script to see the panel (control/option space)."}, {"post_id": 40696, "ts": "2026-08-04T11:49:37Z", "hours": 1.2158, "text": "fixed bugs, improved design and added a delete drawings and arrows function win delete. (a lot of arrows + delete button = no more arrows)"}, {"post_id": 39671, "ts": "2026-08-02T20:01:01Z", "hours": 4.1125, "text": "added an arrow drawing ability and fixed bugs."}, {"post_id": 38699, "ts": "2026-08-01T06:56:05Z", "hours": 1.4872, "text": "added an explanation for every games and fixed bugs with the lines of action game."}, {"post_id": 38178, "ts": "2026-07-31T13:20:17Z", "hours": 1.7389, "text": "fixed a bug with chess and added lines of action!"}, {"post_id": 37562, "ts": "2026-07-30T11:46:29Z", "hours": 3.5211, "text": "fixed bugs and added Go!"}, {"post_id": 37224, "ts": "2026-07-29T19:30:53Z", "hours": 1.4664, "text": "finished making talf games (added the king suffocation mechanic) !"}, {"post_id": 36562, "ts": "2026-07-28T19:20:19Z", "hours": 3.0928, "text": "started added talf game( ≈ 85% done) still need to add the king capture feature"}, {"post_id": 35321, "ts": "2026-07-26T17:18:12Z", "hours": 1.8692, "text": "fixed bugs and added more chess variants"}, {"post_id": 35080, "ts": "2026-07-26T08:26:26Z", "hours": 4.0767, "text": "Fixed bugs and added Reversi!"}, {"post_id": 34274, "ts": "2026-07-24T20:51:45Z", "hours": 2.0453, "text": "added bigger tic tac toe and fixed bugs."}, {"post_id": 33662, "ts": "2026-07-23T19:17:40Z", "hours": 2.0328, "text": "added 4 player Chess, fixed bugs and added a boat for Chaturaji."}, {"post_id": 33528, "ts": "2026-07-23T15:39:08Z", "hours": 2.0022, "text": "added an explanation for every game."}, {"post_id": 33148, "ts": "2026-07-22T19:53:27Z", "hours": 4.4092, "text": "fixed bugs and added Chaturaji"}, {"post_id": 31461, "ts": "2026-07-19T20:45:54Z", "hours": 4.3989, "text": "fixed a bug with duck chess and added Shōgi."}, {"post_id": 30822, "ts": "2026-07-18T19:09:14Z", "hours": 6.975, "text": "added every variants( Atomic,Duck Chess,Fog Of War,Giveaway,King Of The Hill,Capture Anything,Torpedo,No Castling,Ghost Board,Sideways ) and added Connect 4"}, {"post_id": 30297, "ts": "2026-07-17T19:08:42Z", "hours": 7.4939, "text": "Started adding an AI for Hazelnut Fight, fixed bugs with castling in the chess games, added a page to play classic chess variants, and a page where you can see all the chess variants coming in the next devlog. I also added an autofill that checks for similarity to fill in variant names (for example: aTuMyk -> Atomic .)"}, {"post_id": 27888, "ts": "2026-07-13T20:03:40Z", "hours": 0.7567, "text": "added color pickers to the options menu."}, {"post_id": 27847, "ts": "2026-07-13T18:47:36Z", "hours": 1.3992, "text": "added a classic version to pieces fit!"}, {"post_id": 24673, "ts": "2026-07-08T12:50:10Z", "hours": 4.3453, "text": "Added ‘Pieces Fit,’ a game where everyone is given the same randomly generated custom piece and must place as many copies of it as possible without any of them attacking each other."}, {"post_id": 24151, "ts": "2026-07-07T15:08:03Z", "hours": 3.4447, "text": "fixed bugs with some drawbacks and added 5 more uniques drawbacks"}, {"post_id": 22245, "ts": "2026-07-04T16:41:55Z", "hours": 2.2403, "text": "added a resign button 5 more unique drawback and fixed bugs"}, {"post_id": 22065, "ts": "2026-07-04T09:47:55Z", "hours": 3.5369, "text": "added Drawback Chess with 15 drawbacks!"}, {"post_id": 20990, "ts": "2026-07-02T18:48:12Z", "hours": 3.8056, "text": "added draw to the chess games and a options menu (that doesn’t do anything yet)"}, {"post_id": 19446, "ts": "2026-06-30T19:25:45Z", "hours": 0.8839, "text": "added normal chess"}, {"post_id": 19383, "ts": "2026-06-30T17:58:23Z", "hours": 0.91, "text": "added a drawing ability , added color to see the last movement of your enemy and it now turn 180° every turn."}, {"post_id": 19112, "ts": "2026-06-30T11:00:58Z", "hours": 2.1864, "text": "added game mode and additional rule for pizza chess (for example this one makes all pieces looks like pizza ( Kings opening vs King Indian defense ) and you can’t even tell what is what piece)"}, {"post_id": 19057, "ts": "2026-06-30T07:37:39Z", "hours": 8.1514, "text": "added pizza chess (my own version of chess where the left knight is replace by a pizza)"}, {"post_id": 8544, "ts": "2026-06-14T06:27:46Z", "hours": 3.6144, "text": "added a new game with gambling (not real money!)"}, {"post_id": 3536, "ts": "2026-06-06T14:59:28Z", "hours": 1.145, "text": "added a indicator for the player turn and fixed a bug with the golden hazelnut. Added visual to hazelnut fight page in the menu."}, {"post_id": 3391, "ts": "2026-06-06T09:11:28Z", "hours": 0.5789, "text": "Finished the game ! and Fixed some bugs"}, {"post_id": 3377, "ts": "2026-06-06T08:32:40Z", "hours": 0.45, "text": "polished and added texture for this game!"}, {"post_id": 3355, "ts": "2026-06-06T07:38:18Z", "hours": 1.9031, "text": "added a settings for my games that work and finished the gameplay of the game !"}, {"post_id": 3315, "ts": "2026-06-06T05:39:18Z", "hours": 1.3564, "text": "fixed hiding, look around and added a win condition and a win screen!"}, {"post_id": 2792, "ts": "2026-06-05T16:34:28Z", "hours": 1.0958, "text": "added a Hazelnut limit for the inventory, added the possibility of hiding you hazelnuts and added the number of turns"}, {"post_id": 2319, "ts": "2026-06-04T19:05:43Z", "hours": 0.7481, "text": "added movement, look around button with how many hazelnuts you found on your position!"}, {"post_id": 2258, "ts": "2026-06-04T17:29:03Z", "hours": 0.6908, "text": "added a next player button, player turn and player with controlled position!"}, {"post_id": 2137, "ts": "2026-06-04T13:52:30Z", "hours": 0.6044, "text": "added a tile map with random tile (forest, plain or lake) for one of the game"}, {"post_id": 2037, "ts": "2026-06-04T10:08:21Z", "hours": 0.5872, "text": "Added the main page with buttons and a scroll bar"}]...
|
Title: ALL of the board games I like or Invented b Title: ALL of the board games I like or Invented by @Nezruceuil | Stardance
Devlogs:
Added the main page with buttons and a scroll bar
added a tile map with random tile (forest, plain or lake) for one of the game
added a next player button, player turn and player with controlled position!
added movement, look around button with how many hazelnuts you found on your position!
added a Hazelnut limit for the inventory, added the possibility of hiding you hazelnuts and added the number of turns
fixed hiding, look around and added a win condition and a win screen!
added a settings for my games that work and finished the gameplay of the game !
polished and added texture for this game!
Finished the game ! and Fixed some bugs
added a indicator for the player turn and fixed a bug with the golden hazelnut. Added visual to hazelnut fight page in the menu.
added a new game with gambling (not real money!)
added pizza chess (my own version of chess where the left knight is replace by a pizza)
added game mode and additional rule for pizza chess (for example this one makes all pieces looks like pizza ( Kings opening vs King Indian defense ) and you can’t even tell what is what piece)
added a drawing ability , added color to see the last movement of your enemy and it now turn 180° every turn.
added normal chess
added draw to the chess games and a options menu (that doesn’t do anything yet)
added Drawback Chess with 15 drawbacks!
added a resign button 5 more unique drawback and fixed bugs
fixed bugs with some drawbacks and added 5 more uniques drawbacks
Added ‘Pieces Fit,’ a game where everyone is given the same randomly generated custom piece and must place as many copies of it as possible without any of them attacking each other.
added a classic version to pieces fit!
added color pickers to the options menu.
Started adding an AI for Hazelnut Fight, fixed bugs with castling in the chess games, added a page to play classic chess variants, and a page where you can see all the chess variants coming in the next devlog. I also added an autofill that checks for similarity to fill in variant names (for example: aTuMyk -> Atomic .)
added every variants( Atomic,Duck Chess,Fog Of War,Giveaway,King Of The Hill,Capture Anything,Torpedo,No Castling,Ghost Board,Sideways ) and added Connect 4
fixed a bug with duck chess and added Shōgi.
fixed bugs and added Chaturaji
added an explanation for every game.
added 4 player Chess, fixed bugs and added a boat for Chaturaji.
added bigger tic tac toe and fixed bugs.
Fixed bugs and added Reversi!
fixed bugs and added more chess variants
started added talf game( ≈ 85% done) still need to add the king capture feature
finished making talf games (added the king suffocation mechanic) !
fixed bugs and added Go!
fixed a bug with chess and added lines of action!
added an explanation for every games and fixed bugs with the lines of action game.
added an arrow drawing ability and fixed bugs.
fixed bugs, improved design and added a delete drawings and arrows function win delete. (a lot of arrows + delete button = no more arrows)
Added better panel for the main page (added a Summer panel a Winter panel that you can get by being on the game at the right season. and a star dance panel that you can get by typing “Stardance”. (I drew all of the panels myself.)) , added a Save and Load function, change all of the text font to be better and added a script to see the panel (control/option space).
Fixed bugs, added a Hazelnut fight ai (not entirely done) and added more drawbacks to drawback chess.
fixed Bugs, added 2 new chess variants and Added 15 unique drawbacks to drawback chess!
Fixed Bugs (tafl,drawback chess,ect…), Added a Spring panel, Added Amazons and Added Castle War (my own strategy game).
Fixed more bugs (tafl and text in wrong place.) and improved Castle War and added some art to it.
Improve my board game, fixed bugs, added a texture for the walls, added a play time estimation for every games, added Amazons and added Gomoku.
Fixed bugs, improved my game, added recommendation, added a way to order the games however you want, added art for amazons game fire and added a Chess panel.
Fixed Bugs and added new secrets panels.
Ships:
I coded a Game in which you can play all of my favorite board games and the games that I invented. I deepened my Godot coding knowledge by recreating complicated games like: Chess, Reversi, Go, Tafl and Shōgi. I really enjoyed doing this project and now you can enjoy it too! hey, if you write **Stardance** in the background texture you can get this amazing background ↓. ✨...
|
1792853378.4869957
|
1792939778.4869957
|
|
291
|
YouTweaks by @kanavv | Stardance
|
kanavv
|
2
|
36.0
|
646
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T15:48:19Z", "hours": 8.0, "multiplier": 14.56, "payout": 113, "blessing": "neutral", "text": "YouTweaks is a quality of life extension made to improve your experience on youtube. I decided to build this project because I was super frustrated with how youtube has become. With this extension I made the youtube experience less annoying and also added some features so you are more mindful while choosing what to watch. For this Ship I added the color themes feature fixed a LOT of bugs and I also created a custom playback speed feature which im super proud of and finally I incorporated feedback from the first ship (fixing the readme). This project has been super fun and this is going to be my last ship for stardance but I will probably keep working on this! Also im super happy my extension got approved to be on the firefox store so if you like it you can add it here: https://addons.mozilla.org/en-US/firefox/addon/youtweaks/", "repo": "https://github.com/KanAvR/YouTweaks", "demo": "https://github.com/KanAvR/YouTweaks/releases"}, {"ship_num": 2, "ts": "2026-09-19T14:15:30Z", "hours": 28.0, "multiplier": 18.99, "payout": 533, "blessing": "neutral", "text": "YouTweaks is a quality of life extension made to improve your experience on youtube. I decided to build this project because I was super frustrated with how youtube has become. With this extension I made the youtube experience less annoying and also added some features so you are more mindful while choosing what to watch. Overall this has been a really fun project to work on. I never thought I would have fun coding in javascript.", "repo": "https://github.com/KanAvR/YouTweaks", "demo": "https://github.com/KanAvR/YouTweaks/releases"}]...
|
[{"post_id": 75193, "ts": "202 [{"post_id": 75193, "ts": "2026-09-29T13:29:09Z", "hours": 1.3944, "text": "Bug Fixes I fixed another bug with the stop hover effects feature that used to show the effect if you hovered over the title of the video. Blur Slider I added a blur slider so people can adjust the amount of thumbnail blur. Feedback I incorporated the better readme feedback from the first ship where many people said I should explain why each feature is added. Sry for the camera photo I just reinstalled linux."}, {"post_id": 72184, "ts": "2026-09-22T12:40:55Z", "hours": 2.1672, "text": "Custom themes fixes I fixed some parts of the website that were not changing colors. I should have thought of this earlier but its going to be such a pain to keep the themes feature up to date with youtubes ui hence I am going to mark it as an experimental feature until I figure out how to change the themes in a better way. Playback speed controls without premium I am super happy with how this feature turned out it looks exactly like youtubes ui."}, {"post_id": 71663, "ts": "2026-09-21T08:21:31Z", "hours": 4.2158, "text": "Whole lotta bugs I thought I was done with everything but I found so many bugs. The shorts blocker was broken, the blocking youtube games dint work, and there was a bug where the video you were watching just stopped playing when you went into full screen. Shorts and game blocker So first the shorts bug would just delete the whole fyp if it found a short. This was was quite an easy fix since I just had to change what got deleted. Next the youtube games blocker was searching for text with “youtube games” which I changed to work the same way as the shorts blocker and then it started working properly. Full screen bug I fixed the full screen bug by only stopping the effects on objects we know are video tiles and nothing else. Themes Finally I also started working on a themes feature which looks so cool!! but its such a pain to work on. Theres so many tiny things I need to sit and edit so it looks right."}, {"post_id": 70604, "ts": "2026-09-19T13:15:26Z", "hours": 0.7297, "text": "Made the final commit before shipping Soo now the hide shorts feature works without bugs and I also finished adding the hide merch store feature. Now I just need to figure out how to publish my extension to the firefox and chrome store. Oh I also made a readme."}, {"post_id": 52261, "ts": "2026-08-22T11:20:45Z", "hours": 1.0539, "text": "View count and Publish date I moved the view count and publish dates to be next to the like button instead of the stupid tiny text it was before. To do this I made a new file called videometa.js it uses two functions one to extract the abbreviated views/ publish date and another one to extract the full views/ publish date which shows up when you hover over the information. Additionally I also fixed some Issues with the stop autoplay on hover and stop effects on hover functions, which I merged into one function earlier."}, {"post_id": 47509, "ts": "2026-08-15T13:57:57Z", "hours": 1.5306, "text": "Finished the time tracking feature!!! I haven’t gotten any time to update the project since my summer break ended. But I finally got some time to work on the project because of the time constraints I used AI to write code for this feature :( Im not proud of it but at least the feature works with no dumb bugs (for now at least) Daily limit So I added a daily limit and a bed time cut off so people dont waste the whole day on YouTube. I also added a snooze feature that appears when the YouTube limit has been reached since I often need YouTube for school work and it would become an issue if there was no way to bypass the limit. Time counter badge The concept time counter I made in a previous devlog works now and changes colors based on how much of the daily limit you have used. Stats And finally I also added a stats feature for fun since I love looking at my stats on leech block and wanted something similar for this project."}, {"post_id": 33955, "ts": "2026-07-24T09:42:36Z", "hours": 2.2917, "text": "Everything is such a mess right now I’m working on so many features at once its getting to much too handle. And I dint even make separate branches or make commits per feature so its getting so messy . I’m working on Refactoring all the code to change the deleting elements code to use css instead of JS so it has better performance hopefully . A time tracking feature. Moving the view count and date of upload up to the like button. This feature has had so many random unexpected issues its pmo. hiding the annoying red little bar below videos on the homescreen. some good progress: I merged the stopAutoPlayOnHover and stopHoverEffects into one function and I also fixed all the bugs with the function such as it not working on pages other then the homepage. Next time I should work on things in order AND AT LEAST MAKE BRANCHES ALSO MY COMMITS RN ARE HUGE I SHOULD MAKE THEM SMALLER; ONE FOR EACH FEATURE."}, {"post_id": 32345, "ts": "2026-07-21T13:35:52Z", "hours": 2.7347, "text": "Fixed Blur Again Instead of sitting and excluding things from the thumbnail blur I changed the code to only blur thumbnails. This is so stupid idk how I came up with that nonsense earlier. Stopped auto play when you hover over videos This feature works along with the other hover feature to make you a little more mindful while choosing a video to watch. Time tracking Im working on a whole new set of features to actually add something new for once since this project has just been removing stuff till now. The feature will track your time on youtube and allow you to set limits so you don’t waste your whole day on youtube. The feature will look something like the image. The current image is just a mock up ."}, {"post_id": 24678, "ts": "2026-07-08T12:58:53Z", "hours": 2.5467, "text": "Bugs The hide notification toggle worked visually but if you clicked in that spot the panel still opened so for now I came up with a temporary fix of using a new function to stop the button form working. Also the thumbnail blur still has issues 😭 . For some reason it blurs emojis now. I will fix that later. New Feature I added a feature so when you hover on video you don’t get that distracting ambient color around the thumbnail. This helps because the glow acts like a tiny visual reward before you’ve actually decided anything; it makes a thumbnail feel “chosen” the moment you hover over it. Without that glow, your judgement has to do the work the color was doing for them; so you can be a little more mindful about what you click on. Popup ui Added a background, added the logo, aligned all the elements, and tested out a few fonts before finally choosing Geist . I used this Article to understand css."}, {"post_id": 24303, "ts": "2026-07-07T19:46:42Z", "hours": 2.9003, "text": "First time features actually work as intended!! The blur had a lot of bugs as mentioned in the first devlog I slowly managed to fix all of them in different ways and now its complete. The hardest issue was if you scrolled too fast then you would still get a glimpse of the thumbnail. I fixed this by creating a <style> element which applies the blur before the thumbnails load. So now there’s no need of a mutation or scroll observer either. Logo I created the logo for this project using free form on my ipad then I used claude to make different versions of it for all the resolutions (16,32,48,128) and for the project banner. New Features I added two new features to hide the create button and the notifications button because who ever clicks those. At first I made to separate functions for this but that was really stupid so then I made a generic function that just removes any element. Also I used el.style.display = hidden instead of el.remove since the element can instantly be unhidden if the user wants without needing a refresh."}, {"post_id": 22143, "ts": "2026-07-04T13:28:00Z", "hours": 4.3089, "text": "Major Progress Okay so a lot happened since the last devlog. I paused my progress on the auto play feature and instead moved on to some small changes. I also made a lot of random commits for testing small things which was kinda tedious to revert later (Image shows the graph after all the random stuff was removed). Hide Shorts This feature was pretty simple to implement as I just used querySelectorAll to select the elements with the youtube shorts buttons then I just checked for the text “shorts” so the function doesn’t accidentally delete something else. Finally I used element.remove() to delete the buttons. Also added a mutation observer so the button stays deleted. Hiding unnecessary buttons I basically just did the same thing as above to hide other buttons that clutter up the screen like the create button and the voice search button. Branches This is the first time I learnt how to properly use branches in git. I made two separate branches for the two features I worked on so the variable names are not an issue for now."}, {"post_id": 16405, "ts": "2026-06-26T18:04:27Z", "hours": 2.8767, "text": "Improving file structure First off I fixed the mess of files that were just dropped into the project folder; this would become an issue in the future as I kept on creating new files. Creating the popup I stared off by creating popup.html popup.css and popup.js files after which I went back to the manifest.json to link the popup files but here I realized that the whole JSON file was broken because all the items were inside \"action\" this had not caused any issues so far but it could have led to many problems in the future. After fixing the JSON file I linked the popup files and added storage and scripting permissions to the extension which will be needed later. Next I read a blog post of how to write HTML. Then I created a toggle switch for which I borrowed copied the css from w3schools . Now for the toggle switch to work I had to make a few changes to youtweaks.js . Now it checks the browser storage to see if thumbnail blur is toggled on/off and also continuous checks to see if the toggle switch has been changed which accordingly turns on/off the blur. Other changes I started working on the next feature to stop the auto play of videos when you hover over them as the only purpose of this is to get you hooked onto a video before you even click on it. Which often results in wasted time. While working on that feature I also managed to fix the blur so now it works everywhere on youtube but as a side effect it also blurs youtubers profile pictures which ill fix later."}, {"post_id": 12135, "ts": "2026-06-19T20:37:08Z", "hours": 3.2972, "text": "Fixing the three issues: I first implemented a mutation observer which reapplies the blur every time something on the page changes, this solved issues 1 and 3 but did so in a very sloppy way as a “mutation” was only detected when you hover the mouse on a thumbnail. To fix the problems in a more optimal way I tried a lot of things: I started learning about intersection observers, scroll observers, and started a 3 hour crash course on js to understand what in the world I was doing. I spent a lot of time tinkering and then my problem was solved with a simple search on Mozilla’s developer docs . I used a scroll event listener which fixed the scrolling issue but the other issues still remain. At this point I was so tired I started setting up the gui for the extension which involved making some changes to the manifest.json file."}, {"post_id": 3002, "ts": "2026-06-05T22:40:05Z", "hours": 3.8056, "text": "So the aim of this project is to improve youtube’s usage experience through small tweaks. This is my first time doing anything related to websites I know nothing 😭 So I started off the project by creating a manifest.json file which contains all the data required to run the extension. For this the Mozilla docs were a huge help. Next, I started by creating the first feature of blurring thumbnails. I somehow managed to inspect element the youtube website and select the correct element id to select the thumbnails ig. But this came with three issues: The blur stops working after a refresh The blur only works on the home page The blur stops working after scrolling a lot To fix these Issues I first searched for the issue on w3schools but I dint understand anything I found; so after a bit more digging I came across someone facing a similar issue on stack overflow and after a very long while of trying to understand his code I managed to modify it to work for my extension. This fixed the third issue but not the other 2."}]...
|
Title: YouTweaks by @kanavv | Stardance
Devlogs:
Title: YouTweaks by @kanavv | Stardance
Devlogs:
So the aim of this project is to improve youtube’s usage experience through small tweaks. This is my first time doing anything related to websites I know nothing 😭 So I started off the project by creating a manifest.json file which contains all the data required to run the extension. For this the Mozilla docs were a huge help. Next, I started by creating the first feature of blurring thumbnails. I somehow managed to inspect element the youtube website and select the correct element id to select the thumbnails ig. But this came with three issues: The blur stops working after a refresh The blur only works on the home page The blur stops working after scrolling a lot To fix these Issues I first searched for the issue on w3schools but I dint understand anything I found; so after a bit more digging I came across someone facing a similar issue on stack overflow and after a very long while of trying to understand his code I managed to modify it to work for my extension. This fixed the third issue but not the other 2.
Fixing the three issues: I first implemented a mutation observer which reapplies the blur every time something on the page changes, this solved issues 1 and 3 but did so in a very sloppy way as a “mutation” was only detected when you hover the mouse on a thumbnail. To fix the problems in a more optimal way I tried a lot of things: I started learning about intersection observers, scroll observers, and started a 3 hour crash course on js to understand what in the world I was doing. I spent a lot of time tinkering and then my problem was solved with a simple search on Mozilla’s developer docs . I used a scroll event listener which fixed the scrolling issue but the other issues still remain. At this point I was so tired I started setting up the gui for the extension which involved making some changes to the manifest.json file.
Improving file structure First off I fixed the mess of files that were just dropped into the project folder; this would become an issue in the future as I kept on creating new files. Creating the popup I stared off by creating popup.html popup.css and popup.js files after which I went back to the manifest.json to link the popup files but here I realized that the whole JSON file was broken because all the items were inside "action" this had not caused any issues so far but it could have led to many problems in the future. After fixing the JSON file I linked the popup files and added storage and scripting permissions to the extension which will be needed later. Next I read a blog post of how to write HTML. Then I created a toggle switch for which I borrowed copied the css from w3schools . Now for the toggle switch to work I had to make a few changes to youtweaks.js . Now it checks the browser storage to see if thumbnail blur is toggled on/off and also continuous checks to see if the toggle switch has been changed which accordingly turns on/off the blur. Other changes I started working on the next feature to stop the auto play of videos when you hover over them as the only purpose of this is to get you hooked onto a video before you even click on it. Which often results in wasted time. While working on that feature I also managed to fix the blur so now it works everywhere on youtube but as a side effect it also blurs youtubers profile pictures which ill fix later.
Major Progress Okay so a lot happened since the last devlog. I paused my progress on the auto play feature and instead moved on to some small changes. I also made a lot of random commits for testing small things which was kinda tedious to revert later (Image shows the graph after all the random stuff was removed). Hide Shorts This feature was pretty simple to implement as I just used querySelectorAll to select the elements with the youtube shorts buttons then I just checked for the text “shorts” so the function doesn’t accidentally delete something else. Finally I used element.remove() to delete the buttons. Also added a mutation observer so the button stays deleted. Hiding unnecessary buttons I basically just did the same thing as above to hide other buttons that clutter up the screen like the create button and the voice search button. Branches This is the first time I learnt how to properly use branches in git. I made two separate branches for the two features I worked on so the variable names are not an issue for now.
First time features actually work as intended!! The blur had a lot of bugs as mentioned in the first devlog I slowly managed to fix all of them in different ways and now its complete. The hardest issue was if you scrolled too fast then you would still get a glimpse of the thumbnail. I fixed this by creating a <style> element which applies the blur before the thumbnails load. So now there’s no need of a mutation or scroll observer either. Logo I created the logo for this project using free form on my ipad then I used claude to make different versions of it for all the resolutions (16,32,48,128) and for the project banner. New Features I added two new features to hide the create button and the notifications button because who ever clicks those. At first I made to separate functions for this but that was really stupid so then I made a generic function that just removes any element. Also I used el.style.display = hidden instead of el.remove since the element can instantly be unhidden if the user wants without needing a refresh.
Bugs The hide notification toggle worked visually but if you clicked in that spot the panel still opened so for now I came up with a temporary fix of using a new function to stop the button form working. Also the thumbnail blur still has issues 😭 . For some reason it blurs emojis now. I will fix that later. New Feature I added a feature so when you hover on video you don’t get that distracting ambient color around the thumbnail. This helps because the glow acts like a tiny visual reward before you’ve actually decided anything; it makes a thumbnail feel “chosen” the moment you hover over it. Without that glow, your judgement has to do the work the color was doing for them; so you can be a little more mindful about what you click on. Popup ui Added a background, added the logo, aligned all the elements, and tested out a few fonts before finally choosing Geist . I used this Article to understand css.
Fixed Blur Again Instead of sitting and excluding things from the thumbnail blur I changed the code to only blur thumbnails. This is so stupid idk how I came up with that nonsense earlier. Stopped auto play when you hover over videos This feature works along with the other hover feature to make you a little more mindful while choosing a video to watch. Time tracking Im working on a whole new set of features to actually add something new for once since this project has just been removing stuff till now. The feature will track your time on youtube and allow you to set limits so you don’t waste your whole day on youtube. The feature will look something like the image. The current image is just a mock up .
Everything is such a mess right now I’m working on so many features at once its getting to much too handle. And I dint even make separate branches or make commits per feature so its getting so messy . I’m working on Refactoring all the code to change the deleting elements code to use css instead of JS so it has better performance hopefully . A time tracking feature. Moving the view count and date of upload up to the like button. This feature has had so many random unexpected issues its pmo. hiding the annoying red little bar below videos on the homescreen. some good progress: I merged the stopAutoPlayOnHover and stopHoverEffects into one function and I also fixed all the bugs with the function such as it not working on pages other then the homepage. Next time I should work on things in order AND AT LEAST MAKE BRANCHES ALSO MY COMMITS RN ARE HUGE I SHOULD MAKE THEM SMALLER; ONE FOR EACH FEATURE.
Finished the time tracking feature!!! I haven’t gotten any time to update the project since my summer break ended. But I finally got some time to work on the project because of the time constraints I used AI to write code for this feature :( Im not proud of it but at least the feature works with no dumb bugs (for now at least) Daily limit So I added a daily limit and a bed time cut off so people dont waste the whole day on YouTube. I also added a snooze feature that appears when the YouTube limit has been reached since I often need YouTube for school work and it would become an issue if there was no way to bypass the limit. Time counter badge The concept time counter I made in a previous devlog works now and changes colors based on how much of the daily limit you have used. Stats And finally I also added a stats feature for fun since I love looking at my stats on leech block and wanted something similar for this project.
View count and Publish date I moved the view count and publish dates to be next to the like button instead of the stupid tiny text it was before. To do this I made a new file called videometa.js it uses two functions one to extract the abbreviated views/ publish date and another one to extract the full views/ publish date which shows up when you hover over the information. Additionally I also fixed some Issues with the stop autoplay on hover and stop effects on hover functions, which I merged into one function earlier.
Made the final commit before shipping Soo now the hide shorts feature works without bugs and I also finished adding the hide merch store feature. Now I just need to figure out how to publish my extension to the firefox and chrome store. Oh I also made a readme.
Whole lotta bugs I thought I was done with everything but I found so many bugs. The shorts blocker was broken, the blocking youtube games dint work, and there was a bug where the video you were watching just stopped playing when you went into full screen. Shorts and game blocker So first the shorts bug would just delete the whole fyp if it found a short. This was was quite an easy fix since I just had to change what got deleted. Next the youtube games blocker was searching for text with “youtube games” which I changed to work the same way as the shorts blocker and then it started working properly. Full screen bug I fixed the full screen bug by only stopping the effects on objects we know are video tiles and nothing else. Themes Finally I also started working on a themes feature which looks so cool!! but its such a pain to work on. Theres so many tiny things I need to sit and edit so it looks right.
Custom themes fixes I fixed some parts of the website that were not changing colors. I should have thought of this earlier but its going to be such a pain to keep the themes feature up to date with youtubes ui hence I am going to mark it as an experimental feature until I figure out how to change the themes in a better way. Playback speed controls without premium I am super happy with how this feature turned out it looks exactly like youtubes ui.
Bug Fixes I fixed another bug with the stop hover effects feature that used to show the effect if you hovered over the title of the video. Blur Slider I added a blur slider so people can adjust the amount of thumbnail blur. Feedback I incorporated the better readme feedback from the first ship where many people said I should explain why each feature is added. Sry for the camera photo I just reinstalled linux.
Ships:
YouTweaks is a quality of life extension made to improve your experience on youtube. I decided to build this project because I was super frustrated with how youtube has become. With this extension I made the youtube experience less annoying and also added some features so you are more mindful while choosing what to watch. Overall this has been a really fun project to work on. I never thought I would have fun coding in javascript.
YouTweaks is a quality of life extension made to improve your experience on youtube. I decided to build this project because I was super frustrated with how youtube has become. With this extension I made the youtube experience less annoying and also added some features so you are more mindful while choosing what to watch. For this Ship I added the color themes feature fixed a LOT of bugs and I also created a custom playback speed feature which im super proud of and finally I incorporated feedback from the first ship (fixing the readme). This project has been super fun and this is going to be my last ship for stardance but I will probably keep working on this! Also im super happy my extension got approved to be on the firefox store so if you like it you can add it here: https://addons.mozilla.org/en-US/firefox/addon/youtweaks/...
|
1792853377.3051844
|
1792939777.3051844
|
|
42829
|
Keytchen by @-Sophie- | Stardance
|
-Sophie-
|
1
|
15.0
|
267
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-01T01:25:55Z", "hours": 15.0, "multiplier": 17.92, "payout": 267, "blessing": "neutral", "text": "Keytchen is a digital experience where you get to explore a kitchen using eccentric controls, whether on your NanoKEY2 (what this game is intended for) or just your computer keyboard (which works just as well!) This was just a fun project to work on because I wanted to created a game that went beyond the standard WASD/arrow key controls. Controls are in the title screen instructions preface thing. It’s hard to explain with words but I have a picture in-game that helps a TON. My Github README also features the nanoKEY2 map guide + keyboard equivalent inputs. Challenges: This was my first time working with MIDI inputs in Godot and also working with music/timing in Godot. I had to learn a bit about rhythm and BPM actually because of this project, and also scoured upon Godot docs about getting playback positions and whatnot, which made me realize that Godot’s way of timing music is actually very inaccurate and you need to put a lot of safeguards to make sure that you’re not getting a late/older version of your playback position. That it’s up to speed as much as possible. There was also a lot of decision-making that I had to do. I could’ve chosen to add more content to this game (I mean imagine the possibilities) but I’ve basically answered my question of what a game would be like if the controls weren’t just WASD/arrow keys, and I’ve basically learned what I sought out to learn (MIDI input mapping and rhythm game mechanics) with this project. More content would just be adding onto the principles I’ve learned rather than learning more, which made me realize that it’s probably better to move on and experiment with another project! Proud of: I’m just proud that my beats are on time and that it’s not rage-quit inducing. I’m also proud of the assets I drew in this game because I drew everything and I’m glad it turned out pretty pleasing to look at. Also proud of my sfx + audio choices; I feel like they fit really well and just make everything feel so much more complete.", "repo": "https://github.com/gwak-amole/keytchen", "demo": "https://gwak-amole.itch.io/keytchen"}]...
|
[{"post_id": 75767, "ts": "202 [{"post_id": 75767, "ts": "2026-10-01T01:19:02Z", "hours": 0.3786, "text": "Cleaned game up for shipping! Export files added I exported this into an HTML file so that I could have players access it on their browser really easily! I also updated the godot loading screen and icon to be my own custom screens for more cohesiveness! Fixed minor bug There was a minor bug with the MIDI where it wasn’t escaping the cutting vegetables minigame, found the problem. It was only detecting the escape if it was pressed from the keyboard, not the MIDI. Art Drew assets for: Itch.io banner Stardance screenshot That’s pretty much it! yayy I’m so glad this has come to a wrap! I learned so much honestly from creating just this little digital experience. I hope you all enjoy exploring it as much as I enjoyed making it!"}, {"post_id": 75761, "ts": "2026-10-01T00:22:03Z", "hours": 3.6725, "text": "Finally about to ship!! Title Screen Created a title screen + keyboard tutorial instructions so that players know what keys to press + their keyboard equivalents if they don’t have a nanoKEY2 Everything was drawn by me in Aseprite, except the nanoKEY2 base image was taken from the internet Digital experience More than a game, I’ve decided that this game should be more like an experimental digital experience. It features a cutting experience and just pan/pot placing/removing. It doesn’t feature a storyline, almost just like a little aimless simulator. Audio Added some pixel + lofi bg music and satisfying SFX! Keyboard compatibility Added keyboard compatibility Mapped keys 1, 2, 3, 4, 5, 6, 7, 8 with corresponding MIDI pitch values (like an intermediary value switch) using event.get_keycode (it’s really neat and the transfer over was p smooth) Added navigation buttons Way to go back to start screen or exit cutting vegetables mode Challenges Finding satisfying audio :’) It was just a lot of little content to add so it was just time consuming It took a bit of decision-making to decide whether to keep going with Keytchen (because honestly I could keep adding content forever) or move onto another project. I decided to move on because at this point I’ve hurdled over all the foreign technicalities that I’ve sought out to learn (the MIDI mapping and beat timing.) Any new additions would just be things I already know (but I want to actively learn more.) I hope to ship this very soon; I’m going to quickly playtest it one more time!"}, {"post_id": 55672, "ts": "2026-08-27T17:10:30Z", "hours": 3.2014, "text": "Keytchen - More visual feedback and debugging! Had to backtrack w/debugging I debugged the entire timing system of beats because the gameplay was just not fun, it was not registering beats sometimes and the visual beat feedback wouldn’t update when it was supposed to. I fixed this by separating the visual beat updating system with the input tracking of beats for gameplay and it worked out well 😭 Visual feedback Error for wrong timing red key Error for wrong key red key Key you’re supposed to press is highlighted green The beats pulse whenever a beat happens to help the player feel the beat in the game better Miscellaneous You can access the minigame through the main screen’s cutting board now! Challenges Debugging my beat system was so painful and a nightmare because my code was so messy and I confused myself with it. I solved this by commenting out all my code so now there’s no way I get confused LOL Future additions As you can tell, I still haven’t added the new potato / zucchini textures so i will have to do that :’). The next time you see a post it will have different textures not just a carrot i promise!! I’ll need to create some kind of inventory system so that the cut up vegetables can be stored somewhere so when the player wants to cook something using those ingredients they have it on hand and can add it to a pot or pan or something That’s all folks! see ya in the next update! ;D"}, {"post_id": 48914, "ts": "2026-08-17T14:07:42Z", "hours": 3.3572, "text": "Cutting mechanism almost done Notes autoload Now the player knows what notes to hit based on the note shown on screen! I’m going to add a note guide so that it’s also more obvious which note to hit if they’re not familiar with cdefgabc keys! Different vegetable settings Though there aren’t any graphics to match at the moment, there are different vegetables that call for different mini-games! I finished the carrot, zucchini, and potato mini-games. Music added I added some plain beat in the background that the player needs to match with the notes accordingly. It won’t work unless the player matches the beat well enough. Challenges It’s hard to match up the switch of the note; i’m still working on this. sometimes the note even though switches in game logic doesn’t show up and the game remembers the last note as the one to show on screen (u can actually see it in the vid) I had to learn a bit about rhythm and bpm in order to set my variables for next beat and secs per beat stuff like that correctly 😭 Next additions graphics for different veggies the note showing on screen will have flawless timing sfx for notes there will be a note guide added for players who aren’t familiar with cdefgabc notes! sorry my updates have slowed down…i’ve started school again D:"}, {"post_id": 44249, "ts": "2026-08-09T21:35:38Z", "hours": 2.4667, "text": "Carrot cutting animation + hooked to nanoKEY2!! Art / animations I used Aseprite to make the cutting board and the carrot graphics! I made each cut of the carrot a different image to make this work. Now there is a visible cutting animation for carrots! I timed position changes, rotations, and modulation using AnimationPlayer. Currently, the animation steps are triggered by a ui_accept input. I’ll change it to be musical chords that the player has to time perfectly as my next update. Hooked controls to nanoKEY2 I looked into how MIDI inputs are controlled by Godot, and it doesn’t natively detect MIDI inputs from the Input Map in Project Settings, so I had to create a script that detects MIDI input and maps it onto a default Godot input like ui_accept and ui_left etc! But now it’s working really well :DDDD Challenges It was incredibly time consuming to key frame each individual position but hopefully I can just reuse these frames now and just replace the textures because I left the names generic for modularity I didn’t understand how MIDI inputs worked and matching them to other native inputs in Godot so it was tough understanding how to do it (so many diff things like MIDI_MESSAGE_NOTE_OFF/ON that I had to learn) Next Steps I’m going to be adding the chords timing feature so that cutting is actually hard and not just a matter of ui_accept lol Stay tuned!"}, {"post_id": 39759, "ts": "2026-08-02T22:40:41Z", "hours": 0.9764, "text": "Added some basic game functionality! + recolored background You can select a pot or pan for each stovetop now Through a ton of pressed() signals and booleans we have made this happen Focus To pair this with my nanoKEY2, I’m starting game development with keyboard focus features early so that it isn’t a hassle to do later on! Recolored stuff I changed the colors of the background to make it even more approachable and friendly! I like this cool toned version… that last version looked a little eerie Future additions I will be adding: hooking nanoKEY2 to the actual game actual pot cooking mechanic pan cooking mechanic cutting vegetables mechanic (maybe I’ll start with a carrot first) a bunch of graphics to support those features Challenges Not many challenges this time but I keep forgetting to record my aseprite using lapse…I need to remember! Stay tuned!"}, {"post_id": 39116, "ts": "2026-08-01T20:30:00Z", "hours": 0.8281, "text": "Main background drawn! Aseprite I drew the main background for the game’s kitchen area with Aseprite! There’s a stove and cutting board so far. Future additions Soon, I’ll be adding the following: Stove cooking mechanic Cutting board mechanic So mainly I’ll be establishing gameplay with the nanoKEY2! Challenges faced Choosing the right color and vibe for this cozy game was pretty difficult, but I think I’m happy with the colors I have currently. I can change it anytime I want anyway! :D Stay tuned!"}]...
|
Title: Keytchen by @-Sophie- | Stardance
Devlogs: Title: Keytchen by @-Sophie- | Stardance
Devlogs:
Main background drawn! Aseprite I drew the main background for the game’s kitchen area with Aseprite! There’s a stove and cutting board so far. Future additions Soon, I’ll be adding the following: Stove cooking mechanic Cutting board mechanic So mainly I’ll be establishing gameplay with the nanoKEY2! Challenges faced Choosing the right color and vibe for this cozy game was pretty difficult, but I think I’m happy with the colors I have currently. I can change it anytime I want anyway! :D Stay tuned!
Added some basic game functionality! + recolored background You can select a pot or pan for each stovetop now Through a ton of pressed() signals and booleans we have made this happen Focus To pair this with my nanoKEY2, I’m starting game development with keyboard focus features early so that it isn’t a hassle to do later on! Recolored stuff I changed the colors of the background to make it even more approachable and friendly! I like this cool toned version… that last version looked a little eerie Future additions I will be adding: hooking nanoKEY2 to the actual game actual pot cooking mechanic pan cooking mechanic cutting vegetables mechanic (maybe I’ll start with a carrot first) a bunch of graphics to support those features Challenges Not many challenges this time but I keep forgetting to record my aseprite using lapse…I need to remember! Stay tuned!
Carrot cutting animation + hooked to nanoKEY2!! Art / animations I used Aseprite to make the cutting board and the carrot graphics! I made each cut of the carrot a different image to make this work. Now there is a visible cutting animation for carrots! I timed position changes, rotations, and modulation using AnimationPlayer. Currently, the animation steps are triggered by a ui_accept input. I’ll change it to be musical chords that the player has to time perfectly as my next update. Hooked controls to nanoKEY2 I looked into how MIDI inputs are controlled by Godot, and it doesn’t natively detect MIDI inputs from the Input Map in Project Settings, so I had to create a script that detects MIDI input and maps it onto a default Godot input like ui_accept and ui_left etc! But now it’s working really well :DDDD Challenges It was incredibly time consuming to key frame each individual position but hopefully I can just reuse these frames now and just replace the textures because I left the names generic for modularity I didn’t understand how MIDI inputs worked and matching them to other native inputs in Godot so it was tough understanding how to do it (so many diff things like MIDI_MESSAGE_NOTE_OFF/ON that I had to learn) Next Steps I’m going to be adding the chords timing feature so that cutting is actually hard and not just a matter of ui_accept lol Stay tuned!
Cutting mechanism almost done Notes autoload Now the player knows what notes to hit based on the note shown on screen! I’m going to add a note guide so that it’s also more obvious which note to hit if they’re not familiar with cdefgabc keys! Different vegetable settings Though there aren’t any graphics to match at the moment, there are different vegetables that call for different mini-games! I finished the carrot, zucchini, and potato mini-games. Music added I added some plain beat in the background that the player needs to match with the notes accordingly. It won’t work unless the player matches the beat well enough. Challenges It’s hard to match up the switch of the note; i’m still working on this. sometimes the note even though switches in game logic doesn’t show up and the game remembers the last note as the one to show on screen (u can actually see it in the vid) I had to learn a bit about rhythm and bpm in order to set my variables for next beat and secs per beat stuff like that correctly 😭 Next additions graphics for different veggies the note showing on screen will have flawless timing sfx for notes there will be a note guide added for players who aren’t familiar with cdefgabc notes! sorry my updates have slowed down…i’ve started school again D:
Keytchen - More visual feedback and debugging! Had to backtrack w/debugging I debugged the entire timing system of beats because the gameplay was just not fun, it was not registering beats sometimes and the visual beat feedback wouldn’t update when it was supposed to. I fixed this by separating the visual beat updating system with the input tracking of beats for gameplay and it worked out well 😭 Visual feedback Error for wrong timing red key Error for wrong key red key Key you’re supposed to press is highlighted green The beats pulse whenever a beat happens to help the player feel the beat in the game better Miscellaneous You can access the minigame through the main screen’s cutting board now! Challenges Debugging my beat system was so painful and a nightmare because my code was so messy and I confused myself with it. I solved this by commenting out all my code so now there’s no way I get confused LOL Future additions As you can tell, I still haven’t added the new potato / zucchini textures so i will have to do that :’). The next time you see a post it will have different textures not just a carrot i promise!! I’ll need to create some kind of inventory system so that the cut up vegetables can be stored somewhere so when the player wants to cook something using those ingredients they have it on hand and can add it to a pot or pan or something That’s all folks! see ya in the next update! ;D
Finally about to ship!! Title Screen Created a title screen + keyboard tutorial instructions so that players know what keys to press + their keyboard equivalents if they don’t have a nanoKEY2 Everything was drawn by me in Aseprite, except the nanoKEY2 base image was taken from the internet Digital experience More than a game, I’ve decided that this game should be more like an experimental digital experience. It features a cutting experience and just pan/pot placing/removing. It doesn’t feature a storyline, almost just like a little aimless simulator. Audio Added some pixel + lofi bg music and satisfying SFX! Keyboard compatibility Added keyboard compatibility Mapped keys 1, 2, 3, 4, 5, 6, 7, 8 with corresponding MIDI pitch values (like an intermediary value switch) using event.get_keycode (it’s really neat and the transfer over was p smooth) Added navigation buttons Way to go back to start screen or exit cutting vegetables mode Challenges Finding satisfying audio :’) It was just a lot of little content to add so it was just time consuming It took a bit of decision-making to decide whether to keep going with Keytchen (because honestly I could keep adding content forever) or move onto another project. I decided to move on because at this point I’ve hurdled over all the foreign technicalities that I’ve sought out to learn (the MIDI mapping and beat timing.) Any new additions would just be things I already know (but I want to actively learn more.) I hope to ship this very soon; I’m going to quickly playtest it one more time!
Cleaned game up for shipping! Export files added I exported this into an HTML file so that I could have players access it on their browser really easily! I also updated the godot loading screen and icon to be my own custom screens for more cohesiveness! Fixed minor bug There was a minor bug with the MIDI where it wasn’t escaping the cutting vegetables minigame, found the problem. It was only detecting the escape if it was pressed from the keyboard, not the MIDI. Art Drew assets for: Itch.io banner Stardance screenshot That’s pretty much it! yayy I’m so glad this has come to a wrap! I learned so much honestly from creating just this little digital experience. I hope you all enjoy exploring it as much as I enjoyed making it!
Ships:
Keytchen is a digital experience where you get to explore a kitchen using eccentric controls, whether on your NanoKEY2 (what this game is intended for) or just your computer keyboard (which works just as well!) This was just a fun project to work on because I wanted to created a game that went beyond the standard WASD/arrow key controls. Controls are in the title screen instructions preface thing. It’s hard to explain with words but I have a picture in-game that helps a TON. My Github README also features the nanoKEY2 map guide + keyboard equivalent inputs. Challenges: This was my first time working with MIDI inputs in Godot and also working with music/timing in Godot. I had to learn a bit about rhythm and BPM actually because of this project, and also scoured upon Godot docs about getting playback positions and whatnot, which made me realize that Godot’s way of timing music is actually very inaccurate and you need to put a lot of safeguards to make sure that you’re not getting a late/older version of your playback position. That it’s up to speed as much as possible. There was also a lot of decision-making that I had to do. I could’ve chosen to add more content to this game (I mean imagine the possibilities) but I’ve basically answered my question of what a game would be like if the controls weren’t just WASD/arrow keys, and I’ve basically learned what I sought out to learn (MIDI input mapping and rhythm game mechanics) with this project. More content would just be adding onto the principles I’ve learned rather than learning more, which made me realize that it’s probably better to move on and experiment with another project! Proud of: I’m just proud that my beats are on time and that it’s not rage-quit inducing. I’m also proud of the assets I drew in this game because I drew everything and I’m glad it turned out pretty pleasing to look at. Also proud of my sfx + audio choices; I feel like they fit really well and just make everything feel so much more complete....
|
1792853374.7168117
|
1792939774.7168117
|
|
47657
|
AI-adaptive resources curator by @dhruvanshjariwal AI-adaptive resources curator by @dhruvanshjariwala | Stardance...
|
dhruvanshjariwala
|
1
|
19.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T19:04:03Z", "hours": 19.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "An AI-powered adaptive learning platform built with Python (FastAPI/LangChain) and a modern Tailwind CSS dashboard. Features real-time diagnostic assessments, dynamic quiz generation, interactive choice cards, and an integrated AI tutor.", "repo": "https://github.com/codemaster010pro/AI_web", "demo": "https://ai-web-frontend.onrender.com"}]...
|
[{"post_id": 73705, "ts": "202 [{"post_id": 73705, "ts": "2026-09-25T19:02:53Z", "hours": 4.9428, "text": "finally its live you can try my web app and know your learning pattern and ask for resources according to your learning preference"}, {"post_id": 52394, "ts": "2026-08-22T14:48:17Z", "hours": 1.5994, "text": "backend is done"}, {"post_id": 49416, "ts": "2026-08-18T07:40:15Z", "hours": 0.9669, "text": "create a database for the web app"}, {"post_id": 49097, "ts": "2026-08-17T18:38:01Z", "hours": 4.8256, "text": "finally quiz part is done now its time to work on database to store that user info and later i will make a chatbot which will serve as a main sit where will be provided resources. msg me if you think that any improvements which will be good!!"}, {"post_id": 46703, "ts": "2026-08-14T04:27:46Z", "hours": 6.7456, "text": "just made langgraph tools for resource scrapping like documentation, yt video etc and it also check yt url the user have given"}]...
|
Title: AI-adaptive resources curator by @dhruvansh Title: AI-adaptive resources curator by @dhruvanshjariwala | Stardance
Devlogs:
just made langgraph tools for resource scrapping like documentation, yt video etc and it also check yt url the user have given
finally quiz part is done now its time to work on database to store that user info and later i will make a chatbot which will serve as a main sit where will be provided resources. msg me if you think that any improvements which will be good!!
create a database for the web app
backend is done
finally its live you can try my web app and know your learning pattern and ask for resources according to your learning preference
Ships:
An AI-powered adaptive learning platform built with Python (FastAPI/LangChain) and a modern Tailwind CSS dashboard. Features real-time diagnostic assessments, dynamic quiz generation, interactive choice cards, and an integrated AI tutor....
|
1792853373.6305037
|
1792939773.6305037
|
|
30565
|
Guns For Hands by @Josh | Stardance
|
Josh
|
1
|
7.0
|
30
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-07T08:58:31Z", "hours": 7.0, "multiplier": 4.23, "payout": 30, "blessing": "neutral", "text": "I made a godot WebXR game called guns for hands, where (as stated in the title) you have guns for hands. using your ‘hands’ you must pass the salt to different people in increasingly odd ways! If you have a VR Headset, you can use the demo link in the meta quest browser etc. but if not, there is a demo video linked in the readme!", "repo": "https://gitlab.com/castawhat/guns-for-hands", "demo": "https://guns.notahomelab.xyz"}]...
|
[{"post_id": 77508, "ts": "202 [{"post_id": 77508, "ts": "2026-10-07T08:55:24Z", "hours": 2.9289, "text": "Its done! (for first ship) guns for hands’ first ship is ready! ive added a last/celebratory level and yeah, for a first time 3D game and a first time VR game, im pretty happy with how it turned out!"}, {"post_id": 26376, "ts": "2026-07-11T04:00:01Z", "hours": 3.4978, "text": "over the past few days I added quite alot to guns for hands! better lighting 2 levels nicer looking guns nicer looking levels and a start screen!"}, {"post_id": 22021, "ts": "2026-07-04T08:23:47Z", "hours": 0.6953, "text": "Today I Modeled the gun (not tracked because lapse hates me) setup the webxr project started working on and debugging the bullet shooting added a bean and fixed godot wakatime"}]...
|
Title: Guns For Hands by @Josh | Stardance
Devlog Title: Guns For Hands by @Josh | Stardance
Devlogs:
Today I Modeled the gun (not tracked because lapse hates me) setup the webxr project started working on and debugging the bullet shooting added a bean and fixed godot wakatime
over the past few days I added quite alot to guns for hands! better lighting 2 levels nicer looking guns nicer looking levels and a start screen!
Its done! (for first ship) guns for hands’ first ship is ready! ive added a last/celebratory level and yeah, for a first time 3D game and a first time VR game, im pretty happy with how it turned out!
Ships:
I made a godot WebXR game called guns for hands, where (as stated in the title) you have guns for hands. using your ‘hands’ you must pass the salt to different people in increasingly odd ways! If you have a VR Headset, you can use the demo link in the meta quest browser etc. but if not, there is a demo video linked in the readme!...
|
1792853372.4988618
|
1792939772.4988618
|
|
6376
|
Soundboword by @Axwabo | Stardance
|
Axwabo
|
1
|
69.0
|
995
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T23:05:38Z", "hours": 69.0, "multiplier": 14.42, "payout": 995, "blessing": "neutral", "text": "Soundboword is an actually usable desktop soundboard for (primarily) Linux and (with apparent support for) windows tired of other soundboards paywalling slots? not anymore! [insert Phil Swift Flex Tape meme, not sponsored] this is a .NET app built with Avalonia, SoundFlow, and YoutubeExplode you don’t need to install .NET, it’s compiled into a native binary the SoundFlow backend in use is based on miniaudio, so the app only supports mp3 and wav files download audio from YouTube (paste a link or search) for Linux, there is additional PipeWire support use the PipeWire wizard to create a virtual device named “Soundboword Microphone” which you can select in apps (e.g. Discord) after setting up the microphone, you can use the toggles in the bottom left to manage some node links (connect/disconnect audio nodes) Hear Sounds: plays the soundboard to your headphones Mic Sounds: plays the soundboard into the virtual microphone Mic Passthrough: connects the selected physical microphone to the virtual mic Hear Myself: connects your physical mic to your headphones, echoing what you say windows support is partial, macos support will not be provided global hotkeys should work out of the box on losedows the Linux version uses xdg-desktop-portal for global shortcuts if you have a Launchpad Mini MKII lying around, you can use it with this program :3", "repo": "https://github.com/Axwabo/Soundboword", "demo": "https://github.com/Axwabo/Soundboword/releases/tag/v1.0.0"}]...
|
[{"post_id": 62313, "ts": "202 [{"post_id": 62313, "ts": "2026-09-05T16:50:40Z", "hours": 3.6683, "text": "most likely the last devlog before i outgrow hackclub :’3 finalized the project, improved the CI workflow to bundle the program properly and include 3rd party licenses completed the README added a simple sound “editor” that lets you specify the following: start time: where to begin playback loop start: where to jump when restarting on loop (start of file by default) loop end: the point where loop triggers (end of file by default) made the sidebar (Sounds and Inputs views) consistent added icons to almost every window (Linux crashed because the PipeWire icon wasn’t in that project lol) message to future self: you need the leading slash in the Icon property (e.g. /Assets/sus.ico works but not Assets/sus.ico ) the video shows the new configure sound on trigger click feature, resembling the behavior of Voicemod implemented the missing “Auto Mic Passthrough” (as described in the README) the physical microphone preference is now saved fixed the hidden toggles taking up space on slopdows RowDefinitions don’t support binding, not even OnPlatform :( hopefully i don’t gotta fix anything, and it’s ready to ship"}, {"post_id": 60689, "ts": "2026-09-03T07:25:41Z", "hours": 9.5664, "text": "I’M GONNA TWEAK OUT 9 hours on slopdows bullshit… IT FINALLY WORKS (except not really because removing keybinds doesn’t..?) okay so i restored some of the styling, 0 padding in the Inputs listbox looked bad not sure what else i did that isn’t losedows suffering lmao sooooooo “win”dows is special if you hold Ctrl, it doesn’t call the TextInput event, meaning that i have to translate the Key enum the TextInput event isn’t flawless either, it can be ambiguous (e.g. hungarian layout: AltGr+J = í, AltGr+I = Í, Soundboword makes them uppercase) should i remove the automatic uppercase conversion? i spent a lot of time “debugging” (as in, having the CI build it, download the zip, transfer it to a slopdows machine, since native cross-compilation is not supported) the biggest headache was the shortcut list update handler… i negated the TryAdd call, which meant that the global hotkey would only get registered if the same gesture has been added to the dictionary already (therefore it would only work on subsequent binds) i spent way too much time figuring this out another oversight was the lack of Target assignment when you clicked ⚙️ on an input method, meaning that binding shortcuts did nothing idk why the entire panel is bold, gotta fix that hotkeys are temporarily removed while you’re assigning a shortcut however, as mentioned before, this doesn’t work xd i tried it on a slopdows laptop, and removing the A hotkey made the A key unusable until i closed Soundboword setting up CI wasn’t difficult, gotta make sure to separate rm commands and use -f so files not found don’t error using || doesn’t run the latter command if the first one succeeds, i should’ve known that"}, {"post_id": 41841, "ts": "2026-08-06T09:41:33Z", "hours": 2.6206, "text": "i did mostly polishing work during this time, now i can torture myself with windows global shortcuts gotta crash out first though cuz this wonderful website has 3 different markdown renderers somehow, and i’ve been using --- to make sections actually separate changed the TabControl to a TabStrip so i can use my on page switching logic most views are only created once now, which gives a slight performance boost i’d noticed that quickly switching between tabs while using TabControl lead to slight crackles in audio, that’s taken care of now oh and you can use the Tab key to navigate, cuz TabStrip can magically do that getting the lazy-ish loading was pretty funky though, UserControls are lazy by default so i had to hack around it to preload the views by setting IsVisible to false after the control loads (i think that’s what i did, i kinda forgor) fixed the YouTube stream loader, and added a local error display so you can immediately see if something went wrong made it so non-bound XDG-Desktop-Portal shortcuts are no longer detected removed the sound edit button for now, i would like to ship without having to figure all that out made StackPanel spacing mostly uniform using a style selector, though it looks pretty bad in device selectors general settings & logging settings are now saved and loaded added Rescan and Relink All buttons Rescan checks not found files again to locate them Relink All lets you pick directories to look for not found sounds by their filenames in the video, i unmounted the disk that had some files, then relinked sounds to locate it elsewhere"}, {"post_id": 36680, "ts": "2026-07-28T21:57:59Z", "hours": 4.8294, "text": "dev log about logging, crazy added logging in-app and also to files you can configure log levels, None disables file logging altogether i was looking around to find a simple file logger for Microsoft.Extensions.Logging, but i didn’t like it so i made my own, even simpler version took a bunch of attempts to make the architecture bearable, but it’s still kinda jank with the existence of LogPreferences.Instance (instead of using the service provider… but whatever, i make the rules :3) turns out that MultiBinding doesn’t work for a bool that hides the bottom bar (idk why), so i did some wiring by subscribing to PropertyChanged in the preferences and the log list only at the time of recording did i realize that the initial value isn’t set properly, so i gotta fix that tried to set PublishAot to true for all projects (so i don’t have to specify it in dotnet publish ), but that breaks the preview, so i had to revert the change unhandled UI exceptions are now written to the file the unobserved task exception event just… doesn’t seem to fire… i got rid of that tried to use SemaphoreSlim to make the exiting thread block until an in-progress write operation completes, but that probably caused a deadlock because the app wouldn’t close if a log entry happens to be in the middle of being written while you’re quitting, it gets cut in half, oh well fun fact: the ItemsRepeater Avalonia control exists on GitHub, even the docs describe how to use it, but it just didn’t show up for me despite using the latest Avalonia version this made me use a ListBox, which has selection (although you can’t see it because of the background of each log entry)"}, {"post_id": 34591, "ts": "2026-07-25T13:27:50Z", "hours": 4.0242, "text": "made settings sections with a whole lot of unnecessary abstractions for the funny [FromKeyedServices] when i could just access a static instance? absolutely yes!! i couldn’t figure out how to style the children of an ItemsControl externally, so i had to give it an ItemTemplate with a class (which would be unnecessary if i could style the thing) all that for a separator line… and padding… and margin… what if i just nuke this idea and simply have some spacing between the sections? i tried organizing classes into vertical slices architecture, but i gave up and only did it for the Linux project instead the using updates would’ve been funky + some global usings would become useless PipeWire the toggle list now no longer “flickers” on/off when refreshing devices, as i only set the link manager after PipeWire objects have been queried device lists and link toggles are now disabled when switching devices so the user doesn’t accidentally break the linking process added a button that refreshes links (in case things go wrong somehow) you can now select the physical microphone from the PipeWire list, and it will update links this preference isn’t saved to disk just yet in my last devlog i mentioned some issues, which have now been fixed: upon startup, the first two switches don’t work sometimes (race condition maybe?) turns out that i had forgotten to add a potentially valid node to the list after looping through all lines, so it just discarded the last entry certain links might not reconnect properly when switching the output device what did i do to fix that? i’m not sure anymore maybe it was a bit of delay? this one might be linked related to the former issue"}, {"post_id": 34223, "ts": "2026-07-24T19:01:37Z", "hours": 8.9867, "text": "PIPEWIRE WORKS!!1!1! spent almost all day adding PipeWire node linking support i was genuinely tweaking when i found out that the pw-cli create-link command doesn’t create a link… it does NOTHING wishful thinking to assume that i can simply tell PipeWire to connect nodes automatically now i have to query the ports, too, and connect those automatically; make sure to sort them, otherwise the channels might be mixed up ahaha (a0b498e7 khm khm) i spent plenty of the time debugging, the parser i wrote had some funky stuff how to use it there are 4 toggles you can activate, as shown in the video: sounds to primary output: this will play the soundboard’s audio in your headphones/primary speakers sounds to virtual mic: forwards soundboard audio to the virtual microphone, letting others (e.g. in a call or in a game) hear the sounds mic passthrough: connects your “real” microphone to the virtual microphone, allowing others to hear your voice when using the virtual mic hear myself: connects your real microphone to your primary output device more issues upon startup, the first two switches don’t work sometimes (race condition maybe?) certain links might not reconnect properly when switching the output device (it used to be worse when i queried links every time; it would connect only one port to the destination because the port ID was now assigned to something else) some miscellaneous fixes: fixed certain issues with xdg-desktop-portal shortcut assignments removed the upload date from YouTube video views fixed the NativeAOT build (an attribute was missing that let the ServiceProvider know not to strip view & viewmodel constructors) added a DataToggle control that inherits from ToggleSwitch : clicking on it doesn’t toggle it automatically, the binding controls the state"}, {"post_id": 32372, "ts": "2026-07-21T14:38:36Z", "hours": 6.5217, "text": "FINALLY figured out how to interface with xdg-desktop-portal, global shortcuts now work on Linux!!! (with a caveat ofc) subsequent bind requests to the same action will just be ignored by the portal, even if you closed the dialog without binding any shortcuts you should still be abe to bind them in System Settings props to Pinta for the example on how to do this (the DBus flow kinda sucks ngl) making this was partially possible because Avalonia updated to the latest Tmds.DBus version adjusted the YouTube downloader layout: removed the description in favor of a stream selector that also got rid of the upload date, oops added a dummy ✏️ button to sounds (basic editor coming soon) i don’t even want to think about how i’ll render waveforms without making the system go kaboom also added a number input for volume, letting users type in the desired percentage Avalonia magically handles the percentage conversion, i didn’t have to make a converter that multiplies the input by 0.01 made pages dynamic, fixing the inconsistent layout this will make it easier to add platform-specific tabs instead of having to dump everything into settings TabStrip just didn’t work properly, so i’ll stick with the TabControl (which doesn’t have… tab… focus…) OtherSoundInteraction now lets you mute, pause or stop other sounds when a new playback is triggered adopted Injectio so i can slap a [RegisterSingleton] attribute on each class i want in dependency injection without having to go to a different place to add a statement the “Stop All Instances” button is now replaced by the “Relink” button for files that were not found you can now drag-and-drop sounds into the board from the file manager"}, {"post_id": 9155, "ts": "2026-06-15T10:26:57Z", "hours": 6.5614, "text": "Did a bit of refactoring to accomodate for later NativeAOT support: Each view & viewmodel has to be registered as a service Moved to source-generated JSON handling Hopefully, NativeAOT will make the app noticeably faster when I publish the project Added global usings, and split up the project for better platform-specific service organization Fixed the delete button not stopping the sound (how did I manage to fail that??) Replaced the loop toggle with an Assign Shortcut button for quick access I think the latter will be used more often, but having the loop toggle update two buttons at once was really cool Sounds can now be added from YouTube; they are cached for fast access (how else would it work xd) The window is not a dialog, so you can still interact with the soundboard while waiting for download(s) (Idk if dialogs prevent interactions on some desktop environments tbh) This is not the final layout, but it looks decent for now: clicking on a video (left side) takes you to the details page (right side) in the same window Fun fact: pasting a youtube link automatically opens the video view, letting you download it even while the details are loading (will have to fix that up a little)"}, {"post_id": 7556, "ts": "2026-06-12T17:03:41Z", "hours": 5.6711, "text": "More (almost zero) progress on global shortcuts: I’ve figured out the object path & destination from the Kotlin library zugaldia/stargate , but xdg-desktop-portal just crashes now upon calling CreateSession Nothing usable yet Added a devices page to select the output device I tried to implement device switching by creating a separate Mixer, but SoundFlow already has functionality for that, so it became much simpler Refactored code to use the new SoundFlowDeviceManager A “Stop All Sounds” shortcut can now be assigned to each input when clicking the gear icon next to it Fixed shortcut assignment not working after switching pages Editing context is reopened on page change The SelectionChanged event fired for every child control, not just the TabControl -> I now check for the source of the event Attempted to add consistent text alignment in tab headers, that turned out to be stupid, so I just added a space after the Playbacks emoji Removed the “Raise Maximum Volume” (a 0-150% range makes more sense imo) Adjusted buttons in the sound editing view, this is not yet final On the image you can see a pipewire graph I created, this is similar to how I want it to work A sink for soundboard output which can be forwarded to the primary output device (e.g. headphones) A mixer virtual device (discord doesn’t support sinks) that combines the microphone input and the soundboard sink, acting as a virtual mic which can be selected in apps From a bit of testing, it turns out that connecting a sink to the primary output device produces some annoying popping, so I’ll probably just link/unlink the app’s playback to/from the primary output device, too"}, {"post_id": 6330, "ts": "2026-06-10T17:29:02Z", "hours": 4.1664, "text": "Added pages & tabs to better separate UI Activated inputs are now saved and loaded Sound state is now displayed better, it includes missing file detection (exceptions are not yet handled) Using a MultiBinding and an IMultiValueConverter with an enum didn’t work for some reason New page: playbacks It shows all sounds, their current time Will need a redesign Pro tip: don’t call Dispatcher.Post in a method you called Dispatcher.Post in (it will keep updating the UI but prevents user input, you can’t even close the window normally) Did a bit of refactoring: AudioManager is now a service Removed the Host service, the desktop lifetime and the TopLevel will be injected Added an overlay when a file dialog is open (because unlike windows, not all OSes/desktop environments prevent interactions in this situation)"}, {"post_id": 5129, "ts": "2026-06-08T20:23:24Z", "hours": 5.0069, "text": "Implemented input handling for the Launchpad Mini, now I’ll be able to press pads to play sounds Creating the shortcuts system took a few iterations, I wasn’t happy with the code I wrote Shortcuts can be removed even when the input method isn’t active, which wasn’t possible in an earlier iteration Also implemented settings saving when the app exits"}, {"post_id": 2246, "ts": "2026-06-04T17:06:50Z", "hours": 5.5297, "text": "Added a proper UI for triggering sounds with modes similar to that of voicemod (start -> stop, start -> restart, play -> pause, duplicate) I played around with 2 rows below the big button but that seemed to take up too much space, so I moved them to the sound editor (which isn’t fully functional yet) On the right side you can see input methods, which will include global shortcuts later (DBus is confusing af, the win32 api might actually be easier to work with 💀) (Yes, I’ve half-made a global keyboard handler for windows previously) Emojis are fairly expressive imo, but there are tooltips that describe what each button does The layout definitely needs improvements, but it’s something ig Also implemented loading sounds on startup, as well as saving when a new sound is added"}, {"post_id": 1536, "ts": "2026-06-03T16:49:22Z", "hours": 1.8456, "text": "Created the very base of the project with Avalonia and SoundFlow, sound playback works Spent a bunch of time trying to figure out the DBus interface for XDG global shortcuts (Linux part of keybinds): Somehow I grabbed the impl xml, not the one i needed It still doesn’t work, gonna need to debug it later I was trying to write abysmal code based on what Avalonia has: https://github.com/AvaloniaUI/Avalonia/blob/12.0.4/src/Avalonia.FreeDesktop/DBusSystemDialog.cs The source generator used in the latest Avalonia release is a different source generator from what i saw on master, that caused a bit of a headache"}]...
|
Title: Soundboword by @Axwabo | Stardance
Devlogs Title: Soundboword by @Axwabo | Stardance
Devlogs:
Created the very base of the project with Avalonia and SoundFlow, sound playback works Spent a bunch of time trying to figure out the DBus interface for XDG global shortcuts (Linux part of keybinds): Somehow I grabbed the impl xml, not the one i needed It still doesn’t work, gonna need to debug it later I was trying to write abysmal code based on what Avalonia has: https://github.com/AvaloniaUI/Avalonia/blob/12.0.4/src/Avalonia.FreeDesktop/DBusSystemDialog.cs The source generator used in the latest Avalonia release is a different source generator from what i saw on master, that caused a bit of a headache
Added a proper UI for triggering sounds with modes similar to that of voicemod (start -> stop, start -> restart, play -> pause, duplicate) I played around with 2 rows below the big button but that seemed to take up too much space, so I moved them to the sound editor (which isn’t fully functional yet) On the right side you can see input methods, which will include global shortcuts later (DBus is confusing af, the win32 api might actually be easier to work with 💀) (Yes, I’ve half-made a global keyboard handler for windows previously) Emojis are fairly expressive imo, but there are tooltips that describe what each button does The layout definitely needs improvements, but it’s something ig Also implemented loading sounds on startup, as well as saving when a new sound is added
Implemented input handling for the Launchpad Mini, now I’ll be able to press pads to play sounds Creating the shortcuts system took a few iterations, I wasn’t happy with the code I wrote Shortcuts can be removed even when the input method isn’t active, which wasn’t possible in an earlier iteration Also implemented settings saving when the app exits
Added pages & tabs to better separate UI Activated inputs are now saved and loaded Sound state is now displayed better, it includes missing file detection (exceptions are not yet handled) Using a MultiBinding and an IMultiValueConverter with an enum didn’t work for some reason New page: playbacks It shows all sounds, their current time Will need a redesign Pro tip: don’t call Dispatcher.Post in a method you called Dispatcher.Post in (it will keep updating the UI but prevents user input, you can’t even close the window normally) Did a bit of refactoring: AudioManager is now a service Removed the Host service, the desktop lifetime and the TopLevel will be injected Added an overlay when a file dialog is open (because unlike windows, not all OSes/desktop environments prevent interactions in this situation)
More (almost zero) progress on global shortcuts: I’ve figured out the object path & destination from the Kotlin library zugaldia/stargate , but xdg-desktop-portal just crashes now upon calling CreateSession Nothing usable yet Added a devices page to select the output device I tried to implement device switching by creating a separate Mixer, but SoundFlow already has functionality for that, so it became much simpler Refactored code to use the new SoundFlowDeviceManager A “Stop All Sounds” shortcut can now be assigned to each input when clicking the gear icon next to it Fixed shortcut assignment not working after switching pages Editing context is reopened on page change The SelectionChanged event fired for every child control, not just the TabControl -> I now check for the source of the event Attempted to add consistent text alignment in tab headers, that turned out to be stupid, so I just added a space after the Playbacks emoji Removed the “Raise Maximum Volume” (a 0-150% range makes more sense imo) Adjusted buttons in the sound editing view, this is not yet final On the image you can see a pipewire graph I created, this is similar to how I want it to work A sink for soundboard output which can be forwarded to the primary output device (e.g. headphones) A mixer virtual device (discord doesn’t support sinks) that combines the microphone input and the soundboard sink, acting as a virtual mic which can be selected in apps From a bit of testing, it turns out that connecting a sink to the primary output device produces some annoying popping, so I’ll probably just link/unlink the app’s playback to/from the primary output device, too
Did a bit of refactoring to accomodate for later NativeAOT support: Each view & viewmodel has to be registered as a service Moved to source-generated JSON handling Hopefully, NativeAOT will make the app noticeably faster when I publish the project Added global usings, and split up the project for better platform-specific service organization Fixed the delete button not stopping the sound (how did I manage to fail that??) Replaced the loop toggle with an Assign Shortcut button for quick access I think the latter will be used more often, but having the loop toggle update two buttons at once was really cool Sounds can now be added from YouTube; they are cached for fast access (how else would it work xd) The window is not a dialog, so you can still interact with the soundboard while waiting for download(s) (Idk if dialogs prevent interactions on some desktop environments tbh) This is not the final layout, but it looks decent for now: clicking on a video (left side) takes you to the details page (right side) in the same window Fun fact: pasting a youtube link automatically opens the video view, letting you download it even while the details are loading (will have to fix that up a little)
FINALLY figured out how to interface with xdg-desktop-portal, global shortcuts now work on Linux!!! (with a caveat ofc) subsequent bind requests to the same action will just be ignored by the portal, even if you closed the dialog without binding any shortcuts you should still be abe to bind them in System Settings props to Pinta for the example on how to do this (the DBus flow kinda sucks ngl) making this was partially possible because Avalonia updated to the latest Tmds.DBus version adjusted the YouTube downloader layout: removed the description in favor of a stream selector that also got rid of the upload date, oops added a dummy ✏️ button to sounds (basic editor coming soon) i don’t even want to think about how i’ll render waveforms without making the system go kaboom also added a number input for volume, letting users type in the desired percentage Avalonia magically handles the percentage conversion, i didn’t have to make a converter that multiplies the input by 0.01 made pages dynamic, fixing the inconsistent layout this will make it easier to add platform-specific tabs instead of having to dump everything into settings TabStrip just didn’t work properly, so i’ll stick with the TabControl (which doesn’t have… tab… focus…) OtherSoundInteraction now lets you mute, pause or stop other sounds when a new playback is triggered adopted Injectio so i can slap a [RegisterSingleton] attribute on each class i want in dependency injection without having to go to a different place to add a statement the “Stop All Instances” button is now replaced by the “Relink” button for files that were not found you can now drag-and-drop sounds into the board from the file manager
PIPEWIRE WORKS!!1!1! spent almost all day adding PipeWire node linking support i was genuinely tweaking when i found out that the pw-cli create-link command doesn’t create a link… it does NOTHING wishful thinking to assume that i can simply tell PipeWire to connect nodes automatically now i have to query the ports, too, and connect those automatically; make sure to sort them, otherwise the channels might be mixed up ahaha (a0b498e7 khm khm) i spent plenty of the time debugging, the parser i wrote had some funky stuff how to use it there are 4 toggles you can activate, as shown in the video: sounds to primary output: this will play the soundboard’s audio in your headphones/primary speakers sounds to virtual mic: forwards soundboard audio to the virtual microphone, letting others (e.g. in a call or in a game) hear the sounds mic passthrough: connects your “real” microphone to the virtual microphone, allowing others to hear your voice when using the virtual mic hear myself: connects your real microphone to your primary output device more issues upon startup, the first two switches don’t work sometimes (race condition maybe?) certain links might not reconnect properly when switching the output device (it used to be worse when i queried links every time; it would connect only one port to the destination because the port ID was now assigned to something else) some miscellaneous fixes: fixed certain issues with xdg-desktop-portal shortcut assignments removed the upload date from YouTube video views fixed the NativeAOT build (an attribute was missing that let the ServiceProvider know not to strip view & viewmodel constructors) added a DataToggle control that inherits from ToggleSwitch : clicking on it doesn’t toggle it automatically, the binding controls the state
made settings sections with a whole lot of unnecessary abstractions for the funny [FromKeyedServices] when i could just access a static instance? absolutely yes!! i couldn’t figure out how to style the children of an ItemsControl externally, so i had to give it an ItemTemplate with a class (which would be unnecessary if i could style the thing) all that for a separator line… and padding… and margin… what if i just nuke this idea and simply have some spacing between the sections? i tried organizing classes into vertical slices architecture, but i gave up and only did it for the Linux project instead the using updates would’ve been funky + some global usings would become useless PipeWire the toggle list now no longer “flickers” on/off when refreshing devices, as i only set the link manager after PipeWire objects have been queried device lists and link toggles are now disabled when switching devices so the user doesn’t accidentally break the linking process added a button that refreshes links (in case things go wrong somehow) you can now select the physical microphone from the PipeWire list, and it will update links this preference isn’t saved to disk just yet in my last devlog i mentioned some issues, which have now been fixed: upon startup, the first two switches don’t work sometimes (race condition maybe?) turns out that i had forgotten to add a potentially valid node to the list after looping through all lines, so it just discarded the last entry certain links might not reconnect properly when switching the output device what did i do to fix that? i’m not sure anymore maybe it was a bit of delay? this one might be linked related to the former issue
dev log about logging, crazy added logging in-app and also to files you can configure log levels, None disables file logging altogether i was looking around to find a simple file logger for Microsoft.Extensions.Logging, but i didn’t like it so i made my own, even simpler version took a bunch of attempts to make the architecture bearable, but it’s still kinda jank with the existence of LogPreferences.Instance (instead of using the service provider… but whatever, i make the rules :3) turns out that MultiBinding doesn’t work for a bool that hides the bottom bar (idk why), so i did some wiring by subscribing to PropertyChanged in the preferences and the log list only at the time of recording did i realize that the initial value isn’t set properly, so i gotta fix that tried to set PublishAot to true for all projects (so i don’t have to specify it in dotnet publish ), but that breaks the preview, so i had to revert the change unhandled UI exceptions are now written to the file the unobserved task exception event just… doesn’t seem to fire… i got rid of that tried to use SemaphoreSlim to make the exiting thread block until an in-progress write operation completes, but that probably caused a deadlock because the app wouldn’t close if a log entry happens to be in the middle of being written while you’re quitting, it gets cut in half, oh well fun fact: the ItemsRepeater Avalonia control exists on GitHub, even the docs describe how to use it, but it just didn’t show up for me despite using the latest Avalonia version this made me use a ListBox, which has selection (although you can’t see it because of the background of each log entry)
i did mostly polishing work during this time, now i can torture myself with windows global shortcuts gotta crash out first though cuz this wonderful website has 3 different markdown renderers somehow, and i’ve been using --- to make sections actually separate changed the TabControl to a TabStrip so i can use my on page switching logic most views are only created once now, which gives a slight performance boost i’d noticed that quickly switching between tabs while using TabControl lead to slight crackles in audio, that’s taken care of now oh and you can use the Tab key to navigate, cuz TabStrip can magically do that getting the lazy-ish loading was pretty funky though, UserControls are lazy by default so i had to hack around it to preload the views by setting IsVisible to false after the control loads (i think that’s what i did, i kinda forgor) fixed the YouTube stream loader, and added a local error display so you can immediately see if something went wrong made it so non-bound XDG-Desktop-Portal shortcuts are no longer detected removed the sound edit button for now, i would like to ship without having to figure all that out made StackPanel spacing mostly uniform using a style selector, though it looks pretty bad in device selectors general settings & logging settings are now saved and loaded added Rescan and Relink All buttons Rescan checks not found files again to locate them Relink All lets you pick directories to look for not found sounds by their filenames in the video, i unmounted the disk that had some files, then relinked sounds to locate it elsewhere
I’M GONNA TWEAK OUT 9 hours on slopdows bullshit… IT FINALLY WORKS (except not really because removing keybinds doesn’t..?) okay so i restored some of the styling, 0 padding in the Inputs listbox looked bad not sure what else i did that isn’t losedows suffering lmao sooooooo “win”dows is special if you hold Ctrl, it doesn’t call the TextInput event, meaning that i have to translate the Key enum the TextInput event isn’t flawless either, it can be ambiguous (e.g. hungarian layout: AltGr+J = í, AltGr+I = Í, Soundboword makes them uppercase) should i remove the automatic uppercase conversion? i spent a lot of time “debugging” (as in, having the CI build it, download the zip, transfer it to a slopdows machine, since native cross-compilation is not supported) the biggest headache was the shortcut list update handler… i negated the TryAdd call, which meant that the global hotkey would only get registered if the same gesture has been added to the dictionary already (therefore it would only work on subsequent binds) i spent way too much time figuring this out another oversight was the lack of Target assignment when you clicked ⚙️ on an input method, meaning that binding shortcuts did nothing idk why the entire panel is bold, gotta fix that hotkeys are temporarily removed while you’re assigning a shortcut however, as mentioned before, this doesn’t work xd i tried it on a slopdows laptop, and removing the A hotkey made the A key unusable until i closed Soundboword setting up CI wasn’t difficult, gotta make sure to separate rm commands and use -f so files not found don’t error using || doesn’t run the latter command if the first one succeeds, i should’ve known that
most likely the last devlog before i outgrow hackclub :’3 finalized the project, improved the CI workflow to bundle the program properly and include 3rd party licenses completed the README added a simple sound “editor” that lets you specify the following: start time: where to begin playback loop start: where to jump when restarting on loop (start of file by default) loop end: the point where loop triggers (end of file by default) made the sidebar (Sounds and Inputs views) consistent added icons to almost every window (Linux crashed because the PipeWire icon wasn’t in that project lol) message to future self: you need the leading slash in the Icon property (e.g. /Assets/sus.ico works but not Assets/sus.ico ) the video shows the new configure sound on trigger click feature, resembling the behavior of Voicemod implemented the missing “Auto Mic Passthrough” (as described in the README) the physical microphone preference is now saved fixed the hidden toggles taking up space on slopdows RowDefinitions don’t support binding, not even OnPlatform :( hopefully i don’t gotta fix anything, and it’s ready to ship
Ships:
Soundboword is an actually usable desktop soundboard for (primarily) Linux and (with apparent support for) windows tired of other soundboards paywalling slots? not anymore! [insert Phil Swift Flex Tape meme, not sponsored] this is a .NET app built with Avalonia, SoundFlow, and YoutubeExplode you don’t need to install .NET, it’s compiled into a native binary the SoundFlow backend in use is based on miniaudio, so the app only supports mp3 and wav files download audio from YouTube (paste a link or search) for Linux, there is additional PipeWire support use the PipeWire wizard to create a virtual device named “Soundboword Microphone” which you can select in apps (e.g. Discord) after setting up the microphone, you can use the toggles in the bottom left to manage some node links (connect/disconnect audio nodes) Hear Sounds: plays the soundboard to your headphones Mic Sounds: plays the soundboard into the virtual microphone Mic Passthrough: connects the selected physical microphone to the virtual mic Hear Myself: connects your physical mic to your headphones, echoing what you say windows support is partial, macos support will not be provided global hotkeys should work out of the box on losedows the Linux version uses xdg-desktop-portal for global shortcuts if you have a Launchpad Mini MKII lying around, you can use it with this program :3...
|
1792853371.276656
|
1792939771.276656
|
|
2485
|
Pocket Universe by @theinfamousben | Stardance
|
theinfamousben
|
1
|
24.4
|
167
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T21:37:22Z", "hours": 23.0, "multiplier": 7.37, "payout": 167, "blessing": "neutral", "text": "Ship 1 Hey guys! I’m proud to announce I’ve developed Pocket Universe to an acceptable degree - with more updates coming soon! Why did I publish so soon? I have a few projects coming up (haven-related) and I want to get this out of the way so I don’t have any unfinished business. What is this project anyways? Pocket Universe is an Interactive Incremental game, which focuses on building up our modern universe from scratch, meaning from the fundamental Interactions up all the way to Galaxies and Nebulae What’s Included in the game right now? I have 4 Generator nodes and 7 Upgrade nodes, with the framework built to add more quickly. Was AI used in this Project? Yes. I used a lot of AI for troubleshooting my final build, as I’ve never built for MacOS and the web before. I also used AI to generate the placeholder SVG images, which will be replaced once the game reaches an alpha / open beta stage.", "repo": "https://github.com/theinfamousben/pocket-universe", "demo": "https://benmudev.itch.io/pocket-universe"}]...
|
[{"post_id": 76232, "ts": "202 [{"post_id": 76232, "ts": "2026-10-02T19:44:55Z", "hours": 1.3992, "text": "Devlog 15 - Trying to make it look a bit better Changes Added Modal Background Moved Menu and Energy Display into Top Bar ** AI was used to generate an SVG for the modal background and to fix the positioning of the elements ** Notes I originally only shipped this project because I thought The event was going to end soon and I was gonna be busy with Haven, but now since the event has been extended, I figured I can continue working on it :)"}, {"post_id": 66193, "ts": "2026-09-11T21:12:27Z", "hours": 2.2889, "text": "Devlog 14 - I am an IDIOT Changes Recreated all SOs to fix their attached script Build 5 broken and 1 working prototype Remove quarks as a resource Add menu with exit button Notes I am the definition of stupid. I had a problem for 2 WHOLE HOURS, and the fix was simply putting the script for the SOs into its own file. I am my own worst enemy, because of my own stupidity. Well, the more you know."}, {"post_id": 63204, "ts": "2026-09-06T21:30:11Z", "hours": 1.4367, "text": "Devlog 13 - double parents :3 Changes Allowed multiple parents per node Fixed false dragging assertions Notes I’m almost done with the base game mechanics, after that it’s just textures, sounds, and gameplay and then I’m ready for my first ship!"}, {"post_id": 63049, "ts": "2026-09-06T16:59:35Z", "hours": 0.9769, "text": "Devlog 12 Changes Added button colors for hover, select, and normal events made button in the Node Info modal uninteractible if node is locked fixed unlocked check for Upgrade Nodes"}, {"post_id": 62782, "ts": "2026-09-06T09:26:48Z", "hours": 0.6336, "text": "Devlog 11 - wow it finally looks okay Changes Added Icons Made NodeInfo Effect Text yellow AI was used to create the icons - This is temporary * until I figure out how to use Inkscape Notes Didn’t do a lot of programming, and unity refused to track my time for some reason, i did more like an hour, so its not a big deal"}, {"post_id": 61042, "ts": "2026-09-03T19:06:58Z", "hours": 1.1097, "text": "Devlog 10 Changes Added 6 Nodes Added 3 Generator Nodes Added 3 Upgrade Nodes Implemented handling of locked/invisible nodes Locked nodes now won’t be able to be bought unless the parent node is bought at least once Nodes behind a locked node are invisible until the locked node is bought Notes This is fun! I’m working on the game mechanics and I’m not running into a lot of issues. All my bugs (except one) were caught pretty early on, so its a win in my book :] That brings me to the one bug, the bane of my existence… For some bizarre reason, clicking on my nodes doesn’t buy them regularly. Sometimes i need to click many many times, and in the log it doesn’t even register that I clicked the nodes! Maybe it has something to do with the epsilon value which i use to distinguish between dragging the screen and selecting a node, which currently evaluates epsilon before the mouseup event, so maybe i can switch it around and it’ll work. maybe… other than that I’m pretty happy with how it’s turning out. I am a bit worried about making textures, though, since they all look like some weird corporate/ai generated logo because i’m not good enough at art / graphic design"}, {"post_id": 60388, "ts": "2026-09-02T18:05:02Z", "hours": 1.29, "text": "Devlog 9 Changes Completed Node Info Box Header Description for the Node Effect, basically what the node does Button to buy the node Added 2 Starting nodes 1 Generator Node named “Fundamental Interaction” 1 Upgrade Node named “Strong Nuclear Force” AI was used in this timespan for troubleshooting max width for the Node info box Notes This was honestly very fun to work on. I’ve really started putting in more time for this project since I’m now under pressure to get it done by the end of summer break (2 weeks :p) I had little trouble figuring everything out, and thanks to some wonderful help from my buddy github copilot i was never truly stuck on anything in this timespan"}, {"post_id": 58253, "ts": "2026-08-30T16:50:28Z", "hours": 1.5778, "text": "Devlog 8 Changes Added Node Info Text Box Shows Title, info about the node, and a button to buy with a set price Refactored Node Script Structure Notes I have been saved by the power of abstract classes! I unified the nodes into one abstract Node class, and made completion classes for Generators and Upgrades. Now it works by simply accessing the base Node class instead of not knowing whether the class is GeneratorNode or UpgradeNode. This makes it much easier. I am planning now to get some interesting node names from physics, like building up from quarks to larger structures, and i also am going to make some textures so the game doesnt look as shitty :p"}, {"post_id": 55915, "ts": "2026-08-27T19:56:21Z", "hours": 2.7292, "text": "Devlog 7.1 Changes Added Line Drawn to Parent node Will be used for hierarchical unlocking in the future Started work on the sidebar Notes Yeah, I’m a bit screwed. The current structure of my nodes is kind of weird; I have two types of nodes: Generators and Upgrades, each having two unique scripts. That’s good, because they have different logic. Thats not so good because they also share some logic. That’s horrific because they sometimes need to be accessed interchangeably. So here are a few things i could do: Merge both scripts into one, with an enum or something for the different node types Make a base which both nodes can inherit and use give up and cry option 3 sounds the easiest right now, my brain is so broken :’)"}, {"post_id": 17851, "ts": "2026-06-28T19:52:53Z", "hours": 3.2889, "text": "Devlog 7 Changes Added Modal Functionality Test Modal for debug purposes Alert Modal for important stuff (save on exit, etc.) Made HUD better for cross-device formatting Included a vertical layout group for all of the displayed currencies Notes It’s been a bit annoying, to say the least. First off, I wanted the Modals to be completely modular from the start, but I kept getting NullReference errors that didn’t make sense to me, so I had to make a script for each modal type and serialize the GameObjects and other stuff individually. It’s not as modular as I want, but what can ya do :p As for the HUD, I hope it works across devices, I sometimes code on my MacBook and sometimes on my PC, and the layout always breaks. I haven’t tested it yet, so I’ll be as surprised as you are if it doesn’t work."}, {"post_id": 13688, "ts": "2026-06-22T13:15:29Z", "hours": 0.8022, "text": "Devlog 6 Changes Added Generator Production cost: Each generator can now require a certain amount of every resource Notes This is a rather small update, but I’m still trying to get back on my feet from my hiatus. More updates coming soon though, I’ve got some more motivation *By the way: If there’s anyone that would like to do some texture designing, I would be more than happy to accept your work! Credit is, of course, guaranteed (I’m working on a credit screen anyways ;p)."}, {"post_id": 12119, "ts": "2026-06-19T19:58:45Z", "hours": 1.2919, "text": "Devlog 5 Changes Added code to allow for generation of different resource types Notes I have been on a long creative block, I can’t really seem to pick up my laptop and continue coding. It might have a bit to do with the fact that I was very busy the last week or so, so i didn’t have much energy and motivation left to program. I kind of forced myself to implement this feature which i half-assed earlier this week, it’s really simple but it’s a start at getting more motivated :) Next week I don’t have as many exams, pressure from DLRG tests and all that stuff, so I’ll have more time to code :]"}, {"post_id": 5092, "ts": "2026-06-08T19:37:39Z", "hours": 1.9783, "text": "Devlog 4 Changes Added functionality to pan & zoom around Moved the HUD (Energy Display) into a separate canvas Notes this took me longer than I’d like to admit, because Unity was being a bit finicky about my GameObject and refused to run its code for some reason. I used AI for troubleshooting the problem, but used none of its code."}, {"post_id": 3443, "ts": "2026-06-06T11:51:02Z", "hours": 1.1675, "text": "Devlog 3 I have continued my work on Pocket Universe, and have added following: Split Node Prefabs into Generator and Upgrade Nodes Added a NodeBoost Scriptable Object Worked on Node Visibility Logic One problem I have is that a lot of the code for Generator and Upgrade Nodes is identical. I would have made a Node Monobehavior script that handles both and individual sub-classes, but that is kind of messy, at least for now. We will see in about 5 Devlogs if I made the right choice :p"}, {"post_id": 3060, "ts": "2026-06-05T23:01:54Z", "hours": 1.4725, "text": "Devlog 2 - Added Nodes for generation These nodes are clickable by the player in order to buy Generators, which create Energy or other resources. They are comparable to the Cell to Singularity nodes. There will be Generator and Upgrade Nodes; Generator Nodes will be able to be bought multiple times, while upgrade nodes will only be able to be bought once."}, {"post_id": 2356, "ts": "2026-06-04T20:06:13Z", "hours": 0.6289, "text": "Starting work This is a really ambitious project I doubt I’ll be able to finish completely by October, but I’ll try to get as far as possible, so lets see :3"}]...
|
Title: Pocket Universe by @theinfamousben | Starda Title: Pocket Universe by @theinfamousben | Stardance
Devlogs:
Starting work This is a really ambitious project I doubt I’ll be able to finish completely by October, but I’ll try to get as far as possible, so lets see :3
Devlog 2 - Added Nodes for generation These nodes are clickable by the player in order to buy Generators, which create Energy or other resources. They are comparable to the Cell to Singularity nodes. There will be Generator and Upgrade Nodes; Generator Nodes will be able to be bought multiple times, while upgrade nodes will only be able to be bought once.
Devlog 3 I have continued my work on Pocket Universe, and have added following: Split Node Prefabs into Generator and Upgrade Nodes Added a NodeBoost Scriptable Object Worked on Node Visibility Logic One problem I have is that a lot of the code for Generator and Upgrade Nodes is identical. I would have made a Node Monobehavior script that handles both and individual sub-classes, but that is kind of messy, at least for now. We will see in about 5 Devlogs if I made the right choice :p
Devlog 4 Changes Added functionality to pan & zoom around Moved the HUD (Energy Display) into a separate canvas Notes this took me longer than I’d like to admit, because Unity was being a bit finicky about my GameObject and refused to run its code for some reason. I used AI for troubleshooting the problem, but used none of its code.
Devlog 5 Changes Added code to allow for generation of different resource types Notes I have been on a long creative block, I can’t really seem to pick up my laptop and continue coding. It might have a bit to do with the fact that I was very busy the last week or so, so i didn’t have much energy and motivation left to program. I kind of forced myself to implement this feature which i half-assed earlier this week, it’s really simple but it’s a start at getting more motivated :) Next week I don’t have as many exams, pressure from DLRG tests and all that stuff, so I’ll have more time to code :]
Devlog 6 Changes Added Generator Production cost: Each generator can now require a certain amount of every resource Notes This is a rather small update, but I’m still trying to get back on my feet from my hiatus. More updates coming soon though, I’ve got some more motivation *By the way: If there’s anyone that would like to do some texture designing, I would be more than happy to accept your work! Credit is, of course, guaranteed (I’m working on a credit screen anyways ;p).
Devlog 7 Changes Added Modal Functionality Test Modal for debug purposes Alert Modal for important stuff (save on exit, etc.) Made HUD better for cross-device formatting Included a vertical layout group for all of the displayed currencies Notes It’s been a bit annoying, to say the least. First off, I wanted the Modals to be completely modular from the start, but I kept getting NullReference errors that didn’t make sense to me, so I had to make a script for each modal type and serialize the GameObjects and other stuff individually. It’s not as modular as I want, but what can ya do :p As for the HUD, I hope it works across devices, I sometimes code on my MacBook and sometimes on my PC, and the layout always breaks. I haven’t tested it yet, so I’ll be as surprised as you are if it doesn’t work.
Devlog 7.1 Changes Added Line Drawn to Parent node Will be used for hierarchical unlocking in the future Started work on the sidebar Notes Yeah, I’m a bit screwed. The current structure of my nodes is kind of weird; I have two types of nodes: Generators and Upgrades, each having two unique scripts. That’s good, because they have different logic. Thats not so good because they also share some logic. That’s horrific because they sometimes need to be accessed interchangeably. So here are a few things i could do: Merge both scripts into one, with an enum or something for the different node types Make a base which both nodes can inherit and use give up and cry option 3 sounds the easiest right now, my brain is so broken :’)
Devlog 8 Changes Added Node Info Text Box Shows Title, info about the node, and a button to buy with a set price Refactored Node Script Structure Notes I have been saved by the power of abstract classes! I unified the nodes into one abstract Node class, and made completion classes for Generators and Upgrades. Now it works by simply accessing the base Node class instead of not knowing whether the class is GeneratorNode or UpgradeNode. This makes it much easier. I am planning now to get some interesting node names from physics, like building up from quarks to larger structures, and i also am going to make some textures so the game doesnt look as shitty :p
Devlog 9 Changes Completed Node Info Box Header Description for the Node Effect, basically what the node does Button to buy the node Added 2 Starting nodes 1 Generator Node named “Fundamental Interaction” 1 Upgrade Node named “Strong Nuclear Force” AI was used in this timespan for troubleshooting max width for the Node info box Notes This was honestly very fun to work on. I’ve really started putting in more time for this project since I’m now under pressure to get it done by the end of summer break (2 weeks :p) I had little trouble figuring everything out, and thanks to some wonderful help from my buddy github copilot i was never truly stuck on anything in this timespan
Devlog 10 Changes Added 6 Nodes Added 3 Generator Nodes Added 3 Upgrade Nodes Implemented handling of locked/invisible nodes Locked nodes now won’t be able to be bought unless the parent node is bought at least once Nodes behind a locked node are invisible until the locked node is bought Notes This is fun! I’m working on the game mechanics and I’m not running into a lot of issues. All my bugs (except one) were caught pretty early on, so its a win in my book :] That brings me to the one bug, the bane of my existence… For some bizarre reason, clicking on my nodes doesn’t buy them regularly. Sometimes i need to click many many times, and in the log it doesn’t even register that I clicked the nodes! Maybe it has something to do with the epsilon value which i use to distinguish between dragging the screen and selecting a node, which currently evaluates epsilon before the mouseup event, so maybe i can switch it around and it’ll work. maybe… other than that I’m pretty happy with how it’s turning out. I am a bit worried about making textures, though, since they all look like some weird corporate/ai generated logo because i’m not good enough at art / graphic design
Devlog 11 - wow it finally looks okay Changes Added Icons Made NodeInfo Effect Text yellow AI was used to create the icons - This is temporary * until I figure out how to use Inkscape Notes Didn’t do a lot of programming, and unity refused to track my time for some reason, i did more like an hour, so its not a big deal
Devlog 12 Changes Added button colors for hover, select, and normal events made button in the Node Info modal uninteractible if node is locked fixed unlocked check for Upgrade Nodes
Devlog 13 - double parents :3 Changes Allowed multiple parents per node Fixed false dragging assertions Notes I’m almost done with the base game mechanics, after that it’s just textures, sounds, and gameplay and then I’m ready for my first ship!
Devlog 14 - I am an IDIOT Changes Recreated all SOs to fix their attached script Build 5 broken and 1 working prototype Remove quarks as a resource Add menu with exit button Notes I am the definition of stupid. I had a problem for 2 WHOLE HOURS, and the fix was simply putting the script for the SOs into its own file. I am my own worst enemy, because of my own stupidity. Well, the more you know.
Devlog 15 - Trying to make it look a bit better Changes Added Modal Background Moved Menu and Energy Display into Top Bar ** AI was used to generate an SVG for the modal background and to fix the positioning of the elements ** Notes I originally only shipped this project because I thought The event was going to end soon and I was gonna be busy with Haven, but now since the event has been extended, I figured I can continue working on it :)
Ships:
Ship 1 Hey guys! I’m proud to announce I’ve developed Pocket Universe to an acceptable degree - with more updates coming soon! Why did I publish so soon? I have a few projects coming up (haven-related) and I want to get this out of the way so I don’t have any unfinished business. What is this project anyways? Pocket Universe is an Interactive Incremental game, which focuses on building up our modern universe from scratch, meaning from the fundamental Interactions up all the way to Galaxies and Nebulae What’s Included in the game right now? I have 4 Generator nodes and 7 Upgrade nodes, with the framework built to add more quickly. Was AI used in this Project? Yes. I used a lot of AI for troubleshooting my final build, as I’ve never built for MacOS and the web before. I also used AI to generate the placeholder SVG images, which will be replaced once the game reaches an alpha / open beta stage....
|
1792853370.0657406
|
1792939770.0657406
|