|
63340
|
Rudimentary Switch 2 cloudplay by @azijnwater | St Rudimentary Switch 2 cloudplay by @azijnwater | Stardance...
|
azijnwater
|
0
|
10.55
|
0
|
[]
|
[{"post_id": 72715, "ts": "202 [{"post_id": 72715, "ts": "2026-09-23T16:07:14Z", "hours": 3.3458, "text": "Devlog 4, desktop app close to finished! Sorry it has been a while, I’ve been busy this past week with school and work but I’ve made some small progress here and there. I’m working on the desktop app and I’m almost finished! I just need to make it actually function and then its time (finally) for a v0.1 release!"}, {"post_id": 70587, "ts": "2026-09-19T12:19:21Z", "hours": 0.2994, "text": "Devlog 3, I made a Switch 2 emulator! Sorry for lying to you in the title, I had to get your attention somehow. This is instead my Switch 2 cloudplay project . In the last devlog After hours of debugging I got my Switch 2 to recognize the fake Switch 1 pro Controller, since then I have made quick progress. What i fixed/implemented The A button now works (i had it set to the wrong bit) Home button also now works (Vortice.XInput for some reason doesn’t support the Guide button so i had to implement something else) I setup my capture card via OBS to receive the Switch 2 ouput and I’m sending it via the moonlight streaming network to my Thor. In the Youtube video below there’s a gameplay demo of me playing a round of Mario Kart World entirely from the Thor. (and even winning🎉) What is next? I want to make a desktop application that handles translating all the inputs to the pico and also a built in videostream so you dont need to have visual studio + OBS open all the time. I also have alot more plans in the future like; v0.2 release: Optimizing latency, add rumble support. v0.3 release: Add Gyro support. - v0.4 release: My own streaming protocol so I don’t have to rely on moonlight. (might scrap this) v0.5 release: Add support for more input devices, and different capture cards. See you in the next devlog! https://youtu.be/6PGTXF4xbAI (also I just now while writing found out Hackatime supports Visual Studio so I’m sadly missing a couple hours of tracked time 😫)"}, {"post_id": 70366, "ts": "2026-09-19T01:40:23Z", "hours": 6.3639, "text": "Devlog 2, A breakthrough! Quick introduction I’m working on a very janky Switch 2 cloudplay setup: AYN Thor → Windows → XInput → C# → UART → Raspberry Pi Pico → fake Switch Pro Controller → Switch 2 After around 3 days of work the Switch 2 could; Identify the controller Complete the handshake Send bytes and other useful info to my Pico But it would never actually connect with the Switch 2, I kept messing with the code, debugging, changing bytes I even asked AI but I never got the answer. Then I had an epiphany, What if all this time my code was working just fine and I wasn’t testing it correctly, so I sent a singular button press with right_buttons |= (1 << 3); and suddenly. It connected. Apparently, the Switch was waiting for an actual input report before considering the controller fully connected. All that work and time just to mess up my entire codebase. At least I learned a little more about C and hexes 😓😓 What is next? I think the project is close for a v0.1 release, I’ll need to; Fix the A button input Clean up the codebase from all the testing mess Test Build the application In the future I want to build a special application instead of relying on OBS, reduce latency and add rumble + gyro support. https://youtu.be/oTnj4p9ZfQ8"}, {"post_id": 70089, "ts": "2026-09-18T13:10:33Z", "hours": 0.5444, "text": "First response from the Switch 2! I’ve been working on this for a couple days and I’ve finally gotten to the point where my Switch 2 is sending USB handshake packets to the Pico . Now I just need to match it and hopefully getting the Switch 2 to recognize it. 👀"}]...
|
Title: Rudimentary Switch 2 cloudplay by @azijnwat Title: Rudimentary Switch 2 cloudplay by @azijnwater | Stardance
Devlogs:
First response from the Switch 2! I’ve been working on this for a couple days and I’ve finally gotten to the point where my Switch 2 is sending USB handshake packets to the Pico . Now I just need to match it and hopefully getting the Switch 2 to recognize it. 👀
Devlog 2, A breakthrough! Quick introduction I’m working on a very janky Switch 2 cloudplay setup: AYN Thor → Windows → XInput → C# → UART → Raspberry Pi Pico → fake Switch Pro Controller → Switch 2 After around 3 days of work the Switch 2 could; Identify the controller Complete the handshake Send bytes and other useful info to my Pico But it would never actually connect with the Switch 2, I kept messing with the code, debugging, changing bytes I even asked AI but I never got the answer. Then I had an epiphany, What if all this time my code was working just fine and I wasn’t testing it correctly, so I sent a singular button press with right_buttons |= (1 << 3); and suddenly. It connected. Apparently, the Switch was waiting for an actual input report before considering the controller fully connected. All that work and time just to mess up my entire codebase. At least I learned a little more about C and hexes 😓😓 What is next? I think the project is close for a v0.1 release, I’ll need to; Fix the A button input Clean up the codebase from all the testing mess Test Build the application In the future I want to build a special application instead of relying on OBS, reduce latency and add rumble + gyro support. https://youtu.be/oTnj4p9ZfQ8
Devlog 3, I made a Switch 2 emulator! Sorry for lying to you in the title, I had to get your attention somehow. This is instead my Switch 2 cloudplay project . In the last devlog After hours of debugging I got my Switch 2 to recognize the fake Switch 1 pro Controller, since then I have made quick progress. What i fixed/implemented The A button now works (i had it set to the wrong bit) Home button also now works (Vortice.XInput for some reason doesn’t support the Guide button so i had to implement something else) I setup my capture card via OBS to receive the Switch 2 ouput and I’m sending it via the moonlight streaming network to my Thor. In the Youtube video below there’s a gameplay demo of me playing a round of Mario Kart World entirely from the Thor. (and even winning🎉) What is next? I want to make a desktop application that handles translating all the inputs to the pico and also a built in videostream so you dont need to have visual studio + OBS open all the time. I also have alot more plans in the future like; v0.2 release: Optimizing latency, add rumble support. v0.3 release: Add Gyro support. - v0.4 release: My own streaming protocol so I don’t have to rely on moonlight. (might scrap this) v0.5 release: Add support for more input devices, and different capture cards. See you in the next devlog! https://youtu.be/6PGTXF4xbAI (also I just now while writing found out Hackatime supports Visual Studio so I’m sadly missing a couple hours of tracked time 😫)
Devlog 4, desktop app close to finished! Sorry it has been a while, I’ve been busy this past week with school and work but I’ve made some small progress here and there. I’m working on the desktop app and I’m almost finished! I just need to make it actually function and then its time (finally) for a v0.1 release!...
|
1793051361.0148106
|
1793656161.0148106
|
|
15069
|
VKGPGPU by @sergey5588 | Stardance
|
sergey5588
|
1
|
22.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T16:34:33Z", "hours": 22.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made VKGPGPU, this is C11 library that uses vulkan under the hood and provides simpler access to general purpose computing on GPU (something like CUDA but more lightweight) im planning to make simple perceptron neural network with it. Learning vulkan was challenging, i still don’t know majority of things (graphics pipeline), I’m proud that this thing works and i enjoy my code quality. To test my project people need to know basic GPU concepts and some shading language that can compile to SPIRV (GLSL is the easiest)", "repo": "https://github.com/Sergey5588/vkgpgpu", "demo": "https://github.com/Sergey5588/vkgpgpu/releases/tag/v0.0.1-test"}]...
|
[{"post_id": 72722, "ts": "202 [{"post_id": 72722, "ts": "2026-09-23T16:21:26Z", "hours": 0.7611, "text": "Pushed v0.0.1-test, test version, added some macros for debug things and lib release things"}, {"post_id": 66589, "ts": "2026-09-12T13:14:15Z", "hours": 0.7764, "text": "Made github workflow for release automation, very cool, still not tested tho"}, {"post_id": 56789, "ts": "2026-08-28T18:19:19Z", "hours": 0.2728, "text": "Made build.sh to build static and shared libs, now i have 67 commits in my repo"}, {"post_id": 53274, "ts": "2026-08-23T18:44:36Z", "hours": 1.0717, "text": "Just made small fixes, nothing else to say"}, {"post_id": 42551, "ts": "2026-08-07T11:27:36Z", "hours": 4.9567, "text": "I rewrote api so now its recording cmd buffer and in theory multiple dispatches and programs can be in pipeline, its working!!!!!!!"}, {"post_id": 26068, "ts": "2026-07-10T17:31:56Z", "hours": 3.0831, "text": "Implemented push constant, now you can push some int, float and bool types"}, {"post_id": 24867, "ts": "2026-07-08T18:34:02Z", "hours": 0.3053, "text": "did small fixes, now there is no TODO s in the code"}, {"post_id": 16373, "ts": "2026-06-26T17:21:09Z", "hours": 0.8922, "text": "You can actually run compute shader now!!!!! here is the compute shader itself and a code to run it:"}, {"post_id": 15776, "ts": "2026-06-25T17:20:21Z", "hours": 3.2008, "text": "I almost lost my mind, but turned out i forgot to reset file pointer after getting file size so actual file data was never read. Implemented: Kernel loading Example shader that copies data from buffer A to buffer B Here is code for shader (not tested, cmd buffer dispatch not yet implemented) and output:"}, {"post_id": 15249, "ts": "2026-06-24T19:18:47Z", "hours": 1.19, "text": "Implemented buffer map and unmap. And everything is a pointer now"}, {"post_id": 15159, "ts": "2026-06-24T17:01:27Z", "hours": 1.8239, "text": "Added buffer creation and destruction. Public API looks like this:"}, {"post_id": 13875, "ts": "2026-06-22T18:50:51Z", "hours": 0.9347, "text": "implemented queue selection and logical device creation, there is nothing new to show so here is the diff 😔"}, {"post_id": 13702, "ts": "2026-06-22T13:50:40Z", "hours": 3.1225, "text": "Made initial project structure, vulkan instance loading and physical device initialization"}]...
|
Title: VKGPGPU by @sergey5588 | Stardance
Devlogs Title: VKGPGPU by @sergey5588 | Stardance
Devlogs:
Made initial project structure, vulkan instance loading and physical device initialization
implemented queue selection and logical device creation, there is nothing new to show so here is the diff 😔
Added buffer creation and destruction. Public API looks like this:
Implemented buffer map and unmap. And everything is a pointer now
I almost lost my mind, but turned out i forgot to reset file pointer after getting file size so actual file data was never read. Implemented: Kernel loading Example shader that copies data from buffer A to buffer B Here is code for shader (not tested, cmd buffer dispatch not yet implemented) and output:
You can actually run compute shader now!!!!! here is the compute shader itself and a code to run it:
did small fixes, now there is no TODO s in the code
Implemented push constant, now you can push some int, float and bool types
I rewrote api so now its recording cmd buffer and in theory multiple dispatches and programs can be in pipeline, its working!!!!!!!
Just made small fixes, nothing else to say
Made build.sh to build static and shared libs, now i have 67 commits in my repo
Made github workflow for release automation, very cool, still not tested tho
Pushed v0.0.1-test, test version, added some macros for debug things and lib release things
Ships:
I made VKGPGPU, this is C11 library that uses vulkan under the hood and provides simpler access to general purpose computing on GPU (something like CUDA but more lightweight) im planning to make simple perceptron neural network with it. Learning vulkan was challenging, i still don’t know majority of things (graphics pipeline), I’m proud that this thing works and i enjoy my code quality. To test my project people need to know basic GPU concepts and some shading language that can compile to SPIRV (GLSL is the easiest)...
|
1793339787.242002
|
1793426187.242002
|
|
65096
|
streaksaver by @raahi | Stardance
|
raahi
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T06:55:59Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a bot to remind you to actually lock in and do 30 min of work everyday. It directly connects to your hackatime account when you run /streaksaver-connect and pulls the number of hours you do. You can use the bot to do other things as well like directly see how many hours you’ve done without actually opening hackatime or view your streak. There is API support as well for this allowing you to access whoevers hackatime data like hours/streaks/goals. I am hosting this project using nest which was fun to learn as well. This was my very first attempt at making a slack bot, coding in JS and actually SSHing into a server and running my programs on it! Hope yall like it and feel free to join the channel #streaksaver-stardance-bot-project to try the bot out :0", "repo": "https://github.com/CreativeDragon1/streakbuddy", "demo": "https://hackclub.enterprise.slack.com/archives/C0C40JKMH7B"}]...
|
[{"post_id": 72725, "ts": "202 [{"post_id": 72725, "ts": "2026-09-23T16:26:24Z", "hours": 10.1311, "text": "Hey there, I made this project initially for thirdsapce and then later moved it here, thirdspace doesn’t have a web log system, so I ended up making a JOURNAL.md with all the journals for each commit. Each journal has an estimate of the time spent, the gh commit, AI disclosure and a summary of stuff I did. github for it: streakbuddy/JOURNAL.md at main · CreativeDragon1/streakbuddy"}]...
|
Title: streaksaver by @raahi | Stardance
Devlogs: Title: streaksaver by @raahi | Stardance
Devlogs:
Hey there, I made this project initially for thirdsapce and then later moved it here, thirdspace doesn’t have a web log system, so I ended up making a JOURNAL.md with all the journals for each commit. Each journal has an estimate of the time spent, the gh commit, AI disclosure and a summary of stuff I did. github for it: streakbuddy/JOURNAL.md at main · CreativeDragon1/streakbuddy
Ships:
I made a bot to remind you to actually lock in and do 30 min of work everyday. It directly connects to your hackatime account when you run /streaksaver-connect and pulls the number of hours you do. You can use the bot to do other things as well like directly see how many hours you’ve done without actually opening hackatime or view your streak. There is API support as well for this allowing you to access whoevers hackatime data like hours/streaks/goals. I am hosting this project using nest which was fun to learn as well. This was my very first attempt at making a slack bot, coding in JS and actually SSHing into a server and running my programs on it! Hope yall like it and feel free to join the channel #streaksaver-stardance-bot-project to try the bot out :0...
|
1793213686.222763
|
1793300086.222763
|
|
6850
|
High Speed FPV Drone by @peterprok777 | Stardance
|
peterprok777
|
0
|
2.5
|
0
|
[]
|
[{"post_id": 7273, "ts": "2026 [{"post_id": 7273, "ts": "2026-06-12T04:00:38Z", "hours": 0.5228, "text": "High speed drone log 2: I added a camera hole (no camera selected yet) and cooling exhaust holes in the rear side. Since the nose of the drone will be experiencing higher pressure due to the speed and the shape of the airfoil, the tail will have lower pressure. And as I learned yesterday (I knew before just didn’t know it applies here as well!) the air will naturally want to go out of the holes in the rear because of lower pressure! This effect will give me natural cooling for the internal components."}, {"post_id": 5269, "ts": "2026-06-08T23:53:01Z", "hours": 1.9758, "text": "Made a first rough draft for my high speed drone 355mm in length, 2207 motors, 5 inch props. Will be detailing in the next couple days. Also will be researching what hardware and software to install into this thing."}]...
|
Title: High Speed FPV Drone by @peterprok777 | Sta Title: High Speed FPV Drone by @peterprok777 | Stardance
Devlogs:
Made a first rough draft for my high speed drone 355mm in length, 2207 motors, 5 inch props. Will be detailing in the next couple days. Also will be researching what hardware and software to install into this thing.
High speed drone log 2: I added a camera hole (no camera selected yet) and cooling exhaust holes in the rear side. Since the nose of the drone will be experiencing higher pressure due to the speed and the shape of the airfoil, the tail will have lower pressure. And as I learned yesterday (I knew before just didn’t know it applies here as well!) the air will naturally want to go out of the holes in the rear because of lower pressure! This effect will give me natural cooling for the internal components....
|
1793256525.3069537
|
1793861325.3069537
|
|
5506
|
Void of Space by @Olorin | Stardance
|
Olorin
|
0
|
6.61
|
0
|
[]
|
[{"post_id": 7274, "ts": "2026 [{"post_id": 7274, "ts": "2026-06-12T04:02:37Z", "hours": 0.8267, "text": "Devlog 4 I added simple enemy AI, and a randomly generated dungeon layout. The AI was simple, I just made it follow the player and shoot at them if they are in range. Later I want to make them sight based. If they see the player in their line of sight, then they’ll shoot. I’d probably use raycasting for that. The dungeon layout, I followed a tutorial from youtube by 16BitDev to understand how it works. Essentially the rooms are generated as rectangles in a certain location, checking if they overlap. Then halls are generated inbetween using a start/stop location. Theres a few issues with this that I’ll revise tomorrow (or whenever I work on it). Rooms can spawn right next to each other, with one or two walls between, but have no connecting path. I’ll likely set the boundaries so rooms have to be further apart, or if they spawn together, the wall is removed. I’ll try to work on this if I can, but I’ve been occupied with a programming internship and other hobbies, so cya!"}, {"post_id": 5272, "ts": "2026-06-08T23:55:20Z", "hours": 1.0844, "text": "Devlog #3 Today I added a tilemap, and gave the enemy a weapon upon spawn. The tilemap was pretty easy to learn how to do collisions with, making maps easy to make. I’m learning about procedural room generation and how other developers have done it for Godot, so I may make my own for randomly assorted ships. Additionally, since I already worked on the guns to be modular, I was easily able to have it adapt for the enemy. Tomorrow, I hope to have the room generation down :3"}, {"post_id": 3944, "ts": "2026-06-07T02:21:07Z", "hours": 2.7308, "text": "Devlog #2 I added basic guns to the game. I made it modular, so I’m able to easily add in new types that have differing damage, attack speed, sprites, ect. Branching from that, I made projectiles, which can be used for enemy attacks in the future. They too, are modular with sprite, speed, damage, ect. I also made the weapon inventory and hotbar work correctly earlier today! All it does, is store what guns the player has, and displays them on screen at the bottom. The equipped gun is just changed using a input from the corresponding number key of the hotbar slot. I had issues with lag, eventually finding out it was just a print statement about ammo capacity, causing me to change it to a UI element. I hope tomorrow, to get an actual enemy done or procedural generation."}, {"post_id": 2538, "ts": "2026-06-05T02:26:28Z", "hours": 1.9717, "text": "Devlog #1! I’m making a dungeon crawler roguelike set in exploring abandoned spaceships! This will be my second project in the Godot engine. I worked on some of the basic aspects of the gameplay, such as movement, item icons, and weapon handling to get some of the easy stuff out of the way. Hopefully by tomorrow, I’ll be able to make projectiles and expand on the inventory system."}]...
|
Title: Void of Space by @Olorin | Stardance
Devlo Title: Void of Space by @Olorin | Stardance
Devlogs:
Devlog #1! I’m making a dungeon crawler roguelike set in exploring abandoned spaceships! This will be my second project in the Godot engine. I worked on some of the basic aspects of the gameplay, such as movement, item icons, and weapon handling to get some of the easy stuff out of the way. Hopefully by tomorrow, I’ll be able to make projectiles and expand on the inventory system.
Devlog #2 I added basic guns to the game. I made it modular, so I’m able to easily add in new types that have differing damage, attack speed, sprites, ect. Branching from that, I made projectiles, which can be used for enemy attacks in the future. They too, are modular with sprite, speed, damage, ect. I also made the weapon inventory and hotbar work correctly earlier today! All it does, is store what guns the player has, and displays them on screen at the bottom. The equipped gun is just changed using a input from the corresponding number key of the hotbar slot. I had issues with lag, eventually finding out it was just a print statement about ammo capacity, causing me to change it to a UI element. I hope tomorrow, to get an actual enemy done or procedural generation.
Devlog #3 Today I added a tilemap, and gave the enemy a weapon upon spawn. The tilemap was pretty easy to learn how to do collisions with, making maps easy to make. I’m learning about procedural room generation and how other developers have done it for Godot, so I may make my own for randomly assorted ships. Additionally, since I already worked on the guns to be modular, I was easily able to have it adapt for the enemy. Tomorrow, I hope to have the room generation down :3
Devlog 4 I added simple enemy AI, and a randomly generated dungeon layout. The AI was simple, I just made it follow the player and shoot at them if they are in range. Later I want to make them sight based. If they see the player in their line of sight, then they’ll shoot. I’d probably use raycasting for that. The dungeon layout, I followed a tutorial from youtube by 16BitDev to understand how it works. Essentially the rooms are generated as rectangles in a certain location, checking if they overlap. Then halls are generated inbetween using a start/stop location. Theres a few issues with this that I’ll revise tomorrow (or whenever I work on it). Rooms can spawn right next to each other, with one or two walls between, but have no connecting path. I’ll likely set the boundaries so rooms have to be further apart, or if they spawn together, the wall is removed. I’ll try to work on this if I can, but I’ve been occupied with a programming internship and other hobbies, so cya!...
|
1793166453.7595127
|
1793771253.7595127
|
|
27788
|
Self balancing robot- QuadCat by @MaxMadeGG | Star Self balancing robot- QuadCat by @MaxMadeGG | Stardance...
|
MaxMadeGG
|
1
|
0.32
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-21T08:57:47Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The project is now shipped due that the event ends soon and that my ESP32 is dead and the new one arrives too late so i decided to submit what i have, which is the main thing…the working PCB with the FOC loop i created so you can still build the robot because there is basically everything in the repo just the code isn’t done and tuned. Have fun! Made :)", "repo": "https://github.com/MaxMadeGG/Self-balancing-robot--QuadCat", "demo": ""}]...
|
[{"post_id": 72741, "ts": "202 [{"post_id": 72741, "ts": "2026-09-23T17:03:51Z", "hours": 0.3189, "text": "Thank you for the great decision of Hack club and if you guys want to continue following my self balancing robot go to> https://stardance.hackclub.com/projects/65148"}, {"post_id": 70581, "ts": "2026-09-19T12:03:35Z", "hours": 1.5503, "text": "fixed the body and sending to the printer to print it again and i will enjoy two hours changing the filament for color T_T i don’t have the AMS lite thingy XD"}, {"post_id": 70096, "ts": "2026-09-18T13:25:27Z", "hours": 1.4169, "text": "finished the body now printing and let’s hope it works :D"}, {"post_id": 69670, "ts": "2026-09-17T15:26:47Z", "hours": 5.1669, "text": "The new PCB arrived so i was soldering for 2hrs then started making the motors work and after 2hrs i finally managed to make work one then after 1hr i found out that in1 was swapped with EN in the code so that’s why it wasn’t working then made work the servos which worked immediately then made run motors and servos at the same time which worked so wonderful! then started finishing the body-shell which i will finish tomorrow and send to the printer and then i will assemble all and solder all permanently :D hyped for tomorrow"}, {"post_id": 68733, "ts": "2026-09-15T17:16:18Z", "hours": 1.1003, "text": "I made a completely new design(why? check out previous posts)…it’s kinda a box which is not what i wanted but it looks good even not finished :D Btw reminds me of a star-wars robot it wasn’t intentional…still waiting for the new PCB fingers crossed that it arrives before the end of Stardance"}, {"post_id": 68050, "ts": "2026-09-14T13:03:29Z", "hours": 0.4669, "text": "So i’m still making the body and still thinking of how to put the laser sensor at the front that it doesn’t look odd…if you have any ideas then please feel free to tell me in comments :D (this design at the base wasn’t thought that there will be a laser sensor)"}, {"post_id": 67460, "ts": "2026-09-13T15:57:30Z", "hours": 0.5836, "text": "Thinking about how to implement the laser sensors into the body-shell design that it isn’t odd and fixing some stuff in Fusion. I also made a small wooden table next to my desk that i can have more place for my projects. Still waiting for the v2.0 PCB and idk if i will have time to finish this robot before the end of stardance but at least i think i will have a working PCB which is the main thing of the robot"}, {"post_id": 65337, "ts": "2026-09-10T12:42:50Z", "hours": 0.2833, "text": "I unsoldered everything and unplugged. Now waiting that the new PCB v2.0 arrives—–––> if you want to know more: https://youtu.be/JHu94_pjOXo"}, {"post_id": 64916, "ts": "2026-09-09T17:09:01Z", "hours": 0.8167, "text": "After too much problems making the motor want to spin and finding other problems i decided to make a new PCB with all the stuff fixed and reviewed hundreds of times —––> if you want to know more: https://youtu.be/JHu94_pjOXo"}, {"post_id": 63618, "ts": "2026-09-07T15:22:32Z", "hours": 1.5503, "text": "Ok this is funny…i’ve been trying to make work my motors with the custom PCB for 3days and now i found out that the motor i was testing was using the encoder of the other motor that i wasn’t using so yeah pretty stupid lol…and look at the video what i can do with it, i can make spin the other motor by turning one by hand. Anyway i did manage to make work one motor perfectly but the other one is another story and now the battery is dead so i’m charging 😭"}, {"post_id": 60929, "ts": "2026-09-03T16:31:38Z", "hours": 3.6669, "text": "Ok so i finished soldering the stuff on the PCB…i basically was soldering and soldering and soldering…for 3hrs almost 4…ehm anyway now i will code the thing and then let’s see if the PCB works…ah you’re lucky i forgot to post this so you will know if the PCB works…and like yes it works but i have to fix some little problems :)"}, {"post_id": 60362, "ts": "2026-09-02T17:29:39Z", "hours": 0.9667, "text": "The PCB has finally arrived so i started soldering the stuff but it’s late rn so i will finsih tomorrow"}, {"post_id": 59641, "ts": "2026-09-01T15:41:52Z", "hours": 0.3503, "text": "Ok so bad and good news…i have the laser sensors but i destroyed one a little like he works but the small chip is a little cooked so it reads stuff at only max 7cm of it which could work anyway…the bad news…uhh the PCB is stuck somewhere due to douane stuff so it will arrive in one week for the best so it could arrive in one month(next time i order a PCB somewhere in EU never again in china…sorry jlcpcb or pcbway if you wanted to sponsor me)….anyway now i made the part for my robot leg and it’s currently printing so we will see :D"}, {"post_id": 59618, "ts": "2026-09-01T15:14:12Z", "hours": 0.9169, "text": "Hi this is a old thing i have made but because it didn’t sync due to some Hackatime problems i’m posting it today after one week…tho i don’t remember what i did so yeah😅 anyway now i’m gonna model a part in Fusion for my leg and you will know more in the next post!🙃"}, {"post_id": 54497, "ts": "2026-08-25T14:49:47Z", "hours": 2.2503, "text": "So as i said i will make my own FOC controller which turned into a blowed up ESP32…jk jk in fact it worked super nicely it actually works! So now just waiting that the PCB arrives and the laser sensors for wall avidance. and the breakdown of today is: i’m happy https://youtu.be/9f9dHl2CsRY?si=nJjeVBc7lghW3pOh"}, {"post_id": 53839, "ts": "2026-08-24T15:10:11Z", "hours": 0.5333, "text": "Hi guys has been a while since, right? But today i’m back with a new idea for my robot which is adding laser sensors!🌟 For wall avoidance…anyway today i upgraded my PCB to the max fixed all small things that could be a problem and then tried to make the motor spin with simple FOC library but didn’t work 😭yeah didn’t :( after trying to make it work for 4hrs no wait 5hrs i decided that i will make my own thing…we will see in next episode if it will work or not…oh wait i forgot that i managed to make the motors spin without the FOC!!! which was wonderful to see🎉 the code that worked was this one: void setup() { ledcAttach(16, 20000, 8); ledcAttach(17, 20000, 8); ledcAttach(18, 20000, 8); pinMode(33, OUTPUT); digitalWrite(33, HIGH); } void loop() { static int a = 0; ledcWrite(16, 128 + 100 * sin(a * 0.01)); ledcWrite(17, 128 + 100 * sin(a * 0.01 + 2.09)); ledcWrite(18, 128 + 100 * sin(a * 0.01 + 4.19)); a++; delayMicroseconds(200); } also i have a YT and a VID will drop soon so please be sure to sub, thx: https://www.youtube.com/@Made-g4u"}, {"post_id": 43147, "ts": "2026-08-08T07:59:02Z", "hours": 0.6333, "text": "ok i plugged all and i also changed the voltage of the boost converter and it didn’t blow up so that’s great…and now i’m gonna write some code(claude) to test the motor…uhh just for the final complete code i will write it myself. Also if you want to support more my 💩 projects https://www.youtube.com/@Made-g4u"}, {"post_id": 41237, "ts": "2026-08-05T10:04:09Z", "hours": 1.4169, "text": "Updated🛠️ my custom PCB that it fits inside the body. Also next i might fix the model of the body because there are some minor faults that i did. I might maybe retry tomorrow the boost converter with a multimeter that i will buy…uhh yea i don’t have a multimeter😅 anyway if it blows up💥 again😤 after changing the Voltage then the board might have another problem than the Voltage that was wrong…🚮"}, {"post_id": 40722, "ts": "2026-08-04T13:15:47Z", "hours": 2.6675, "text": "Made the body, now it will go to the printer lets hope it works. Also i might finish testing the stuff on the bread board next week or in 1-2 weeks. Tomorrow i will make the wheels i think"}, {"post_id": 39962, "ts": "2026-08-03T09:23:45Z", "hours": 1.0167, "text": "uhh ok this is nice…idk why but the boost converter blow up after i finished plugging all together, no polarity reverse or stuff i just plugged and then after 2 secs pshh 💥pow big 💨smoke going off…so yeah interesting🤔, i will try to change the V of the boost to 10V and then if my other boost converter blows up💥 again then it must be a cheap, low quality one that i bought…this project is the most unlucky one i’m working on so far😢…wish me luck🙏. Below photo of almost all plugged(without the boost)."}, {"post_id": 39362, "ts": "2026-08-02T09:17:57Z", "hours": 0.2669, "text": "prepared stuff that i can start making the main body later because now i wont be at home for some time"}, {"post_id": 38710, "ts": "2026-08-01T07:49:11Z", "hours": 0.3503, "text": "I made a part that i forgot to do."}, {"post_id": 38134, "ts": "2026-07-31T11:13:59Z", "hours": 0.7336, "text": "finishing legs for the robot, next have to make the body and other stuff so lets hope the legs work. Btw i blew up my controller 😅 and found out i forgot to buy smth XD"}, {"post_id": 37506, "ts": "2026-07-30T09:34:58Z", "hours": 0.55, "text": "I created my own Dupont wires because yesterday my wiring wasn’t pretty nice and it didn’t work so lets hope it works now! :D btw it’s pretty a mess all these wires"}, {"post_id": 36994, "ts": "2026-07-29T13:25:37Z", "hours": 0.2833, "text": "soldering and cliping all on a breadboard, i also printed a holder for the motor that i can test all next will finish clip all and then program it"}, {"post_id": 36351, "ts": "2026-07-28T12:28:46Z", "hours": 0.4167, "text": "I’ve made a pcb holder stand that i can weld stuff without headaches. Btw all the parts have arrived so i can continue!"}, {"post_id": 29500, "ts": "2026-07-16T14:04:08Z", "hours": 3.1667, "text": "I was making the pcb that i didn’t finish yet i’m taking a little pause of this stupid unresponsive PC and easyEDA. this is the only screenshot i can show you, i have made more but this…PC doesn’t work i can’t do even ctrl+v or take a screenshot"}, {"post_id": 28858, "ts": "2026-07-15T12:31:18Z", "hours": 0.3675, "text": "i started fixing the body but then realized that i don’t have the physical parts yet so i don’t know the size of them and if i fix it now then i will maybe need to fix it again so it would be a waste of time. So i will wait that the parts arrive and then continue making the body"}, {"post_id": 28788, "ts": "2026-07-15T09:05:55Z", "hours": 0.7508, "text": "I’ve been finalizing the legs a little then looking if it all fits and unfortunately i did some calculation fault somewhere because the body is a little too big like maybe too much. Next i will finish the parts and fix the body size and fix that it’s not all at the front because if you noticed the body is too much at the front so too much weight."}, {"post_id": 27553, "ts": "2026-07-13T07:15:45Z", "hours": 0.6342, "text": "again 3D modeling- almost finished the body"}, {"post_id": 21550, "ts": "2026-07-03T15:54:00Z", "hours": 0.5339, "text": "a little of modeling the body"}, {"post_id": 21504, "ts": "2026-07-03T14:29:36Z", "hours": 0.6667, "text": "i have been modeling the leg parts and a little the main body"}, {"post_id": 20768, "ts": "2026-07-02T13:46:14Z", "hours": 1.8325, "text": "Brainstorming, thinking and a lot of 3D modeling mostly fighting with painful Fusion 360 lolll tired"}]...
|
Title: Self balancing robot- QuadCat by @MaxMadeGG Title: Self balancing robot- QuadCat by @MaxMadeGG | Stardance
Devlogs:
Brainstorming, thinking and a lot of 3D modeling mostly fighting with painful Fusion 360 lolll tired
i have been modeling the leg parts and a little the main body
a little of modeling the body
again 3D modeling- almost finished the body
I’ve been finalizing the legs a little then looking if it all fits and unfortunately i did some calculation fault somewhere because the body is a little too big like maybe too much. Next i will finish the parts and fix the body size and fix that it’s not all at the front because if you noticed the body is too much at the front so too much weight.
i started fixing the body but then realized that i don’t have the physical parts yet so i don’t know the size of them and if i fix it now then i will maybe need to fix it again so it would be a waste of time. So i will wait that the parts arrive and then continue making the body
I was making the pcb that i didn’t finish yet i’m taking a little pause of this stupid unresponsive PC and easyEDA. this is the only screenshot i can show you, i have made more but this…PC doesn’t work i can’t do even ctrl+v or take a screenshot
I’ve made a pcb holder stand that i can weld stuff without headaches. Btw all the parts have arrived so i can continue!
soldering and cliping all on a breadboard, i also printed a holder for the motor that i can test all next will finish clip all and then program it
I created my own Dupont wires because yesterday my wiring wasn’t pretty nice and it didn’t work so lets hope it works now! :D btw it’s pretty a mess all these wires
finishing legs for the robot, next have to make the body and other stuff so lets hope the legs work. Btw i blew up my controller 😅 and found out i forgot to buy smth XD
I made a part that i forgot to do.
prepared stuff that i can start making the main body later because now i wont be at home for some time
uhh ok this is nice…idk why but the boost converter blow up after i finished plugging all together, no polarity reverse or stuff i just plugged and then after 2 secs pshh 💥pow big 💨smoke going off…so yeah interesting🤔, i will try to change the V of the boost to 10V and then if my other boost converter blows up💥 again then it must be a cheap, low quality one that i bought…this project is the most unlucky one i’m working on so far😢…wish me luck🙏. Below photo of almost all plugged(without the boost).
Made the body, now it will go to the printer lets hope it works. Also i might finish testing the stuff on the bread board next week or in 1-2 weeks. Tomorrow i will make the wheels i think
Updated🛠️ my custom PCB that it fits inside the body. Also next i might fix the model of the body because there are some minor faults that i did. I might maybe retry tomorrow the boost converter with a multimeter that i will buy…uhh yea i don’t have a multimeter😅 anyway if it blows up💥 again😤 after changing the Voltage then the board might have another problem than the Voltage that was wrong…🚮
ok i plugged all and i also changed the voltage of the boost converter and it didn’t blow up so that’s great…and now i’m gonna write some code(claude) to test the motor…uhh just for the final complete code i will write it myself. Also if you want to support more my 💩 projects https://www.youtube.com/@Made-g4u
Hi guys has been a while since, right? But today i’m back with a new idea for my robot which is adding laser sensors!🌟 For wall avoidance…anyway today i upgraded my PCB to the max fixed all small things that could be a problem and then tried to make the motor spin with simple FOC library but didn’t work 😭yeah didn’t :( after trying to make it work for 4hrs no wait 5hrs i decided that i will make my own thing…we will see in next episode if it will work or not…oh wait i forgot that i managed to make the motors spin without the FOC!!! which was wonderful to see🎉 the code that worked was this one: void setup() { ledcAttach(16, 20000, 8); ledcAttach(17, 20000, 8); ledcAttach(18, 20000, 8); pinMode(33, OUTPUT); digitalWrite(33, HIGH); } void loop() { static int a = 0; ledcWrite(16, 128 + 100 * sin(a * 0.01)); ledcWrite(17, 128 + 100 * sin(a * 0.01 + 2.09)); ledcWrite(18, 128 + 100 * sin(a * 0.01 + 4.19)); a++; delayMicroseconds(200); } also i have a YT and a VID will drop soon so please be sure to sub, thx: https://www.youtube.com/@Made-g4u
So as i said i will make my own FOC controller which turned into a blowed up ESP32…jk jk in fact it worked super nicely it actually works! So now just waiting that the PCB arrives and the laser sensors for wall avidance. and the breakdown of today is: i’m happy https://youtu.be/9f9dHl2CsRY?si=nJjeVBc7lghW3pOh
Hi this is a old thing i have made but because it didn’t sync due to some Hackatime problems i’m posting it today after one week…tho i don’t remember what i did so yeah😅 anyway now i’m gonna model a part in Fusion for my leg and you will know more in the next post!🙃
Ok so bad and good news…i have the laser sensors but i destroyed one a little like he works but the small chip is a little cooked so it reads stuff at only max 7cm of it which could work anyway…the bad news…uhh the PCB is stuck somewhere due to douane stuff so it will arrive in one week for the best so it could arrive in one month(next time i order a PCB somewhere in EU never again in china…sorry jlcpcb or pcbway if you wanted to sponsor me)….anyway now i made the part for my robot leg and it’s currently printing so we will see :D
The PCB has finally arrived so i started soldering the stuff but it’s late rn so i will finsih tomorrow
Ok so i finished soldering the stuff on the PCB…i basically was soldering and soldering and soldering…for 3hrs almost 4…ehm anyway now i will code the thing and then let’s see if the PCB works…ah you’re lucky i forgot to post this so you will know if the PCB works…and like yes it works but i have to fix some little problems :)
Ok this is funny…i’ve been trying to make work my motors with the custom PCB for 3days and now i found out that the motor i was testing was using the encoder of the other motor that i wasn’t using so yeah pretty stupid lol…and look at the video what i can do with it, i can make spin the other motor by turning one by hand. Anyway i did manage to make work one motor perfectly but the other one is another story and now the battery is dead so i’m charging 😭
After too much problems making the motor want to spin and finding other problems i decided to make a new PCB with all the stuff fixed and reviewed hundreds of times —––> if you want to know more: https://youtu.be/JHu94_pjOXo
I unsoldered everything and unplugged. Now waiting that the new PCB v2.0 arrives—–––> if you want to know more: https://youtu.be/JHu94_pjOXo
Thinking about how to implement the laser sensors into the body-shell design that it isn’t odd and fixing some stuff in Fusion. I also made a small wooden table next to my desk that i can have more place for my projects. Still waiting for the v2.0 PCB and idk if i will have time to finish this robot before the end of stardance but at least i think i will have a working PCB which is the main thing of the robot
So i’m still making the body and still thinking of how to put the laser sensor at the front that it doesn’t look odd…if you have any ideas then please feel free to tell me in comments :D (this design at the base wasn’t thought that there will be a laser sensor)
I made a completely new design(why? check out previous posts)…it’s kinda a box which is not what i wanted but it looks good even not finished :D Btw reminds me of a star-wars robot it wasn’t intentional…still waiting for the new PCB fingers crossed that it arrives before the end of Stardance
The new PCB arrived so i was soldering for 2hrs then started making the motors work and after 2hrs i finally managed to make work one then after 1hr i found out that in1 was swapped with EN in the code so that’s why it wasn’t working then made work the servos which worked immediately then made run motors and servos at the same time which worked so wonderful! then started finishing the body-shell which i will finish tomorrow and send to the printer and then i will assemble all and solder all permanently :D hyped for tomorrow
finished the body now printing and let’s hope it works :D
fixed the body and sending to the printer to print it again and i will enjoy two hours changing the filament for color T_T i don’t have the AMS lite thingy XD
Thank you for the great decision of Hack club and if you guys want to continue following my self balancing robot go to> https://stardance.hackclub.com/projects/65148
Ships:
The project is now shipped due that the event ends soon and that my ESP32 is dead and the new one arrives too late so i decided to submit what i have, which is the main thing…the working PCB with the FOC loop i created so you can still build the robot because there is basically everything in the repo just the code isn’t done and tuned. Have fun! Made :)...
|
1793350411.5334108
|
1793436811.5334108
|
|
65155
|
snowglobe by @willowmovit | Stardance
|
willowmovit
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T17:05:25Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "It’s a website, it was really hard because I tried to add a feature that didn’t end up working, so I had to start over.", "repo": "", "demo": ""}]...
|
[{"post_id": 72744, "ts": "202 [{"post_id": 72744, "ts": "2026-09-23T17:09:59Z", "hours": 5.1292, "text": "I got it working finally"}]...
|
Title: snowglobe by @willowmovit | Stardance
Devl Title: snowglobe by @willowmovit | Stardance
Devlogs:
I got it working finally
Ships:
It’s a website, it was really hard because I tried to add a feature that didn’t end up working, so I had to start over....
|
1793213706.9037101
|
1793300106.9037101
|
|
61483
|
Out of Control! by @endless_ | Stardance
|
endless_
|
0
|
17.11
|
0
|
[]
|
[{"post_id": 72751, "ts": "202 [{"post_id": 72751, "ts": "2026-09-23T17:30:38Z", "hours": 4.4111, "text": "devlog 5!! yooo it’s me againn. What did I do today? Well, since not every day can have major updates and features (cuz you gotta focus on the little stuff too, yk), I mainly did a lot of debugging and level design today; remember the moving platforms? Well, they had a couple (a lot, actually ) of bugs, so I fixed those and made the levels more enjoyable instead of just simply jumping around, cuz this is a kind of rage game, so I made the levels harder; oh yeah, I also added spikes btw (they’re pretty annoying, but that’s the point yk) - tl;dr: i mostly just debugged, level designed, and added spikes (ouu wow spikes very cool, very nice )"}, {"post_id": 72240, "ts": "2026-09-22T14:52:13Z", "hours": 3.235, "text": "hii evb!! im back againnn (sorry for posting after such a while, ive been studying for exams and stuff) so, what did i do today you ask? well, I’ve added the fundamental keybind switching for the game, so basically, your controls switch the second you go to the next level; dont worry, the controls are default (only on the first level tho!) and you can check the new keybinds if you press the left tab key. This genuinely took me so long to get right, but its finally done!!"}, {"post_id": 70140, "ts": "2026-09-18T15:26:30Z", "hours": 2.7928, "text": "yoo, im backk. What’s new? well I added new levels, level transitioning, and respawning if you fall off, and moving platforms! (who doesn’t like moving platforms?). the below image is level 2 btw"}, {"post_id": 68289, "ts": "2026-09-14T21:14:02Z", "hours": 5.3711, "text": "hey yall! thank you so much for all the appreciation on the last post!:) Now, to get into the devlog; I had to start over because my files got corrupted ;-; Imean the scripts were rlly buggy too so, that took me a lot of time🤷♂️ plus the new one looks better anyways; Iguess starting over benefited. What did I do tday? Well, I fixed my sprite design(it had a really annoying thin white border around it which was really irritating to look at while gameplay. I fixed my movement and made GetAxisRaw into GetAxis , so the movement is more fluid instead of being snappy and “ Raw ” (see what idid there?👀). I made the jumps more natural instead of being all floaty. Added groundCheck (so spamming spacebar doesn’t send you off to space yk); and, made the platforms more pleasing to look at. phew, there’s alot more that’s otw so the next devlog will probably be quicker than the previous one, and because I’ve got my exams on the 29th, so ihave to finish this as soon as possible!! —– tl;dr: my files were corrupted and buggy so iremade everything, debugged it, cleaned it up, and made it look better. _______________________________________________________________________________ ps: if you’re reading this and you read the entire thing: tysm! ireally appreciate you, as this is my first time ever posting something like this, and all of your support really pushes me forward to finish what I’ve started and make this project come to life!!"}, {"post_id": 66924, "ts": "2026-09-12T21:59:57Z", "hours": 1.2992, "text": "hi evb! This is my first ever devlog!! im making a game called “Out of Control!” It’s a 2D platfomer that looks similar to Geometry Dash, except the controls randomly switch after every level, as this was my first day working on it i made the bare bones of the game: movement, jumping, and respawning. (i also made the basic sprite for the player)"}]...
|
Title: Out of Control! by @endless_ | Stardance
D Title: Out of Control! by @endless_ | Stardance
Devlogs:
hi evb! This is my first ever devlog!! im making a game called “Out of Control!” It’s a 2D platfomer that looks similar to Geometry Dash, except the controls randomly switch after every level, as this was my first day working on it i made the bare bones of the game: movement, jumping, and respawning. (i also made the basic sprite for the player)
hey yall! thank you so much for all the appreciation on the last post!:) Now, to get into the devlog; I had to start over because my files got corrupted ;-; Imean the scripts were rlly buggy too so, that took me a lot of time🤷♂️ plus the new one looks better anyways; Iguess starting over benefited. What did I do tday? Well, I fixed my sprite design(it had a really annoying thin white border around it which was really irritating to look at while gameplay. I fixed my movement and made GetAxisRaw into GetAxis , so the movement is more fluid instead of being snappy and “ Raw ” (see what idid there?👀). I made the jumps more natural instead of being all floaty. Added groundCheck (so spamming spacebar doesn’t send you off to space yk); and, made the platforms more pleasing to look at. phew, there’s alot more that’s otw so the next devlog will probably be quicker than the previous one, and because I’ve got my exams on the 29th, so ihave to finish this as soon as possible!! —– tl;dr: my files were corrupted and buggy so iremade everything, debugged it, cleaned it up, and made it look better. _______________________________________________________________________________ ps: if you’re reading this and you read the entire thing: tysm! ireally appreciate you, as this is my first time ever posting something like this, and all of your support really pushes me forward to finish what I’ve started and make this project come to life!!
yoo, im backk. What’s new? well I added new levels, level transitioning, and respawning if you fall off, and moving platforms! (who doesn’t like moving platforms?). the below image is level 2 btw
hii evb!! im back againnn (sorry for posting after such a while, ive been studying for exams and stuff) so, what did i do today you ask? well, I’ve added the fundamental keybind switching for the game, so basically, your controls switch the second you go to the next level; dont worry, the controls are default (only on the first level tho!) and you can check the new keybinds if you press the left tab key. This genuinely took me so long to get right, but its finally done!!
devlog 5!! yooo it’s me againn. What did I do today? Well, since not every day can have major updates and features (cuz you gotta focus on the little stuff too, yk), I mainly did a lot of debugging and level design today; remember the moving platforms? Well, they had a couple (a lot, actually ) of bugs, so I fixed those and made the levels more enjoyable instead of just simply jumping around, cuz this is a kind of rage game, so I made the levels harder; oh yeah, I also added spikes btw (they’re pretty annoying, but that’s the point yk) - tl;dr: i mostly just debugged, level designed, and added spikes (ouu wow spikes very cool, very nice )...
|
1793040639.4834309
|
1793645439.4834309
|
|
61826
|
Self Car by @troksaroberts | Stardance
|
troksaroberts
|
1
|
14.0
|
191
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T17:55:23Z", "hours": 14.0, "multiplier": 13.38, "payout": 191, "blessing": "neutral", "text": "I made a neural network where cars try to ride fast The goal is to tech AI to ride this track as fast aspossible using only three sensors as a data. Challenging part was optimization and simulation. In a matter of fact making neural network was easy, making a correct point system and simulation was hard. I am proud of graph and saving system, it looks so slick, it add up ‘spice’ to the project. By pressing Try project there will be a short video guide on how to run this project locally. Its really simple - only takes 4 commands to run if you have python installed.", "repo": "https://github.com/RobertsRob/SelfCar", "demo": "https://github.com/RobertsRob/SelfCar/releases/tag/1.0"}]...
|
[{"post_id": 72755, "ts": "202 [{"post_id": 72755, "ts": "2026-09-23T17:50:34Z", "hours": 3.8636, "text": "SAVE BEST ONE Now you can save models and choose from the 14 best ones. They are saved in models folder and you can even send them to your friends (send whole folder). You can also load saved models with “L” and save with “S”, to choose between different models use arrow keys. Now DIF_MODE - if you would turn on this option two segments on inner circle will stick out so now its harder to ride a car."}, {"post_id": 70755, "ts": "2026-09-19T18:20:14Z", "hours": 2.4044, "text": "They are smart now Neural network is really good now. It is a race car. Changes: I added graph to visualize best score I removed deltaTime - time between frames, so simulations doesnt depends on it Improved vizualisation In neural network I removed direction as parametr so now car learns how to drive instead of remembering track"}, {"post_id": 70162, "ts": "2026-09-18T16:31:43Z", "hours": 3.6506, "text": "ITS ALIVE A lot of changes has been made - firs of all is reward system - all these dim green lines are checkpoints, for crossing them neural network get a reward. Then of course I implementer AI itself. Now it spawn a 100 cars and chooses the best each generation. Also cars receive a benefit when they ride each lap faster. So riding faster is also a plus. I increased size of cars to make them a bit more realistic. There is a video of already trained generations which shows what a generation looks like. They all disappear because I set so max amount of laps they can go is three, so new generation is created, because old one wouldnt crash. There are a lot of thing to add still, like better physics, model saving and training for variety of tracks not only for one."}, {"post_id": 68724, "ts": "2026-09-15T17:00:57Z", "hours": 4.3342, "text": "Base for machine learnign In this devlog I prepared everything to start teaching machines how to ride a car - the car was prepared for them. What has been done: Track generation - trach is 4 mathematic functions that create 1000 line segments in total to serve as walls. Optimized ray logic - car will have only 3 sensors (green) that will tell distance till wall Car class itself - for optimization i wont have 1000s of car object but in the class there will be stored vectorized information about all cars operating with numpy Visual part - I will render only one car, but under the hood there will be much more cars training."}]...
|
Title: Self Car by @troksaroberts | Stardance
Dev Title: Self Car by @troksaroberts | Stardance
Devlogs:
Base for machine learnign In this devlog I prepared everything to start teaching machines how to ride a car - the car was prepared for them. What has been done: Track generation - trach is 4 mathematic functions that create 1000 line segments in total to serve as walls. Optimized ray logic - car will have only 3 sensors (green) that will tell distance till wall Car class itself - for optimization i wont have 1000s of car object but in the class there will be stored vectorized information about all cars operating with numpy Visual part - I will render only one car, but under the hood there will be much more cars training.
ITS ALIVE A lot of changes has been made - firs of all is reward system - all these dim green lines are checkpoints, for crossing them neural network get a reward. Then of course I implementer AI itself. Now it spawn a 100 cars and chooses the best each generation. Also cars receive a benefit when they ride each lap faster. So riding faster is also a plus. I increased size of cars to make them a bit more realistic. There is a video of already trained generations which shows what a generation looks like. They all disappear because I set so max amount of laps they can go is three, so new generation is created, because old one wouldnt crash. There are a lot of thing to add still, like better physics, model saving and training for variety of tracks not only for one.
They are smart now Neural network is really good now. It is a race car. Changes: I added graph to visualize best score I removed deltaTime - time between frames, so simulations doesnt depends on it Improved vizualisation In neural network I removed direction as parametr so now car learns how to drive instead of remembering track
SAVE BEST ONE Now you can save models and choose from the 14 best ones. They are saved in models folder and you can even send them to your friends (send whole folder). You can also load saved models with “L” and save with “S”, to choose between different models use arrow keys. Now DIF_MODE - if you would turn on this option two segments on inner circle will stick out so now its harder to ride a car.
Ships:
I made a neural network where cars try to ride fast The goal is to tech AI to ride this track as fast aspossible using only three sensors as a data. Challenging part was optimization and simulation. In a matter of fact making neural network was easy, making a correct point system and simulation was hard. I am proud of graph and saving system, it looks so slick, it add up ‘spice’ to the project. By pressing Try project there will be a short video guide on how to run this project locally. Its really simple - only takes 4 commands to run if you have python installed....
|
1793209820.932789
|
1793296220.932789
|
|
63057
|
Plint by @hacha-mouse | Stardance
|
hacha-mouse
|
0
|
36.09
|
0
|
[]
|
[{"post_id": 72756, "ts": "202 [{"post_id": 72756, "ts": "2026-09-23T17:51:18Z", "hours": 0.4306, "text": "Rewritten the README My previous project was rejected multiple times due to suspected AI usage, though I didn’t use AI to generate my README. So this time, I recorded the entire process when writing the README and made a timelapse of it."}, {"post_id": 72747, "ts": "2026-09-23T17:15:07Z", "hours": 1.6453, "text": "Added an Example Ruleset I’ve added an example ruleset for reviewers and raters (I don’t know what they are named) to test my linting language quickly without writing one themselves. The program on the screenshot is a rule that flags headings that are not continuous from the previous headings (like jumping from H1 to H3). Honestly, this language is way more expressive than I first thought. I thought it would be impossible to detect skipping levels, but it could."}, {"post_id": 71678, "ts": "2026-09-21T09:16:26Z", "hours": 0.3561, "text": "Wrote README I created README.md and added some information to it. I also added a sample linter program: for sentence in sentences(doc) ( length = char_count(doc, sentence) words = word_count(doc, sentence) has_hedging = or( contains(doc, sentence, \"I think\"), contains(doc, sentence, \"I believe\"), contains(doc, sentence, \"perhaps\"), contains(doc, sentence, \"probably\") ) if and( gt(length, 100), gt(words, 15), has_hedging ) ( sentence ) )"}, {"post_id": 71671, "ts": "2026-09-21T08:49:38Z", "hours": 1.7808, "text": "Implemented Result Formatting I’ve implemented the print logic of the lint result. I used owo-colors to colorize the output."}, {"post_id": 71487, "ts": "2026-09-20T22:11:20Z", "hours": 1.8147, "text": "Linting With Custom DSL I’ve completed implementing my custom language for linting documents, and I added a few more functions to it. Sample program: for match in sentences(doc) ( if gt(char_count(doc, match), 100) ( match ) ) In this language, for and if are statements. This means that they can return values. for collects non-null values and returns the list of values. if returns the value if it exists, and null if the value is not returned in it or the condition is false. My plint CLI shows the errors on the position of the returned matches."}, {"post_id": 71423, "ts": "2026-09-20T19:54:19Z", "hours": 6.6497, "text": "Implemented Linting Language I’ve implement the parser and the interpreter for my custom linting language. I have some experience making custom language and this is not my first time doing that so it was quite easy and it took no longer than 10 hours to implement this."}, {"post_id": 70740, "ts": "2026-09-19T17:57:39Z", "hours": 1.9597, "text": "Added Commands I implemented a few more commands: ruleset check : Check if the ruleset is valid ruleset create : Create a new ruleset ruleset edit : Open the ruleset YAML file in the default editor ruleset list : List all rulesets group create : Create a new group group edit : Open the group YAML file in the default editor group add-set : Add the ruleset to the group group remove-set : Remove the ruleset from the group group list : List all groups"}, {"post_id": 70538, "ts": "2026-09-19T10:24:20Z", "hours": 0.3789, "text": "Added check command I added ruleset check command to check if the ruleset is valid. The error message is not yet implemented so it just shows the error using Debug , but I’ll change it later."}, {"post_id": 70521, "ts": "2026-09-19T09:57:50Z", "hours": 11.4078, "text": "Removed Interactive Editing You may wonder why I removed it after more than 5 hours of coding. Here’s why. I wanted to achieve something like this: Ruleset > Name: rule-foo-bar Authors: Alice Description: This is a placeholder description. Version: 1 Edit Rules ← Back I tried inquire and Ratatui to implement this. However, both of them was not suitable for this after all. inquire inquire is a very simple crate to ask users some question on CLI. The main problem was that I could not add multiple fields and let user edit multiple fields in the same screen (like above), which means that the implementation had to be like this: Select what to edit > Name Authors Description Version Back and I wanted to avoid this. Ratatui Ratatui is a crate to build a “TUI” application in Rust. It is very powerful, but I found it a bit over-engineered for my use case. Also, it is mainly designed for full-screen terminal application and was not suitable for inline CLI application like mine. Making a CLI Library Myself I also tried to make a CLI library myself, but I decided not to do so. (You can find my library repository here .) I used crossterm and I had to calculate the position of the cursor, characters and I also had to count unicode characters and calculate the widths for them. I thought that this was not worth it, especially because I didn’t have so much time before the summer break ends. For now, I decided to make edit command just open the default editor and implement other things, and make the CLI after adding all other essential features."}, {"post_id": 70004, "ts": "2026-09-18T08:06:17Z", "hours": 3.4328, "text": "Use inquire for interactive ruleset creation I added inquire to the dependency and used it to ask the name, the authors, the description and the version of the new ruleset when creating a ruleset."}, {"post_id": 69831, "ts": "2026-09-17T21:22:19Z", "hours": 1.6608, "text": "Conditional linting I’ve added conditions so that the linter can use the returned value from the checker to determine whether to show an error. Currently, condition includes eq , neq , gt , gte , lt , lte , and , or , and not ."}, {"post_id": 69784, "ts": "2026-09-17T19:39:07Z", "hours": 2.1836, "text": "Implemented Linting & Testing I added the basic linting logic and I tested if it works. As you can see in the video, linting works nicely and it successfully returns the matches. Here’s the example rule set I used in the video: name : basic-ruleset description : This is a basic ruleset. version : 1 rules : - id : no-hello message : ' \"hello\" is not allowed.' severity : error checker : std.regex args : pattern : hello - id : invalid-hello message : ' \"helloooo\" is not allowed.' severity : error checker : std.regex args : pattern : helloooo"}, {"post_id": 69686, "ts": "2026-09-17T16:03:44Z", "hours": 0.9636, "text": "Finished Condition enum I’ve implemented Condition enum used to evaluate the result of the checkers and decide whether to show an error in the ruleset. Next I’m going to add the YAML loading feature"}, {"post_id": 69632, "ts": "2026-09-17T13:30:15Z", "hours": 1.4264, "text": "Checker trait I initialized the project structure and added basic types & traits. I also added RegexChecker that returns the matches of the given regular expression."}]...
|
Title: Plint by @hacha-mouse | Stardance
Devlogs: Title: Plint by @hacha-mouse | Stardance
Devlogs:
Checker trait I initialized the project structure and added basic types & traits. I also added RegexChecker that returns the matches of the given regular expression.
Finished Condition enum I’ve implemented Condition enum used to evaluate the result of the checkers and decide whether to show an error in the ruleset. Next I’m going to add the YAML loading feature
Implemented Linting & Testing I added the basic linting logic and I tested if it works. As you can see in the video, linting works nicely and it successfully returns the matches. Here’s the example rule set I used in the video: name : basic-ruleset description : This is a basic ruleset. version : 1 rules : - id : no-hello message : ' "hello" is not allowed.' severity : error checker : std.regex args : pattern : hello - id : invalid-hello message : ' "helloooo" is not allowed.' severity : error checker : std.regex args : pattern : helloooo
Conditional linting I’ve added conditions so that the linter can use the returned value from the checker to determine whether to show an error. Currently, condition includes eq , neq , gt , gte , lt , lte , and , or , and not .
Use inquire for interactive ruleset creation I added inquire to the dependency and used it to ask the name, the authors, the description and the version of the new ruleset when creating a ruleset.
Removed Interactive Editing You may wonder why I removed it after more than 5 hours of coding. Here’s why. I wanted to achieve something like this: Ruleset > Name: rule-foo-bar Authors: Alice Description: This is a placeholder description. Version: 1 Edit Rules ← Back I tried inquire and Ratatui to implement this. However, both of them was not suitable for this after all. inquire inquire is a very simple crate to ask users some question on CLI. The main problem was that I could not add multiple fields and let user edit multiple fields in the same screen (like above), which means that the implementation had to be like this: Select what to edit > Name Authors Description Version Back and I wanted to avoid this. Ratatui Ratatui is a crate to build a “TUI” application in Rust. It is very powerful, but I found it a bit over-engineered for my use case. Also, it is mainly designed for full-screen terminal application and was not suitable for inline CLI application like mine. Making a CLI Library Myself I also tried to make a CLI library myself, but I decided not to do so. (You can find my library repository here .) I used crossterm and I had to calculate the position of the cursor, characters and I also had to count unicode characters and calculate the widths for them. I thought that this was not worth it, especially because I didn’t have so much time before the summer break ends. For now, I decided to make edit command just open the default editor and implement other things, and make the CLI after adding all other essential features.
Added check command I added ruleset check command to check if the ruleset is valid. The error message is not yet implemented so it just shows the error using Debug , but I’ll change it later.
Added Commands I implemented a few more commands: ruleset check : Check if the ruleset is valid ruleset create : Create a new ruleset ruleset edit : Open the ruleset YAML file in the default editor ruleset list : List all rulesets group create : Create a new group group edit : Open the group YAML file in the default editor group add-set : Add the ruleset to the group group remove-set : Remove the ruleset from the group group list : List all groups
Implemented Linting Language I’ve implement the parser and the interpreter for my custom linting language. I have some experience making custom language and this is not my first time doing that so it was quite easy and it took no longer than 10 hours to implement this.
Linting With Custom DSL I’ve completed implementing my custom language for linting documents, and I added a few more functions to it. Sample program: for match in sentences(doc) ( if gt(char_count(doc, match), 100) ( match ) ) In this language, for and if are statements. This means that they can return values. for collects non-null values and returns the list of values. if returns the value if it exists, and null if the value is not returned in it or the condition is false. My plint CLI shows the errors on the position of the returned matches.
Implemented Result Formatting I’ve implemented the print logic of the lint result. I used owo-colors to colorize the output.
Wrote README I created README.md and added some information to it. I also added a sample linter program: for sentence in sentences(doc) ( length = char_count(doc, sentence) words = word_count(doc, sentence) has_hedging = or( contains(doc, sentence, "I think"), contains(doc, sentence, "I believe"), contains(doc, sentence, "perhaps"), contains(doc, sentence, "probably") ) if and( gt(length, 100), gt(words, 15), has_hedging ) ( sentence ) )
Added an Example Ruleset I’ve added an example ruleset for reviewers and raters (I don’t know what they are named) to test my linting language quickly without writing one themselves. The program on the screenshot is a rule that flags headings that are not continuous from the previous headings (like jumping from H1 to H3). Honestly, this language is way more expressive than I first thought. I thought it would be impossible to detect skipping levels, but it could.
Rewritten the README My previous project was rejected multiple times due to suspected AI usage, though I didn’t use AI to generate my README. So this time, I recorded the entire process when writing the README and made a timelapse of it....
|
1793048006.0408108
|
1793652806.0408108
|
|
21938
|
lockrs by @confused-ace-noises | Stardance
|
confused-ace-noises
|
2
|
49.0
|
865
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T18:19:09Z", "hours": 16.0, "multiplier": 15.58, "payout": 249, "blessing": "neutral", "text": "This ship adds some new functionality! Namely, the ability to take a screenshot of the lockscreen (if you dont want this, it can be disabled through the disabling of the default screenshot feature), new builtin widgets, and some stuff buried a bit more deeply in the logic, such as adding a worker thread for slow operations, fixing some bad output-dependant handling and adding support for more keyboard keys. The most challenging thing about this ship was trying to understand how to make vulkan play nice with ext_session_lock_v1 when setting the buffer scaling, it took me a long time for like- no reason TuT. Anyways, here’s two screenshots of lockscreens i made while developing lockrs:", "repo": "https://github.com/confused-ace-noises/lockrs/", "demo": "https://crates.io/crates/lockrs"}, {"ship_num": 2, "ts": "2026-06-30T14:45:51Z", "hours": 33.0, "multiplier": 18.69, "payout": 616, "blessing": "neutral", "text": "Lockrs is a library that aims to make Wayland screen lockers as customizable as possible. First of all, it’s written in the Rust language, and it’s essentially an implementation of the egui crate for lock screen surfaces; This means it can be truly used for anything (or well, anything egui can possibly do). This project was born out of frustration of the little customizability that other projects offer, relying at most on a simple config file to define everything. It is based on the wayland-client, wgpu and egui crates, which make it compatible with practically any modern Wayland compositor (to be specific, all compositors implementing the ext-session-lock-v1 protocol); using wayland-client was quite hard, as it was really my first time making something that supports graphics and juggling communications with an outside application in the meantime. I think this project was very successful in helping me learn about how Wayland works, and a little bit of how rendering works too. Overall, I’m quite proud of how it turned out, and i have already made my own lock screen (see picture below).", "repo": "https://github.com/confused-ace-noises/lockrs/", "demo": "https://crates.io/crates/lockrs"}]...
|
[{"post_id": 72759, "ts": "202 [{"post_id": 72759, "ts": "2026-09-23T17:56:49Z", "hours": 0.5272, "text": "Reviewed the code before the ship! noting much to report, i’ll just put the new lockscreen again"}, {"post_id": 71234, "ts": "2026-09-20T14:25:17Z", "hours": 10.2025, "text": "A lot of big changes! these 10 hours of coding felt like a constant rabbit hole, but i finally fixed all the things i found TuT. First of all, i made some new widgets: namely, a text input for the password that reserves space for the “login failed” failure text, an uptime widget and widget that fetches the default network interface. While making an example lock screen using these new widgets, i noticed that taking a screenshot was just a huge pain; One had to go do gpu texture copying magic and it was just A Bad Time in general. So, i decided to bake that functionality into lockrs itself, so now there’s a screenshot feature (enabled by default) which makes it able to save screenshots. But while implementing the screenshot feature, i noticed that there were some inconsistencies in the multiple output logic and in the buffer scaling logic, so i fixed those (this took surprisingly long :p). After implementing that, i went to take that screenshot, and noticed that the UI would freeze for a bit while the disk I/O of saving the image was running. This was quite annoying, so i also decided to make a whole ass worker thread that handles password checking (which also used to hang the UI thread, albeit for a short time) and to save the screenshot. Anyways, after this journey of a few days of coding, here’s the example screenshot, finally: P.S.: while trying to put an image here, firefox crashed and i had to rewrite this whole thing… to anyone seeing this, save your devlogs somewhere before adding pics :p"}, {"post_id": 61515, "ts": "2026-09-04T13:55:26Z", "hours": 5.4758, "text": "Well, im at it again with this project. I took quite a long break to make another project, and now have had the time to come back to this. I’ve finally written some in-depth docs, and will review them later today with a fresh mind to be sure that they’re as right as possible. I also fixed a design flaw, but im not very sure if how i did it really fixed it. Before, this is the old way it’s doing it: app .ui (| _ , ui | { // put stuff inside some ui levels egui :: CentralPanel :: default () .frame ( egui :: Frame :: NONE ) .show ( ui , | ui | { // maybe make new ui levels // inside the levels, return TryExit TryExit :: Force }) .inner.inner.inner //as many .inner as ui levels // TryExit is in, because you need to return the inner TryExit }) this felt extremely clunky. So, i solved it like this: // mutable reference to a TryExit app .ui (| _ , ui , exit : & mut TryExit | { // as many levels as you want egui :: CentralPanel :: default () .frame ( egui :: Frame :: NONE ) .show ( ui , | ui | { // instead of returning it, mutate the passed-in reference * exit = TryExit :: Force ; }); // no need to return anything, so no .inner }) this feels a bit better, but idrk still. For the time being, the API will be the latter. Anyways, have a look at the new docs:"}, {"post_id": 19151, "ts": "2026-06-30T12:13:07Z", "hours": 5.495, "text": "After taking a small break, i finally finished this project. I decided to turn it into a library instead of a really customizable lockscreen, because what would be the purpose in making something that could very well work in any number of ways and then limiting it to a few widgets? I’m quite satisfied with how it turned out, even if there are a few rough spots. Also, i decided to license it under MIT or Apache 2.0, as per convention for rust libraries. In the end, i’ll be definitely using lockrs, and i hope some other people will too."}, {"post_id": 15087, "ts": "2026-06-24T14:53:06Z", "hours": 3.2564, "text": "I managed to add PAM authentication. I also tried to add support for shaders and in general gpu work, and discovering i bit off way more than i can chew, i just decided not to. So, i tried to add a background, but i stumbled upon an obstacle which sent me diving into egui’s source code, because it kept claiming that it couldn’t load images with side bigger than 2048px; turns out this is only a limitation of the WebGPU API, that, as the name suggests, runs on browsers, not on desktops. Anyways, after a lot of fiddling with egui’s components, i managed to make it use images with sides up to 8000px. Now i’ll probably customize the bar a little, and maybe make a few egui widgets for it."}, {"post_id": 14354, "ts": "2026-06-23T13:37:48Z", "hours": 9.2189, "text": "After wrecking my mind unnecessarily over how to handle pointer events for a ridiculous amount of time, I finally got something that somehow works; now i also have a working text input! It just prints the input to the terminal for now, but I’ll be messing with PAM a bit to do authentication now. wish me luck!"}, {"post_id": 12838, "ts": "2026-06-21T00:42:13Z", "hours": 8.1453, "text": "I finally got the keyboard to work! for now, it just exits as soon as a key is pressed, but i’m working on implementing full functionality. also, now the code is much much cleaner, properly divided in functions instead of being all chucked into main. I don’t really have a way to display this with a screenshot, so i’ll just reuse an old one unfortunately :p"}, {"post_id": 11926, "ts": "2026-06-19T13:25:36Z", "hours": 2.0419, "text": "Well, i managed to render to the lock screen with egui instead of using the raw buffer; for now, it’s still a mess of spaghetti code that barely works and will turn into a footgun very quickly if i don’t get working on the lower level part of it instead of throwing stuff at the wall and seeing if it sticks. The next step is tidying the code up instead of throwing everything into main, so that i can get some customization going. Also, i should probably add the authentication part of the lock screen instead of having it unlock after a few seconds."}, {"post_id": 11649, "ts": "2026-06-19T00:01:07Z", "hours": 4.8064, "text": "I finished a first proof of concept for wl-lock; right now, it locks the user out for two seconds while displaying a mauve screen. For now, it’s still fully cpu rendered, but i plan on adding gpu-accelerated background blur and general effects. The next step is hooking egui into it!"}]...
|
Title: lockrs by @confused-ace-noises | Stardance
Title: lockrs by @confused-ace-noises | Stardance
Devlogs:
I finished a first proof of concept for wl-lock; right now, it locks the user out for two seconds while displaying a mauve screen. For now, it’s still fully cpu rendered, but i plan on adding gpu-accelerated background blur and general effects. The next step is hooking egui into it!
Well, i managed to render to the lock screen with egui instead of using the raw buffer; for now, it’s still a mess of spaghetti code that barely works and will turn into a footgun very quickly if i don’t get working on the lower level part of it instead of throwing stuff at the wall and seeing if it sticks. The next step is tidying the code up instead of throwing everything into main, so that i can get some customization going. Also, i should probably add the authentication part of the lock screen instead of having it unlock after a few seconds.
I finally got the keyboard to work! for now, it just exits as soon as a key is pressed, but i’m working on implementing full functionality. also, now the code is much much cleaner, properly divided in functions instead of being all chucked into main. I don’t really have a way to display this with a screenshot, so i’ll just reuse an old one unfortunately :p
After wrecking my mind unnecessarily over how to handle pointer events for a ridiculous amount of time, I finally got something that somehow works; now i also have a working text input! It just prints the input to the terminal for now, but I’ll be messing with PAM a bit to do authentication now. wish me luck!
I managed to add PAM authentication. I also tried to add support for shaders and in general gpu work, and discovering i bit off way more than i can chew, i just decided not to. So, i tried to add a background, but i stumbled upon an obstacle which sent me diving into egui’s source code, because it kept claiming that it couldn’t load images with side bigger than 2048px; turns out this is only a limitation of the WebGPU API, that, as the name suggests, runs on browsers, not on desktops. Anyways, after a lot of fiddling with egui’s components, i managed to make it use images with sides up to 8000px. Now i’ll probably customize the bar a little, and maybe make a few egui widgets for it.
After taking a small break, i finally finished this project. I decided to turn it into a library instead of a really customizable lockscreen, because what would be the purpose in making something that could very well work in any number of ways and then limiting it to a few widgets? I’m quite satisfied with how it turned out, even if there are a few rough spots. Also, i decided to license it under MIT or Apache 2.0, as per convention for rust libraries. In the end, i’ll be definitely using lockrs, and i hope some other people will too.
Well, im at it again with this project. I took quite a long break to make another project, and now have had the time to come back to this. I’ve finally written some in-depth docs, and will review them later today with a fresh mind to be sure that they’re as right as possible. I also fixed a design flaw, but im not very sure if how i did it really fixed it. Before, this is the old way it’s doing it: app .ui (| _ , ui | { // put stuff inside some ui levels egui :: CentralPanel :: default () .frame ( egui :: Frame :: NONE ) .show ( ui , | ui | { // maybe make new ui levels // inside the levels, return TryExit TryExit :: Force }) .inner.inner.inner //as many .inner as ui levels // TryExit is in, because you need to return the inner TryExit }) this felt extremely clunky. So, i solved it like this: // mutable reference to a TryExit app .ui (| _ , ui , exit : & mut TryExit | { // as many levels as you want egui :: CentralPanel :: default () .frame ( egui :: Frame :: NONE ) .show ( ui , | ui | { // instead of returning it, mutate the passed-in reference * exit = TryExit :: Force ; }); // no need to return anything, so no .inner }) this feels a bit better, but idrk still. For the time being, the API will be the latter. Anyways, have a look at the new docs:
A lot of big changes! these 10 hours of coding felt like a constant rabbit hole, but i finally fixed all the things i found TuT. First of all, i made some new widgets: namely, a text input for the password that reserves space for the “login failed” failure text, an uptime widget and widget that fetches the default network interface. While making an example lock screen using these new widgets, i noticed that taking a screenshot was just a huge pain; One had to go do gpu texture copying magic and it was just A Bad Time in general. So, i decided to bake that functionality into lockrs itself, so now there’s a screenshot feature (enabled by default) which makes it able to save screenshots. But while implementing the screenshot feature, i noticed that there were some inconsistencies in the multiple output logic and in the buffer scaling logic, so i fixed those (this took surprisingly long :p). After implementing that, i went to take that screenshot, and noticed that the UI would freeze for a bit while the disk I/O of saving the image was running. This was quite annoying, so i also decided to make a whole ass worker thread that handles password checking (which also used to hang the UI thread, albeit for a short time) and to save the screenshot. Anyways, after this journey of a few days of coding, here’s the example screenshot, finally: P.S.: while trying to put an image here, firefox crashed and i had to rewrite this whole thing… to anyone seeing this, save your devlogs somewhere before adding pics :p
Reviewed the code before the ship! noting much to report, i’ll just put the new lockscreen again
Ships:
Lockrs is a library that aims to make Wayland screen lockers as customizable as possible. First of all, it’s written in the Rust language, and it’s essentially an implementation of the egui crate for lock screen surfaces; This means it can be truly used for anything (or well, anything egui can possibly do). This project was born out of frustration of the little customizability that other projects offer, relying at most on a simple config file to define everything. It is based on the wayland-client, wgpu and egui crates, which make it compatible with practically any modern Wayland compositor (to be specific, all compositors implementing the ext-session-lock-v1 protocol); using wayland-client was quite hard, as it was really my first time making something that supports graphics and juggling communications with an outside application in the meantime. I think this project was very successful in helping me learn about how Wayland works, and a little bit of how rendering works too. Overall, I’m quite proud of how it turned out, and i have already made my own lock screen (see picture below).
This ship adds some new functionality! Namely, the ability to take a screenshot of the lockscreen (if you dont want this, it can be disabled through the disabling of the default screenshot feature), new builtin widgets, and some stuff buried a bit more deeply in the logic, such as adding a worker thread for slow operations, fixing some bad output-dependant handling and adding support for more keyboard keys. The most challenging thing about this ship was trying to understand how to make vulkan play nice with ext_session_lock_v1 when setting the buffer scaling, it took me a long time for like- no reason TuT. Anyways, here’s two screenshots of lockscreens i made while developing lockrs:...
|
1793242174.2687666
|
1793328574.2687666
|
|
17096
|
Hackatime Aseprite Documentation by @Saatvik_K | S Hackatime Aseprite Documentation by @Saatvik_K | Stardance...
|
Saatvik_K
|
0
|
0.95
|
0
|
[]
|
[{"post_id": 7276, "ts": "2026 [{"post_id": 7276, "ts": "2026-06-12T04:06:12Z", "hours": 0.9483, "text": "Aseprite Hackatime Documentation TL;DR Found Aseprite plugin for hackatime Waketime-Aseprite made by espcaa Added Aseprite documentation to Hackatime repo on how to setup this plugin Submitted pull request and currently under review Long Version I noticed on #stardance-help that there were many people asking how to track time for using Aseprite, which is a fairly large editor for art/drawing. Although lapse could be used for this, I also found an Aseprite plugin creating by espcaa that tracks time in the Hackatime Dashboard. There was no mention of this in the official Hackatime website Docs so I decided to add it myself. I added the aseprite.md file which contains all the setup instructions, the aseprite-128.png which contains the Aseprite Logo, and added the aseprite entry to the list of editors in app/controllers/docs_controller.rb . After testing using docker, it does appear to work and I have created the PR request and it is under review. There were some fixes to be made by Greptile involving my steps for API configuration, wakatime vs hackatime, and spacing, but they have all been resolved. I’m hoping it gets accepted and would love to help more people learn about how to set up Aseprite with Hackatime. Special thanks to espcaa for creating the original plugin!"}]...
|
Title: Hackatime Aseprite Documentation by @Saatvi Title: Hackatime Aseprite Documentation by @Saatvik_K | Stardance
Devlogs:
Aseprite Hackatime Documentation TL;DR Found Aseprite plugin for hackatime Waketime-Aseprite made by espcaa Added Aseprite documentation to Hackatime repo on how to setup this plugin Submitted pull request and currently under review Long Version I noticed on #stardance-help that there were many people asking how to track time for using Aseprite, which is a fairly large editor for art/drawing. Although lapse could be used for this, I also found an Aseprite plugin creating by espcaa that tracks time in the Hackatime Dashboard. There was no mention of this in the official Hackatime website Docs so I decided to add it myself. I added the aseprite.md file which contains all the setup instructions, the aseprite-128.png which contains the Aseprite Logo, and added the aseprite entry to the list of editors in app/controllers/docs_controller.rb . After testing using docker, it does appear to work and I have created the PR request and it is under review. There were some fixes to be made by Greptile involving my steps for API configuration, wakatime vs hackatime, and spacing, but they have all been resolved. I’m hoping it gets accepted and would love to help more people learn about how to set up Aseprite with Hackatime. Special thanks to espcaa for creating the original plugin!...
|
1792792250.2094004
|
1793397050.2094004
|
|
65042
|
rubber-rubber-bot by @Red0x | Stardance
|
Red0x
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T10:27:11Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I finally got rubber-rubber-bot running 24/7 on Hack Club Nest. I built it as a Slack bot with multiple commands and tested everything myself. The biggest part for me was getting it deployed properly instead of only having it work on my device. Now it’s running on Nest with systemd, so it keeps running even when I close everything on my side.", "repo": "https://github.com/Red0x-106/rubber-rubbber-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 72760, "ts": "202 [{"post_id": 72760, "ts": "2026-09-23T17:57:27Z", "hours": 2.3222, "text": "I’m working on my Slack bot, Rubber-Rubber Bot.I added a few commands like ping, help, hello, about, 8-ball, and random facts. I also finished the README and pushed the project to GitHub.Next I’m trying to get it running 24/7 on Hack Club Nest."}]...
|
Title: rubber-rubber-bot by @Red0x | Stardance
De Title: rubber-rubber-bot by @Red0x | Stardance
Devlogs:
I’m working on my Slack bot, Rubber-Rubber Bot.I added a few commands like ping, help, hello, about, 8-ball, and random facts. I also finished the README and pushed the project to GitHub.Next I’m trying to get it running 24/7 on Hack Club Nest.
Ships:
I finally got rubber-rubber-bot running 24/7 on Hack Club Nest. I built it as a Slack bot with multiple commands and tested everything myself. The biggest part for me was getting it deployed properly instead of only having it work on my device. Now it’s running on Nest with systemd, so it keeps running even when I close everything on my side....
|
1793213680.2922604
|
1793300080.2922604
|
|
38958
|
TEMPO SURGE by @marygoat | Stardance
|
marygoat
|
3
|
21.0
|
246
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T20:03:49Z", "hours": 6.0, "multiplier": 12.39, "payout": 84, "blessing": "neutral", "text": "Tempo Surge A WarioWare like game where you have to complete minigames without losing lives to win! Controls WASD / Arrow keys to move Space / W / Up arrow to jump Mouse click to interact with things 1 2 3 on keyboard to press trumpet keys Q E on the bongos A B C D E F G for the memorization minigame Features 8 fast-paced minigames! Such as: Platformer - Grab the guitar picks as fast as possible Clicker - Collect all the music notes in time Click-Smasher - Tune your sound before time ends Swap Pieces - Swap the xylophone keys into place Click parallel buttons - String the harp as soon as you can Press keyboard numbers - Press the trumpet keys in the right order NEW ONES SINCE LAST SHIP: Memorization - Press the right letters in the right order of the notes that appear Press keyboard letters - Press the correct bongo in the right order All art assets used in game were made by me :) Hope you have fun playing Tempo Surge! AI USAGE: I used AI to help me debug some errors in the code as well as help me bring the fourth minigame to life, since I wasn’t sure on what the best way of adding a swap object system would look like.", "repo": "https://github.com/awesomesauce4646/wario-ware-game", "demo": "https://marygoat.itch.io/tempo-surge"}, {"ship_num": 2, "ts": "2026-08-13T07:10:48Z", "hours": 9.0, "multiplier": 17.96, "payout": 162, "blessing": "neutral", "text": "Tempo Surge, A WarioWare like game where you have to complete minigames without losing lives to win! It was pretty challenging coming up with minigame ideas that were creative and original, while also making sense for the music theme I had going on! I am really proud of my new minigames, I think they’re pretty engaging. I am also proud that I made the game a bit more polished and nicer to look at. To play, press try project down below and press run, or go to: https://marygoat.itch.io/tempo-surge to play! Controls WASD / Arrow keys to move Space to jump Mouse click to interact with things 1 2 3 on keyboard to press trumpet keys Features 6 fast-paced minigames! Such as: Platformer - Grab the guitar picks as fast as possible Clicker - Collect all the music notes in time Click-Smasher - Tune your sound before time ends Swap Pieces - Swap the xylophone keys into place Click parallel buttons - String the harp as soon as you can Press keyboard numbers - Press the trumpet keys in the right order Made in Godot and was made for the Stardance Hackclub program, with the project: Make a WarioWare game. Tempo Surge was also made in order to learn Godot and to learn how to make games and art. All art assets used in game were made by me :) More minigames might be added in the future, but the game seems to be in a good spot for now! Hope you have fun playing Tempo Surge! AI Usage I used AI to help me debug some errors in the code as well as help me bring the fourth minigame to life, since I wasn’t sure on what the best way of adding a swap object system would look like.", "repo": "https://github.com/awesomesauce4646/wario-ware-game", "demo": "https://marygoat.itch.io/tempo-surge"}, {"ship_num": 3, "ts": "2026-07-27T11:43:14Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Tempo Surge A game inspired off of WarioWare, where you must complete many minigames to win! Controls: WASD / Arrow keys to move Space to jump Mouse click to interact with things Features 3 fast minigames! Such as: Platformer - Grab the guitar picks as fast as possible Clicker - Collect all the music notes in time Click-Smasher - Tune your sound before time ends Made in Godot and was made for the Stardance Hackclub program, with the project: Make a WarioWare game. All art assets used in game were made by me. I will probably add more things in the game, as well as redesign some things that I didn’t really like but didn’t want to spend more time drawing. Hope you have fun playing Tempo Surge!", "repo": "https://github.com/awesomesauce4646/wario-ware-game", "demo": "https://marygoat.itch.io/tempo-surge"}]...
|
[{"post_id": 72779, "ts": "202 [{"post_id": 72779, "ts": "2026-09-23T18:47:30Z", "hours": 1.225, "text": "TEMPO SURGE DEVLOG: #17 MINIGAME 8: MEMORIZATION! okay, TECHNICALLY this is now the seventh minigame, i have swapped this minigame with the bongos so that the trumpet minigame and bongo minigame wouldnt be back to back, since i thought that was too similar of a mechanic to go back and forth. i have made a minigame where you must memorize the notes that are shown on the screen! you have one second to see em, then you must use your keyboard to type out what the notes were! it was finnicky trying to get each step to work, since it must be in order. you cant just press gadc and go through. after i got that to work, i had to overwrite the scenes so that their names would change. if i didnt overwrite, the level scene would not put the right level. think ima ship! also W stardance for getting extended!"}, {"post_id": 66205, "ts": "2026-09-11T21:42:40Z", "hours": 1.4608, "text": "TEMPO SURGE DEVLOG: #16 MINIGAME 7: BONGOS?! i have made a seventh minigame! it is really similar to my sixth minigame though, so i’ll probably switch this minigame to be one of the later minigames instead of being right after the sixth one, which is pressing down the trumpet keys in the way its highlighted. it was hard trying to reuse the sixth minigames code and convert it to a slightly different style for the bongos, but it worked out!"}, {"post_id": 63293, "ts": "2026-09-07T01:23:45Z", "hours": 1.7128, "text": "TEMPO SURGE DEVLOG: #16 MORE INSTRUCTIONS + TRANSITION EFFECT i have completed the remaining instruction pop ups that were missing from the rest of the minigames, and also added a fade-in / fade-out transition effect! its pretty basic and i dont know how to feel about it, but its there! it was really hard figuring out why everything went pitch black, and i thought i had lost all of my progress for a second lol. i figured out that the node being a canvaslayer caused it to go pitch black, so i modified it so itd only work when it had to transition scenes and stuff. im not sure what else to add… but i want to keep working on it. maybe a new minigame?"}, {"post_id": 57826, "ts": "2026-08-30T04:05:49Z", "hours": 1.245, "text": "TEMPO SURGE DEVLOG: #15 INSTRUCTIONS POP-UP alrighty, so after looking at my feedback, i decided to start with the instructions before a minigame. i have added a simple instruction box, with a button with the text “start” for whenever the player is ready to play. it was a bit difficult knowing how to tie in the button and make it so you can’t move the guitar while in the instructions page, but I found a good enough solution by adding a barrier that disappears on click. excited to improve this project!"}, {"post_id": 46170, "ts": "2026-08-13T06:16:45Z", "hours": 1.3028, "text": "redesigned entire game! i have made all of my assets into the pixel art style, and i think im ready to ship?? it took me a long time having to go over each asset and making the edges look crisp without any fuzzy pixels. i have six working minigames! i was wanting to add more, but… no ideas are coming to me and i also want to work on other projects! i can always just ship again lol. this has been SUCH a fun project to work on, and i have learned a lot about godot and art in the process of making this! i hope this brings you as much fun as it brought me!"}, {"post_id": 45620, "ts": "2026-08-12T07:08:56Z", "hours": 0.5292, "text": "redesign! ive redesigned the timer screen to have that pixelated art style, and i have also added instructions too all of my minigames just incase it was unclear on what you were supposed to be doing. i have also tweaked my sixth minigame so that when you play all four notes, you can have some time to spam some notes for fun, disabling the green highlights. the font has also changed to a pixeled one :)"}, {"post_id": 45036, "ts": "2026-08-11T06:13:36Z", "hours": 2.2761, "text": "trumpet playing! sixth minigame done! wowzies… ts took me a bit. this is the sixth minigame i have come up with, where you have to press on the selected keys with your keyboards to play the note. i really like how this turned out, but it took a bit to figure out how i wanted to make this. i went with the press down to play way since it made the most sense on how a trumpet works, and i thought itd be cool to have a functioning trumpet to play with in this minigame! it took me some problem solving to figure out how i wanted to layout the if functions for when two / one key(s) were pressed, but i managed in the end! :D (the fingerings ARENT correct for you trumpet enthusiasts…. i picked two notes that had NO fingerings… so i had to make sum up. sorry!)"}, {"post_id": 44375, "ts": "2026-08-10T02:50:09Z", "hours": 0.8714, "text": "string the harp… done??? okay im REALLY proud of this one. i have tried doing some proper pixel art… and i think its lowkey fire?? :D i wanna try to pixelate the whole game if possible now.. but that might take forever. ive designed the minigame, where you have to click the gray rectangles on the harp to string it. you must click buttons that are across form each other, otherwise it won’t work. this has to be my favorite minigame even though the script really didnt take that long, just a few booleans going from false to true."}, {"post_id": 44343, "ts": "2026-08-10T01:21:51Z", "hours": 0.3914, "text": "fifth minigame: string the harp! i came up with a minigame where you have to string a harp by clicking on two buttons. i might do more buttons later, but i have put only two buttons in for simplicity. i came up with this yesterday late at night so i was overthinking on how to do this… but really, all you gotta do is have two buttons and make a line appear once true, and repeat if you want more strings. i think this will be a nice addition, since harps need to be strung and such. i chose a harp cause… why not? its a pretty cool instrument! no visuals yet… but i will be making some soon :D i THOUGHT of making it a drag from one point to another… but uhhh thats a bit out of my skill level right now. i have searched it up but i got no clear answer or guide, but i might come back if i figure it out!"}, {"post_id": 43852, "ts": "2026-08-09T09:16:21Z", "hours": 1.0772, "text": "fourth minigame done! this took a lot of time thinking and figuring out how to do this… i was thinking it could be a drag and drop system but i found that too complicated, so then i thought of swapping the positions. i had to use some math to find the center of each piece and so that theyd be centered when swapped, and added a slight highlight to see what youre doing better. i used ai to help me figure out how to debug my swapping system, since it was taking a long time and i was getting pretty frustrated."}, {"post_id": 43754, "ts": "2026-08-09T05:30:03Z", "hours": 1.1892, "text": "minigame 4 start! came up with an idea for my fourth minigame! what i have in mind is that it’ll be a puzzle, where you have to put the xylophone parts in descending order, aka largest piece left to smallest piece right. im not sure how to script this though, so ill have to do some googling ! i am pretty excited for this last minigame though, and im planning on redesigning my third minigames background cause i think i chose some really ugly colors lol."}, {"post_id": 43675, "ts": "2026-08-09T02:28:00Z", "hours": 1.3725, "text": "adding options screen, music! i am starting to make the options scene, since it wasnt actually functional and only has a guitar png… but now i will make it so it toggles the music on and off! i have also added music to the game that loops, a retro game vibe. i have also made the third minigame more obvious, adding a “SPAM” text so that the user knows you have to spam click, as well as making the first minigame easier by adding more time since the only way you could beat it is if you had a perfect run, which could get frustrating."}, {"post_id": 35741, "ts": "2026-07-27T11:38:30Z", "hours": 0.3611, "text": "itch.io page up! the game is functional, so i have decided to export it to itch.io. exporting it was a bit tricky since i didn’t have web downloaded, but i was able to export it into the itch.io page and now it’s runnable! i think i’m going to ship it now, and keep working on it even after i have shipped. making all the assets and programming the minigames to work has been fun!"}, {"post_id": 35654, "ts": "2026-07-27T07:21:59Z", "hours": 1.6461, "text": "third minigame done! i have finished up my third minigame, where you have to press up or down depending if you’re sharp or flat (music tuning terms). i have also made a losing screen and winning screen. it was tricky figuring out what type of minigame i should make, but then i remembered that to play instruments, you gotta tune to sound good! i used the second minigame clicker script to help guide me on how to make this third minigame, with some googling. i think this project has gone way better than i expected, and im excited for when i ship it!"}, {"post_id": 35082, "ts": "2026-07-26T09:01:34Z", "hours": 0.5214, "text": "clicker minigame! finished up the clicker minigame scene, going onto the win / lose screens now. i was able to put in the scripts so that once clicked, the music note will disappear and will count towards if the player won the minigame or not. it was a bit funky trying to put in the script and connecting the signals properly, but i managed to do it! i like how the game is going so far, i have learned a lot about godot :)"}, {"post_id": 34487, "ts": "2026-07-25T07:51:13Z", "hours": 1.2006, "text": "finally added guitar picks :) designed some funky guitar picks that are collectable once the guitar player collides with it. i also programmed an animation so they float. i really like how the guitar picks contrast a lot, making them easy to see. i struggled a lot with figuring out why my script couldn’t find the timer node, since i (thought i) had followed the guide exactly. my mistake was that i didn’t label the text (which had to be named timer so the script could find it), so “timer” never actually existed. i consulted claude a bit to help me debug this issue. this helped me learn how to debug script problems and a good reminder to check what things are named so far, this has been pretty fun! my godot DID randomly crash, which freaked me out so much, but nothing was lost! remember to ctrl + s!"}, {"post_id": 34430, "ts": "2026-07-25T04:08:27Z", "hours": 1.8572, "text": "started on my first minigame! it got some platforms, and the player is able to jump on each one of them. it was hard placing each platform in a good height where the player could jump on it with ease, while also making an engaging parkour setup where it had some sort of challenge that was fun to play through. i learned a lot about how different shapes for collisions worked, like how the oval collision that i chose for my player allows it to climb up the edges of each platform, which i thought was a nice feature!"}, {"post_id": 33872, "ts": "2026-07-24T04:24:23Z", "hours": 0.4897, "text": "started a warioware inspired game! so far, i have a format for a main menu done and the buttons lead to different scenes. the trickiest part was trying to set godot up with github, and also the tracking time plugin. i had to put the super wakatime addons inside the project folder manually to fix it. once i got that figured out and working, things have been simple. the guide has been a huge help on starting this!"}]...
|
Title: TEMPO SURGE by @marygoat | Stardance
Devlo Title: TEMPO SURGE by @marygoat | Stardance
Devlogs:
started a warioware inspired game! so far, i have a format for a main menu done and the buttons lead to different scenes. the trickiest part was trying to set godot up with github, and also the tracking time plugin. i had to put the super wakatime addons inside the project folder manually to fix it. once i got that figured out and working, things have been simple. the guide has been a huge help on starting this!
started on my first minigame! it got some platforms, and the player is able to jump on each one of them. it was hard placing each platform in a good height where the player could jump on it with ease, while also making an engaging parkour setup where it had some sort of challenge that was fun to play through. i learned a lot about how different shapes for collisions worked, like how the oval collision that i chose for my player allows it to climb up the edges of each platform, which i thought was a nice feature!
finally added guitar picks :) designed some funky guitar picks that are collectable once the guitar player collides with it. i also programmed an animation so they float. i really like how the guitar picks contrast a lot, making them easy to see. i struggled a lot with figuring out why my script couldn’t find the timer node, since i (thought i) had followed the guide exactly. my mistake was that i didn’t label the text (which had to be named timer so the script could find it), so “timer” never actually existed. i consulted claude a bit to help me debug this issue. this helped me learn how to debug script problems and a good reminder to check what things are named so far, this has been pretty fun! my godot DID randomly crash, which freaked me out so much, but nothing was lost! remember to ctrl + s!
clicker minigame! finished up the clicker minigame scene, going onto the win / lose screens now. i was able to put in the scripts so that once clicked, the music note will disappear and will count towards if the player won the minigame or not. it was a bit funky trying to put in the script and connecting the signals properly, but i managed to do it! i like how the game is going so far, i have learned a lot about godot :)
third minigame done! i have finished up my third minigame, where you have to press up or down depending if you’re sharp or flat (music tuning terms). i have also made a losing screen and winning screen. it was tricky figuring out what type of minigame i should make, but then i remembered that to play instruments, you gotta tune to sound good! i used the second minigame clicker script to help guide me on how to make this third minigame, with some googling. i think this project has gone way better than i expected, and im excited for when i ship it!
itch.io page up! the game is functional, so i have decided to export it to itch.io. exporting it was a bit tricky since i didn’t have web downloaded, but i was able to export it into the itch.io page and now it’s runnable! i think i’m going to ship it now, and keep working on it even after i have shipped. making all the assets and programming the minigames to work has been fun!
adding options screen, music! i am starting to make the options scene, since it wasnt actually functional and only has a guitar png… but now i will make it so it toggles the music on and off! i have also added music to the game that loops, a retro game vibe. i have also made the third minigame more obvious, adding a “SPAM” text so that the user knows you have to spam click, as well as making the first minigame easier by adding more time since the only way you could beat it is if you had a perfect run, which could get frustrating.
minigame 4 start! came up with an idea for my fourth minigame! what i have in mind is that it’ll be a puzzle, where you have to put the xylophone parts in descending order, aka largest piece left to smallest piece right. im not sure how to script this though, so ill have to do some googling ! i am pretty excited for this last minigame though, and im planning on redesigning my third minigames background cause i think i chose some really ugly colors lol.
fourth minigame done! this took a lot of time thinking and figuring out how to do this… i was thinking it could be a drag and drop system but i found that too complicated, so then i thought of swapping the positions. i had to use some math to find the center of each piece and so that theyd be centered when swapped, and added a slight highlight to see what youre doing better. i used ai to help me figure out how to debug my swapping system, since it was taking a long time and i was getting pretty frustrated.
fifth minigame: string the harp! i came up with a minigame where you have to string a harp by clicking on two buttons. i might do more buttons later, but i have put only two buttons in for simplicity. i came up with this yesterday late at night so i was overthinking on how to do this… but really, all you gotta do is have two buttons and make a line appear once true, and repeat if you want more strings. i think this will be a nice addition, since harps need to be strung and such. i chose a harp cause… why not? its a pretty cool instrument! no visuals yet… but i will be making some soon :D i THOUGHT of making it a drag from one point to another… but uhhh thats a bit out of my skill level right now. i have searched it up but i got no clear answer or guide, but i might come back if i figure it out!
string the harp… done??? okay im REALLY proud of this one. i have tried doing some proper pixel art… and i think its lowkey fire?? :D i wanna try to pixelate the whole game if possible now.. but that might take forever. ive designed the minigame, where you have to click the gray rectangles on the harp to string it. you must click buttons that are across form each other, otherwise it won’t work. this has to be my favorite minigame even though the script really didnt take that long, just a few booleans going from false to true.
trumpet playing! sixth minigame done! wowzies… ts took me a bit. this is the sixth minigame i have come up with, where you have to press on the selected keys with your keyboards to play the note. i really like how this turned out, but it took a bit to figure out how i wanted to make this. i went with the press down to play way since it made the most sense on how a trumpet works, and i thought itd be cool to have a functioning trumpet to play with in this minigame! it took me some problem solving to figure out how i wanted to layout the if functions for when two / one key(s) were pressed, but i managed in the end! :D (the fingerings ARENT correct for you trumpet enthusiasts…. i picked two notes that had NO fingerings… so i had to make sum up. sorry!)
redesign! ive redesigned the timer screen to have that pixelated art style, and i have also added instructions too all of my minigames just incase it was unclear on what you were supposed to be doing. i have also tweaked my sixth minigame so that when you play all four notes, you can have some time to spam some notes for fun, disabling the green highlights. the font has also changed to a pixeled one :)
redesigned entire game! i have made all of my assets into the pixel art style, and i think im ready to ship?? it took me a long time having to go over each asset and making the edges look crisp without any fuzzy pixels. i have six working minigames! i was wanting to add more, but… no ideas are coming to me and i also want to work on other projects! i can always just ship again lol. this has been SUCH a fun project to work on, and i have learned a lot about godot and art in the process of making this! i hope this brings you as much fun as it brought me!
TEMPO SURGE DEVLOG: #15 INSTRUCTIONS POP-UP alrighty, so after looking at my feedback, i decided to start with the instructions before a minigame. i have added a simple instruction box, with a button with the text “start” for whenever the player is ready to play. it was a bit difficult knowing how to tie in the button and make it so you can’t move the guitar while in the instructions page, but I found a good enough solution by adding a barrier that disappears on click. excited to improve this project!
TEMPO SURGE DEVLOG: #16 MORE INSTRUCTIONS + TRANSITION EFFECT i have completed the remaining instruction pop ups that were missing from the rest of the minigames, and also added a fade-in / fade-out transition effect! its pretty basic and i dont know how to feel about it, but its there! it was really hard figuring out why everything went pitch black, and i thought i had lost all of my progress for a second lol. i figured out that the node being a canvaslayer caused it to go pitch black, so i modified it so itd only work when it had to transition scenes and stuff. im not sure what else to add… but i want to keep working on it. maybe a new minigame?
TEMPO SURGE DEVLOG: #16 MINIGAME 7: BONGOS?! i have made a seventh minigame! it is really similar to my sixth minigame though, so i’ll probably switch this minigame to be one of the later minigames instead of being right after the sixth one, which is pressing down the trumpet keys in the way its highlighted. it was hard trying to reuse the sixth minigames code and convert it to a slightly different style for the bongos, but it worked out!
TEMPO SURGE DEVLOG: #17 MINIGAME 8: MEMORIZATION! okay, TECHNICALLY this is now the seventh minigame, i have swapped this minigame with the bongos so that the trumpet minigame and bongo minigame wouldnt be back to back, since i thought that was too similar of a mechanic to go back and forth. i have made a minigame where you must memorize the notes that are shown on the screen! you have one second to see em, then you must use your keyboard to type out what the notes were! it was finnicky trying to get each step to work, since it must be in order. you cant just press gadc and go through. after i got that to work, i had to overwrite the scenes so that their names would change. if i didnt overwrite, the level scene would not put the right level. think ima ship! also W stardance for getting extended!
Ships:
Tempo Surge A game inspired off of WarioWare, where you must complete many minigames to win! Controls: WASD / Arrow keys to move Space to jump Mouse click to interact with things Features 3 fast minigames! Such as: Platformer - Grab the guitar picks as fast as possible Clicker - Collect all the music notes in time Click-Smasher - Tune your sound before time ends Made in Godot and was made for the Stardance Hackclub program, with the project: Make a WarioWare game. All art assets used in game were made by me. I will probably add more things in the game, as well as redesign some things that I didn’t really like but didn’t want to spend more time drawing. Hope you have fun playing Tempo Surge!
Tempo Surge, A WarioWare like game where you have to complete minigames without losing lives to win! It was pretty challenging coming up with minigame ideas that were creative and original, while also making sense for the music theme I had going on! I am really proud of my new minigames, I think they’re pretty engaging. I am also proud that I made the game a bit more polished and nicer to look at. To play, press try project down below and press run, or go to: https://marygoat.itch.io/tempo-surge to play! Controls WASD / Arrow keys to move Space to jump Mouse click to interact with things 1 2 3 on keyboard to press trumpet keys Features 6 fast-paced minigames! Such as: Platformer - Grab the guitar picks as fast as possible Clicker - Collect all the music notes in time Click-Smasher - Tune your sound before time ends Swap Pieces - Swap the xylophone keys into place Click parallel buttons - String the harp as soon as you can Press keyboard numbers - Press the trumpet keys in the right order Made in Godot and was made for the Stardance Hackclub program, with the project: Make a WarioWare game. Tempo Surge was also made in order to learn Godot and to learn how to make games and art. All art assets used in game were made by me :) More minigames might be added in the future, but the game seems to be in a good spot for now! Hope you have fun playing Tempo Surge! AI Usage I used AI to help me debug some errors in the code as well as help me bring the fourth minigame to life, since I wasn’t sure on what the best way of adding a swap object system would look like.
Tempo Surge A WarioWare like game where you have to complete minigames without losing lives to win! Controls WASD / Arrow keys to move Space / W / Up arrow to jump Mouse click to interact with things 1 2 3 on keyboard to press trumpet keys Q E on the bongos A B C D E F G for the memorization minigame Features 8 fast-paced minigames! Such as: Platformer - Grab the guitar picks as fast as possible Clicker - Collect all the music notes in time Click-Smasher - Tune your sound before time ends Swap Pieces - Swap the xylophone keys into place Click parallel buttons - String the harp as soon as you can Press keyboard numbers - Press the trumpet keys in the right order NEW ONES SINCE LAST SHIP: Memorization - Press the right letters in the right order of the notes that appear Press keyboard letters - Press the correct bongo in the right order All art assets used in game were made by me :) Hope you have fun playing Tempo Surge! AI USAGE: I used AI to help me debug some errors in the code as well as help me bring the fourth minigame to life, since I wasn’t sure on what the best way of adding a swap object system would look like....
|
1793289015.9145784
|
1793375415.9145784
|
|
49412
|
The Gregory Project by @Alaxtor | Stardance
|
Alaxtor
|
0
|
33.65
|
0
|
[]
|
[{"post_id": 72781, "ts": "202 [{"post_id": 72781, "ts": "2026-09-23T18:48:36Z", "hours": 1.6167, "text": "Organized my repos ,added BOM and summited my project."}, {"post_id": 72352, "ts": "2026-09-22T18:51:27Z", "hours": 1.5536, "text": "Wrote the firmware and started organizing my github repos"}, {"post_id": 71968, "ts": "2026-09-21T21:37:58Z", "hours": 2.4333, "text": "Did some work off record and finished the holes aligned everything and now i just need to write the kmk and ship it :)"}, {"post_id": 71842, "ts": "2026-09-21T17:04:49Z", "hours": 1.1833, "text": "fixed some issues and now need to fix the tolerance and add the cutouts"}, {"post_id": 70846, "ts": "2026-09-19T21:14:24Z", "hours": 2.95, "text": "Screw HOLESSSS,Having trouble with the holes for screws"}, {"post_id": 70212, "ts": "2026-09-18T18:30:54Z", "hours": 1.3667, "text": "Hehe now usb c and led and knob left"}, {"post_id": 69822, "ts": "2026-09-17T21:00:01Z", "hours": 2.45, "text": "Phew finnaly built my case for hack pad now i need to add holes for usb c led display and knob Gregory shall be beautiful"}, {"post_id": 69277, "ts": "2026-09-16T18:36:08Z", "hours": 1.5167, "text": "AHHHHHHHHH"}, {"post_id": 68781, "ts": "2026-09-15T18:54:57Z", "hours": 1.0167, "text": "Stuck"}, {"post_id": 68277, "ts": "2026-09-14T20:38:14Z", "hours": 1.4167, "text": "Built Plate for my HackPad and is design the case for bottom mount"}, {"post_id": 68235, "ts": "2026-09-14T19:07:15Z", "hours": 1.8833, "text": "Was desgining Case and realised that my Keys and placement for display and knob was inverted so fixed that"}, {"post_id": 67576, "ts": "2026-09-13T18:32:01Z", "hours": 3.1167, "text": "Pcb optimisation and circuit management"}, {"post_id": 67169, "ts": "2026-09-13T07:34:04Z", "hours": 1.2667, "text": "PCB READY"}, {"post_id": 66953, "ts": "2026-09-12T22:51:40Z", "hours": 6.2167, "text": "The gregory"}, {"post_id": 54369, "ts": "2026-08-25T10:34:03Z", "hours": 0.7167, "text": "Complete with top and usb port"}, {"post_id": 53054, "ts": "2026-08-23T13:29:13Z", "hours": 2.1336, "text": "Hackpad Case"}, {"post_id": 50973, "ts": "2026-08-20T13:28:39Z", "hours": 0.8114, "text": "HACKPAD"}]...
|
Title: The Gregory Project by @Alaxtor | Stardance Title: The Gregory Project by @Alaxtor | Stardance
Devlogs:
HACKPAD
Hackpad Case
Complete with top and usb port
The gregory
PCB READY
Pcb optimisation and circuit management
Was desgining Case and realised that my Keys and placement for display and knob was inverted so fixed that
Built Plate for my HackPad and is design the case for bottom mount
Stuck
AHHHHHHHHH
Phew finnaly built my case for hack pad now i need to add holes for usb c led display and knob Gregory shall be beautiful
Hehe now usb c and led and knob left
Screw HOLESSSS,Having trouble with the holes for screws
fixed some issues and now need to fix the tolerance and add the cutouts
Did some work off record and finished the holes aligned everything and now i just need to write the kmk and ship it :)
Wrote the firmware and started organizing my github repos
Organized my repos ,added BOM and summited my project....
|
1793282076.4895394
|
1793886876.4895394
|
|
59548
|
Cyber deck buddy by @solmavo | Stardance
|
solmavo
|
0
|
12.55
|
0
|
[]
|
[{"post_id": 72789, "ts": "202 [{"post_id": 72789, "ts": "2026-09-23T18:56:11Z", "hours": 4.5336, "text": "Case for electronics"}, {"post_id": 66902, "ts": "2026-09-12T21:08:06Z", "hours": 4.2169, "text": "Tried different cad variants"}, {"post_id": 66199, "ts": "2026-09-11T21:24:00Z", "hours": 2.8503, "text": "Made an eye cad model and decided which parts to use"}, {"post_id": 63826, "ts": "2026-09-07T19:59:26Z", "hours": 0.945, "text": "made a plan for desktop robot"}]...
|
Title: Cyber deck buddy by @solmavo | Stardance
D Title: Cyber deck buddy by @solmavo | Stardance
Devlogs:
made a plan for desktop robot
Made an eye cad model and decided which parts to use
Tried different cad variants
Case for electronics...
|
1792803123.3415585
|
1793407923.3415585
|
|
10110
|
Vencord Autoinstall by @snows_alt | Stardance
|
snows_alt
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T04:23:45Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a script that later turned into an executable to solve the issue of vencord randomly uninstalling when discord would update. To achieve this I first made a simple script to interact with the vencord installer CLI using subprocess. After this was done I made another script to automatically download a verify the integrity of the vencord installer CLI. After this I made another script that scheduled the running of the update script so it gets ran automatically on login. And then I packaged it all into a zip and EXE using pyinstaller and set that as a release! To try out the script you must have discord and vencord installed and to build it you need UV. Best of luck to anyone trying this out feel free to report any issues to me on GitHub!", "repo": "https://github.com/snqwq/Vencord-Autoinstall", "demo": "https://github.com/snqwq/Vencord-Autoinstall/releases/latest"}]...
|
[{"post_id": 7279, "ts": "2026 [{"post_id": 7279, "ts": "2026-06-12T04:13:05Z", "hours": 0.3656, "text": "Made a cool logo and updated readme :) All credit for the original vencord logo goes to the vencord team i literally just added autoinstall to the bottom trying to keep with the style and stuff, and it turned out pretty well I think."}, {"post_id": 7188, "ts": "2026-06-12T00:17:23Z", "hours": 3.0678, "text": "Made 0.1.0 of my script to automate vencord installation. The goal of this script is to prevent the occasional uninstallation of vencord whenever discord updates. All interaction with discord is through vencords own cli installer the script is just to automate its usage. Its currently only available for windows but linux support is hopefully going to happen soon :)"}]...
|
Title: Vencord Autoinstall by @snows_alt | Stardan Title: Vencord Autoinstall by @snows_alt | Stardance
Devlogs:
Made 0.1.0 of my script to automate vencord installation. The goal of this script is to prevent the occasional uninstallation of vencord whenever discord updates. All interaction with discord is through vencords own cli installer the script is just to automate its usage. Its currently only available for windows but linux support is hopefully going to happen soon :)
Made a cool logo and updated readme :) All credit for the original vencord logo goes to the vencord team i literally just added autoinstall to the bottom trying to keep with the style and stuff, and it turned out pretty well I think.
Ships:
I made a script that later turned into an executable to solve the issue of vencord randomly uninstalling when discord would update. To achieve this I first made a simple script to interact with the vencord installer CLI using subprocess. After this was done I made another script to automatically download a verify the integrity of the vencord installer CLI. After this I made another script that scheduled the running of the update script so it gets ran automatically on login. And then I packaged it all into a zip and EXE using pyinstaller and set that as a release! To try out the script you must have discord and vencord installed and to build it you need UV. Best of luck to anyone trying this out feel free to report any issues to me on GitHub!...
|
1793325441.038814
|
1793411841.038814
|
|
33779
|
Odyssey by @bluecorexux | Stardance
|
bluecorexux
|
1
|
14.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T19:11:20Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a minigame based on the Story of odysseus - there are three levels where each represents the challenges faced by him ( not exact a game ishhh analogy ) Navigativing throught the buttons and options of godot was challenging but pretty easy once I started making the third minigame ,as i got used to the method of using the common stuffs for making a scene in Godot I learnt how game dev works in a beginner level with a base project that is prety awesome", "repo": "https://github.com/bluecore7/GameOfOdyssey", "demo": "https://bluecore7.itch.io/the-game-of-odyssey"}]...
|
[{"post_id": 72792, "ts": "202 [{"post_id": 72792, "ts": "2026-09-23T19:03:51Z", "hours": 5.355, "text": "Devlog - 4 ITS’ OVER GUYZZZ…… THE GAME IS READY!!!!! Finally finished the game and completed the entire journey from those first pixelated screens to an actual playable game T_TDeveloped three mini games based on stories from Odyssey — not a direct adaptation or anything, just taking inspiration from the stories and turning them into games. Guys come onnn, it’s a game >_< The frustrating all-nighters, debugging, breaking things, fixing them, breaking them again…… somehow I loved all of it. I learned wayyyy more by actually building the game than I expected. Every bug was painful at that moment, but finally it felt soooo good. 2D games are good……BUT 3D IS AWESOME. NEXT ONTO ITTTTTT."}, {"post_id": 71752, "ts": "2026-09-21T13:33:30Z", "hours": 6.1611, "text": "Devlog 3 Finally I am into the real game GUYZZZ….. The minigame -2 took a lot of time there was much to learn - caz i got stuck in a bug where my button click signals are not captured. But the mission stuffs are done for now! I have started to create the real game. Added some animations - made the title wavy just by turning on BBCode and using the [wave] tag in RichTextLabel, which is dope . For the subtitle I wanted a typewriter effect . At first I tried doing it with a quick Tween on visible_characters, but it can’t trigger a sound for each single letter . So I changed it to a loop with visible_characters and a tiny timer delay, and added a proper mechanical typewriter key sound that clicks on every single letter as it types out. And that blip sound - wired it up to play whenever you hit Start, Settings, or Quit buttons so the menu click feelzzz . The same refactor has to be done for other scenes as well. I am onto that journey to Ithica………"}, {"post_id": 71398, "ts": "2026-09-20T19:09:59Z", "hours": 1.1572, "text": "Devlog-2 Developed a mini game according to the guide but i am placing only placeholders for now . As i have a plan to develop a game based on Odyssey but the the guide is about garlics >_< ."}, {"post_id": 70804, "ts": "2026-09-19T19:48:21Z", "hours": 1.36, "text": "Devlog - 1 Yupppp, finally started my game dev journey on the last laps of Stardance Done the routine stuffs → watched some intro and basic game dev videos from YouTube (still the pixelated Art stuffs are remaining ) and started the mission following the guide provided . Designed the Title Screen and Level Screen. Development took around 1/4th of the entire time spent, and the rest was spent debugging . Finally found out it was just a name mismatch in the button press function. Happy that I found it, but also frustrated that I couldn’t figure it out earlier than this ;_; A good start, I guess……"}]...
|
Title: Odyssey by @bluecorexux | Stardance
Devlog Title: Odyssey by @bluecorexux | Stardance
Devlogs:
Devlog - 1 Yupppp, finally started my game dev journey on the last laps of Stardance Done the routine stuffs → watched some intro and basic game dev videos from YouTube (still the pixelated Art stuffs are remaining ) and started the mission following the guide provided . Designed the Title Screen and Level Screen. Development took around 1/4th of the entire time spent, and the rest was spent debugging . Finally found out it was just a name mismatch in the button press function. Happy that I found it, but also frustrated that I couldn’t figure it out earlier than this ;_; A good start, I guess……
Devlog-2 Developed a mini game according to the guide but i am placing only placeholders for now . As i have a plan to develop a game based on Odyssey but the the guide is about garlics >_< .
Devlog 3 Finally I am into the real game GUYZZZ….. The minigame -2 took a lot of time there was much to learn - caz i got stuck in a bug where my button click signals are not captured. But the mission stuffs are done for now! I have started to create the real game. Added some animations - made the title wavy just by turning on BBCode and using the [wave] tag in RichTextLabel, which is dope . For the subtitle I wanted a typewriter effect . At first I tried doing it with a quick Tween on visible_characters, but it can’t trigger a sound for each single letter . So I changed it to a loop with visible_characters and a tiny timer delay, and added a proper mechanical typewriter key sound that clicks on every single letter as it types out. And that blip sound - wired it up to play whenever you hit Start, Settings, or Quit buttons so the menu click feelzzz . The same refactor has to be done for other scenes as well. I am onto that journey to Ithica………
Devlog - 4 ITS’ OVER GUYZZZ…… THE GAME IS READY!!!!! Finally finished the game and completed the entire journey from those first pixelated screens to an actual playable game T_TDeveloped three mini games based on stories from Odyssey — not a direct adaptation or anything, just taking inspiration from the stories and turning them into games. Guys come onnn, it’s a game >_< The frustrating all-nighters, debugging, breaking things, fixing them, breaking them again…… somehow I loved all of it. I learned wayyyy more by actually building the game than I expected. Every bug was painful at that moment, but finally it felt soooo good. 2D games are good……BUT 3D IS AWESOME. NEXT ONTO ITTTTTT.
Ships:
I made a minigame based on the Story of odysseus - there are three levels where each represents the challenges faced by him ( not exact a game ishhh analogy ) Navigativing throught the buttons and options of godot was challenging but pretty easy once I started making the third minigame ,as i got used to the method of using the common stuffs for making a scene in Godot I learnt how game dev works in a beginner level with a base project that is prety awesome...
|
1793339816.3088386
|
1793426216.3088386
|
|
56694
|
[MOVED] Discord User Apps Bot by @stefdp | Stardan [MOVED] Discord User Apps Bot by @stefdp | Stardance...
|
stefdp
|
1
|
85.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T13:33:42Z", "hours": 85.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I rewrote my userApps Discord bot from TypeScript to Kotlin just because I prefer kotlin now that i’ve been using it for about a while, and in the meanwhile i also added new commands to it", "repo": "https://git.stefdp.com/Stef/userApps", "demo": "https://discord.com/oauth2/authorize?client_id=1223221223685886032"}]...
|
[{"post_id": 72794, "ts": "202 [{"post_id": 72794, "ts": "2026-09-23T19:06:22Z", "hours": 0.3492, "text": "Added environment check in the API endpoint like /status enable command Emoji envs are now correctly formatted in the error message Marked /status command as owner only"}, {"post_id": 72707, "ts": "2026-09-23T15:29:45Z", "hours": 3.7897, "text": "Rewrote the web dashboard to look better (by orangc) Added the API endpoints to manage commands on the dash side Added support for docker compose"}, {"post_id": 70873, "ts": "2026-09-19T22:10:42Z", "hours": 5.3797, "text": "Created the /help command: list all the commands of get info about a specific one Temporarily took the old dashboard and adapted it to the new framework (the html side is gonna get remade by a friend, orangc) Removed some unused envs Added TailwindCSS compiling at startup soit can be used in the dashboard"}, {"post_id": 70257, "ts": "2026-09-18T20:20:48Z", "hours": 5.9111, "text": "Created the /uptime command: display how long the bot has been online for Created the /lyrics command: get the lyrics of a song (uses lrclib.net, lrcmux and lyricsOVH as sources) Fixed /define command failing when there were too many definitions (was going over the 40 components limit) Created the main README file Added ownerOnly property to commands, so when they’re first added to the db, it sets the list of owners in the OWNERS env as allowed users Added attachment options to the /embed command (for some reasons they’re added correctly but image and thumbnail don’t display while footer and author do)"}, {"post_id": 69649, "ts": "2026-09-17T14:30:09Z", "hours": 4.295, "text": "Created the /ubdict command: get the definition of a term from the urban dictionary Created the /wikipedia command: get an article from wikipedia Created the /fact command: get a random fact Created the /joke command: get a random joke Added a util function to split strings in group of approximately X character, but instead of cutting the text at exactly X characters, it cuts at the next end of a sentence after X characters, this way a sentence is never cut in half during pagination (currently only place where it’s used, aka /wikipedia command) Added the User-Agent header to all the HTTP requests Updated HttpLoggingInterceptor to use the correct logger class"}, {"post_id": 68211, "ts": "2026-09-14T18:17:54Z", "hours": 2.95, "text": "Created the /define command: get the definition of a word Updated the /steam game command to use components v2, and also a button to show the full game description if the detailed mode is too long to fit Switched some places from if (xxx) { ... } else { null } to xxx?.let { ... }"}, {"post_id": 67479, "ts": "2026-09-13T16:26:49Z", "hours": 7.7817, "text": "Created the Get User Banner command (user): …what the name says Created the /github command (slash): get info about a GH user, repo or issue/PR Created the /weather command (slash): get the current weather of a specific place /steam game now uses buildString {} instead of adding to a array, then joining and merging it with another string"}, {"post_id": 66516, "ts": "2026-09-12T11:06:55Z", "hours": 6.5256, "text": "Created the /steam command (slash): get info about a Steam game (optional detailed mode) or user Created the /translate command (slash): convert any text from a language to another (about 131 languages available) Installed the MS Azure SDK for the /translate (slash) & Translate Message (message) commands Updated file layout for the dashboard so it looks better Updated API services file layout too Updated Kotlin from 2.4.10 to 2.4.20 and other libs"}, {"post_id": 65657, "ts": "2026-09-10T22:56:19Z", "hours": 4.5164, "text": "Running a command now increases its uses value is the anonymous analytics table Added new env variables and improved the system used to throw errors so it always kills all the processes when calling require Created the dashboard ratelimits, sessions, auth middlewares/systems Created the Discord OAuth2 login Moved kord into a Bot object so it can be used in the dashboard too if needed Created a listener for the discord webhook (stuff like bot authorized, bot deauthorized etc.) [UNTESTED] Created a util function to get the bot’s invite url Created API services for the discord OAuth2 token requesting and apprise API There’s not much frontend / UI change so ima show a pic of the dash module code ig"}, {"post_id": 65422, "ts": "2026-09-10T15:31:24Z", "hours": 5.8289, "text": "Created the /export command (slash): send the file path and export it (as well as give the file’s github url (owner only) Created the Save as Tag command (message): save a message as tag, both embeds & content Created the Convert to QR Code command (message): convert a message’s content to a QR code (either as image or text) Created the Download Voice Message command (message): as the name says, download as MP3 a user’s voice message Created the Set as Reminder command (message): set a user’s message (either content or URL) as a reminder Created the Get Message JSON command (message): get the JSON object of the message Created the Get Member Avatar command (user): get the server specific avatar of the user Created the Get User Avatar command (user): get the global avatar of the user Created the Get User Avatar Decoration command (user): get the avatar decoration of the user Created the Get Member JSON command (user): get the JSON object of the member Created the Get User JSON command (user): get the JSON object of the user Environment variables are now loaded at startup via a gradle task Added a LOG_LEVEL env to choose the level of the console output to show Created a util function for plurals Set tag name limit to 255 chars"}, {"post_id": 64121, "ts": "2026-09-08T10:02:03Z", "hours": 7.1333, "text": "Added the /tag command: save preset messages that you can then send later (they can also contain embeds) it has the following subcommands: content : set or remove the content of a tag embed : add or remove an embed from a tag delete : delete a tag export : export all your tags as a JSON file import : import the JSON file obtained from the export subcommand (in case of conflicts, the old and new tag will be previeable in the bot dashboard if enabled) list : Display all your subcommands get : Get the content & embeds of a specific subcommand Fixed/Impoved the /embed command button & modal handlers & added an ID to buttons & modals to avoid 2 diff commands handling the same interaction"}, {"post_id": 62806, "ts": "2026-09-06T10:14:43Z", "hours": 5.5831, "text": "Created the /gary command: get random images of 4 cats: Gary, Goober, Gulliber (Gully) and Garfield Created the /ping command: get the bot’s ping (pic has high ping cuz it’s running on my laptop, in Italy) Created the /botavatar command: change the bot avatar, either from a file, URL, copy from an user or copy from the bot owner Created the /colorpicker command: give an HEX, RGB or HSL color and it displays it as well as showing its HEX, RGB and HSL variants Added the /reminders command: set a reminder and the bot will send you a DM, reminder can either be single-run, multi-run and inifinitely run (the user defines an interval such as 30m , 2d15h etc., then the bot will send a DM with the reminder after this interval and will repeat it how many times the user defined it to, so if an user defines a reminder with 2h interval and 3 repeats, it will send the same reminder in 2h, 4h and 6h) (hope i explained well ) Switched database initialization from SchemaUtils to MigrationUtils this way if i edit a scheme, it’s also applied at startup instead of just creating new tables and never modifying them Made the dashboard disableable"}, {"post_id": 61179, "ts": "2026-09-03T23:53:05Z", "hours": 6.5219, "text": "Created the /minecraft command: allows to fetch Java and Bedrock edition server data (with mcstatus.io API ) Player info (with Starlight API by lunareclipse.studio ) Player skin rendered as a 3D model in different poses (with Starlight API) Created the /embed command: send anything as an embed Created the /qr command: encode some text into a QR Code (output can be an image or an ASCII text) Updated the dashboard to add a static resource /skinModels which is used for the /minecraft skin sub command to fetch custom made models Added a regex for HEX colors (matches #ffffff , #fff , ffffff and fff ) created a Minecraft object to collect all minecraft related functions Created the starlight and mcstatus.io API services & added them in the API client Update main handleRequest function to add an optional error handler"}, {"post_id": 60524, "ts": "2026-09-02T22:26:55Z", "hours": 3.5928, "text": "Added the /8ball command: ask a question and get a random answer Added topic command: get a random topic to start a conversation Added /qalc command: execute calculation using libqalculate Added /console command: run any shell command Added /animal command: get a random animal (cat, dog, fox, duck) Added /ip command: get info about an IPv4 or IPv6 address Installed the retrofit libs required to make HTTP requests Added a regex to check if a IPv4 or IPv6 is valid (took from networkingtoolbox.net ) Created util function to get the country flag & name from its code (took from my Hackatime android app)"}, {"post_id": 60238, "ts": "2026-09-02T14:13:38Z", "hours": 5.9553, "text": "Added /http command: get a HTTP status with the picture of an animal like cat, dog, goat, duck etc. Added /perms command: add/remove/list the users allowed to use a specific command Added /status command: enable/disable specific commands Added /dig : perform a dig query on a domain Added /whois : perform a WHOIS query on a domain/IP/ASN Fixed database upsert function erroring because no column was being passed as keys (primary) Moved command registration to the onReady event Installed a lib for DNS queries and a lib to check other libs updates Added a utility Domain object that contains the function to perform dig and whois queries Added utility functions to convert a ISO string, epoch seconds or Instant to discord time format"}, {"post_id": 59784, "ts": "2026-09-01T18:32:38Z", "hours": 3.5347, "text": "Created the /eval command Added the registration & handling of the commands (also checks if the user can run the command and if the command is enabled, by checking the enabled status and allowedUsers list in the command_permissions table) Installed some libs to run code at runtime (JavaScript, Python and Kotlin (used in /eval )"}, {"post_id": 59212, "ts": "2026-08-31T21:38:20Z", "hours": 4.8561, "text": "Created the base skeleton with the bot (w/ events), web dashboard (rn just shows “WIP” text) and database with the schemes & some helper functions For the Discord bot i’m using the Kord library For the web dashboard i’m using the Ktor library This is the first time i use either of those 2 libs so my usage may not be the best"}]...
|
Title: [MOVED] Discord User Apps Bot by @stefdp | Title: [MOVED] Discord User Apps Bot by @stefdp | Stardance
Devlogs:
Created the base skeleton with the bot (w/ events), web dashboard (rn just shows “WIP” text) and database with the schemes & some helper functions For the Discord bot i’m using the Kord library For the web dashboard i’m using the Ktor library This is the first time i use either of those 2 libs so my usage may not be the best
Created the /eval command Added the registration & handling of the commands (also checks if the user can run the command and if the command is enabled, by checking the enabled status and allowedUsers list in the command_permissions table) Installed some libs to run code at runtime (JavaScript, Python and Kotlin (used in /eval )
Added /http command: get a HTTP status with the picture of an animal like cat, dog, goat, duck etc. Added /perms command: add/remove/list the users allowed to use a specific command Added /status command: enable/disable specific commands Added /dig : perform a dig query on a domain Added /whois : perform a WHOIS query on a domain/IP/ASN Fixed database upsert function erroring because no column was being passed as keys (primary) Moved command registration to the onReady event Installed a lib for DNS queries and a lib to check other libs updates Added a utility Domain object that contains the function to perform dig and whois queries Added utility functions to convert a ISO string, epoch seconds or Instant to discord time format
Added the /8ball command: ask a question and get a random answer Added topic command: get a random topic to start a conversation Added /qalc command: execute calculation using libqalculate Added /console command: run any shell command Added /animal command: get a random animal (cat, dog, fox, duck) Added /ip command: get info about an IPv4 or IPv6 address Installed the retrofit libs required to make HTTP requests Added a regex to check if a IPv4 or IPv6 is valid (took from networkingtoolbox.net ) Created util function to get the country flag & name from its code (took from my Hackatime android app)
Created the /minecraft command: allows to fetch Java and Bedrock edition server data (with mcstatus.io API ) Player info (with Starlight API by lunareclipse.studio ) Player skin rendered as a 3D model in different poses (with Starlight API) Created the /embed command: send anything as an embed Created the /qr command: encode some text into a QR Code (output can be an image or an ASCII text) Updated the dashboard to add a static resource /skinModels which is used for the /minecraft skin sub command to fetch custom made models Added a regex for HEX colors (matches #ffffff , #fff , ffffff and fff ) created a Minecraft object to collect all minecraft related functions Created the starlight and mcstatus.io API services & added them in the API client Update main handleRequest function to add an optional error handler
Created the /gary command: get random images of 4 cats: Gary, Goober, Gulliber (Gully) and Garfield Created the /ping command: get the bot’s ping (pic has high ping cuz it’s running on my laptop, in Italy) Created the /botavatar command: change the bot avatar, either from a file, URL, copy from an user or copy from the bot owner Created the /colorpicker command: give an HEX, RGB or HSL color and it displays it as well as showing its HEX, RGB and HSL variants Added the /reminders command: set a reminder and the bot will send you a DM, reminder can either be single-run, multi-run and inifinitely run (the user defines an interval such as 30m , 2d15h etc., then the bot will send a DM with the reminder after this interval and will repeat it how many times the user defined it to, so if an user defines a reminder with 2h interval and 3 repeats, it will send the same reminder in 2h, 4h and 6h) (hope i explained well ) Switched database initialization from SchemaUtils to MigrationUtils this way if i edit a scheme, it’s also applied at startup instead of just creating new tables and never modifying them Made the dashboard disableable
Added the /tag command: save preset messages that you can then send later (they can also contain embeds) it has the following subcommands: content : set or remove the content of a tag embed : add or remove an embed from a tag delete : delete a tag export : export all your tags as a JSON file import : import the JSON file obtained from the export subcommand (in case of conflicts, the old and new tag will be previeable in the bot dashboard if enabled) list : Display all your subcommands get : Get the content & embeds of a specific subcommand Fixed/Impoved the /embed command button & modal handlers & added an ID to buttons & modals to avoid 2 diff commands handling the same interaction
Created the /export command (slash): send the file path and export it (as well as give the file’s github url (owner only) Created the Save as Tag command (message): save a message as tag, both embeds & content Created the Convert to QR Code command (message): convert a message’s content to a QR code (either as image or text) Created the Download Voice Message command (message): as the name says, download as MP3 a user’s voice message Created the Set as Reminder command (message): set a user’s message (either content or URL) as a reminder Created the Get Message JSON command (message): get the JSON object of the message Created the Get Member Avatar command (user): get the server specific avatar of the user Created the Get User Avatar command (user): get the global avatar of the user Created the Get User Avatar Decoration command (user): get the avatar decoration of the user Created the Get Member JSON command (user): get the JSON object of the member Created the Get User JSON command (user): get the JSON object of the user Environment variables are now loaded at startup via a gradle task Added a LOG_LEVEL env to choose the level of the console output to show Created a util function for plurals Set tag name limit to 255 chars
Running a command now increases its uses value is the anonymous analytics table Added new env variables and improved the system used to throw errors so it always kills all the processes when calling require Created the dashboard ratelimits, sessions, auth middlewares/systems Created the Discord OAuth2 login Moved kord into a Bot object so it can be used in the dashboard too if needed Created a listener for the discord webhook (stuff like bot authorized, bot deauthorized etc.) [UNTESTED] Created a util function to get the bot’s invite url Created API services for the discord OAuth2 token requesting and apprise API There’s not much frontend / UI change so ima show a pic of the dash module code ig
Created the /steam command (slash): get info about a Steam game (optional detailed mode) or user Created the /translate command (slash): convert any text from a language to another (about 131 languages available) Installed the MS Azure SDK for the /translate (slash) & Translate Message (message) commands Updated file layout for the dashboard so it looks better Updated API services file layout too Updated Kotlin from 2.4.10 to 2.4.20 and other libs
Created the Get User Banner command (user): …what the name says Created the /github command (slash): get info about a GH user, repo or issue/PR Created the /weather command (slash): get the current weather of a specific place /steam game now uses buildString {} instead of adding to a array, then joining and merging it with another string
Created the /define command: get the definition of a word Updated the /steam game command to use components v2, and also a button to show the full game description if the detailed mode is too long to fit Switched some places from if (xxx) { ... } else { null } to xxx?.let { ... }
Created the /ubdict command: get the definition of a term from the urban dictionary Created the /wikipedia command: get an article from wikipedia Created the /fact command: get a random fact Created the /joke command: get a random joke Added a util function to split strings in group of approximately X character, but instead of cutting the text at exactly X characters, it cuts at the next end of a sentence after X characters, this way a sentence is never cut in half during pagination (currently only place where it’s used, aka /wikipedia command) Added the User-Agent header to all the HTTP requests Updated HttpLoggingInterceptor to use the correct logger class
Created the /uptime command: display how long the bot has been online for Created the /lyrics command: get the lyrics of a song (uses lrclib.net, lrcmux and lyricsOVH as sources) Fixed /define command failing when there were too many definitions (was going over the 40 components limit) Created the main README file Added ownerOnly property to commands, so when they’re first added to the db, it sets the list of owners in the OWNERS env as allowed users Added attachment options to the /embed command (for some reasons they’re added correctly but image and thumbnail don’t display while footer and author do)
Created the /help command: list all the commands of get info about a specific one Temporarily took the old dashboard and adapted it to the new framework (the html side is gonna get remade by a friend, orangc) Removed some unused envs Added TailwindCSS compiling at startup soit can be used in the dashboard
Rewrote the web dashboard to look better (by orangc) Added the API endpoints to manage commands on the dash side Added support for docker compose
Added environment check in the API endpoint like /status enable command Emoji envs are now correctly formatted in the error message Marked /status command as owner only
Ships:
I rewrote my userApps Discord bot from TypeScript to Kotlin just because I prefer kotlin now that i’ve been using it for about a while, and in the meanwhile i also added new commands to it...
|
1793346905.1389945
|
1793433305.1389945
|
|
4625
|
IDK by @shkolar007 | Stardance
|
shkolar007
|
0
|
0.0
|
0
|
[]
|
[{"post_id": 728, "ts": "2026- [{"post_id": 728, "ts": "2026-06-02T10:15:38Z", "hours": 0.0, "text": "I learned how o use diferent tools in fuion 360 to use it for y future projects"}]...
|
Title: IDK by @shkolar007 | Stardance
Devlogs:
I Title: IDK by @shkolar007 | Stardance
Devlogs:
I learned how o use diferent tools in fuion 360 to use it for y future projects...
|
1792860540.3647292
|
1793724540.3647292
|
|
12055
|
VOCA by @baoxkhanh781 | Stardance
|
baoxkhanh781
|
0
|
3.33
|
0
|
[]
|
[{"post_id": 7280, "ts": "2026 [{"post_id": 7280, "ts": "2026-06-12T04:13:55Z", "hours": 1.1783, "text": "Not really used to designing on .svg but after several fixes and support from Copilot, I finally made the logos and banners for the app. It’s no longer speech_coach, welcome to VOCA!"}, {"post_id": 6049, "ts": "2026-06-10T05:07:47Z", "hours": 0.9342, "text": "continue the no front-end development streak. For now I’ve just utilized the openAI client with temporary prompt to receive the context and help analyze speech with the exact format. This wasn’t what I expecting from the final app right now, but just a test to see if it’s working. Again, I’ll have to find the logic for more effective coaching. One thing I learned was how Flask couldn’t work and would continuously restart the server if it detected changes in the OpenAI library files."}, {"post_id": 5392, "ts": "2026-06-09T04:33:05Z", "hours": 0.6097, "text": "I added a feature where the user will upload a file that will be saved in /upload and then call an OpenAI’s whisper transcription API to do the task of speech-to-text. Since the app only shows text in mere html, I’ll have to improve its look later on. It’s also important that I have to figure out the coaching logic to evaluate the user’s speech (pace, tone, filler words, audience, or what purpose?). Next step is to focus on AI’s recommendation for users’ speech improvement."}, {"post_id": 5183, "ts": "2026-06-08T21:37:13Z", "hours": 0.6103, "text": "I started foundation with Flask, a basic audio upload form, and several Python code. After several debugging, the project is currently working with a Flask web server with upload endpoint using basic HTML for audio upload. The web is also able to store audio files."}]...
|
Title: VOCA by @baoxkhanh781 | Stardance
Devlogs: Title: VOCA by @baoxkhanh781 | Stardance
Devlogs:
I started foundation with Flask, a basic audio upload form, and several Python code. After several debugging, the project is currently working with a Flask web server with upload endpoint using basic HTML for audio upload. The web is also able to store audio files.
I added a feature where the user will upload a file that will be saved in /upload and then call an OpenAI’s whisper transcription API to do the task of speech-to-text. Since the app only shows text in mere html, I’ll have to improve its look later on. It’s also important that I have to figure out the coaching logic to evaluate the user’s speech (pace, tone, filler words, audience, or what purpose?). Next step is to focus on AI’s recommendation for users’ speech improvement.
continue the no front-end development streak. For now I’ve just utilized the openAI client with temporary prompt to receive the context and help analyze speech with the exact format. This wasn’t what I expecting from the final app right now, but just a test to see if it’s working. Again, I’ll have to find the logic for more effective coaching. One thing I learned was how Flask couldn’t work and would continuously restart the server if it detected changes in the OpenAI library files.
Not really used to designing on .svg but after several fixes and support from Copilot, I finally made the logos and banners for the app. It’s no longer speech_coach, welcome to VOCA!...
|
1793249408.8500085
|
1793854208.8500085
|
|
65170
|
Camera Light by @Best_Jaro | Stardance
|
Best_Jaro
|
0
|
1.13
|
0
|
[]
|
[{"post_id": 72800, "ts": "202 [{"post_id": 72800, "ts": "2026-09-23T19:16:33Z", "hours": 1.1333, "text": "First dev-vlog of this project! For the first dev-vlog i just disassembled the lamp into parts to use later to build a camera light in a 3d-printed case with a hot shoe mount."}]...
|
Title: Camera Light by @Best_Jaro | Stardance
Dev Title: Camera Light by @Best_Jaro | Stardance
Devlogs:
First dev-vlog of this project! For the first dev-vlog i just disassembled the lamp into parts to use later to build a camera light in a 3d-printed case with a hot shoe mount....
|
1793084028.3725717
|
1793688828.3725717
|
|
38756
|
Dragonfly Control Software by @dr_aerospace | Star Dragonfly Control Software by @dr_aerospace | Stardance...
|
dr_aerospace
|
1
|
35.0
|
515
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T15:04:18Z", "hours": 35.0, "multiplier": 12.24, "payout": 515, "blessing": "neutral", "text": "I made a program, written in the KerboScript language, to autonomously control a replica of NASA’s Dragonfly mission (or any kind of rotorcraft) in Kerbal Space Program. Aside of selecting your target altitude or waypoint, the script is designed to be completely independent of human interaction. To use this program, you will need a ship with rotors that can maneuver in any direction and a kOS-enabled probe core. The script also integrates with the SCANsat mod to show the user telemetry and ETA data in the terminal (you can still use the script if you don’t have the SCANsat mod). The program’s flight profile divides into four main stages Liftoff , Cruise , Approach , and Landing . Each one of these has its own variables, loops, conditionals, and triggers. The script’s flow is designed to move on with each stage in an orderly manner. Each stage also has controls for altitude, pitch, and throttle depending on which stage is the code running. Besides the main control functions, the script also has two safety function to prevent crashes or rolling down slopes. The first one of this functions is Landing Abort . This function activates the exact second the drone lands and checks for five seconds if its pitch or roll exceed dangerous angles. If so happens, the script will take off rapidly, fly in a straight line for 30 seconds, and attempt to land again. If the drone lands in stable ground, it simply understands that it landed in safe ground and that landing abort is not needed. The other safety function is called the Safe Altitude Maintenance . This function executes with every refresh of the Cruise loop, and checks if the drone is within its target altitude margin and the distance to the ground goes below 500 meters. If that occurs, the drone accelerates to climb and maintain a 500 meter distance to the ground. When the drone returns to its target altitude margin and the distance to the ground becomes greater than 500, it returns to its normal Cruise mode. This is especially useful when flying at low altitude and near mountainous regions. After the drone lands and confirms it is safely leveled, it activates the Scientific Analysis Sequence . This sequence is composed by PRINT, action group, and WAIT commands. The main idea of this function is that it is completely customizable; this way, the user can select which instruments activate at what time. Also, there is another function that, in a fraction of a second, activates only one action group just after the Cruise loop’s conditionals are fulfilled and before the Approach loop activates. The objective is to place either telemetry or barometric scans while the drone is airborne. The objective of this script is to make powered flight in KSP rather an autonomous, stress-free experience. Any KSP player, from newbie to experienced can use the script to automate planet exploration.", "repo": "https://github.com/JuanD0409/Dragonfly-Control-Software", "demo": "https://youtu.be/TBGFOX5xo8Q"}]...
|
[{"post_id": 72805, "ts": "202 [{"post_id": 72805, "ts": "2026-09-23T19:27:24Z", "hours": 2.4856, "text": "Devlog 8 (and final) of the Dragonfly Control Software I’m pleased to announce that the Dragonfly Control Software is ready to ship for review! Aside from final touches and adjustments, the last thing I made for the program is a function that triggers an action group set to activate telemetry scans from SCANsat-related parts. The idea for this is to place activation command for these scans in a determined action group triggered by the code itself. This function is called from the Cruise function right after its loop is complete and before the Approach function is called. This way, the telemetry scans are done at Dragonfly’s target altitude. You can see the function in action in the video I left below. Speaking about videos, I should get to editing the Demo video I have to upload. I’m very proud of myself and I hope many KSP players get to use this script since drones are very hard to design and fly in KSP."}, {"post_id": 72072, "ts": "2026-09-22T03:27:39Z", "hours": 3.5306, "text": "Devlog 7 of the Dragonfly Control Software Safety First! This devlog is all about the safety features of Dragonfly’s script. This script has two safety functions that work at certain times of Dragonfly’s flight procedure and for the same idea: NOT CRASHING . The first one is the Landing Abort set of functions (that I have talked about but never shown until today). The main idea of this function is to prevent rolling down a hill or mountain. It works by checking if Dragonfly’s pitch exceeds 45 degrees or if its roll exceeds 30 degrees (each to either side). If so happens, Dragonfly panics, takes off, locks its heading, flies straight for 30 seconds, and attempts to land. Once Dragonfly lands, it re-checks if its pitch or roll exceed the limiters, and takes off again if needed until it finds an adequate landing spot. The second function is a safe altitude maintenance function (something very much like the PULL UP PULL UP or CAUTION, TERRAIN alerts and crash avoidance systems on airplanes). This function constantly executes with every refreshing of the Cruise main UNTIL loop and evaluates the following conditions: if Dragonfly’s altitude over sea level is within a 10-meter margin of error around the target altitude, and if Dragonfly’s altitude over ground level goes below 500 meters. Both conditionals are joined by an AND gate and if both are true, Dragonfly initiates an altitude maintenance mode. It is supposed to maintain a 500 meter distance from the ground until its altitude over ground level is within a 10-meter margin around 500 meters and its altitude over sea level is around the same 10-meter margin around its target altitude. When both conditions are true, Dragonfly understands that it is once again at its target altitude and at a safe distance from the ground, and returns to its normal cruise. This mode is quite useful when flying low to avoid mountains or hills, especially steep ones like the ones in the video. Although this script is very smart are cautious, DO NOT FLY DRAGONFLY TO A MOUNTAIN! During my testing, I have had multiple crashes and errors while attempting to land at the sides or top of mountains. Also, if you fly Dragonfly to a mountain, the landing abort function will go crazy and keep you there for half an hour (or more) trying to land on the mountain. I have given my advice to thee, you shall see if you follow it or reject it."}, {"post_id": 69945, "ts": "2026-09-18T03:29:28Z", "hours": 8.3464, "text": "Devlog 6 of the Dragonfly Control Software I have worked than what should be considered overtime in the project and my effort is giving its fruits! With some help of AI doing a lot of math and calculus, I managed to make an actual approach function. First, Dragonfly calculates the distance to to the target Waypoint as a triangle. This means, in easy words, that the distance to the ground is one side of the triangle, the distance from the current point on the ground that Dragonfly is flying over to the Waypoint is the other side of the triangle, and the distance from the actual craft to the Waypoint is the hypotenuse of the triangle. Therefore, the idea is that Dragonfly follows that hypotenuse (shown in the video) all the way to the waypoint. Then, it levels its nose, activates the landing function, reduces its horizontal velocity to almost 0 by raising its nose (new characteristic), and softly lands. Also, I already wrote the landing abort function I talked about on the last Devlog, however, I had to re-write it since the SCANsat data for slope is apparently not valid or recognized, so, it did not work. What I made instead was a function that evaluates current pitch and roll right at landing, and, if either value crosses a limit, calls another function to make the drone take off, fly in a straight line, and call the landing function to try to land again. If the limit is not crossed, the drone simply activates the scientific analysis sequence. To summarize, this activates a land, check, and abort-or-stay loop of functions. This loop is executed until Dragonfly lands and its limits are not crossed. I will upload a video of it in the next devlog since I need to focus on fine-tuning the main functions first."}, {"post_id": 67002, "ts": "2026-09-13T01:12:05Z", "hours": 5.0267, "text": "Devlog 5 of the Dragonfly Control Software I’m proud to announce that Dragonfly has successfully completed its first trans-oceanic flight! I had previously tested Dragonfly’s cruise altitude range around 5-6 kilometers over sea level, but this time, I decided to go even higher to 10 kilometers. I noticed that, at this altitude, Dragonfly could fly much faster but needed more power to maintain its altitude; just like airplanes do here on Earth. The video below shows Dragonfly exiting one continent and entering another on Tekto. Also, I found out how to make the SCANsat integration work. If you watch the terminal closefully, you can see Dragonfly’s current coordinates changing as it flies, and other telemetry data like current biome, slope, and elevation. Turns out, I had accidentally targeted the side of a mountain as the landing area and Dragonfly almost starts rolling down it, so, that gave me an idea: landing abort. I think the best option to make this work is to use the SCANsat data for slope and, if it is beyond a certain amount, make the drone fly to another area until the slope becomes safe enough to land. I could either make it fly straight until slope decreases to a safe amount, or make the user select an alternative waypoint (preferably flat) to safely land in case Dragonfly cannot. I thought another way to make this work was by detecting if the user presses the abort button on KSP’s UI, but that would ruin the whole point of Dragonfly being completely autonomous. In real space missions there is no abort button (neither is a “revert to assembly” button like in KSP) that works faster than the speed of light, so that is not a viable option. Anyways, I feel this project is getting better and more realistic with every change I make."}, {"post_id": 63974, "ts": "2026-09-08T02:10:41Z", "hours": 4.8742, "text": "Devlog 4 of the Dragonfly Control Software Progress has been made! I have made multiple improvements to the code and its functioning in general. First, I added a telemetry integration function using the SCANsat mod (because what is a drone without telemetry, right?). Second, I wrote the scientific sequence function, but I have not yet integrated it into the drone. I have to assign its scientific devices to the action groups and calibrate their operating times. Third, I upgraded the Approach function and it now makes this butter-smooth leveling maneuver (seen on the video below) while also smoothly controlling its throttle, effectively maintaining its altitude within a 3 meter range. This script still has many improvements to be made, and I will definitely keep working on it."}, {"post_id": 54043, "ts": "2026-08-24T20:05:13Z", "hours": 3.6028, "text": "Devlog 3 of the Dragonfly Control Software After having a break because of medical things, I returned to continue improving my project. I updated the Approach function and now it works better. However, Dragonfly is falling short of its target waypoint so I’ll be fixing that problem. Also, I will leave a video showing the Landing function in action, enjoy it."}, {"post_id": 34974, "ts": "2026-07-26T03:24:59Z", "hours": 4.5442, "text": "Devlog 2 of the Dragonfly Control Software. After a complete code rewrite from scratch , I finally figured out how to make Dragonfly maneuver correctly. However, I need to calibrate a PID controller that makes the drone’s nose wobble up and down, but that is a minor problem now. I will continue to perfect the code to make it behave without any mayor issue. Anyways, here is a video of the drone taking off and cruising to its ideal altitude."}, {"post_id": 33840, "ts": "2026-07-24T02:38:20Z", "hours": 2.6011, "text": "Devlog 1 of the Dragonfly Control Software. I started this new project inspired by NASA’s Dragonfly mission since I wanted a harder challenge than the rover autopilot. However, I was then surprised by how difficult it was to make kOS control a drone’s angles (pitch, yaw, and roll) alongside with throttle, height control, speed, and who knows what more. So, I came up with PID functions that were built into kOS’s libraries that auto-correct the drone’s control variables mentiones before. After 2+ hours of troubleshooting in Kerbal Space Program (that sadly are not registered in Hackatime) I made the drone fly. Now, I need to debug the script even more to make it correct its pitch, and add altitude controls for adequate ascending, descending, and landing. I have the Outer Planets mod installed (quick context: KSP does not have Saturn, Uranus, and Neptune; this planet pack mod adds them and some moons into the game), so I sent Dragonfly to Tekto (recreation of Titan, the target moon for the real mission) where gravity is low and atmospheric pressure is higher than Kerbin (Earth in KSP). This moon is an absolute paradise for rotorcrafts like this. I’ll leave a video of the craft successfully performing its first takeoff below. Also, I totally did NOT almost crash it after assuming control."}]...
|
Title: Dragonfly Control Software by @dr_aerospace Title: Dragonfly Control Software by @dr_aerospace | Stardance
Devlogs:
Devlog 1 of the Dragonfly Control Software. I started this new project inspired by NASA’s Dragonfly mission since I wanted a harder challenge than the rover autopilot. However, I was then surprised by how difficult it was to make kOS control a drone’s angles (pitch, yaw, and roll) alongside with throttle, height control, speed, and who knows what more. So, I came up with PID functions that were built into kOS’s libraries that auto-correct the drone’s control variables mentiones before. After 2+ hours of troubleshooting in Kerbal Space Program (that sadly are not registered in Hackatime) I made the drone fly. Now, I need to debug the script even more to make it correct its pitch, and add altitude controls for adequate ascending, descending, and landing. I have the Outer Planets mod installed (quick context: KSP does not have Saturn, Uranus, and Neptune; this planet pack mod adds them and some moons into the game), so I sent Dragonfly to Tekto (recreation of Titan, the target moon for the real mission) where gravity is low and atmospheric pressure is higher than Kerbin (Earth in KSP). This moon is an absolute paradise for rotorcrafts like this. I’ll leave a video of the craft successfully performing its first takeoff below. Also, I totally did NOT almost crash it after assuming control.
Devlog 2 of the Dragonfly Control Software. After a complete code rewrite from scratch , I finally figured out how to make Dragonfly maneuver correctly. However, I need to calibrate a PID controller that makes the drone’s nose wobble up and down, but that is a minor problem now. I will continue to perfect the code to make it behave without any mayor issue. Anyways, here is a video of the drone taking off and cruising to its ideal altitude.
Devlog 3 of the Dragonfly Control Software After having a break because of medical things, I returned to continue improving my project. I updated the Approach function and now it works better. However, Dragonfly is falling short of its target waypoint so I’ll be fixing that problem. Also, I will leave a video showing the Landing function in action, enjoy it.
Devlog 4 of the Dragonfly Control Software Progress has been made! I have made multiple improvements to the code and its functioning in general. First, I added a telemetry integration function using the SCANsat mod (because what is a drone without telemetry, right?). Second, I wrote the scientific sequence function, but I have not yet integrated it into the drone. I have to assign its scientific devices to the action groups and calibrate their operating times. Third, I upgraded the Approach function and it now makes this butter-smooth leveling maneuver (seen on the video below) while also smoothly controlling its throttle, effectively maintaining its altitude within a 3 meter range. This script still has many improvements to be made, and I will definitely keep working on it.
Devlog 5 of the Dragonfly Control Software I’m proud to announce that Dragonfly has successfully completed its first trans-oceanic flight! I had previously tested Dragonfly’s cruise altitude range around 5-6 kilometers over sea level, but this time, I decided to go even higher to 10 kilometers. I noticed that, at this altitude, Dragonfly could fly much faster but needed more power to maintain its altitude; just like airplanes do here on Earth. The video below shows Dragonfly exiting one continent and entering another on Tekto. Also, I found out how to make the SCANsat integration work. If you watch the terminal closefully, you can see Dragonfly’s current coordinates changing as it flies, and other telemetry data like current biome, slope, and elevation. Turns out, I had accidentally targeted the side of a mountain as the landing area and Dragonfly almost starts rolling down it, so, that gave me an idea: landing abort. I think the best option to make this work is to use the SCANsat data for slope and, if it is beyond a certain amount, make the drone fly to another area until the slope becomes safe enough to land. I could either make it fly straight until slope decreases to a safe amount, or make the user select an alternative waypoint (preferably flat) to safely land in case Dragonfly cannot. I thought another way to make this work was by detecting if the user presses the abort button on KSP’s UI, but that would ruin the whole point of Dragonfly being completely autonomous. In real space missions there is no abort button (neither is a “revert to assembly” button like in KSP) that works faster than the speed of light, so that is not a viable option. Anyways, I feel this project is getting better and more realistic with every change I make.
Devlog 6 of the Dragonfly Control Software I have worked than what should be considered overtime in the project and my effort is giving its fruits! With some help of AI doing a lot of math and calculus, I managed to make an actual approach function. First, Dragonfly calculates the distance to to the target Waypoint as a triangle. This means, in easy words, that the distance to the ground is one side of the triangle, the distance from the current point on the ground that Dragonfly is flying over to the Waypoint is the other side of the triangle, and the distance from the actual craft to the Waypoint is the hypotenuse of the triangle. Therefore, the idea is that Dragonfly follows that hypotenuse (shown in the video) all the way to the waypoint. Then, it levels its nose, activates the landing function, reduces its horizontal velocity to almost 0 by raising its nose (new characteristic), and softly lands. Also, I already wrote the landing abort function I talked about on the last Devlog, however, I had to re-write it since the SCANsat data for slope is apparently not valid or recognized, so, it did not work. What I made instead was a function that evaluates current pitch and roll right at landing, and, if either value crosses a limit, calls another function to make the drone take off, fly in a straight line, and call the landing function to try to land again. If the limit is not crossed, the drone simply activates the scientific analysis sequence. To summarize, this activates a land, check, and abort-or-stay loop of functions. This loop is executed until Dragonfly lands and its limits are not crossed. I will upload a video of it in the next devlog since I need to focus on fine-tuning the main functions first.
Devlog 7 of the Dragonfly Control Software Safety First! This devlog is all about the safety features of Dragonfly’s script. This script has two safety functions that work at certain times of Dragonfly’s flight procedure and for the same idea: NOT CRASHING . The first one is the Landing Abort set of functions (that I have talked about but never shown until today). The main idea of this function is to prevent rolling down a hill or mountain. It works by checking if Dragonfly’s pitch exceeds 45 degrees or if its roll exceeds 30 degrees (each to either side). If so happens, Dragonfly panics, takes off, locks its heading, flies straight for 30 seconds, and attempts to land. Once Dragonfly lands, it re-checks if its pitch or roll exceed the limiters, and takes off again if needed until it finds an adequate landing spot. The second function is a safe altitude maintenance function (something very much like the PULL UP PULL UP or CAUTION, TERRAIN alerts and crash avoidance systems on airplanes). This function constantly executes with every refreshing of the Cruise main UNTIL loop and evaluates the following conditions: if Dragonfly’s altitude over sea level is within a 10-meter margin of error around the target altitude, and if Dragonfly’s altitude over ground level goes below 500 meters. Both conditionals are joined by an AND gate and if both are true, Dragonfly initiates an altitude maintenance mode. It is supposed to maintain a 500 meter distance from the ground until its altitude over ground level is within a 10-meter margin around 500 meters and its altitude over sea level is around the same 10-meter margin around its target altitude. When both conditions are true, Dragonfly understands that it is once again at its target altitude and at a safe distance from the ground, and returns to its normal cruise. This mode is quite useful when flying low to avoid mountains or hills, especially steep ones like the ones in the video. Although this script is very smart are cautious, DO NOT FLY DRAGONFLY TO A MOUNTAIN! During my testing, I have had multiple crashes and errors while attempting to land at the sides or top of mountains. Also, if you fly Dragonfly to a mountain, the landing abort function will go crazy and keep you there for half an hour (or more) trying to land on the mountain. I have given my advice to thee, you shall see if you follow it or reject it.
Devlog 8 (and final) of the Dragonfly Control Software I’m pleased to announce that the Dragonfly Control Software is ready to ship for review! Aside from final touches and adjustments, the last thing I made for the program is a function that triggers an action group set to activate telemetry scans from SCANsat-related parts. The idea for this is to place activation command for these scans in a determined action group triggered by the code itself. This function is called from the Cruise function right after its loop is complete and before the Approach function is called. This way, the telemetry scans are done at Dragonfly’s target altitude. You can see the function in action in the video I left below. Speaking about videos, I should get to editing the Demo video I have to upload. I’m very proud of myself and I hope many KSP players get to use this script since drones are very hard to design and fly in KSP.
Ships:
I made a program, written in the KerboScript language, to autonomously control a replica of NASA’s Dragonfly mission (or any kind of rotorcraft) in Kerbal Space Program. Aside of selecting your target altitude or waypoint, the script is designed to be completely independent of human interaction. To use this program, you will need a ship with rotors that can maneuver in any direction and a kOS-enabled probe core. The script also integrates with the SCANsat mod to show the user telemetry and ETA data in the terminal (you can still use the script if you don’t have the SCANsat mod). The program’s flight profile divides into four main stages Liftoff , Cruise , Approach , and Landing . Each one of these has its own variables, loops, conditionals, and triggers. The script’s flow is designed to move on with each stage in an orderly manner. Each stage also has controls for altitude, pitch, and throttle depending on which stage is the code running. Besides the main control functions, the script also has two safety function to prevent crashes or rolling down slopes. The first one of this functions is Landing Abort . This function activates the exact second the drone lands and checks for five seconds if its pitch or roll exceed dangerous angles. If so happens, the script will take off rapidly, fly in a straight line for 30 seconds, and attempt to land again. If the drone lands in stable ground, it simply understands that it landed in safe ground and that landing abort is not needed. The other safety function is called the Safe Altitude Maintenance . This function executes with every refresh of the Cruise loop, and checks if the drone is within its target altitude margin and the distance to the ground goes below 500 meters. If that occurs, the drone accelerates to climb and maintain a 500 meter distance to the ground. When the drone returns to its target altitude margin and the distance to the ground becomes greater than 500, it returns to its normal Cruise mode. This is especially useful when flying at low altitude and near mountainous regions. After the drone lands and confirms it is safely leveled, it activates the Scientific Analysis Sequence . This sequence is composed by PRINT, action group, and WAIT commands. The main idea of this function is that it is completely customizable; this way, the user can select which instruments activate at what time. Also, there is another function that, in a fraction of a second, activates only one action group just after the Cruise loop’s conditionals are fulfilled and before the Approach loop activates. The objective is to place either telemetry or barometric scans while the drone is airborne. The objective of this script is to make powered flight in KSP rather an autonomous, stress-free experience. Any KSP player, from newbie to experienced can use the script to automate planet exploration....
|
1793336087.5189898
|
1793422487.5189898
|
|
64812
|
TypeBee by @Divij | Stardance
|
Divij
|
0
|
2.06
|
0
|
[]
|
[{"post_id": 72809, "ts": "202 [{"post_id": 72809, "ts": "2026-09-23T19:34:29Z", "hours": 0.9289, "text": "Fixed bugs and uploaded project to Github pages"}, {"post_id": 72570, "ts": "2026-09-23T08:05:43Z", "hours": 1.1314, "text": "🐝 Type Bee Type Bee is a modern, audio-first desktop spelling application built from scratch using Python and Pygame. Inspired by clean digital learning dashboards (such as assignment platforms like Satchel One), it provides an engaging typing practice tool that fetches vocabulary directly from an online 10,000 headwords PDF source. 🚀 Key Features Audio-First Challenges : Uses the pyttsx3 text-to-speech engine to read words aloud. Accent Customization : Easily switch between available system voice accents right from the menu. Online PDF Parsing : Automatically streams and extracts headwords on-the-fly using requests and pypdf . Satchel One-Inspired UI : Clean dashboard layout complete with dynamic button hover animations and live score tracking. Smooth Performance : Fully multithreaded network requests to eliminate “Not Responding” freezes on startup. 🛠️ Tech Stack Component Technology Purpose Engine Pygame Window rendering, event loop, and UI graphics Audio pyttsx3 Offline text-to-speech pronunciation Network / Parsing requests & pypdf Online PDF stream fetching and text extraction Concurrency threading Non-blocking background data loading 📋 Changelog / Devlog Milestone 1: Core Prototype & Audio Integration Initialized Pygame window loops and basic keyboard text input. Integrated pyttsx3 for automated word pronunciation upon round progression. Milestone 2: Cloud Data Pipeline Added dynamic PDF fetching from online web sources. Implemented background threading ( threading.Thread ) to ensure the application window never locks up or reports “Not Responding” while streaming data. Milestone 3: Dashboard UI/UX Overhaul Redesigned the interface to mirror clean assignment workflows. Added a blinking text input cursor, hover-responsive buttons, and live question/score trackers. Streamlined the user flow to focus purely on rapid audio spelling drills."}]...
|
Title: TypeBee by @Divij | Stardance
Devlogs:
🐝 T Title: TypeBee by @Divij | Stardance
Devlogs:
🐝 Type Bee Type Bee is a modern, audio-first desktop spelling application built from scratch using Python and Pygame. Inspired by clean digital learning dashboards (such as assignment platforms like Satchel One), it provides an engaging typing practice tool that fetches vocabulary directly from an online 10,000 headwords PDF source. 🚀 Key Features Audio-First Challenges : Uses the pyttsx3 text-to-speech engine to read words aloud. Accent Customization : Easily switch between available system voice accents right from the menu. Online PDF Parsing : Automatically streams and extracts headwords on-the-fly using requests and pypdf . Satchel One-Inspired UI : Clean dashboard layout complete with dynamic button hover animations and live score tracking. Smooth Performance : Fully multithreaded network requests to eliminate “Not Responding” freezes on startup. 🛠️ Tech Stack Component Technology Purpose Engine Pygame Window rendering, event loop, and UI graphics Audio pyttsx3 Offline text-to-speech pronunciation Network / Parsing requests & pypdf Online PDF stream fetching and text extraction Concurrency threading Non-blocking background data loading 📋 Changelog / Devlog Milestone 1: Core Prototype & Audio Integration Initialized Pygame window loops and basic keyboard text input. Integrated pyttsx3 for automated word pronunciation upon round progression. Milestone 2: Cloud Data Pipeline Added dynamic PDF fetching from online web sources. Implemented background threading ( threading.Thread ) to ensure the application window never locks up or reports “Not Responding” while streaming data. Milestone 3: Dashboard UI/UX Overhaul Redesigned the interface to mirror clean assignment workflows. Added a blinking text input cursor, hover-responsive buttons, and live question/score trackers. Streamlined the user flow to focus purely on rapid audio spelling drills.
Fixed bugs and uploaded project to Github pages...
|
1793066077.1787434
|
1793670877.1787434
|
|
63903
|
Present for your partener by @Pery | Stardance
|
Pery
|
0
|
0.4
|
0
|
[]
|
[{"post_id": 72812, "ts": "202 [{"post_id": 72812, "ts": "2026-09-23T19:37:21Z", "hours": 0.3997, "text": "devlog 1# Today i will start my last project for this wonderful program (it was my first program and i love it SOOO much.) For my last project here, i chose to create a site that you can create (or choose a template) to send to someone you love! Im doing this because i finally got a gf and this idea came in my mind, i make this for my relationship (of course) BUT also for you guys to send to someone you love!!"}]...
|
Title: Present for your partener by @Pery | Starda Title: Present for your partener by @Pery | Stardance
Devlogs:
devlog 1# Today i will start my last project for this wonderful program (it was my first program and i love it SOOO much.) For my last project here, i chose to create a site that you can create (or choose a template) to send to someone you love! Im doing this because i finally got a gf and this idea came in my mind, i make this for my relationship (of course) BUT also for you guys to send to someone you love!!...
|
1793055163.704565
|
1793659963.704565
|
|
62509
|
something something idk by @alexqwsa | Stardance
|
alexqwsa
|
0
|
3.91
|
0
|
[]
|
[{"post_id": 72814, "ts": "202 [{"post_id": 72814, "ts": "2026-09-23T19:41:14Z", "hours": 2.1075, "text": "i made more stuff like a platformer player model (i have no idea what else to name it) timerer mini gaem 2 (there is nothing) yea thats basically all i added also i edited minigame_1.tscn to have a player and some platforms (yes, the platforms are a bit diagonal because why not) what i learned from thisdevlog: how to make player models (in 2d ofc) how t o use the animation thing something how to regret also i used ai because im evil /j"}, {"post_id": 69771, "ts": "2026-09-17T19:16:30Z", "hours": 1.8039, "text": "i made two scenes and three scripts, there are currently two problems: first of all, there is an error in the timer script and i have no idea how to fix it and the second one is, that the designs are currently a placeholder because i have no idea how to do visual design but i might have an idea for something like a grade system or something similar like that 🤔 but yea i think the error in the timer (or something idk) script might be easily fixable (i think)"}]...
|
Title: something something idk by @alexqwsa | Star Title: something something idk by @alexqwsa | Stardance
Devlogs:
i made two scenes and three scripts, there are currently two problems: first of all, there is an error in the timer script and i have no idea how to fix it and the second one is, that the designs are currently a placeholder because i have no idea how to do visual design but i might have an idea for something like a grade system or something similar like that 🤔 but yea i think the error in the timer (or something idk) script might be easily fixable (i think)
i made more stuff like a platformer player model (i have no idea what else to name it) timerer mini gaem 2 (there is nothing) yea thats basically all i added also i edited minigame_1.tscn to have a player and some platforms (yes, the platforms are a bit diagonal because why not) what i learned from thisdevlog: how to make player models (in 2d ofc) how t o use the animation thing something how to regret also i used ai because im evil /j...
|
1793044469.9149702
|
1793649269.9149702
|
|
24990
|
Fortress Fighter by @codingfreak234 | Stardance
|
codingfreak234
|
2
|
12.0
|
30
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:39:15Z", "hours": 0.0, "multiplier": 3.46, "payout": 2, "blessing": "neutral", "text": "I made some mistakes. Mainly, I wrote a terrible readme(oops), and completely forgot to tell anyone how to play the game. Also, I had it named as a RPG, which it is not. And now, after fixing these, I’m ready to re-release. To avoid a repeat: Use WASD to move Use L to launch a long range blast in the direction of travel Use K to launch a short range blast in the direction of travel I really hope I didn’t miss anything that needed to be fixed. Have Fun!", "repo": "https://github.com/CodingFreak234/Fortress-Fighter-Sprig-game", "demo": "https://sprig.hackclub.com/share/IgY4OhjZCEx4bOdCrc6c"}, {"ship_num": 2, "ts": "2026-09-08T02:26:07Z", "hours": 12.0, "multiplier": 2.33, "payout": 28, "blessing": "neutral", "text": "I made a basic RPG in sprig! It was really hard, especially since, this was my first real JavaScript project. I think the game turned out great, and I hope you enjoy it.", "repo": "https://github.com/CodingFreak234/Fortress-Fighter-Sprig-game", "demo": "https://sprig.hackclub.com/share/IgY4OhjZCEx4bOdCrc6c"}]...
|
[{"post_id": 72821, "ts": "202 [{"post_id": 72821, "ts": "2026-09-23T20:09:39Z", "hours": 0.4758, "text": "Mistakes were made… specifically the one were I forgot to tell anyone how to play my game. So here it is, and I will also include it in the second ship as well. Oh, and I added it to the read me as well. Plus, I changed the name, because it really isn’t an rpg. I updated the placement of the health and score displays as well because I needed time to make a devlog so I can ship again. controls are wasd to move/rotate. Use L to attack the bugs with long range blasts, and K to hit them with short range ones."}, {"post_id": 63981, "ts": "2026-09-08T02:23:44Z", "hours": 1.2344, "text": "I’M DONE!!! I finished the modifications, made a repository for the project, and I’m going to ship it. (This took me way too long…)"}, {"post_id": 56183, "ts": "2026-08-27T20:24:33Z", "hours": 1.89, "text": "Over the past week or so, I reworked the controls. I did this so I could add some sort of long range weapon. the long range weapon would be able to hit more enemies with longer range, but would also do less damage. It was a lot of trial and error, and I’m still not done. I need to add the script where the enemies get damaged, but only part way. I also need to make it so that the long range blasts get removed from the screen after a second."}, {"post_id": 38577, "ts": "2026-08-01T01:51:24Z", "hours": 1.0628, "text": "Today I fixed a bug where the enemies in my game weren’t spawning at the very top of the playing field, they were spawning a little below it. After that I fixed a potential bug about being able to move the character out of bounds, and a very real bug about the program trying to spawn an attack sprite out of bounds. In fixing that, I also restrained the player a little more, making it harder to farm the enemies. Finally, I tried to add a theme song, but either something with the software didn’t work, or I have just failed to see the exit button for three or four days strait. The problem is likely that second option."}, {"post_id": 26324, "ts": "2026-07-11T01:50:56Z", "hours": 2.5386, "text": "I worked a lot on my Sprig RPG today, and got a lot of work done. I also got the project done. For those of you who are familiar with sprig, the game will be released there soon (hopefully tommorrow). However, lets go through what I did today. First off, I updated the player character from a large blue block to a blue circle with an orange outline. second, I added a castle for the player to defend. I also made it fairly difficult for players to puppy gaurd one segment of the castle. Finnally, I made it so that the game gets progressively harder. That’s what I did today. Enjoy!"}, {"post_id": 25588, "ts": "2026-07-09T22:45:30Z", "hours": 0.5617, "text": "Today I did a lot of debugging and solved all known problems with the game. I (finally) fixed the health counter and made the blasts disappear shortly after they are fired. finally, I regulated the numbers of enemies to make them more manageable. Next time I’m going to do the final graphic design and then add some sort of castle for the player to defend. Enjoy!"}, {"post_id": 24469, "ts": "2026-07-08T01:24:56Z", "hours": 1.4217, "text": "I worked on debugging for both yesterday and today. I had one particular problem where the player could attack the enemies in the game, but the attack would do nothing to the enemy. I fixed that, and now I only have a few more bugs to fix. Right now, I still have to fix the health counter, and then I have to figure out how to make the blasts disappear about a half-second after the player brings them into existence. Enjoy!"}, {"post_id": 18862, "ts": "2026-06-30T01:59:26Z", "hours": 0.8964, "text": "I worked on fighting mechanics today for my sprig RPG. I have it so that you can blast the enemy sprites with the IJKL buttons, and then move around with the WASD buttons. There was a lot of tweaking in the code today, but it works. I haven’t fixed the health counter yet, but I think I know what’s wrong, and I plan to fix it soon. Enjoy!"}, {"post_id": 16059, "ts": "2026-06-26T02:54:05Z", "hours": 1.4053, "text": "I continued to work on the Sprig RPG today. Initially, I had planned for there to be some kind of wall building mechanic in the game, but I realized that might be a little over my head, so I put that on the shelf for now. I created an initial game loop today, and it’s working okay. The one problem I’ve run into is the health counter. In the game, you start at 10 health I tried to make it so that after every hit you go down by one, but after the first hit you go up to 90, and then it counts down by ten after that. I’m going to try and figure that out next week. Enjoy!"}, {"post_id": 14812, "ts": "2026-06-24T01:40:09Z", "hours": 0.9139, "text": "I started on a basic RPG in sprig. To start off I did preliminary graphic design, and then I coded the wasd controls."}]...
|
Title: Fortress Fighter by @codingfreak234 | Stard Title: Fortress Fighter by @codingfreak234 | Stardance
Devlogs:
I started on a basic RPG in sprig. To start off I did preliminary graphic design, and then I coded the wasd controls.
I continued to work on the Sprig RPG today. Initially, I had planned for there to be some kind of wall building mechanic in the game, but I realized that might be a little over my head, so I put that on the shelf for now. I created an initial game loop today, and it’s working okay. The one problem I’ve run into is the health counter. In the game, you start at 10 health I tried to make it so that after every hit you go down by one, but after the first hit you go up to 90, and then it counts down by ten after that. I’m going to try and figure that out next week. Enjoy!
I worked on fighting mechanics today for my sprig RPG. I have it so that you can blast the enemy sprites with the IJKL buttons, and then move around with the WASD buttons. There was a lot of tweaking in the code today, but it works. I haven’t fixed the health counter yet, but I think I know what’s wrong, and I plan to fix it soon. Enjoy!
I worked on debugging for both yesterday and today. I had one particular problem where the player could attack the enemies in the game, but the attack would do nothing to the enemy. I fixed that, and now I only have a few more bugs to fix. Right now, I still have to fix the health counter, and then I have to figure out how to make the blasts disappear about a half-second after the player brings them into existence. Enjoy!
Today I did a lot of debugging and solved all known problems with the game. I (finally) fixed the health counter and made the blasts disappear shortly after they are fired. finally, I regulated the numbers of enemies to make them more manageable. Next time I’m going to do the final graphic design and then add some sort of castle for the player to defend. Enjoy!
I worked a lot on my Sprig RPG today, and got a lot of work done. I also got the project done. For those of you who are familiar with sprig, the game will be released there soon (hopefully tommorrow). However, lets go through what I did today. First off, I updated the player character from a large blue block to a blue circle with an orange outline. second, I added a castle for the player to defend. I also made it fairly difficult for players to puppy gaurd one segment of the castle. Finnally, I made it so that the game gets progressively harder. That’s what I did today. Enjoy!
Today I fixed a bug where the enemies in my game weren’t spawning at the very top of the playing field, they were spawning a little below it. After that I fixed a potential bug about being able to move the character out of bounds, and a very real bug about the program trying to spawn an attack sprite out of bounds. In fixing that, I also restrained the player a little more, making it harder to farm the enemies. Finally, I tried to add a theme song, but either something with the software didn’t work, or I have just failed to see the exit button for three or four days strait. The problem is likely that second option.
Over the past week or so, I reworked the controls. I did this so I could add some sort of long range weapon. the long range weapon would be able to hit more enemies with longer range, but would also do less damage. It was a lot of trial and error, and I’m still not done. I need to add the script where the enemies get damaged, but only part way. I also need to make it so that the long range blasts get removed from the screen after a second.
I’M DONE!!! I finished the modifications, made a repository for the project, and I’m going to ship it. (This took me way too long…)
Mistakes were made… specifically the one were I forgot to tell anyone how to play my game. So here it is, and I will also include it in the second ship as well. Oh, and I added it to the read me as well. Plus, I changed the name, because it really isn’t an rpg. I updated the placement of the health and score displays as well because I needed time to make a devlog so I can ship again. controls are wasd to move/rotate. Use L to attack the bugs with long range blasts, and K to hit them with short range ones.
Ships:
I made a basic RPG in sprig! It was really hard, especially since, this was my first real JavaScript project. I think the game turned out great, and I hope you enjoy it.
I made some mistakes. Mainly, I wrote a terrible readme(oops), and completely forgot to tell anyone how to play the game. Also, I had it named as a RPG, which it is not. And now, after fixing these, I’m ready to re-release. To avoid a repeat: Use WASD to move Use L to launch a long range blast in the direction of travel Use K to launch a short range blast in the direction of travel I really hope I didn’t miss anything that needed to be fixed. Have Fun!...
|
1793335703.9197366
|
1793422103.9197366
|
|
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....
|
1793339522.3290257
|
1793425922.3290257
|
|
29817
|
Gleam by @arth_mi | Stardance
|
arth_mi
|
1
|
31.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T22:29:30Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Gleam is a FastAPI backend driving RGBW strips through a generic plugin API, so effects are built on exposed primitives (color, intensity, dim) rather than hardcoded. The tricky part was getting the architecture right first: syncing modules through a shared clock and separating color/intensity/white as distinct render layers. I’m especially proud of the Ambilight module, which captures HDMI output live and mirrors it onto the strip in real time, fully on-device with no cloud dependency.", "repo": "https://github.com/arthmi/gleam", "demo": "https://gleam-virid.vercel.app/docs"}]...
|
[{"post_id": 72828, "ts": "202 [{"post_id": 72828, "ts": "2026-09-23T20:31:06Z", "hours": 10.8583, "text": "Just finished a new module! The module is called audio_reactive and, as its name suggests, it reacts to the audio input provided (system default if parameter = None). It lights up the selected target as the sound gets louder. It also features animations to make sudden transitions feel smoother.Here are the parameters for this module: device: Audio input device name, or a portion of it (empty = system default) color: Color of the light min_intensity: Intensity when the input is silent [0.0 - 1.0] max_intensity: Intensity at maximum volume [0.0 - 1.0] sensitivity: Gain applied to the normalized level [0.1 - 5.0] attack: Rise time in milliseconds (how quickly the light reacts to a louder sound) release: Fall time in milliseconds (how slowly the light fades when the sound drops)"}, {"post_id": 45228, "ts": "2026-08-11T15:51:49Z", "hours": 3.2964, "text": "Rewrite the entirety of the Ambilight module for better functionalities and performances. I wrote an advanced algorithm to get a smoother result in addition to more parameters : device_index edge reversed band_depth_percent weight_exponent sample_overlap_percent saturation_boost -temporal_smoothing_tau The main functionalities added are: Advanced Color Averaging: Improved methods to calculate smarter average colors, such as sampling larger color bands or allowing LEDs to influence adjacent colors. Temporal Smoothing: Introduction of “temporal_smoothing_tau” to ensure smoother, more natural color transitions over time. Enhanced Immersion: Addition of “saturation_boost” and “weight_exponent” parameters to deliver a more vibrant and immersive visual experience. For instance, the colors on the left terminal simulate the final result that would handle the left edge of the screen (using default parameters)."}, {"post_id": 34682, "ts": "2026-07-25T16:23:38Z", "hours": 16.5069, "text": "Just finished the main functionalities of the ambilight module of my LED controller. It takes a stream from the edge of the screen (HDMI to USB, for example), then processes each frame to get the average color of the surrounding area. I’m still working on a blur effect that would give a less detailed result for a better experience. (Sorry for the bad recording quality, this was made on an old laptop.)"}]...
|
Title: Gleam by @arth_mi | Stardance
Devlogs:
Jus Title: Gleam by @arth_mi | Stardance
Devlogs:
Just finished the main functionalities of the ambilight module of my LED controller. It takes a stream from the edge of the screen (HDMI to USB, for example), then processes each frame to get the average color of the surrounding area. I’m still working on a blur effect that would give a less detailed result for a better experience. (Sorry for the bad recording quality, this was made on an old laptop.)
Rewrite the entirety of the Ambilight module for better functionalities and performances. I wrote an advanced algorithm to get a smoother result in addition to more parameters : device_index edge reversed band_depth_percent weight_exponent sample_overlap_percent saturation_boost -temporal_smoothing_tau The main functionalities added are: Advanced Color Averaging: Improved methods to calculate smarter average colors, such as sampling larger color bands or allowing LEDs to influence adjacent colors. Temporal Smoothing: Introduction of “temporal_smoothing_tau” to ensure smoother, more natural color transitions over time. Enhanced Immersion: Addition of “saturation_boost” and “weight_exponent” parameters to deliver a more vibrant and immersive visual experience. For instance, the colors on the left terminal simulate the final result that would handle the left edge of the screen (using default parameters).
Just finished a new module! The module is called audio_reactive and, as its name suggests, it reacts to the audio input provided (system default if parameter = None). It lights up the selected target as the sound gets louder. It also features animations to make sudden transitions feel smoother.Here are the parameters for this module: device: Audio input device name, or a portion of it (empty = system default) color: Color of the light min_intensity: Intensity when the input is silent [0.0 - 1.0] max_intensity: Intensity at maximum volume [0.0 - 1.0] sensitivity: Gain applied to the normalized level [0.1 - 5.0] attack: Rise time in milliseconds (how quickly the light reacts to a louder sound) release: Fall time in milliseconds (how slowly the light fades when the sound drops)
Ships:
Gleam is a FastAPI backend driving RGBW strips through a generic plugin API, so effects are built on exposed primitives (color, intensity, dim) rather than hardcoded. The tricky part was getting the architecture right first: syncing modules through a shared clock and separating color/intensity/white as distinct render layers. I’m especially proud of the Ambilight module, which captures HDMI output live and mirrors it onto the strip in real time, fully on-device with no cloud dependency....
|
1793350086.3759375
|
1793436486.3759375
|
|
61143
|
Bloch sphere simulation by @Danou | Stardance
|
Danou
|
0
|
2.42
|
0
|
[]
|
[{"post_id": 72830, "ts": "202 [{"post_id": 72830, "ts": "2026-09-23T20:37:46Z", "hours": 1.5161, "text": "Devlog #2 Hello everyone after 1-2 weeks of non-posting, i post he second devlog of my bloch sphere project. i have did nothing speacial because of school,homework,sport, and many other stuff. Soo what i tryed to create ? I started to view how could i represent the bloch sphere since i start i had the idea to do a 3D representations, as you except to amount of time and my restricted knowledge don’t let me to do a great 3D render (complex calculus and even maybe hardware limitation but i try to keep in mind all of my idea. I started to “make” a way of how i could do the bloch could be represented. First i need to make it to be visualized from 360 view, option to view the state of the sphere(by using logical quantum gate) and even animation with how it could be represented as little animation, simple data review etc. Here you will view a simple representations of what i want to do.(yes i know is not little much for 2 weeks of ork but i tryed to do all my possible 🥀)"}, {"post_id": 68271, "ts": "2026-09-14T20:23:52Z", "hours": 0.9056, "text": "Devlog #1 Of my Bloch sphere simulation. Hello everyone here my new project trying to simulate an interactive Bloch Sphere. In a nutshell bloch sphere is the theoretic view of a qubit, we simulate a qubit as a ball to be more simple to understand but i continue to struggle then i hear all of the explanation,soo i want to find a way to understand not fast but more in the depth. This is why i want to createthis project(it will be very complex and i already struggle with the notebook envirronement.I created simple lines of code to start the “fundamentals” i will try to document myself more in the courses of IBM. Oh and i forget to mention all of my devlog will contain at least a little trace from IBM quantum courses. If is anything that you don’t understand or you want to learn more here is where i take all my documentation. https://quantum.cloud.ibm.com/ . Yes i did pretty nothing but is because of school and other activities 😭"}]...
|
Title: Bloch sphere simulation by @Danou | Stardan Title: Bloch sphere simulation by @Danou | Stardance
Devlogs:
Devlog #1 Of my Bloch sphere simulation. Hello everyone here my new project trying to simulate an interactive Bloch Sphere. In a nutshell bloch sphere is the theoretic view of a qubit, we simulate a qubit as a ball to be more simple to understand but i continue to struggle then i hear all of the explanation,soo i want to find a way to understand not fast but more in the depth. This is why i want to createthis project(it will be very complex and i already struggle with the notebook envirronement.I created simple lines of code to start the “fundamentals” i will try to document myself more in the courses of IBM. Oh and i forget to mention all of my devlog will contain at least a little trace from IBM quantum courses. If is anything that you don’t understand or you want to learn more here is where i take all my documentation. https://quantum.cloud.ibm.com/ . Yes i did pretty nothing but is because of school and other activities 😭
Devlog #2 Hello everyone after 1-2 weeks of non-posting, i post he second devlog of my bloch sphere project. i have did nothing speacial because of school,homework,sport, and many other stuff. Soo what i tryed to create ? I started to view how could i represent the bloch sphere since i start i had the idea to do a 3D representations, as you except to amount of time and my restricted knowledge don’t let me to do a great 3D render (complex calculus and even maybe hardware limitation but i try to keep in mind all of my idea. I started to “make” a way of how i could do the bloch could be represented. First i need to make it to be visualized from 360 view, option to view the state of the sphere(by using logical quantum gate) and even animation with how it could be represented as little animation, simple data review etc. Here you will view a simple representations of what i want to do.(yes i know is not little much for 2 weeks of ork but i tryed to do all my possible 🥀)...
|
1793037233.5543306
|
1793642033.5543306
|
|
64958
|
Door Alarm (micro:bit) by @logan_springborn | Star Door Alarm (micro:bit) by @logan_springborn | Stardance...
|
logan_springborn
|
0
|
0.56
|
0
|
[]
|
[{"post_id": 72833, "ts": "202 [{"post_id": 72833, "ts": "2026-09-23T20:42:16Z", "hours": 0.5608, "text": "Currently coding a java program to set off an alarm when a magnet gets close to my micro:bit to end up using it as a door alarm."}]...
|
Title: Door Alarm (micro:bit) by @logan_springborn Title: Door Alarm (micro:bit) by @logan_springborn | Stardance
Devlogs:
Currently coding a java program to set off an alarm when a magnet gets close to my micro:bit to end up using it as a door alarm....
|
1793072911.350408
|
1793677711.350408
|
|
56342
|
ImtClock by @Imtiaz | Stardance
|
Imtiaz
|
0
|
8.95
|
0
|
[]
|
[{"post_id": 72834, "ts": "202 [{"post_id": 72834, "ts": "2026-09-23T20:43:48Z", "hours": 3.7667, "text": "Done with the CAD stuff"}, {"post_id": 69294, "ts": "2026-09-16T19:13:37Z", "hours": 0.7667, "text": "lots of crashes, and work on school lab PC. added sliding system for the screen so that it stays on place. I made the screw holder small for that so it adjusts itself when screwing. The colors will still be grey and red."}, {"post_id": 63270, "ts": "2026-09-07T00:36:57Z", "hours": 1.3544, "text": "Made some changes on the .step files and the firmware."}, {"post_id": 59877, "ts": "2026-09-01T21:16:54Z", "hours": 1.2922, "text": "All done, CAD Files, firmwares. Now, time to ship."}, {"post_id": 59145, "ts": "2026-08-31T19:27:49Z", "hours": 0.7, "text": "made the pcb lol"}, {"post_id": 59103, "ts": "2026-08-31T18:41:26Z", "hours": 1.0667, "text": "Made the schematics and assigned the footprints"}]...
|
Title: ImtClock by @Imtiaz | Stardance
Devlogs:
M Title: ImtClock by @Imtiaz | Stardance
Devlogs:
Made the schematics and assigned the footprints
made the pcb lol
All done, CAD Files, firmwares. Now, time to ship.
Made some changes on the .step files and the firmware.
lots of crashes, and work on school lab PC. added sliding system for the screen so that it stays on place. I made the screw holder small for that so it adjusts itself when screwing. The colors will still be grey and red.
Done with the CAD stuff...
|
1792658917.1963224
|
1793263717.1963224
|
|
26917
|
Henkan by @Kaanreal | Stardance
|
Kaanreal
|
5
|
87.0
|
1040
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T06:37:02Z", "hours": 24.0, "multiplier": 17.32, "payout": 173, "blessing": "neutral", "text": "This update is mostly about making Henkan feel a lot more complete on desktop. You can now save conversions directly into your detected osu!stable and Etterna song folders, so there’s way less manual moving files around. I also redesigned the desktop navigation and added proper pages for conversion history and your local osu! skin library. Pack conversion got a pretty big upgrade too. You can select which difficulties you actually want to convert, review the metadata for each song, and packs using multiple audio files are now automatically separated into individual songs. I also fixed metadata handling so every map keeps its own artist, title, subtitle, audio and background instead of accidentally sharing data across the pack. Live map detection can now be controlled separately for osu! and Etterna, and Henkan remembers the background of the last map you opened even after restarting. There are a bunch of smaller fixes too: faster pack conversion, better Etterna timing and current-song detection, preserved audio bitrate when changing rates, cleaner loading states and buttons, fixed navigation, plus some macOS and Linux specific fixes. The docs were also refreshed, and Henkan finally has its new domain: https://henkan.kaan.moe", "repo": "https://github.com/kaanreal/henkan", "demo": "http://henkan.kaan.moe/"}, {"ship_num": 2, "ts": "2026-09-06T21:12:59Z", "hours": 5.0, "multiplier": 15.89, "payout": 83, "blessing": "neutral", "text": "This update is mostly about getting Henkan into more places. Henkan can now be installed through winget, Homebrew, the AUR, Chocolatey and nixpkgs. If you use a normal package manager, you don’t have to hunt down the GitHub releases anymore. The site got some attention too. All pages are usable on phones now, and shared links show a proper preview card. I also changed the app icon and logo to a new emblem, which now shows up everywhere, from the desktop app and favicon to the package managers above. Smaller fixes: the preview receptors now line up with the note art, so the editor and the game agree on how the chart looks. You can try the latest release here: https://github.com/kaanreal/henkan/releases Its really hard to provide screenshots or other things cause it is really niche", "repo": "https://github.com/kaanreal/henkan", "demo": "http://henkan.kaan.moe/"}, {"ship_num": 3, "ts": "2026-08-16T23:31:00Z", "hours": 5.0, "multiplier": 18.03, "payout": 88, "blessing": "neutral", "text": "This update is mostly about making Henkan nicer to actually use. The biggest change is the beatmap preview. It can now autoplay the chart when you leave it idle, with notes falling under the receptors like in osu!mania and the HUD staying centered. It makes it way easier to get a feel for a chart before exporting instead of just staring at static note columns. Henkan is also now available in 8 languages . While adding localization, I ended up replacing i18next with a small custom system since I really didn’t need a whole library for what Henkan uses. It’s simpler, lighter, and still covers the entire app. I also added something I’ve wanted for a while: if you import a random .osu file without its audio or background, Henkan can now try to grab the missing files from an osu! mirror automatically. So incomplete beatmap folders are a lot less annoying to deal with. There are some smaller fixes too. Skin images are handled more reliably, previews should match the actual result better, and the updater now gets the real release notes from GitHub instead of showing a placeholder. You can try the latest release here: https://github.com/kaanreal/henkan/releases Its really hard to provide screenshots or other things cause it is really niche", "repo": "https://github.com/kaanreal/henkan", "demo": "http://henkan.kaan.moe/"}, {"ship_num": 4, "ts": "2026-07-27T14:26:43Z", "hours": 32.0, "multiplier": 19.37, "payout": 387, "blessing": "neutral", "text": "Hello, I’ve continued working on Henkan, my osu!mania ↔ Etterna converter, and released several major updates since my first ship. The biggest addition is full skin conversion. Henkan can now convert osu!mania skins into Etterna noteskins and convert Etterna noteskins back into osu!mania skins. This required handling lane textures, sprite sheets, high-resolution assets, Lua files, metrics, redirects, and the different ways both games structure their skins. I also added customizable difficulty name presets. Exported charts can automatically use information such as the title, artist, creator, original difficulty name, or calculated MSD. Users can also change the column width when exporting to osu!mania. Several conversion issues were fixed, including problems with extreme BPM values, export filenames, media files, and configuration support. The web version now behaves much more like the desktop app, with matching exports and features across Rust, Tauri, and WebAssembly. I also improved the project outside of the main application. Windows builds now use NSIS installers, Henkan is available through the AUR, the documentation has been expanded, the CI workflows have been cleaned up, and I added an end-to-end test for the skin converter. Keeping the desktop and web versions consistent is still one of the hardest parts of the project, since converter changes often need separate implementations for Rust and WebAssembly. My goal is still to make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without losing important data.", "repo": "https://github.com/kaanreal/henkan", "demo": "http://henkan.kaan.moe/"}, {"ship_num": 5, "ts": "2026-07-03T22:04:17Z", "hours": 21.0, "multiplier": 18.3, "payout": 309, "blessing": "neutral", "text": "Hello, I made an osu!mania ↔ Etterna converter called Henkan (変換). I started the project because I noticed that most existing converters didn’t preserve maps correctly. Timing would drift, BPM changes would be lost or simplified, and long notes would often break during conversion. I wanted to build a converter that focused on accuracy instead of quick conversions. Henkan converts beatmaps between osu!mania (.osu / .osz) and Etterna/StepMania (.sm) while preserving the original chart as closely as possible. It keeps millisecond-accurate note timing, supports multiple BPM changes, correctly converts long notes, preserves metadata such as title, artist, creator, difficulty, and preview point, and keeps background references. The application is written as a native desktop app using Rust, Tauri, and React, making it lightweight and fast on Windows, macOS, and Linux. It also supports converting entire packs, allowing users to process many maps at once instead of converting them individually. One limitation is that scroll velocity (SV) is not converted from osu!mania to StepMania because the .sm format does not have an equivalent representation for osu!’s green-line SV changes. My goal with Henkan is to provide a reliable converter that players can trust to preserve their charts accurately instead of introducing timing errors or losing important map information.", "repo": "https://github.com/kaanreal/henkan", "demo": "http://henkan.kaan.moe/"}]...
|
[{"post_id": 72835, "ts": "202 [{"post_id": 72835, "ts": "2026-09-23T20:44:40Z", "hours": 12.7947, "text": "Hello! I worked on Henkan a lot again, mostly on making the desktop app nicer and faster to actually use.One of the biggest changes is that Henkan can now save conversions directly into your detected osu!stable or Etterna song folders. So instead of exporting something and moving it into the game manually, you can just convert it and have it show up where it belongs.I also redesigned the desktop navigation and added pages for your conversion history and local osu! skins. The live map detection settings were improved too, so osu! and Etterna hooks can now be enabled separately.Pack conversion got a lot of work as well. You can select individual difficulties before converting, check the metadata for every song, and packs with different audio files are now split into separate songs automatically. I also fixed a bunch of cases where maps inside a pack could lose their own artist, title, audio or background.The converter now remembers the background of the last map you opened too, even after restarting Henkan. It’s a small thing but makes the home screen feel a lot less empty.There were also a bunch of smaller changes. Loading states and buttons are more consistent, navigation is less messy, pack conversion is faster, Etterna timing and current song detection were improved, and changing song rate now keeps the original audio bitrate.I fixed some platform specific stuff too, mainly the osu!lazer background bridge on macOS and Etterna song detection on Linux.I also refreshed the docs and finally moved Henkan to its new domain https://henkan.kaan.moe registrar might be slow so try https://henkan-chi.vercel.app/"}, {"post_id": 69360, "ts": "2026-09-16T21:49:50Z", "hours": 10.9842, "text": "Hello! I worked on Henkan again and added something I’ve wanted for a while. Henkan can now detect the map you currently have open in osu!stable, osu!lazer, or Etterna and show it directly in the converter. No tosu or any other external tool required.This makes it much faster to open Henkan and immediately work with the chart you’re currently playing or editing.Still working on making the whole workflow between osu!mania and Etterna feel as seamless as possible."}, {"post_id": 63187, "ts": "2026-09-06T21:07:39Z", "hours": 5.2017, "text": "Hello! I’ve kept working on Henkan, and shipped quite a few updates since v1.5.0. The biggest new feature is a playable beatmap preview. The editor can now autoplay charts when you’re not interacting with it, notes render underneath the receptors like they do in osu!mania, and the HUD stays properly centered. It makes it much easier to get a feel for how a chart actually plays before exporting it instead of only looking at the note data.Henkan also supports 8 languages now. While adding localization, I ended up removing i18next and replacing it with a much smaller custom localization system. Henkan doesn’t really need everything i18next provides, so this keeps things simpler and lighter.I also improved importing incomplete osu! beatmaps. If you only have an .osu file and the audio or background is missing, Henkan can now automatically try to fetch the missing files from an osu! mirror.There were also a bunch of smaller conversion fixes. Skin images are handled more reliably, and previews should now be closer to what you actually see in-game. Release notes are fetched properly from GitHub instead of using the old placeholder, and config overrides now work consistently in both conversion directions.osu! exports got some fixes too. Backgrounds are included even when the source chart doesn’t directly reference them, cdtitle files are only copied when they’re actually needed, and hold notes were cleaned up to follow the normal osu!mania format with proper hitsounds and clean samples instead of creating unnecessary or broken sound files.I’ve also been trying to close the gap between the desktop and web versions. The web build now has much closer feature and export parity with the Rust/Tauri version, and CI automatically rebuilds the WebAssembly binaries whenever something is pushed to main.Keeping both versions in sync is still one of the more annoying parts of working on Henkan, since some converter changes have to be implemented separately for Rust and WebAssembly, but it’s getting a lot better.The goal is still the same: make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without randomly losing important data."}, {"post_id": 48540, "ts": "2026-08-16T23:29:21Z", "hours": 4.8736, "text": "Hello! I’ve kept working on Henkan, my osu!mania ↔ Etterna converter, and shipped quite a few updates since v1.5.0.The biggest new feature is a playable beatmap preview. The editor can now autoplay charts when you’re not interacting with it, notes render underneath the receptors like they do in osu!mania, and the HUD stays properly centered. It makes it much easier to get a feel for how a chart actually plays before exporting it instead of only looking at the note data.Henkan also supports 8 languages now. While adding localization, I ended up removing i18next and replacing it with a much smaller custom localization system. Henkan doesn’t really need everything i18next provides, so this keeps things simpler and lighter.I also improved importing incomplete osu! beatmaps. If you only have an .osu file and the audio or background is missing, Henkan can now automatically try to fetch the missing files from an osu! mirror.There were also a bunch of smaller conversion fixes. Skin images are handled more reliably, and previews should now be closer to what you actually see in-game. Release notes are fetched properly from GitHub instead of using the old placeholder, and config overrides now work consistently in both conversion directions.osu! exports got some fixes too. Backgrounds are included even when the source chart doesn’t directly reference them, cdtitle files are only copied when they’re actually needed, and hold notes were cleaned up to follow the normal osu!mania format with proper hitsounds and clean samples instead of creating unnecessary or broken sound files.I’ve also been trying to close the gap between the desktop and web versions. The web build now has much closer feature and export parity with the Rust/Tauri version, and CI automatically rebuilds the WebAssembly binaries whenever something is pushed to main.Keeping both versions in sync is still one of the more annoying parts of working on Henkan, since some converter changes have to be implemented separately for Rust and WebAssembly, but it’s getting a lot better.The goal is still the same: make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without randomly losing important data."}, {"post_id": 35508, "ts": "2026-07-26T23:56:48Z", "hours": 12.4944, "text": "Henkan Devlog (v1.3.1 → v1.5.0) v1.4.0 (July 20-23) This update was mainly about skin conversion. I added support for converting osu!mania skins to Etterna noteskins and back. It ended up being much bigger than I expected, with over 1,600 lines of code just for the converter. I also added difficulty name presets with placeholders like title, artist, creator, difficulty, and MSD, fixed an issue with extreme BPM values, and added a column width setting for osu!mania exports. Outside of the app, I improved CI, switched Windows installers to NSIS, added AUR support, improved the documentation, and wrote a full end-to-end test for skin conversion. v1.5.0 (July 24-26) This update focused on making the web version behave the same as the desktop app. I fixed export names, media handling, and config support so browser exports now match Tauri. I also fixed a spacebar shortcut bug, made update notes render as Markdown, and cleaned up the CI workflows. Keeping the web and desktop versions in sync is still one of the hardest parts since every converter change has to work in both Rust and WASM."}, {"post_id": 31742, "ts": "2026-07-20T11:47:27Z", "hours": 19.8603, "text": "Devlog — Countdown fix + WASM sync Fixed countdown being on by default when converting Etterna to osu. Added Countdown: 0 to the [General] section in the converter, the dummy diff generator, and the TypeScript equivalent. Discovered the web version was using a stale pre-built WASM binary that didn’t have any of the Rust fixes. Created wasm-core/ — a new crate that builds WASM from the same Rust source via #[path] references. No code duplication. Added npm run build:wasm for local rebuilds and a CI job that auto-rebuilds WASM on push to main so it never goes stale again"}, {"post_id": 21788, "ts": "2026-07-03T22:01:33Z", "hours": 1.7431, "text": "Hello, today I polished and finished the newest version of Henkan! This version is now the most stable version that also introduced an web based app."}, {"post_id": 21102, "ts": "2026-07-02T21:55:30Z", "hours": 5.2581, "text": "Hello, today I fully worked on making my project available for the web via Vercel! I had to solve many issues like permission issues , timing issues , upload issues and more , I eventually fixed it and can say that it’s working stable now! Now I have to sleep…"}, {"post_id": 19532, "ts": "2026-06-30T21:09:08Z", "hours": 14.2728, "text": "Hello, this is my first log! I have to admit that my project is kinda niche but it fills the gaps of the rhythm game community. Short introduction : Im making an advanced osu!mania ↔ Etterna beatmap converter to simplify the mapping and playing of maps. I really depend on making it high performance and feature rich, for example: I had to go through many issues like fixing timing issues , conversion logic , or other things, but I learned from it and fixed them in a way that sets other converters in the ground. I started my project a few days before I found out about stardance hack club so im kinda sad that this time doesn’t count :(. Anyways, im happy to share my progress from now on. Today I focused on developing the CLI for my project and polishing some things, I think it turned out great"}]...
|
Title: Henkan by @Kaanreal | Stardance
Devlogs:
H Title: Henkan by @Kaanreal | Stardance
Devlogs:
Hello, this is my first log! I have to admit that my project is kinda niche but it fills the gaps of the rhythm game community. Short introduction : Im making an advanced osu!mania ↔ Etterna beatmap converter to simplify the mapping and playing of maps. I really depend on making it high performance and feature rich, for example: I had to go through many issues like fixing timing issues , conversion logic , or other things, but I learned from it and fixed them in a way that sets other converters in the ground. I started my project a few days before I found out about stardance hack club so im kinda sad that this time doesn’t count :(. Anyways, im happy to share my progress from now on. Today I focused on developing the CLI for my project and polishing some things, I think it turned out great
Hello, today I fully worked on making my project available for the web via Vercel! I had to solve many issues like permission issues , timing issues , upload issues and more , I eventually fixed it and can say that it’s working stable now! Now I have to sleep…
Hello, today I polished and finished the newest version of Henkan! This version is now the most stable version that also introduced an web based app.
Devlog — Countdown fix + WASM sync Fixed countdown being on by default when converting Etterna to osu. Added Countdown: 0 to the [General] section in the converter, the dummy diff generator, and the TypeScript equivalent. Discovered the web version was using a stale pre-built WASM binary that didn’t have any of the Rust fixes. Created wasm-core/ — a new crate that builds WASM from the same Rust source via #[path] references. No code duplication. Added npm run build:wasm for local rebuilds and a CI job that auto-rebuilds WASM on push to main so it never goes stale again
Henkan Devlog (v1.3.1 → v1.5.0) v1.4.0 (July 20-23) This update was mainly about skin conversion. I added support for converting osu!mania skins to Etterna noteskins and back. It ended up being much bigger than I expected, with over 1,600 lines of code just for the converter. I also added difficulty name presets with placeholders like title, artist, creator, difficulty, and MSD, fixed an issue with extreme BPM values, and added a column width setting for osu!mania exports. Outside of the app, I improved CI, switched Windows installers to NSIS, added AUR support, improved the documentation, and wrote a full end-to-end test for skin conversion. v1.5.0 (July 24-26) This update focused on making the web version behave the same as the desktop app. I fixed export names, media handling, and config support so browser exports now match Tauri. I also fixed a spacebar shortcut bug, made update notes render as Markdown, and cleaned up the CI workflows. Keeping the web and desktop versions in sync is still one of the hardest parts since every converter change has to work in both Rust and WASM.
Hello! I’ve kept working on Henkan, my osu!mania ↔ Etterna converter, and shipped quite a few updates since v1.5.0.The biggest new feature is a playable beatmap preview. The editor can now autoplay charts when you’re not interacting with it, notes render underneath the receptors like they do in osu!mania, and the HUD stays properly centered. It makes it much easier to get a feel for how a chart actually plays before exporting it instead of only looking at the note data.Henkan also supports 8 languages now. While adding localization, I ended up removing i18next and replacing it with a much smaller custom localization system. Henkan doesn’t really need everything i18next provides, so this keeps things simpler and lighter.I also improved importing incomplete osu! beatmaps. If you only have an .osu file and the audio or background is missing, Henkan can now automatically try to fetch the missing files from an osu! mirror.There were also a bunch of smaller conversion fixes. Skin images are handled more reliably, and previews should now be closer to what you actually see in-game. Release notes are fetched properly from GitHub instead of using the old placeholder, and config overrides now work consistently in both conversion directions.osu! exports got some fixes too. Backgrounds are included even when the source chart doesn’t directly reference them, cdtitle files are only copied when they’re actually needed, and hold notes were cleaned up to follow the normal osu!mania format with proper hitsounds and clean samples instead of creating unnecessary or broken sound files.I’ve also been trying to close the gap between the desktop and web versions. The web build now has much closer feature and export parity with the Rust/Tauri version, and CI automatically rebuilds the WebAssembly binaries whenever something is pushed to main.Keeping both versions in sync is still one of the more annoying parts of working on Henkan, since some converter changes have to be implemented separately for Rust and WebAssembly, but it’s getting a lot better.The goal is still the same: make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without randomly losing important data.
Hello! I’ve kept working on Henkan, and shipped quite a few updates since v1.5.0. The biggest new feature is a playable beatmap preview. The editor can now autoplay charts when you’re not interacting with it, notes render underneath the receptors like they do in osu!mania, and the HUD stays properly centered. It makes it much easier to get a feel for how a chart actually plays before exporting it instead of only looking at the note data.Henkan also supports 8 languages now. While adding localization, I ended up removing i18next and replacing it with a much smaller custom localization system. Henkan doesn’t really need everything i18next provides, so this keeps things simpler and lighter.I also improved importing incomplete osu! beatmaps. If you only have an .osu file and the audio or background is missing, Henkan can now automatically try to fetch the missing files from an osu! mirror.There were also a bunch of smaller conversion fixes. Skin images are handled more reliably, and previews should now be closer to what you actually see in-game. Release notes are fetched properly from GitHub instead of using the old placeholder, and config overrides now work consistently in both conversion directions.osu! exports got some fixes too. Backgrounds are included even when the source chart doesn’t directly reference them, cdtitle files are only copied when they’re actually needed, and hold notes were cleaned up to follow the normal osu!mania format with proper hitsounds and clean samples instead of creating unnecessary or broken sound files.I’ve also been trying to close the gap between the desktop and web versions. The web build now has much closer feature and export parity with the Rust/Tauri version, and CI automatically rebuilds the WebAssembly binaries whenever something is pushed to main.Keeping both versions in sync is still one of the more annoying parts of working on Henkan, since some converter changes have to be implemented separately for Rust and WebAssembly, but it’s getting a lot better.The goal is still the same: make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without randomly losing important data.
Hello! I worked on Henkan again and added something I’ve wanted for a while. Henkan can now detect the map you currently have open in osu!stable, osu!lazer, or Etterna and show it directly in the converter. No tosu or any other external tool required.This makes it much faster to open Henkan and immediately work with the chart you’re currently playing or editing.Still working on making the whole workflow between osu!mania and Etterna feel as seamless as possible.
Hello! I worked on Henkan a lot again, mostly on making the desktop app nicer and faster to actually use.One of the biggest changes is that Henkan can now save conversions directly into your detected osu!stable or Etterna song folders. So instead of exporting something and moving it into the game manually, you can just convert it and have it show up where it belongs.I also redesigned the desktop navigation and added pages for your conversion history and local osu! skins. The live map detection settings were improved too, so osu! and Etterna hooks can now be enabled separately.Pack conversion got a lot of work as well. You can select individual difficulties before converting, check the metadata for every song, and packs with different audio files are now split into separate songs automatically. I also fixed a bunch of cases where maps inside a pack could lose their own artist, title, audio or background.The converter now remembers the background of the last map you opened too, even after restarting Henkan. It’s a small thing but makes the home screen feel a lot less empty.There were also a bunch of smaller changes. Loading states and buttons are more consistent, navigation is less messy, pack conversion is faster, Etterna timing and current song detection were improved, and changing song rate now keeps the original audio bitrate.I fixed some platform specific stuff too, mainly the osu!lazer background bridge on macOS and Etterna song detection on Linux.I also refreshed the docs and finally moved Henkan to its new domain https://henkan.kaan.moe registrar might be slow so try https://henkan-chi.vercel.app/
Ships:
Hello, I made an osu!mania ↔ Etterna converter called Henkan (変換). I started the project because I noticed that most existing converters didn’t preserve maps correctly. Timing would drift, BPM changes would be lost or simplified, and long notes would often break during conversion. I wanted to build a converter that focused on accuracy instead of quick conversions. Henkan converts beatmaps between osu!mania (.osu / .osz) and Etterna/StepMania (.sm) while preserving the original chart as closely as possible. It keeps millisecond-accurate note timing, supports multiple BPM changes, correctly converts long notes, preserves metadata such as title, artist, creator, difficulty, and preview point, and keeps background references. The application is written as a native desktop app using Rust, Tauri, and React, making it lightweight and fast on Windows, macOS, and Linux. It also supports converting entire packs, allowing users to process many maps at once instead of converting them individually. One limitation is that scroll velocity (SV) is not converted from osu!mania to StepMania because the .sm format does not have an equivalent representation for osu!’s green-line SV changes. My goal with Henkan is to provide a reliable converter that players can trust to preserve their charts accurately instead of introducing timing errors or losing important map information.
Hello, I’ve continued working on Henkan, my osu!mania ↔ Etterna converter, and released several major updates since my first ship. The biggest addition is full skin conversion. Henkan can now convert osu!mania skins into Etterna noteskins and convert Etterna noteskins back into osu!mania skins. This required handling lane textures, sprite sheets, high-resolution assets, Lua files, metrics, redirects, and the different ways both games structure their skins. I also added customizable difficulty name presets. Exported charts can automatically use information such as the title, artist, creator, original difficulty name, or calculated MSD. Users can also change the column width when exporting to osu!mania. Several conversion issues were fixed, including problems with extreme BPM values, export filenames, media files, and configuration support. The web version now behaves much more like the desktop app, with matching exports and features across Rust, Tauri, and WebAssembly. I also improved the project outside of the main application. Windows builds now use NSIS installers, Henkan is available through the AUR, the documentation has been expanded, the CI workflows have been cleaned up, and I added an end-to-end test for the skin converter. Keeping the desktop and web versions consistent is still one of the hardest parts of the project, since converter changes often need separate implementations for Rust and WebAssembly. My goal is still to make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without losing important data.
This update is mostly about making Henkan nicer to actually use. The biggest change is the beatmap preview. It can now autoplay the chart when you leave it idle, with notes falling under the receptors like in osu!mania and the HUD staying centered. It makes it way easier to get a feel for a chart before exporting instead of just staring at static note columns. Henkan is also now available in 8 languages . While adding localization, I ended up replacing i18next with a small custom system since I really didn’t need a whole library for what Henkan uses. It’s simpler, lighter, and still covers the entire app. I also added something I’ve wanted for a while: if you import a random .osu file without its audio or background, Henkan can now try to grab the missing files from an osu! mirror automatically. So incomplete beatmap folders are a lot less annoying to deal with. There are some smaller fixes too. Skin images are handled more reliably, previews should match the actual result better, and the updater now gets the real release notes from GitHub instead of showing a placeholder. You can try the latest release here: https://github.com/kaanreal/henkan/releases Its really hard to provide screenshots or other things cause it is really niche
This update is mostly about getting Henkan into more places. Henkan can now be installed through winget, Homebrew, the AUR, Chocolatey and nixpkgs. If you use a normal package manager, you don’t have to hunt down the GitHub releases anymore. The site got some attention too. All pages are usable on phones now, and shared links show a proper preview card. I also changed the app icon and logo to a new emblem, which now shows up everywhere, from the desktop app and favicon to the package managers above. Smaller fixes: the preview receptors now line up with the note art, so the editor and the game agree on how the chart looks. You can try the latest release here: https://github.com/kaanreal/henkan/releases Its really hard to provide screenshots or other things cause it is really niche
This update is mostly about making Henkan feel a lot more complete on desktop. You can now save conversions directly into your detected osu!stable and Etterna song folders, so there’s way less manual moving files around. I also redesigned the desktop navigation and added proper pages for conversion history and your local osu! skin library. Pack conversion got a pretty big upgrade too. You can select which difficulties you actually want to convert, review the metadata for each song, and packs using multiple audio files are now automatically separated into individual songs. I also fixed metadata handling so every map keeps its own artist, title, subtitle, audio and background instead of accidentally sharing data across the pack. Live map detection can now be controlled separately for osu! and Etterna, and Henkan remembers the background of the last map you opened even after restarting. There are a bunch of smaller fixes too: faster pack conversion, better Etterna timing and current-song detection, preserved audio bitrate when changing rates, cleaner loading states and buttons, fixed navigation, plus some macOS and Linux specific fixes. The docs were also refreshed, and Henkan finally has its new domain: https://henkan.kaan.moe...
|
1793202513.7081807
|
1793288913.7081807
|
|
25202
|
ZenZei OS by @zenzei | Stardance
|
zenzei
|
1
|
10.49
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T13:49:40Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an OS which is a web operating system that looks like it is from the future and has a space theme. It runs in the browser. I made it useing HTML, CSS and JavaScript. The hardest part was making all the different parts work together. These parts include the custom window manager, the animated starfield, the built-in applications and the synthesized sound effects. I had to make sure everything was lightweight worked well and was easy to use. I am really proud of making ZenZei OS** feel like a desktop without using any extra frameworks or libraries. This shows what can be done with the basic web technologies. To try this OS you just need to open the index.html file in a browser, like Chrome, Edge or Firefox. You can also use a local web server if you want. Then you can look around the desktop by opening the applications. You can. Resize the windows. You can try the commands. You can play the Asteroids game. You can draw with Stellar Draw. You can also change the way OS looks through the Orion Control settings. This is all from me !", "repo": "https://github.com/hossainmahmudchowdhury-boop/zenzei_os", "demo": "https://hossaingit.itch.io/zenzeios"}]...
|
[{"post_id": 72845, "ts": "202 [{"post_id": 72845, "ts": "2026-09-23T21:03:59Z", "hours": 2.7367, "text": "The clumsy is on his way !"}, {"post_id": 49648, "ts": "2026-08-18T15:19:31Z", "hours": 0.6017, "text": "Updating the bar interface"}, {"post_id": 35742, "ts": "2026-07-27T11:39:31Z", "hours": 2.1511, "text": "Rephasing the inner container,"}, {"post_id": 23464, "ts": "2026-07-06T13:33:42Z", "hours": 0.6703, "text": "Final lookup!"}, {"post_id": 17809, "ts": "2026-06-28T18:59:29Z", "hours": 3.1939, "text": "Hey I have just design attractive background in my OS. Some thing new is comming !"}, {"post_id": 15519, "ts": "2026-06-25T06:38:40Z", "hours": 0.6828, "text": "Hey ! I have Just starting my OS project . Hopefully I will start the coding today with js , html and css . (^_^)"}]...
|
Title: ZenZei OS by @zenzei | Stardance
Devlogs:
Title: ZenZei OS by @zenzei | Stardance
Devlogs:
Hey ! I have Just starting my OS project . Hopefully I will start the coding today with js , html and css . (^_^)
Hey I have just design attractive background in my OS. Some thing new is comming !
Final lookup!
Rephasing the inner container,
Updating the bar interface
The clumsy is on his way !
Ships:
I made an OS which is a web operating system that looks like it is from the future and has a space theme. It runs in the browser. I made it useing HTML, CSS and JavaScript. The hardest part was making all the different parts work together. These parts include the custom window manager, the animated starfield, the built-in applications and the synthesized sound effects. I had to make sure everything was lightweight worked well and was easy to use. I am really proud of making ZenZei OS** feel like a desktop without using any extra frameworks or libraries. This shows what can be done with the basic web technologies. To try this OS you just need to open the index.html file in a browser, like Chrome, Edge or Firefox. You can also use a local web server if you want. Then you can look around the desktop by opening the applications. You can. Resize the windows. You can try the commands. You can play the Asteroids game. You can draw with Stellar Draw. You can also change the way OS looks through the Orion Control settings. This is all from me !...
|
1793260475.4936228
|
1794124475.4936228
|
|
37820
|
Basketball-lab by @jonathanrobin13 | Stardance
|
jonathanrobin13
|
0
|
29.36
|
0
|
[]
|
[{"post_id": 72850, "ts": "202 [{"post_id": 72850, "ts": "2026-09-23T21:20:14Z", "hours": 4.0611, "text": "Working website"}, {"post_id": 70689, "ts": "2026-09-19T16:23:48Z", "hours": 1.8717, "text": "Angle Finder I got a working calculator that can get the angle of the elbow, wrist and shoulder! I used a lot of geometery like acos and atan2 from the py math module. The math was hard so I had to youtube it and implement in this. Just to make sure my angle calculator was actually reading the correct measurements, I identified the angle, so it was reading it correctly even if I rotate myself."}, {"post_id": 59238, "ts": "2026-08-31T22:21:52Z", "hours": 4.6078, "text": "Frontend Backend Connection I got the frontend to send frames to the backend, then backend runs mediapipe on the frames then sends frames back to backend where they are displayed It is pretty laggy right now, so I will add a latest-frame buffer so that I can grab the newest frames, not the older ones."}, {"post_id": 46585, "ts": "2026-08-13T22:27:33Z", "hours": 2.3228, "text": "Detecting Human Body MediaPipe I finally got to understand how mediapipe works and how to set it up. I got it select certain body parts that are key to shooting a basketball, like the knees, elbows, wrists, shoulder, ankles, and some more. I used circles to identify those spots on my body, and it worked. The fps was really smooth comapared to the YOLO model for tracking the ball, so Im happy about that. Next I need to focus on finding angles of the person, like the angle when they make their shot."}, {"post_id": 43540, "ts": "2026-08-08T21:25:10Z", "hours": 1.3011, "text": "Server Connection Today i got create a server connection and connect it to multiple devices on my Wi-Fi network. I used uvicorn and fastapi to connect python to javascript. Error Windows firewall was blocking connection for other devices, so they weren’t able to get in. I disabled all rules for python, so then it worked. But only the frontend was working, the backend did not work."}, {"post_id": 42232, "ts": "2026-08-06T20:57:54Z", "hours": 4.4508, "text": "BasketLab Home Page (Will add CSS trust) Today’s focus was more on the website, not on the actual tracking. I got the idea for my home page. HTML I made the basic html file today. Right now, I just created my idea and the words. I used a lot of semantic tags, maybe too much, but overall it was pretty good. CSS I just touched the CSS part for this home page. I worked mainly on getting the background color, fonts and the navigator bar at the top. I got my font from google. For the navigator bar, I worked on the spacing between the buttons and logo."}, {"post_id": 40938, "ts": "2026-08-04T19:43:58Z", "hours": 0.2831, "text": "Added more pictures (trust me) still learning how to use tag need to add yolo AI need to integrate Mediapipe Worked on website (basic html) need to get domain maybe might need server later, not needed though"}, {"post_id": 40912, "ts": "2026-08-04T19:01:06Z", "hours": 4.8844, "text": "Created Website (trust the process) I’m still learning html and css, but this is a good place to start Might put some more memes??? Use css a lot more no js right now, later implement it Tracking stuff add OpenCV later convert yolo AI model to onnx, Put some better graphics"}, {"post_id": 34306, "ts": "2026-07-24T21:53:48Z", "hours": 2.7303, "text": "YOLO Model for tracking"}, {"post_id": 32654, "ts": "2026-07-21T23:00:29Z", "hours": 1.9772, "text": "Tracking System What I Did Tracking.py created used opencv to help me track created simple tracking system for a ball works for any ball uses camera real time Split main.py into two files video.py image.py added video for data Need to improve work on color detection switch to hsv"}, {"post_id": 32080, "ts": "2026-07-21T00:07:58Z", "hours": 0.8678, "text": "Setup project This is my first devlog of this project. What I did today: learned how to get images and show them (example in picture) learned about venv and downloaded a bunch of libraries still working on learning opencv-python for processing Need to work on later Add video processing Add analysis of basketball"}]...
|
Title: Basketball-lab by @jonathanrobin13 | Starda Title: Basketball-lab by @jonathanrobin13 | Stardance
Devlogs:
Setup project This is my first devlog of this project. What I did today: learned how to get images and show them (example in picture) learned about venv and downloaded a bunch of libraries still working on learning opencv-python for processing Need to work on later Add video processing Add analysis of basketball
Tracking System What I Did Tracking.py created used opencv to help me track created simple tracking system for a ball works for any ball uses camera real time Split main.py into two files video.py image.py added video for data Need to improve work on color detection switch to hsv
YOLO Model for tracking
Created Website (trust the process) I’m still learning html and css, but this is a good place to start Might put some more memes??? Use css a lot more no js right now, later implement it Tracking stuff add OpenCV later convert yolo AI model to onnx, Put some better graphics
Added more pictures (trust me) still learning how to use tag need to add yolo AI need to integrate Mediapipe Worked on website (basic html) need to get domain maybe might need server later, not needed though
BasketLab Home Page (Will add CSS trust) Today’s focus was more on the website, not on the actual tracking. I got the idea for my home page. HTML I made the basic html file today. Right now, I just created my idea and the words. I used a lot of semantic tags, maybe too much, but overall it was pretty good. CSS I just touched the CSS part for this home page. I worked mainly on getting the background color, fonts and the navigator bar at the top. I got my font from google. For the navigator bar, I worked on the spacing between the buttons and logo.
Server Connection Today i got create a server connection and connect it to multiple devices on my Wi-Fi network. I used uvicorn and fastapi to connect python to javascript. Error Windows firewall was blocking connection for other devices, so they weren’t able to get in. I disabled all rules for python, so then it worked. But only the frontend was working, the backend did not work.
Detecting Human Body MediaPipe I finally got to understand how mediapipe works and how to set it up. I got it select certain body parts that are key to shooting a basketball, like the knees, elbows, wrists, shoulder, ankles, and some more. I used circles to identify those spots on my body, and it worked. The fps was really smooth comapared to the YOLO model for tracking the ball, so Im happy about that. Next I need to focus on finding angles of the person, like the angle when they make their shot.
Frontend Backend Connection I got the frontend to send frames to the backend, then backend runs mediapipe on the frames then sends frames back to backend where they are displayed It is pretty laggy right now, so I will add a latest-frame buffer so that I can grab the newest frames, not the older ones.
Angle Finder I got a working calculator that can get the angle of the elbow, wrist and shoulder! I used a lot of geometery like acos and atan2 from the py math module. The math was hard so I had to youtube it and implement in this. Just to make sure my angle calculator was actually reading the correct measurements, I identified the angle, so it was reading it correctly even if I rotate myself.
Working website...
|
1792662703.5908384
|
1793267503.5908384
|
|
61461
|
Simon the game by @josuke397 | Stardance
|
josuke397
|
1
|
15.0
|
129
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T21:36:00Z", "hours": 15.0, "multiplier": 8.41, "payout": 129, "blessing": "neutral", "text": "This project has been something ive enjoyed making and been able to learn a lot through as i could make the brave claim that i kind of know how to use godot now and with some effort could potentially start creating my games without a huge usage of online tutorials. While making this i encountered so many issues that caused me to start getting annoyed but i tried not to give up even if that meant staying up late and losing sleep because of it. In the end, it was all worth it as i now have something im proud to say i have made, and thank you to anyone who actually read any of my logs or even this.", "repo": "https://github.com/Josuke397/Simon-the-game", "demo": "https://josuke397.itch.io/simon-the-game"}]...
|
[{"post_id": 72851, "ts": "202 [{"post_id": 72851, "ts": "2026-09-23T21:20:37Z", "hours": 1.3639, "text": "i have finished up the map for the second level and created music for it. I think im going to leave this project here as im losing interest in it and also becoming busier with other things and dont want to waste time adding useless things for the sake of having more."}, {"post_id": 69837, "ts": "2026-09-17T21:37:56Z", "hours": 2.6136, "text": "So much has gone wrong. i spent a long time trying to add in an attack animation and even after using multiple tutorials i couldnt get it to work so i gave up. In other news, i spent about 2 hours composing some music for the first level which is added and working and now i have started to work on the second level."}, {"post_id": 68901, "ts": "2026-09-16T00:30:18Z", "hours": 3.3464, "text": "We now have a moving skeleton that took too long to make, as well as a key mechanism that takes you to the next level- this annoyed me for a while because it wouldnt work and all i had to do was link the next scene to the door, but it works now."}, {"post_id": 68342, "ts": "2026-09-14T23:49:56Z", "hours": 1.21, "text": "I think the castle looks okay atleast compared to everything else now, i did some more touch ups around the map - nothing major - the main focus was the castle which i think im keeping as is after sitting and trying to think of a design for it. Not sure where to take it next.."}, {"post_id": 67761, "ts": "2026-09-14T00:26:42Z", "hours": 2.0744, "text": "i had far too much fun making this, so now we have a killbox that restarts the level if you fall which took longer than it should and now i have started to make a new castle location with my amazing design skills"}, {"post_id": 67015, "ts": "2026-09-13T01:47:30Z", "hours": 4.3228, "text": "Currently there is an animated character sprite and collectable items as well as there being a significant improvement on the map (which has only been made using a single image). Next goal will be adding more places to go to"}, {"post_id": 66767, "ts": "2026-09-12T17:32:34Z", "hours": 0.3589, "text": "Learning godot because i feel left out. i am using the haven jumpstart material to teach myself the basics, my character can currently: jump, move. I have also made a basic map. I am excited to develop this project further."}]...
|
Title: Simon the game by @josuke397 | Stardance
D Title: Simon the game by @josuke397 | Stardance
Devlogs:
Learning godot because i feel left out. i am using the haven jumpstart material to teach myself the basics, my character can currently: jump, move. I have also made a basic map. I am excited to develop this project further.
Currently there is an animated character sprite and collectable items as well as there being a significant improvement on the map (which has only been made using a single image). Next goal will be adding more places to go to
i had far too much fun making this, so now we have a killbox that restarts the level if you fall which took longer than it should and now i have started to make a new castle location with my amazing design skills
I think the castle looks okay atleast compared to everything else now, i did some more touch ups around the map - nothing major - the main focus was the castle which i think im keeping as is after sitting and trying to think of a design for it. Not sure where to take it next..
We now have a moving skeleton that took too long to make, as well as a key mechanism that takes you to the next level- this annoyed me for a while because it wouldnt work and all i had to do was link the next scene to the door, but it works now.
So much has gone wrong. i spent a long time trying to add in an attack animation and even after using multiple tutorials i couldnt get it to work so i gave up. In other news, i spent about 2 hours composing some music for the first level which is added and working and now i have started to work on the second level.
i have finished up the map for the second level and created music for it. I think im going to leave this project here as im losing interest in it and also becoming busier with other things and dont want to waste time adding useless things for the sake of having more.
Ships:
This project has been something ive enjoyed making and been able to learn a lot through as i could make the brave claim that i kind of know how to use godot now and with some effort could potentially start creating my games without a huge usage of online tutorials. While making this i encountered so many issues that caused me to start getting annoyed but i tried not to give up even if that meant staying up late and losing sleep because of it. In the end, it was all worth it as i now have something im proud to say i have made, and thank you to anyone who actually read any of my logs or even this....
|
1793209727.4376433
|
1793296127.4376433
|
|
65229
|
Stardance Developper Hub by @ldhaq_6 | Stardance
|
ldhaq_6
|
0
|
1.0
|
0
|
[]
|
[{"post_id": 72858, "ts": "202 [{"post_id": 72858, "ts": "2026-09-23T21:35:58Z", "hours": 0.2614, "text": "Followed online tutorials to learn how to make my pages more pleasing. Revamped both pages, got rid of background image because it wasn’t working very well."}, {"post_id": 72848, "ts": "2026-09-23T21:16:57Z", "hours": 0.36, "text": "Just made the baseline for the main page"}, {"post_id": 72838, "ts": "2026-09-23T20:54:12Z", "hours": 0.3825, "text": "Just made a welcome page with a disclaimer, will need to rebuff this with new skills in the future."}]...
|
Title: Stardance Developper Hub by @ldhaq_6 | Star Title: Stardance Developper Hub by @ldhaq_6 | Stardance
Devlogs:
Just made a welcome page with a disclaimer, will need to rebuff this with new skills in the future.
Just made the baseline for the main page
Followed online tutorials to learn how to make my pages more pleasing. Revamped both pages, got rid of background image because it wasn’t working very well....
|
1793084137.974597
|
1793688937.974597
|
|
64661
|
ash's right hand by @aashvik | Stardance
|
aashvik
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T22:42:03Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Devlog The hardest part was getting the DM system to work with multiple DMs and replies. The fun part was adding the random roasts, 67 reaction, and completely random woof feature. : D", "repo": "https://github.com/koditra/slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0C3VCB477V"}]...
|
[{"post_id": 72879, "ts": "202 [{"post_id": 72879, "ts": "2026-09-23T22:36:06Z", "hours": 1.1672, "text": "I finished making this bot It now has: /ash-ping, /ash-roast, /ash-dms, plus the 67 reaction and random woof replies. The DM system was probably the most fun part to build."}]...
|
Title: ash's right hand by @aashvik | Stardanc Title: ash's right hand by @aashvik | Stardance
Devlogs:
I finished making this bot It now has: /ash-ping, /ash-roast, /ash-dms, plus the 67 reaction and random woof replies. The DM system was probably the most fun part to build.
Ships:
Devlog The hardest part was getting the DM system to work with multiple DMs and replies. The fun part was adding the random roasts, 67 reaction, and completely random woof feature. : D...
|
1793213623.0944254
|
1793300023.0944254
|
|
65237
|
docker-vps-manager by @michael_macmullen | Stardan docker-vps-manager by @michael_macmullen | Stardance...
|
michael_macmullen
|
0
|
0.72
|
0
|
[]
|
[{"post_id": 72885, "ts": "202 [{"post_id": 72885, "ts": "2026-09-23T22:45:54Z", "hours": 0.7192, "text": "Simple Manager Classes for Docker Containers Created a simple (WIP) manager class for handling docker containers specifically virtual servers for future implementation of VPSs."}]...
|
Title: docker-vps-manager by @michael_macmullen | Title: docker-vps-manager by @michael_macmullen | Stardance
Devlogs:
Simple Manager Classes for Docker Containers Created a simple (WIP) manager class for handling docker containers specifically virtual servers for future implementation of VPSs....
|
1793084156.962139
|
1793688956.962139
|
|
64955
|
Probability Analysis (Poker Helper) by @vivaan_moo Probability Analysis (Poker Helper) by @vivaan_moondra | Stardance...
|
vivaan_moondra
|
0
|
0.44
|
0
|
[]
|
[{"post_id": 72888, "ts": "202 [{"post_id": 72888, "ts": "2026-09-23T23:03:17Z", "hours": 0.4425, "text": "Just finished the class and folder architecture for the program and documented the structure of how I will code in the folder"}]...
|
Title: Probability Analysis (Poker Helper) by @viv Title: Probability Analysis (Poker Helper) by @vivaan_moondra | Stardance
Devlogs:
Just finished the class and folder architecture for the program and documented the structure of how I will code in the folder...
|
1793072902.012924
|
1793677702.012924
|
|
55273
|
sudo wake-up by @aashvik | Stardance
|
aashvik
|
0
|
13.93
|
0
|
[]
|
[{"post_id": 72889, "ts": "202 [{"post_id": 72889, "ts": "2026-09-23T23:05:40Z", "hours": 1.2647, "text": "Yippie! I made the firmware and its own wifi portal for setting the time and alarm, plus the button sequence needed to stop the buzzer. Lets gooo!"}, {"post_id": 71556, "ts": "2026-09-21T01:42:32Z", "hours": 3.8714, "text": "heyo guys! I basically added a bunch of details, like speaker holes, fillets, lid, charging port holes, etc."}, {"post_id": 69391, "ts": "2026-09-16T23:32:48Z", "hours": 1.5267, "text": "I added a lot of details and heat insert holes :D"}, {"post_id": 61235, "ts": "2026-09-04T02:14:18Z", "hours": 2.6519, "text": "made a basic case :)"}, {"post_id": 57820, "ts": "2026-08-30T03:50:27Z", "hours": 2.9292, "text": "i routed the pcb :)"}, {"post_id": 57044, "ts": "2026-08-29T03:39:58Z", "hours": 1.6892, "text": "sudo wakeup Devlog Today I worked on the planning and schematic for sudo wakeup :) The idea is a digital alarm clock where, when the alarm goes off, you have to find a bug in some code to turn it off. I had to improvise to fit all 9 buttons since I only have 6 pins for them, so I’m using a 3x3 button matrix with diodes. I also figured out the TFT connections and started laying everything out in KiCad. The buttons will be 3 on top, 3 on the left, and 3 on the right :)"}]...
|
Title: sudo wake-up by @aashvik | Stardance
Devlo Title: sudo wake-up by @aashvik | Stardance
Devlogs:
sudo wakeup Devlog Today I worked on the planning and schematic for sudo wakeup :) The idea is a digital alarm clock where, when the alarm goes off, you have to find a bug in some code to turn it off. I had to improvise to fit all 9 buttons since I only have 6 pins for them, so I’m using a 3x3 button matrix with diodes. I also figured out the TFT connections and started laying everything out in KiCad. The buttons will be 3 on top, 3 on the left, and 3 on the right :)
i routed the pcb :)
made a basic case :)
I added a lot of details and heat insert holes :D
heyo guys! I basically added a bunch of details, like speaker holes, fillets, lid, charging port holes, etc.
Yippie! I made the firmware and its own wifi portal for setting the time and alarm, plus the button sequence needed to stop the buzzer. Lets gooo!...
|
1793155845.6948667
|
1793760645.6948667
|
|
64898
|
ChatBox-APP by @MuhammadDawood | Stardance
|
MuhammadDawood
|
0
|
3.11
|
0
|
[]
|
[{"post_id": 72902, "ts": "202 [{"post_id": 72902, "ts": "2026-09-24T00:04:37Z", "hours": 1.9597, "text": "I am on my track of completing the ChatBox currently I am working simultaneously on solving its errors while maintaining frontend and backend."}, {"post_id": 72353, "ts": "2026-09-22T18:54:04Z", "hours": 1.1503, "text": "I am working on my first ever ChatAPP project. Rn I have created the whole development environment and know working on its json and other files."}]...
|
Title: ChatBox-APP by @MuhammadDawood | Stardance
Title: ChatBox-APP by @MuhammadDawood | Stardance
Devlogs:
I am working on my first ever ChatAPP project. Rn I have created the whole development environment and know working on its json and other files.
I am on my track of completing the ChatBox currently I am working simultaneously on solving its errors while maintaining frontend and backend....
|
1793069378.582822
|
1793674178.582822
|
|
62298
|
Minesweeper Game by @Sadiya | Stardance
|
Sadiya
|
1
|
4.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T00:17:35Z", "hours": 4.0, "multiplier": 1.17, "payout": 4, "blessing": "neutral", "text": "I made a Minesweeper game that has randomly placed bombs with buttons. A challenge was getting the game logic to work. I am proud of being able to finish this project.", "repo": "https://github.com/sadiyameem/minesweeper-game", "demo": "https://sadiyameem.github.io/minesweeper-game/"}]...
|
[{"post_id": 72904, "ts": "202 [{"post_id": 72904, "ts": "2026-09-24T00:13:52Z", "hours": 1.8356, "text": "I was finally able to get this to work and I can finally say I am proud of it."}, {"post_id": 71514, "ts": "2026-09-20T23:46:42Z", "hours": 0.8789, "text": "I have decided to start over and I want to take the time to find a simpler and better way on making this project so have fun looking at a blank image."}, {"post_id": 70862, "ts": "2026-09-19T21:47:22Z", "hours": 0.8619, "text": "I have realized that I have not posted a devlog for this project so here it is. I have done the html but I think there are some mistakes and I am currently doing the css and I think for both the html and css I will fix later."}]...
|
Title: Minesweeper Game by @Sadiya | Stardance
De Title: Minesweeper Game by @Sadiya | Stardance
Devlogs:
I have realized that I have not posted a devlog for this project so here it is. I have done the html but I think there are some mistakes and I am currently doing the css and I think for both the html and css I will fix later.
I have decided to start over and I want to take the time to find a simpler and better way on making this project so have fun looking at a blank image.
I was finally able to get this to work and I can finally say I am proud of it.
Ships:
I made a Minesweeper game that has randomly placed bombs with buttons. A challenge was getting the game logic to work. I am proud of being able to finish this project....
|
1793209964.508034
|
1793296364.508034
|
|
65044
|
NASA APOD Viewer by @Coding-AN | Stardance
|
Coding-AN
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T01:11:20Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This site is a viewer for NASA’s Astronomy Picture of the Day. It features a clean interface that shows the picture, along with its title and explanation, as well as an animated background and sidebars. It’s lightweight by design, and also marks the first time I’ve made an API call for a web project.", "repo": "https://github.com/Coding-AN/NASA-APOD-Viewer", "demo": "https://coding-an.github.io/NASA-APOD-Viewer/"}]...
|
[{"post_id": 72909, "ts": "202 [{"post_id": 72909, "ts": "2026-09-24T00:40:11Z", "hours": 1.2261, "text": "I added all the CSS, so the site looks really good now. One touch I added at the end that I really liked was an animated background. The stars subtly twinkle, and I think it looks really cool. Although I was originally planning to expand this into a full new tab page after this, I’ve decided to finish this project here, since I don’t think it would look that good if I took what I have now and delegate it to a corner of the page. Since this site is now complete, I will now be shipping it soon."}, {"post_id": 72873, "ts": "2026-09-23T22:21:22Z", "hours": 0.9253, "text": "I finally got the API call to work, and the image is finally displaying. The reason it took so long to work was because I gave my env file a name, which meant that vite couldn’t recognize it and the API call failed. Luckily, I was finally able to figure it out, which means that I’m now moving on to css styling."}, {"post_id": 72615, "ts": "2026-09-23T11:02:30Z", "hours": 0.4786, "text": "I started the Custom New Tab mission, and got all of the setup finished. It took way longer than expected because the .env file kept showing up in the repo even though it was in the gitignore. I finally fixed it after adding *.env to the gitignore, but it took me a while to figure that out."}]...
|
Title: NASA APOD Viewer by @Coding-AN | Stardance
Title: NASA APOD Viewer by @Coding-AN | Stardance
Devlogs:
I started the Custom New Tab mission, and got all of the setup finished. It took way longer than expected because the .env file kept showing up in the repo even though it was in the gitignore. I finally fixed it after adding *.env to the gitignore, but it took me a while to figure that out.
I finally got the API call to work, and the image is finally displaying. The reason it took so long to work was because I gave my env file a name, which meant that vite couldn’t recognize it and the API call failed. Luckily, I was finally able to figure it out, which means that I’m now moving on to css styling.
I added all the CSS, so the site looks really good now. One touch I added at the end that I really liked was an animated background. The stars subtly twinkle, and I think it looks really cool. Although I was originally planning to expand this into a full new tab page after this, I’ve decided to finish this project here, since I don’t think it would look that good if I took what I have now and delegate it to a corner of the page. Since this site is now complete, I will now be shipping it soon.
Ships:
This site is a viewer for NASA’s Astronomy Picture of the Day. It features a clean interface that shows the picture, along with its title and explanation, as well as an animated background and sidebars. It’s lightweight by design, and also marks the first time I’ve made an API call for a web project....
|
1793213682.1053329
|
1793300082.1053329
|
|
64627
|
Calculator for space missions by @navilan_nataraj Calculator for space missions by @navilan_nataraj | Stardance...
|
navilan_nataraj
|
0
|
0.29
|
0
|
[]
|
[{"post_id": 72920, "ts": "202 [{"post_id": 72920, "ts": "2026-09-24T01:33:37Z", "hours": 0.2925, "text": "Just wrote the first few lines of code, this would serve as a outline for when I actually put in the logic in the coming days"}]...
|
Title: Calculator for space missions by @navilan_n Title: Calculator for space missions by @navilan_nataraj | Stardance
Devlogs:
Just wrote the first few lines of code, this would serve as a outline for when I actually put in the logic in the coming days...
|
1793065830.499505
|
1793670630.499505
|
|
62653
|
cute usagi game by @RobbieMa | Stardance
|
RobbieMa
|
1
|
12.0
|
76
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T05:01:59Z", "hours": 12.0, "multiplier": 6.3, "payout": 76, "blessing": "neutral", "text": "I made a softbody playground for Usagi the bunny. This is NOT a game!! It is purely a physics demo showing what can be done in Unity3D. It made me learn a lot about physics based movement in unity as well as setting up softbodies and ragdolls in a 3D space. The most challenging part was probably getting the player to reset the softbody without breaking the whole thing. Enjoy!", "repo": "https://github.com/Hello-Grow/usagi-softbody/", "demo": "https://github.com/Hello-Grow/usagi-softbody/releases/tag/1.0"}]...
|
[{"post_id": 72930, "ts": "202 [{"post_id": 72930, "ts": "2026-09-24T01:57:13Z", "hours": 1.1022, "text": "worked on a time slow feature where players can slow down time by scrolling, and adding some awesome destruction test like smashing blocks, block hit into wall, and more!"}, {"post_id": 72094, "ts": "2026-09-22T04:54:19Z", "hours": 1.6667, "text": "adding sounds for usagi and adding more graphical elements like bushes and a giant blender. Sounds are all one-shot audio from usagi episodes with background music and noise removed."}, {"post_id": 71427, "ts": "2026-09-20T20:00:29Z", "hours": 1.5667, "text": "Worked on more softbody functions, using custom scripts that works along with my softbody player controller, Usagi will now seamlessly ragdoll when player presses R and also ragdolls when touching certain objects. Players can also squish other Usagi’s too, maybe multiplayer in the future?? There is one problem though with the ragdoll script, i can’t seem to make it seamlessly go into player controlled mode and out of ragdoll mode… it keeps clipping into the ground"}, {"post_id": 70432, "ts": "2026-09-19T05:48:27Z", "hours": 0.9, "text": "Usagi can now WALK!! using standard third person controls and physics based steps, players can control usagi using WASD and mouse to look around. Hardest part here wasn’t the movement itself, it was the player rotating with the camera, since the gameobject doesnt rotate, the softbody points do."}, {"post_id": 70310, "ts": "2026-09-18T22:22:32Z", "hours": 4.2667, "text": "Added a softbody system using a crazy amount of points that makes a network that impacts the player mesh. Editing the mesh and getting the body structure right took up the majority of the time, tweaking various settings, very boring. Though the reward is great! It is really satisfying to squish and deform."}, {"post_id": 69520, "ts": "2026-09-17T07:12:55Z", "hours": 0.4, "text": "Using unity’s toon shader to make it actually feel like it’s drawn and not rendered in a traditional sense. The outlines look a bit wonky at the ears though because the normals are just positioned weird"}, {"post_id": 69454, "ts": "2026-09-17T02:49:04Z", "hours": 1.2667, "text": "Made it a ragdoll in unity, had to figure out what counted as a hip and spines, but got it working! it is very satisfying to play with."}, {"post_id": 69010, "ts": "2026-09-16T06:44:15Z", "hours": 0.9333, "text": "Rigged Usagi in blender for unity and fixed material/texturing"}]...
|
Title: cute usagi game by @RobbieMa | Stardance
D Title: cute usagi game by @RobbieMa | Stardance
Devlogs:
Rigged Usagi in blender for unity and fixed material/texturing
Made it a ragdoll in unity, had to figure out what counted as a hip and spines, but got it working! it is very satisfying to play with.
Using unity’s toon shader to make it actually feel like it’s drawn and not rendered in a traditional sense. The outlines look a bit wonky at the ears though because the normals are just positioned weird
Added a softbody system using a crazy amount of points that makes a network that impacts the player mesh. Editing the mesh and getting the body structure right took up the majority of the time, tweaking various settings, very boring. Though the reward is great! It is really satisfying to squish and deform.
Usagi can now WALK!! using standard third person controls and physics based steps, players can control usagi using WASD and mouse to look around. Hardest part here wasn’t the movement itself, it was the player rotating with the camera, since the gameobject doesnt rotate, the softbody points do.
Worked on more softbody functions, using custom scripts that works along with my softbody player controller, Usagi will now seamlessly ragdoll when player presses R and also ragdolls when touching certain objects. Players can also squish other Usagi’s too, maybe multiplayer in the future?? There is one problem though with the ragdoll script, i can’t seem to make it seamlessly go into player controlled mode and out of ragdoll mode… it keeps clipping into the ground
adding sounds for usagi and adding more graphical elements like bushes and a giant blender. Sounds are all one-shot audio from usagi episodes with background music and noise removed.
worked on a time slow feature where players can slow down time by scrolling, and adding some awesome destruction test like smashing blocks, block hit into wall, and more!
Ships:
I made a softbody playground for Usagi the bunny. This is NOT a game!! It is purely a physics demo showing what can be done in Unity3D. It made me learn a lot about physics based movement in unity as well as setting up softbodies and ragdolls in a 3D space. The most challenging part was probably getting the player to reset the softbody without breaking the whole thing. Enjoy!...
|
1793210061.5863717
|
1793296461.5863717
|
|
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....
|
1793339393.8759298
|
1793425793.8759298
|
|
58004
|
enote by @willexists | Stardance
|
willexists
|
0
|
1.43
|
0
|
[]
|
[{"post_id": 72933, "ts": "202 [{"post_id": 72933, "ts": "2026-09-24T02:15:35Z", "hours": 1.0375, "text": "i forgot to log this lol"}, {"post_id": 61250, "ts": "2026-09-04T02:51:24Z", "hours": 0.3922, "text": "i added like the main page and a page to put libraris and fonts i use"}]...
|
Title: enote by @willexists | Stardance
Devlogs:
Title: enote by @willexists | Stardance
Devlogs:
i added like the main page and a page to put libraris and fonts i use
i forgot to log this lol...
|
1793130927.5379596
|
1793735727.5379596
|
|
53586
|
Recurrent Neural Network by @crazydave | Stardance
|
|
1
|
32.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T02:26:15Z", "hours": 32.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a recurrent neural network from scratch in Python using numpy, which generates text one character at a time in the style of Shakespeare. Because it keeps a memory of what it has recently seen, it learnt capitalisation, line breaks, punctuation, character-name formatting and roughly what English words look like, starting from nothing but the raw text, which I think is super cool! The most challenging part of this project was getting it to produce good output, first through backpropagation through time, where off-by-one bugs in the hidden state indexing and a bias gradient I forgot to update meant it wasn’t training properly, and then after training it with more layers, the error was much lower but the output was terrible, which took me a very long time to figure out. It turned out the model had barely ever seen a blank memory during training, so I fixed it by building up its memory on some text before it starts generating. I also added command line arguments to the code so that people can generate text or train their own model in their terminal without editing the python file. To test it, follow the install instructions on the README, you can either download the python code and run that, or download the compiled versions in the releases page on Github.", "repo": "https://github.com/rufus-gh/recurrent-neural-network", "demo": "https://github.com/rufus-gh/recurrent-neural-network/releases"}]...
|
[{"post_id": 72936, "ts": "202 [{"post_id": 72936, "ts": "2026-09-24T02:19:48Z", "hours": 0.3175, "text": "Added some code so that users can pass in arguments. I also spent a while trying to set up the releases page using github actions, and I used claude to make the github actions script for me (none of this went towards logged hours as it wasn’t in the IDE), but I finally got the releases to work (ignore the 1.0.4, I was trying to get it to work). I had three problems. One of them was that I accidentally named the “github” folder “github” (without the dot) so it wasn’t correctly running as an action. Another problem was pyinstaller using relative paths but remembered the same thing happened to me on my last project so i just used the same fix. The final problem was that my model checkpoint file somehow got deleted and it was needed for the Github actions but I had another copy so I put it back into the project and committed it, and it finally worked. I also got Al to help me write the README as it is boring to do. It will be shipped shortly so please check it out. (also dont mind the screenshot below being a screenshot of stardance, when I tried to post this, the site froze, so I screenshotted it first to make sure I didn’t lose it, and then it broke so I did it again)."}, {"post_id": 60564, "ts": "2026-09-02T23:54:38Z", "hours": 6.5103, "text": "After training it with the updated code, the output was terrible although the error was much lower, so I was really confused. I wasn’t sure what went wrong, and it took me a very long time to figure it out. When training, I feed in the previous step’s memory back into it and in training the memory is never wiped each epoch. However, when testing the output, I initialised it with a memory of just zeros, which it had barely experienced training with so wasn’t able to output meaningful things. I was able to fix it by initialising its memory on the training text itself to give it a memory state it is used to and that fixed it. You can see an output from it below."}, {"post_id": 55079, "ts": "2026-08-26T14:56:00Z", "hours": 5.5619, "text": "I did multiple training sessions and tweaked the learning rate, as after training with more layers and complexity, the model ended up with a much worse rate. I tried decreasing the learning rate and that led to a much better result. I then implemented something which reduces the learning rate over time, so that hopefully it will not plateau. I am thinking that to get to more levels of complexity in terms of producing actual content i will need to turn it into a LSTM, which has long and short memory. I am going to train it for a while now with the update and see how it goes."}, {"post_id": 54376, "ts": "2026-08-25T10:53:01Z", "hours": 6.1772, "text": "I updated the rnn to support multiple hidden layers, as previously it had a single layer, so I had to update the forward and backwards passes as well as the adagrad to account for the multiple layers. I started off with two and tested it with a hidden size of 256, but I didn’t see any improvement, however I didn’t train it for as long. I am now in the process of implementing a variable number of layers from 1 to any number, so that the model can learn greater complexity, however this comes at the cost of much slower training. Currently the training on 2 layers is a decent slowdown compared to with 1 layer, as i also increased hidden size to 512. So far I have made the forward pass work for multiple layers (greater than 2) but the rest of it still only supports 2 layers."}, {"post_id": 54127, "ts": "2026-08-24T23:04:59Z", "hours": 13.3083, "text": "I am making a recurrent neural network from scratch in python using numpy, trained on Shakespeare text to generate character-by-character in his style.This is an improvement on the previous neural network that I made as it keeps a memory based on the things it has recently seen, so it’s next prediction depends on what it has previously seen which will hopefully make it be able to learn more advanced patterns.I added loading and chunking of data, so basically it takes in a text file, and then it splits it into chunks (I use 25 character long chunks) in pairs with one shifted across by one and saves it as input and targets.I wrote the forward pass, loops through each character in a chunk, updates a hidden state with tanh, then a softmax over the vocab to predict the next character.I implemented backprop through time, which was definitely the hardest part, had a few off-by-one bugs in the hidden state indexing that took a while to track down.I did a numerical gradient check to double-check the backward pass against finite differences before training it, and realised I forgot to update the bias gradient so it wasn’t training properly.I used adagrad as the matrix updater from the gradients which works by updating the gradients by a smaller and smaller amount each time (I looked it up and apparently it is a good way to do it).I wrote the output function where I give it an input function, and then the model predicts the next character, and then it feeds the output back into the model and repeats for as many characters as I want.I then trained it on Shakespeare text and ran 100k iterations at hidden size 100, took about 2 mins and started outputting vaguely word-shaped gibberish with correct capitalisation and character-name formatting.I then increased the hidden size from 100 to 256 and trained it more, and it still looks like gibberish but improved a bit, some of the output is what you can see in the screenshot."}]...
|
Title: Recurrent Neural Network by @crazydave | St Title: Recurrent Neural Network by @crazydave | Stardance
Devlogs:
I am making a recurrent neural network from scratch in python using numpy, trained on Shakespeare text to generate character-by-character in his style.This is an improvement on the previous neural network that I made as it keeps a memory based on the things it has recently seen, so it’s next prediction depends on what it has previously seen which will hopefully make it be able to learn more advanced patterns.I added loading and chunking of data, so basically it takes in a text file, and then it splits it into chunks (I use 25 character long chunks) in pairs with one shifted across by one and saves it as input and targets.I wrote the forward pass, loops through each character in a chunk, updates a hidden state with tanh, then a softmax over the vocab to predict the next character.I implemented backprop through time, which was definitely the hardest part, had a few off-by-one bugs in the hidden state indexing that took a while to track down.I did a numerical gradient check to double-check the backward pass against finite differences before training it, and realised I forgot to update the bias gradient so it wasn’t training properly.I used adagrad as the matrix updater from the gradients which works by updating the gradients by a smaller and smaller amount each time (I looked it up and apparently it is a good way to do it).I wrote the output function where I give it an input function, and then the model predicts the next character, and then it feeds the output back into the model and repeats for as many characters as I want.I then trained it on Shakespeare text and ran 100k iterations at hidden size 100, took about 2 mins and started outputting vaguely word-shaped gibberish with correct capitalisation and character-name formatting.I then increased the hidden size from 100 to 256 and trained it more, and it still looks like gibberish but improved a bit, some of the output is what you can see in the screenshot.
I updated the rnn to support multiple hidden layers, as previously it had a single layer, so I had to update the forward and backwards passes as well as the adagrad to account for the multiple layers. I started off with two and tested it with a hidden size of 256, but I didn’t see any improvement, however I didn’t train it for as long. I am now in the process of implementing a variable number of layers from 1 to any number, so that the model can learn greater complexity, however this comes at the cost of much slower training. Currently the training on 2 layers is a decent slowdown compared to with 1 layer, as i also increased hidden size to 512. So far I have made the forward pass work for multiple layers (greater than 2) but the rest of it still only supports 2 layers.
I did multiple training sessions and tweaked the learning rate, as after training with more layers and complexity, the model ended up with a much worse rate. I tried decreasing the learning rate and that led to a much better result. I then implemented something which reduces the learning rate over time, so that hopefully it will not plateau. I am thinking that to get to more levels of complexity in terms of producing actual content i will need to turn it into a LSTM, which has long and short memory. I am going to train it for a while now with the update and see how it goes.
After training it with the updated code, the output was terrible although the error was much lower, so I was really confused. I wasn’t sure what went wrong, and it took me a very long time to figure it out. When training, I feed in the previous step’s memory back into it and in training the memory is never wiped each epoch. However, when testing the output, I initialised it with a memory of just zeros, which it had barely experienced training with so wasn’t able to output meaningful things. I was able to fix it by initialising its memory on the training text itself to give it a memory state it is used to and that fixed it. You can see an output from it below.
Added some code so that users can pass in arguments. I also spent a while trying to set up the releases page using github actions, and I used claude to make the github actions script for me (none of this went towards logged hours as it wasn’t in the IDE), but I finally got the releases to work (ignore the 1.0.4, I was trying to get it to work). I had three problems. One of them was that I accidentally named the “github” folder “github” (without the dot) so it wasn’t correctly running as an action. Another problem was pyinstaller using relative paths but remembered the same thing happened to me on my last project so i just used the same fix. The final problem was that my model checkpoint file somehow got deleted and it was needed for the Github actions but I had another copy so I put it back into the project and committed it, and it finally worked. I also got Al to help me write the README as it is boring to do. It will be shipped shortly so please check it out. (also dont mind the screenshot below being a screenshot of stardance, when I tried to post this, the site froze, so I screenshotted it first to make sure I didn’t lose it, and then it broke so I did it again).
Ships:
I made a recurrent neural network from scratch in Python using numpy, which generates text one character at a time in the style of Shakespeare. Because it keeps a memory of what it has recently seen, it learnt capitalisation, line breaks, punctuation, character-name formatting and roughly what English words look like, starting from nothing but the raw text, which I think is super cool! The most challenging part of this project was getting it to produce good output, first through backpropagation through time, where off-by-one bugs in the hidden state indexing and a bias gradient I forgot to update meant it wasn’t training properly, and then after training it with more layers, the error was much lower but the output was terrible, which took me a very long time to figure out. It turned out the model had barely ever seen a blank memory during training, so I fixed it by building up its memory on some text before it starts generating. I also added command line arguments to the code so that people can generate text or train their own model in their terminal without editing the python file. To test it, follow the install instructions on the README, you can either download the python code and run that, or download the compiled versions in the releases page on Github....
|
1793170116.8198957
|
1793256516.8198957
|
|
54348
|
App made with flutter with python backend by @agam App made with flutter with python backend by @agamjot_sarao9797 | Stardance...
|
agamjot_sarao9797
|
1
|
48.32
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T03:48:16Z", "hours": 48.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an app with flutter and python API, This app gets a URL from the user and then scrapes the info from the website then the user gets the id to the block of info from a tab called Data Hub and then the user would enter the ID in the tabs where the app makes the excel sheet or presentation on that info. The mos challenging part of this project was the part where the app made a presentation because i did not know how to make a presentation with python or Python-pptx. The part I did use AI on as the .bat launcher because i do not know how to code bash", "repo": "https://github.com/CODER-MAN12/AI-webscraper-app", "demo": "https://github.com/CODER-MAN12/AI-webscraper-app/releases/tag/App"}]...
|
[{"post_id": 72940, "ts": "202 [{"post_id": 72940, "ts": "2026-09-24T02:34:16Z", "hours": 0.3172, "text": "Devlog#15: I have decided that I will keep working on the project to make it look better since I might keep working on it so i can put it on google play or PC app store because of this i have also started a 3 hour graphic design tutorial since my app looks hideous."}, {"post_id": 67052, "ts": "2026-09-13T03:01:00Z", "hours": 0.9414, "text": "I am done just about the ship my project"}, {"post_id": 65681, "ts": "2026-09-11T00:07:31Z", "hours": 1.7689, "text": "Devlog#13: I HAVE COMPLETED THE APP THE EXCEL SHEET MAKER ITS FUNCTIONAL SO IS THE PRESENTATION MAKER I JUST NEED TO MAKE A LAUNCHER !!!!"}, {"post_id": 65095, "ts": "2026-09-10T00:03:20Z", "hours": 8.2875, "text": "Devlog#12: I have been working on the last two files that make a excel file and a power point and I am done 70 percent on it but it is challenging"}, {"post_id": 62445, "ts": "2026-09-05T19:56:11Z", "hours": 5.8167, "text": "Devlog#11: I have finished the history feature for the app where it can access the previous scraped info by id and then it will enter the id in the power-point or spreadsheet maker so the AI knows what info to make it for."}, {"post_id": 60701, "ts": "2026-09-03T07:53:03Z", "hours": 2.6294, "text": "Devlog#10: The menu is fully functional and it can scrape info and save it in a python API server which then stores it into a JSON file"}, {"post_id": 60542, "ts": "2026-09-02T23:01:07Z", "hours": 6.6461, "text": "Devlog#9: I have made the python back-end scraper function which is ready to give info to the flutter UI but i have started to learn how to use HTTP in flutter"}, {"post_id": 59270, "ts": "2026-08-31T23:35:55Z", "hours": 2.0578, "text": "Devlog#8: I have learned how to web scrape with python and have started to work on the web scraping function"}, {"post_id": 58664, "ts": "2026-08-31T05:03:07Z", "hours": 2.2214, "text": "Devlog#7: I have added more error handling which checks if it can reach the HTTP link and i have added more pages to the app. The output terminal is also functioning but only outputs the HTTP body"}, {"post_id": 57946, "ts": "2026-08-30T08:58:29Z", "hours": 5.8464, "text": "Devlog#6: I have added a HTTP checker to the menu and have worked on the rest of the pages a bit. I have also switched from a android emulator to my phone since windows uses so much ram."}, {"post_id": 56939, "ts": "2026-08-28T23:27:18Z", "hours": 1.0114, "text": "Devlog#5: I have finished the UI of the menu and I have started the other pages for my app"}, {"post_id": 56482, "ts": "2026-08-28T08:12:24Z", "hours": 3.4047, "text": "Devlog#4: I have to add more to the menu"}, {"post_id": 56253, "ts": "2026-08-27T22:43:13Z", "hours": 3.0972, "text": "Devlog#3: I am finished learning the basics of Flutter and now i have started to work on a menu"}, {"post_id": 55271, "ts": "2026-08-26T23:32:31Z", "hours": 4.0222, "text": "Devlog#2: For my app i have started to learn Flutter"}, {"post_id": 54774, "ts": "2026-08-25T21:37:39Z", "hours": 0.3936, "text": "I am working on a Desktop app which where you can give the app a URL and it will scrape the website for info you specified and can make it into a PowerPoint, JSON, or a excel file. This is the first part of the back end python coding which uses FastApi and Pydantic to get requests from user"}]...
|
Title: App made with flutter with python backend b Title: App made with flutter with python backend by @agamjot_sarao9797 | Stardance
Devlogs:
I am working on a Desktop app which where you can give the app a URL and it will scrape the website for info you specified and can make it into a PowerPoint, JSON, or a excel file. This is the first part of the back end python coding which uses FastApi and Pydantic to get requests from user
Devlog#2: For my app i have started to learn Flutter
Devlog#3: I am finished learning the basics of Flutter and now i have started to work on a menu
Devlog#4: I have to add more to the menu
Devlog#5: I have finished the UI of the menu and I have started the other pages for my app
Devlog#6: I have added a HTTP checker to the menu and have worked on the rest of the pages a bit. I have also switched from a android emulator to my phone since windows uses so much ram.
Devlog#7: I have added more error handling which checks if it can reach the HTTP link and i have added more pages to the app. The output terminal is also functioning but only outputs the HTTP body
Devlog#8: I have learned how to web scrape with python and have started to work on the web scraping function
Devlog#9: I have made the python back-end scraper function which is ready to give info to the flutter UI but i have started to learn how to use HTTP in flutter
Devlog#10: The menu is fully functional and it can scrape info and save it in a python API server which then stores it into a JSON file
Devlog#11: I have finished the history feature for the app where it can access the previous scraped info by id and then it will enter the id in the power-point or spreadsheet maker so the AI knows what info to make it for.
Devlog#12: I have been working on the last two files that make a excel file and a power point and I am done 70 percent on it but it is challenging
Devlog#13: I HAVE COMPLETED THE APP THE EXCEL SHEET MAKER ITS FUNCTIONAL SO IS THE PRESENTATION MAKER I JUST NEED TO MAKE A LAUNCHER !!!!
I am done just about the ship my project
Devlog#15: I have decided that I will keep working on the project to make it look better since I might keep working on it so i can put it on google play or PC app store because of this i have also started a 3 hour graphic design tutorial since my app looks hideous.
Ships:
I made an app with flutter and python API, This app gets a URL from the user and then scrapes the info from the website then the user gets the id to the block of info from a tab called Data Hub and then the user would enter the ID in the tabs where the app makes the excel sheet or presentation on that info. The mos challenging part of this project was the part where the app made a presentation because i did not know how to make a presentation with python or Python-pptx. The part I did use AI on as the .bat launcher because i do not know how to code bash...
|
1793350687.1478817
|
1793437087.1478817
|