|
7193
|
Birdie Ball 3d Print by @LoginlikeLogan | Stardanc Birdie Ball 3d Print by @LoginlikeLogan | Stardance...
|
LoginlikeLogan
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T20:37:57Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a birdie ball for 3d print!", "repo": "https://github.com/Logdegret/Birdide-Ball-3d-Print", "demo": ""}]...
|
[{"post_id": 5226, "ts": "2026 [{"post_id": 5226, "ts": "2026-06-08T22:46:07Z", "hours": 3.0381, "text": "I finished 3d modeling the birdie ball! A fun golf tool."}]...
|
Title: Birdie Ball 3d Print by @LoginlikeLogan | S Title: Birdie Ball 3d Print by @LoginlikeLogan | Stardance
Devlogs:
I finished 3d modeling the birdie ball! A fun golf tool.
Ships:
I made a birdie ball for 3d print!...
|
1792875219.1894298
|
1793739219.1894298
|
|
7219
|
Odyssey Decomp by @kanishkv99 | Stardance
|
kanishkv99
|
1
|
13.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T17:17:46Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "basically a decompilation of super mario odyssey. you need to own the source to use it (duh) but is incredibly difficult to do and over the 13 hrs i was only able to add something like 0.3% to the overall project, which is solid but not a lot.", "repo": "https://github.com/iamaperson000/OdysseyDecomp", "demo": "https://github.com/iamaperson000/OdysseyDecomp/blob/master/TRYIT.md"}]...
|
[{"post_id": 13816, "ts": "202 [{"post_id": 13816, "ts": "2026-06-22T17:15:12Z", "hours": 3.025, "text": "more work altogether and as it turns out is much harder than i thought"}, {"post_id": 2706, "ts": "2026-06-05T12:46:43Z", "hours": 6.6869, "text": "Now at 15.727%. Solid progress. Also wanted to clarify what the percents mean. Basically, you run the compiled binary (the game in this case) through something like Ghidra or IDA, and then translate the output into “regular code” (C++ usually), and then compile it to see if it matches the original compiled binary. You can physically see what percent of your code compiles to be the original code, so it is slow, but it works. Total for today is +721 funcs resolved"}, {"post_id": 2340, "ts": "2026-06-04T19:41:29Z", "hours": 0.8522, "text": "0.008% more functions resolved. Also started RE with ghidra. Also wanted to clarify, even small % improvements like this take hours and are incredibly difficult, with the community usually averaging +0.5-1% a month."}, {"post_id": 2295, "ts": "2026-06-04T18:17:28Z", "hours": 2.5611, "text": "Added 521 total functions or 0.142 percent of extra work."}]...
|
Title: Odyssey Decomp by @kanishkv99 | Stardance
Title: Odyssey Decomp by @kanishkv99 | Stardance
Devlogs:
Added 521 total functions or 0.142 percent of extra work.
0.008% more functions resolved. Also started RE with ghidra. Also wanted to clarify, even small % improvements like this take hours and are incredibly difficult, with the community usually averaging +0.5-1% a month.
Now at 15.727%. Solid progress. Also wanted to clarify what the percents mean. Basically, you run the compiled binary (the game in this case) through something like Ghidra or IDA, and then translate the output into “regular code” (C++ usually), and then compile it to see if it matches the original compiled binary. You can physically see what percent of your code compiles to be the original code, so it is slow, but it works. Total for today is +721 funcs resolved
more work altogether and as it turns out is much harder than i thought
Ships:
basically a decompilation of super mario odyssey. you need to own the source to use it (duh) but is incredibly difficult to do and over the 13 hrs i was only able to add something like 0.3% to the overall project, which is solid but not a lot....
|
1792975992.6600678
|
1793062392.6600678
|
|
7224
|
Card Game by @sharmnten | Stardance
|
sharmnten
|
1
|
31.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-22T03:36:02Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a game that aimed to be similar to Stardew Valley, but with more of a focus on making it out of debt, similar to the Steam game Gambling With Friends. While this game is not complete, players are able to create a character, explore a small town, and enter a casino, and play “Ride the Bus” on the right hand side of the Casino. I am really proud of the card games, as the animations are really good in my opinion. PS: Poker, on the left hand side of the casino, is entirely broken. DO NOT PLAY POKER or you will have to reload the page.", "repo": "https://github.com/sharmnten/card-game", "demo": "https://sharmnten.github.io/card-game/"}]...
|
[{"post_id": 81692, "ts": "202 [{"post_id": 81692, "ts": "2026-10-22T03:28:56Z", "hours": 0.9194, "text": "Added the UI to every screen, made the game full screen for web, and finally updated the website because I realized it wasn’t updating this whole time, because I hadn’t been pushing new web builds."}, {"post_id": 76567, "ts": "2026-10-03T23:56:12Z", "hours": 3.1072, "text": "Remade casino art, and added limos to the street. Made it so you can enter the casino, and when you exit you spawn in the same spot. Next I need to make the players house and some UI. After that I will work on fixing poker and blackjack, and finalizing the game mechanics."}, {"post_id": 72539, "ts": "2026-09-23T05:06:44Z", "hours": 5.0875, "text": "Worked on the map for the town. This took a really long time, as setting up the autotiling strategies was something I had never done before."}, {"post_id": 68422, "ts": "2026-09-15T02:55:47Z", "hours": 1.9653, "text": "Made it so when you start playing a game, you spawn in the same spot when the game ends."}, {"post_id": 54200, "ts": "2026-08-25T02:47:38Z", "hours": 2.5972, "text": "Created a prompt and system that starts the “Ride the Bus” and “Poker” games. The prompt appears when the player gets close. Additionally, the map of the casino was updated. The background of the camera matches the walls of the casino, so it appears there is nothing beyond the walls of the casino. Next will be making the money in card games link to the casino scene."}, {"post_id": 41134, "ts": "2026-08-05T04:36:14Z", "hours": 2.3386, "text": "Built out tilemap and configured tiles which is really tedious because I have to configure hitboxes and paint the tiles into place. A problem im having is that the foreground elements are not being ordered correctly with the player."}, {"post_id": 35046, "ts": "2026-07-26T06:42:34Z", "hours": 0.8406, "text": "Added walk animations to every single asset. Next step is to script the walk animations into place, so each animation plays at the right time, and the assets get mirrored at the right time as well."}, {"post_id": 34300, "ts": "2026-07-24T21:46:10Z", "hours": 2.2667, "text": "Started the character customizing screen, and wrote the code that allows the player to adjust the character sprite to their liking. Once this is finished, I will create a system that allows it to be saved into the game save file, and then I will have to create the rest of the animations. Then afterwards I will develop the map and the game will be almost complete."}, {"post_id": 23268, "ts": "2026-07-06T03:43:38Z", "hours": 0.9794, "text": "Created a new system for character animations where each clothing piece has a dedicated Animation Resource file. This will allow easier animation management when the user creates a custom character. Additionally, I created the police hat animations(this didn’t contribute to the time, but also is important)."}, {"post_id": 20877, "ts": "2026-07-02T16:24:42Z", "hours": 0.4219, "text": "Started setting up the player animations. It is rather tedious as I need to create idle animations for each character hair, body, shirt, and pants and shadow, but this will later allow for more customizability of the character. I will also need to create a police hat for the IRS officers, but that will come later."}, {"post_id": 20589, "ts": "2026-07-02T06:32:02Z", "hours": 1.1778, "text": "Finished the Ride the Bus card game. Turn four involved guessing which suite the next card will be for 20x multiplier. Wrote 8 new functions, overall the first card game being finished is a solid landmark for the project. In the future I will either continue to develop the other card games and possibly roulette, or I might move to character movement and map design."}, {"post_id": 5635, "ts": "2026-06-09T14:40:57Z", "hours": 5.8906, "text": "Worked a ton on a new card game I am adding, called ride the bus. Animations have been added to card dealing, so the card now smoothly tweens over and then flips over to show the face. I also updated poker so that way the game starts, takes the bet amount, and then deals cards to the player and dealer. Additionally, I created a chip scene that can be used in all the games to approximate the amount of money that is on the table."}, {"post_id": 2524, "ts": "2026-06-05T01:53:16Z", "hours": 1.0033, "text": "Got the dealing mechanism to work. Now, when the “check” button is pressed, a card comes from the deck, and goes to the players hand. This is just for testing, the real game cards will be dealt automatically."}, {"post_id": 2134, "ts": "2026-06-04T13:48:12Z", "hours": 2.2475, "text": "Made setup for poker game and blackjack game, with intial UI layout. Took sprites from Itch.io to use in the game. I took way to long making sure everything was perfectly centered, because it was annoying me. Started making a card class."}]...
|
Title: Card Game by @sharmnten | Stardance
Devlog Title: Card Game by @sharmnten | Stardance
Devlogs:
Made setup for poker game and blackjack game, with intial UI layout. Took sprites from Itch.io to use in the game. I took way to long making sure everything was perfectly centered, because it was annoying me. Started making a card class.
Got the dealing mechanism to work. Now, when the “check” button is pressed, a card comes from the deck, and goes to the players hand. This is just for testing, the real game cards will be dealt automatically.
Worked a ton on a new card game I am adding, called ride the bus. Animations have been added to card dealing, so the card now smoothly tweens over and then flips over to show the face. I also updated poker so that way the game starts, takes the bet amount, and then deals cards to the player and dealer. Additionally, I created a chip scene that can be used in all the games to approximate the amount of money that is on the table.
Finished the Ride the Bus card game. Turn four involved guessing which suite the next card will be for 20x multiplier. Wrote 8 new functions, overall the first card game being finished is a solid landmark for the project. In the future I will either continue to develop the other card games and possibly roulette, or I might move to character movement and map design.
Started setting up the player animations. It is rather tedious as I need to create idle animations for each character hair, body, shirt, and pants and shadow, but this will later allow for more customizability of the character. I will also need to create a police hat for the IRS officers, but that will come later.
Created a new system for character animations where each clothing piece has a dedicated Animation Resource file. This will allow easier animation management when the user creates a custom character. Additionally, I created the police hat animations(this didn’t contribute to the time, but also is important).
Started the character customizing screen, and wrote the code that allows the player to adjust the character sprite to their liking. Once this is finished, I will create a system that allows it to be saved into the game save file, and then I will have to create the rest of the animations. Then afterwards I will develop the map and the game will be almost complete.
Added walk animations to every single asset. Next step is to script the walk animations into place, so each animation plays at the right time, and the assets get mirrored at the right time as well.
Built out tilemap and configured tiles which is really tedious because I have to configure hitboxes and paint the tiles into place. A problem im having is that the foreground elements are not being ordered correctly with the player.
Created a prompt and system that starts the “Ride the Bus” and “Poker” games. The prompt appears when the player gets close. Additionally, the map of the casino was updated. The background of the camera matches the walls of the casino, so it appears there is nothing beyond the walls of the casino. Next will be making the money in card games link to the casino scene.
Made it so when you start playing a game, you spawn in the same spot when the game ends.
Worked on the map for the town. This took a really long time, as setting up the autotiling strategies was something I had never done before.
Remade casino art, and added limos to the street. Made it so you can enter the casino, and when you exit you spawn in the same spot. Next I need to make the players house and some UI. After that I will work on fixing poker and blackjack, and finalizing the game mechanics.
Added the UI to every screen, made the game full screen for web, and finally updated the website because I realized it wasn’t updating this whole time, because I hadn’t been pushing new web builds.
Ships:
I made a game that aimed to be similar to Stardew Valley, but with more of a focus on making it out of debt, similar to the Steam game Gambling With Friends. While this game is not complete, players are able to create a character, explore a small town, and enter a casino, and play “Ride the Bus” on the right hand side of the Casino. I am really proud of the card games, as the animations are really good in my opinion. PS: Poker, on the left hand side of the casino, is entirely broken. DO NOT PLAY POKER or you will have to reload the page....
|
1793047970.1237411
|
1793134370.1237411
|
|
7237
|
JaRPG by @DanngDev | Stardance
|
DanngDev
|
1
|
15.74
|
49
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-10T11:26:17Z", "hours": 12.0, "multiplier": 4.18, "payout": 49, "blessing": "neutral", "text": "I am happy with my project, needs some more extra work but for version 1 it is more than enough. Making it was hard, but figuring it out is part of the fun, you will need java 21 installed to play, but once you have done that, there is a simple command to install it and run it in the readme", "repo": "https://github.com/Volcar144/other-projects", "demo": "https://github.com/Volcar144/other-projects/releases"}]...
|
[{"post_id": 25603, "ts": "202 [{"post_id": 25603, "ts": "2026-07-09T23:36:40Z", "hours": 0.5122, "text": "Input Fixes Minor input fixes with validation"}, {"post_id": 13103, "ts": "2026-06-21T13:14:54Z", "hours": 0.5467, "text": "QOL Changes QOL changes including: The search command auto-picking up items Message displayed after using a potion Enemies you are fighting are displayed at the start of a combat Shops now tell you how much gold you have when opening You just put north, south, east or west, no need to prefix with ‘go’ anymore Technical changes: Moved room handling to handleRoom Moved help menu printing to printHelp removed help branch to be replaced by default case"}, {"post_id": 12703, "ts": "2026-06-20T19:01:43Z", "hours": 0.9669, "text": "Finished last bit of work After finally finishing coding my game and addressing ship notes, the next update should be the full release!"}, {"post_id": 7581, "ts": "2026-06-12T17:52:19Z", "hours": 0.6767, "text": "Finally, after all this time, i finished my workflow. I now have a new motto for life guys: “Never use github actions if you can’t be bothered to deal with random crap that never works”"}, {"post_id": 7429, "ts": "2026-06-12T11:34:17Z", "hours": 1.0361, "text": "Spent ages working on a workflow to make system binaries for a console java app, still not working… :sigh:"}, {"post_id": 6162, "ts": "2026-06-10T11:24:41Z", "hours": 1.3767, "text": "You can now save to a file, loading comes later! :)"}, {"post_id": 5084, "ts": "2026-06-08T19:29:33Z", "hours": 0.41, "text": "Added colours, because, you know, colour! :)"}, {"post_id": 5008, "ts": "2026-06-08T17:33:00Z", "hours": 1.1397, "text": "Finally finished the shop system, so here’s a gif for you guys to enjoy"}, {"post_id": 4798, "ts": "2026-06-08T09:21:48Z", "hours": 1.5656, "text": "Combat system fully finished! At last, you can sort of play."}, {"post_id": 4347, "ts": "2026-06-07T17:04:59Z", "hours": 2.4178, "text": "After another 2hrs, you can finally play, just, without combat"}, {"post_id": 2886, "ts": "2026-06-05T19:46:24Z", "hours": 3.2011, "text": "Finally, after 3 hours of coding and bug fixing… I can read and parse a file :sigh:"}, {"post_id": 2607, "ts": "2026-06-05T07:12:57Z", "hours": 0.4472, "text": "Wait, can’t do that yet, don’t want to make every Room individually, time for worldbuilding! 😭"}, {"post_id": 2204, "ts": "2026-06-04T15:59:43Z", "hours": 0.8419, "text": "After ages, I finished my types, now i can make the game ;("}, {"post_id": 2142, "ts": "2026-06-04T14:06:24Z", "hours": 0.4775, "text": "Just spent 10mins trying to get an arraylist to work only to realise i just forgot to add a semicolon ;)"}]...
|
Title: JaRPG by @DanngDev | Stardance
Devlogs:
Ju Title: JaRPG by @DanngDev | Stardance
Devlogs:
Just spent 10mins trying to get an arraylist to work only to realise i just forgot to add a semicolon ;)
After ages, I finished my types, now i can make the game ;(
Wait, can’t do that yet, don’t want to make every Room individually, time for worldbuilding! 😭
Finally, after 3 hours of coding and bug fixing… I can read and parse a file :sigh:
After another 2hrs, you can finally play, just, without combat
Combat system fully finished! At last, you can sort of play.
Finally finished the shop system, so here’s a gif for you guys to enjoy
Added colours, because, you know, colour! :)
You can now save to a file, loading comes later! :)
Spent ages working on a workflow to make system binaries for a console java app, still not working… :sigh:
Finally, after all this time, i finished my workflow. I now have a new motto for life guys: “Never use github actions if you can’t be bothered to deal with random crap that never works”
Finished last bit of work After finally finishing coding my game and addressing ship notes, the next update should be the full release!
QOL Changes QOL changes including: The search command auto-picking up items Message displayed after using a potion Enemies you are fighting are displayed at the start of a combat Shops now tell you how much gold you have when opening You just put north, south, east or west, no need to prefix with ‘go’ anymore Technical changes: Moved room handling to handleRoom Moved help menu printing to printHelp removed help branch to be replaced by default case
Input Fixes Minor input fixes with validation
Ships:
I am happy with my project, needs some more extra work but for version 1 it is more than enough. Making it was hard, but figuring it out is part of the fun, you will need java 21 installed to play, but once you have done that, there is a simple command to install it and run it in the readme...
|
1792979453.3789275
|
1793065853.3789275
|
|
7239
|
EXPENS-TRACKER by @safwan | Stardance
|
safwan
|
1
|
13.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-04T14:21:13Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i tried to make a expense tracking website with css,html and javascript the main feature of this expense tracker you can add the credited money and debited money then you will get a pdf abou the transaction history", "repo": "https://github.com/Ssafwa/Expense-Tracker", "demo": "https://expense-tracker-pink-xi-60.vercel.app/"}]...
|
[{"post_id": 2147, "ts": "2026 [{"post_id": 2147, "ts": "2026-06-04T14:16:29Z", "hours": 13.1403, "text": "I AM WORKING ON EXPENSE-TRACKING WEBSITE"}]...
|
Title: EXPENS-TRACKER by @safwan | Stardance
Devl Title: EXPENS-TRACKER by @safwan | Stardance
Devlogs:
I AM WORKING ON EXPENSE-TRACKING WEBSITE
Ships:
i tried to make a expense tracking website with css,html and javascript the main feature of this expense tracker you can add the credited money and debited money then you will get a pdf abou the transaction history...
|
1792990464.4332693
|
1793076864.4332693
|
|
7247
|
Blitz by @abhinavpv | Stardance
|
abhinavpv
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-04T17:10:27Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Blitz Type is a NASA-inspired typing speed trainer built with pure HTML, CSS, and JavaScript. The project features a real-time typing test with live WPM and accuracy tracking, animated starfield backgrounds, ambient space-themed music, mission-based progression, and a celebration screen with confetti after completing three passages. Users can practice on multiple unique passages while tracking their performance throughout the session. One challenge was implementing accurate typing statistics that count mistakes even if users later correct them. I also spent time refining the UI to create a polished “mission control” experience with smooth animations and responsive interactions. I’m proud of the overall user experience, especially the space-themed design, animated background, mission completion system, and the fact that everything was built without frameworks. To test: • Click “Try Project” • Click anywhere and start typing • Complete 3 passages to see the mission completion screen • Use Tab to skip passages and Esc to restart • Hover over the volume icon to adjust background music volume", "repo": "https://github.com/iamabhinavpv/blitz", "demo": "https://iamabhinavpv.github.io/blitz/"}]...
|
[{"post_id": 2239, "ts": "2026 [{"post_id": 2239, "ts": "2026-06-04T16:59:11Z", "hours": 1.2619, "text": "got the UI"}, {"post_id": 2152, "ts": "2026-06-04T14:22:17Z", "hours": 0.7933, "text": "just started working on UI"}]...
|
Title: Blitz by @abhinavpv | Stardance
Devlogs:
j Title: Blitz by @abhinavpv | Stardance
Devlogs:
just started working on UI
got the UI
Ships:
Blitz Type is a NASA-inspired typing speed trainer built with pure HTML, CSS, and JavaScript. The project features a real-time typing test with live WPM and accuracy tracking, animated starfield backgrounds, ambient space-themed music, mission-based progression, and a celebration screen with confetti after completing three passages. Users can practice on multiple unique passages while tracking their performance throughout the session. One challenge was implementing accurate typing statistics that count mistakes even if users later correct them. I also spent time refining the UI to create a polished “mission control” experience with smooth animations and responsive interactions. I’m proud of the overall user experience, especially the space-themed design, animated background, mission completion system, and the fact that everything was built without frameworks. To test: • Click “Try Project” • Click anywhere and start typing • Complete 3 passages to see the mission completion screen • Use Tab to skip passages and Esc to restart • Hover over the volume icon to adjust background music volume...
|
1793065698.121489
|
1793152098.121489
|
|
7250
|
PCA9685 Debugging Panel by @xk | Stardance
|
xk
|
1
|
7.56
|
19
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-04T16:20:20Z", "hours": 6.0, "multiplier": 3.44, "payout": 19, "blessing": "neutral", "text": "This is a web-based remote-control panel for debugging PCA9685 servo drivers on robots. The first problem I encountered was the accessibility of the hardware. Sometimes I want to debug the UI and API, but I don’t have a PCA9685 board nearby. So, I co-op with Deepseek to develop the mock mode, enabling the robot to “pretend that it has established an I2C connection to a PCA9685 driver”. If you are using the PCA9685 on your robot, you can easily debug it by simply installing this package via pip on the robot. Even if you don’t have the corresponding hardware, you can also use the mock mode to observe how the UI works. I hope this will inspire you. I’m still working on this project, and I hope it to become a “de facto standard” sometime.", "repo": "https://github.com/xiaokai-lyk/PCA9685-debugging-panel", "demo": "https://pypi.org/project/pca9685-debugging-panel/"}]...
|
[{"post_id": 8001, "ts": "2026 [{"post_id": 8001, "ts": "2026-06-13T10:52:09Z", "hours": 1.5586, "text": "V 0.2.0 now available! ✨ New Features: Action Recording & Replay Internationalization (i18n) Debug Mode (–debug) Clear Cache 💅 Improvements JS-fail overlay Accessibility Enhanced action buttons See GitHub release below for more infomation: https://github.com/xiaokai-lyk/PCA9685-debugging-panel/releases/tag/v0.2.0"}, {"post_id": 2199, "ts": "2026-06-04T15:50:08Z", "hours": 5.5567, "text": "v0.1.0 — Initial Release 🎉 Basic functions are now available and it has been published to PyPi~ Co-authed by Claude-code (used Deepseek as LLM) Visit the Github repo for more demonstrations~"}]...
|
Title: PCA9685 Debugging Panel by @xk | Stardance
Title: PCA9685 Debugging Panel by @xk | Stardance
Devlogs:
v0.1.0 — Initial Release 🎉 Basic functions are now available and it has been published to PyPi~ Co-authed by Claude-code (used Deepseek as LLM) Visit the Github repo for more demonstrations~
V 0.2.0 now available! ✨ New Features: Action Recording & Replay Internationalization (i18n) Debug Mode (–debug) Clear Cache 💅 Improvements JS-fail overlay Accessibility Enhanced action buttons See GitHub release below for more infomation: https://github.com/xiaokai-lyk/PCA9685-debugging-panel/releases/tag/v0.2.0
Ships:
This is a web-based remote-control panel for debugging PCA9685 servo drivers on robots. The first problem I encountered was the accessibility of the hardware. Sometimes I want to debug the UI and API, but I don’t have a PCA9685 board nearby. So, I co-op with Deepseek to develop the mock mode, enabling the robot to “pretend that it has established an I2C connection to a PCA9685 driver”. If you are using the PCA9685 on your robot, you can easily debug it by simply installing this package via pip on the robot. Even if you don’t have the corresponding hardware, you can also use the mock mode to observe how the UI works. I hope this will inspire you. I’m still working on this project, and I hope it to become a “de facto standard” sometime....
|
1793054950.0646834
|
1793141350.0646834
|
|
7272
|
TRASHPAD by @Mokxsh_ | Stardance
|
|
1
|
20.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T13:34:37Z", "hours": 20.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? I made TRASHPAD, a 9-key macropad with an OLED screen, a rotary encoder, a custom PCB, and a 3D-printed case. Basically, it’s a little shortcut machine that sits on my desk and handles the stuff I use all the time. I also made a website and a simulator for it so people can mess around with it without needing the actual hardware. What was challenging? The PCB was definitely the hardest part. At one point I thought I was completely done, then realized I had forgotten some matrix connections and had no GPIO pins left on the XIAO. That meant going back, changing the design, removing parts, updating the PCB, and even changing the case. It was one of those moments where a tiny mistake somehow creates hours of extra work. What are you proud of? Honestly, I’m proud that I solved my own problem. I was getting annoyed constantly reaching for shortcuts while working, so instead of living with it, I built something around the way I actually use my computer. Now I have a device that puts my most-used shortcuts, controls, and macros right in front of me. It’s cool seeing something that started as a random idea turn into something I genuinely use. What should people know so they can test your project? The easiest way is through the website simulator. You can click the keys, play with the encoder, and see how the OLED responds. If you want to dig deeper, all the PCB files, CAD files, firmware, and production files are in the repo so you can see exactly how everything was built.", "repo": "https://github.com/Mokxsh404/TRASHPAD", "demo": ""}]...
|
[{"post_id": 10106, "ts": "202 [{"post_id": 10106, "ts": "2026-06-16T18:16:53Z", "hours": 1.4847, "text": "I honestly can’t believe I’m writing this, but TrashPad is finally at the point where I can call it finished. Today I wrapped up the OLED UI, which was one of the last things on my checklist. I spent some time cleaning up the screens, fixing spacing issues, and making everything feel consistent. It might seem like a small thing, but having a proper interface makes the whole project feel a lot more polished. It’s no longer just hardware connected together, it actually feels like a finished device. The hardware side is now stable, the enclosure design is finished, and the PCB has reached that stage where I’m finally comfortable saying “I’m not changing this anymore.” At this point there’s only one task left: getting everything organized. I need to clean up the code, prepare the repository, sort out the documentation, and make sure everything is ready for release. After that, that’s it, I’m Gonna Ship It"}, {"post_id": 9989, "ts": "2026-06-16T14:59:47Z", "hours": 2.4803, "text": "This project started as a “quick build” and somehow turned into a full redesign loop I did not see coming. I spent around 16 hours straight building it end to end. No breaks, just flow. Schematic → PCB → Fusion 360 enclosure. Everything was moving fast and honestly felt solid at the time. ⚡ Schematic phase Mapped out the full switch matrix. Rows and columns looked clean on paper. Nothing felt off. This was the calm stage. 🧩 PCB design Routed everything around the XIAO RP2040. Tight layout, all pins assigned, everything looked correct. That’s the keyword: looked . 🖼️ Fusion 360 enclosure Built the case, aligned the board, checked fitment. At this point I genuinely thought: “yeah, this is a first-try success.” It wasn’t. 💥 The moment it broke During final checks, I realized something stupid but critical: ✔ Rows were connected ❌ Columns were NOT connected to the XIAO At first I thought: “ok easy fix, PCB edit, done in 2 minutes.” Then reality hit. 🚫 The real problem No GPIO pins left on the XIAO. Zero. Everything was already assigned. So the “quick fix” wasn’t possible at all. 🔧 Forced redesign Only option left was to free up pins. That meant removing the potentiometer I had already designed into the system. And that one change didn’t stay small: ~ PCB had to be updated again ~ Pin mapping had to be redone ~ Fusion enclosure had to be redesigned ~ Mechanical layout shifted again What should’ve been a tiny wiring fix turned into a full system rollback."}, {"post_id": 7506, "ts": "2026-06-12T14:56:29Z", "hours": 4.4644, "text": "add more tweakss ;) i) changed the previous trash knob design ii) made random cuts which i thought are coolll iii) changed the fonts iv) added the stardance logo im gonna ship it soon!"}, {"post_id": 5454, "ts": "2026-06-09T07:45:14Z", "hours": 10.8656, "text": "took me a while but yay!"}, {"post_id": 4238, "ts": "2026-06-07T14:07:01Z", "hours": 0.2667, "text": "guys please tell me if this pcb will work ? the xiao is at the back side. (Im Lowkey New)"}, {"post_id": 2194, "ts": "2026-06-04T15:41:24Z", "hours": 0.2675, "text": "Just Finished Up Building the website for you’re very-very own “TRASHPAD”"}]...
|
Title: TRASHPAD by @Mokxsh_ | Stardance
Devlogs:
Title: TRASHPAD by @Mokxsh_ | Stardance
Devlogs:
Just Finished Up Building the website for you’re very-very own “TRASHPAD”
guys please tell me if this pcb will work ? the xiao is at the back side. (Im Lowkey New)
took me a while but yay!
add more tweakss ;) i) changed the previous trash knob design ii) made random cuts which i thought are coolll iii) changed the fonts iv) added the stardance logo im gonna ship it soon!
This project started as a “quick build” and somehow turned into a full redesign loop I did not see coming. I spent around 16 hours straight building it end to end. No breaks, just flow. Schematic → PCB → Fusion 360 enclosure. Everything was moving fast and honestly felt solid at the time. ⚡ Schematic phase Mapped out the full switch matrix. Rows and columns looked clean on paper. Nothing felt off. This was the calm stage. 🧩 PCB design Routed everything around the XIAO RP2040. Tight layout, all pins assigned, everything looked correct. That’s the keyword: looked . 🖼️ Fusion 360 enclosure Built the case, aligned the board, checked fitment. At this point I genuinely thought: “yeah, this is a first-try success.” It wasn’t. 💥 The moment it broke During final checks, I realized something stupid but critical: ✔ Rows were connected ❌ Columns were NOT connected to the XIAO At first I thought: “ok easy fix, PCB edit, done in 2 minutes.” Then reality hit. 🚫 The real problem No GPIO pins left on the XIAO. Zero. Everything was already assigned. So the “quick fix” wasn’t possible at all. 🔧 Forced redesign Only option left was to free up pins. That meant removing the potentiometer I had already designed into the system. And that one change didn’t stay small: ~ PCB had to be updated again ~ Pin mapping had to be redone ~ Fusion enclosure had to be redesigned ~ Mechanical layout shifted again What should’ve been a tiny wiring fix turned into a full system rollback.
I honestly can’t believe I’m writing this, but TrashPad is finally at the point where I can call it finished. Today I wrapped up the OLED UI, which was one of the last things on my checklist. I spent some time cleaning up the screens, fixing spacing issues, and making everything feel consistent. It might seem like a small thing, but having a proper interface makes the whole project feel a lot more polished. It’s no longer just hardware connected together, it actually feels like a finished device. The hardware side is now stable, the enclosure design is finished, and the PCB has reached that stage where I’m finally comfortable saying “I’m not changing this anymore.” At this point there’s only one task left: getting everything organized. I need to clean up the code, prepare the repository, sort out the documentation, and make sure everything is ready for release. After that, that’s it, I’m Gonna Ship It
Ships:
What did you make? I made TRASHPAD, a 9-key macropad with an OLED screen, a rotary encoder, a custom PCB, and a 3D-printed case. Basically, it’s a little shortcut machine that sits on my desk and handles the stuff I use all the time. I also made a website and a simulator for it so people can mess around with it without needing the actual hardware. What was challenging? The PCB was definitely the hardest part. At one point I thought I was completely done, then realized I had forgotten some matrix connections and had no GPIO pins left on the XIAO. That meant going back, changing the design, removing parts, updating the PCB, and even changing the case. It was one of those moments where a tiny mistake somehow creates hours of extra work. What are you proud of? Honestly, I’m proud that I solved my own problem. I was getting annoyed constantly reaching for shortcuts while working, so instead of living with it, I built something around the way I actually use my computer. Now I have a device that puts my most-used shortcuts, controls, and macros right in front of me. It’s cool seeing something that started as a random idea turn into something I genuinely use. What should people know so they can test your project? The easiest way is through the website simulator. You can click the keys, play with the encoder, and see how the OLED responds. If you want to dig deeper, all the PCB files, CAD files, firmware, and production files are in the repo so you can see exactly how everything was built....
|
1792875210.906979
|
1793739210.906979
|
|
7276
|
LiteStyle by @JyotP | Stardance
|
JyotP
|
1
|
2.0
|
26
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-04T23:17:58Z", "hours": 2.0, "multiplier": 12.05, "payout": 26, "blessing": "neutral", "text": "I made a lightweight, highly customizable CSS library. It took me around 3 hours to put together, and it was honestly a fun thing to build. The whole point is that you can customize pretty much every single detail of a UI element and just drop the final .css file straight into your project. Node.js was definitely a bigger pain than I expected to get working right. But the workflow is pretty neat now: you just run the server locally, open up the dashboard, edit your components, hit save, and your CSS is ready to go in your HTML. Definitely going to be using this for my upcoming portfolio project.", "repo": "https://github.com/JHPate1/LiteStyle/", "demo": "http://Litestyle-demo.42web.io"}]...
|
[{"post_id": 2458, "ts": "2026 [{"post_id": 2458, "ts": "2026-06-04T23:12:31Z", "hours": 1.2106, "text": "Devlog 2- People said my last devlog sounded like AI, so I’m just gonna type this like a normal person. Anyway, I got a huge part of this project finished and I’m basically ready to ship it. I added a ton of new elements: badges, buttons, inputs, and all that stuff you’d expect from something like Bootstrap, and made it so you can actually edit every little detail. The main thing though was the debugging. Node.js and Vite were being a total nightmare. Vite kept crashing because it couldn’t find my files, and then the whole server refused to start just because of some dumb syntax errors I made while setting up the automatic code. It was a massive pain to get it all talking to each other, but I finally got it working. Also did I mention how stupid JS syntax errors can be? Like it throws errors that aren’t even errors. This project is basically finished now, if you want to use it go to my GitHub and follow the instructions. Still sad on how I lost 50 minutes of log time because of stupid HackaTime. (PS: I love intellisense now, saved me 30 minutes. Big W.)"}, {"post_id": 2397, "ts": "2026-06-04T21:07:56Z", "hours": 0.9622, "text": "Devlog 1: Building LiteStyle Okay so I made a CSS library. This is my first devlog and honestly I have no idea what I’m doing with the format, but here we go (no yap). Here’s the thing about existing libraries. Bootstrap? Fine. Works. But you hit a wall eventually where you’re fighting it more than using it. Tailwind? Incredibly powerful. Also incredibly easy to turn your HTML into unreadable alphabet soup if you don’t already know what you’re doing. I watched a friend who’s genuinely smart spend twenty minutes trying to center a div with Tailwind and I thought, there has to be a middle ground. So LiteStyle. Modular, lightweight, actually makes sense if you’re new to this. The idea is you grab pre-built CSS blocks, plug them in, tweak what you need. No config files. No memorizing forty utility classes to make a button. Just clean, readable code that does what you expect. What I actually built in 90 minutes: Repo’s up. File structure’s mapped out. Built a rough dashboard for customizing builds. The dashboard looks like garbage right now. Also I built it with Bootstrap and Tailwind which is obviously absurd. I’m building a CSS library to replace those and I used them to build the tool. You have to start somewhere I guess. It’ll get ripped out soon enough. HackaTime decided initializing my repo meant I started an entirely new project so my time tracking is completely broken. Small tragedy. Code’s committed at least. What’s next: Write the actual utility classes. Get the dashboard running on LiteStyle instead of the competition. Then we’ll see if this whole thing actually holds together or if I just wasted days."}]...
|
Title: LiteStyle by @JyotP | Stardance
Devlogs:
D Title: LiteStyle by @JyotP | Stardance
Devlogs:
Devlog 1: Building LiteStyle Okay so I made a CSS library. This is my first devlog and honestly I have no idea what I’m doing with the format, but here we go (no yap). Here’s the thing about existing libraries. Bootstrap? Fine. Works. But you hit a wall eventually where you’re fighting it more than using it. Tailwind? Incredibly powerful. Also incredibly easy to turn your HTML into unreadable alphabet soup if you don’t already know what you’re doing. I watched a friend who’s genuinely smart spend twenty minutes trying to center a div with Tailwind and I thought, there has to be a middle ground. So LiteStyle. Modular, lightweight, actually makes sense if you’re new to this. The idea is you grab pre-built CSS blocks, plug them in, tweak what you need. No config files. No memorizing forty utility classes to make a button. Just clean, readable code that does what you expect. What I actually built in 90 minutes: Repo’s up. File structure’s mapped out. Built a rough dashboard for customizing builds. The dashboard looks like garbage right now. Also I built it with Bootstrap and Tailwind which is obviously absurd. I’m building a CSS library to replace those and I used them to build the tool. You have to start somewhere I guess. It’ll get ripped out soon enough. HackaTime decided initializing my repo meant I started an entirely new project so my time tracking is completely broken. Small tragedy. Code’s committed at least. What’s next: Write the actual utility classes. Get the dashboard running on LiteStyle instead of the competition. Then we’ll see if this whole thing actually holds together or if I just wasted days.
Devlog 2- People said my last devlog sounded like AI, so I’m just gonna type this like a normal person. Anyway, I got a huge part of this project finished and I’m basically ready to ship it. I added a ton of new elements: badges, buttons, inputs, and all that stuff you’d expect from something like Bootstrap, and made it so you can actually edit every little detail. The main thing though was the debugging. Node.js and Vite were being a total nightmare. Vite kept crashing because it couldn’t find my files, and then the whole server refused to start just because of some dumb syntax errors I made while setting up the automatic code. It was a massive pain to get it all talking to each other, but I finally got it working. Also did I mention how stupid JS syntax errors can be? Like it throws errors that aren’t even errors. This project is basically finished now, if you want to use it go to my GitHub and follow the instructions. Still sad on how I lost 50 minutes of log time because of stupid HackaTime. (PS: I love intellisense now, saved me 30 minutes. Big W.)
Ships:
I made a lightweight, highly customizable CSS library. It took me around 3 hours to put together, and it was honestly a fun thing to build. The whole point is that you can customize pretty much every single detail of a UI element and just drop the final .css file straight into your project. Node.js was definitely a bigger pain than I expected to get working right. But the workflow is pretty neat now: you just run the server locally, open up the dashboard, edit your components, hit save, and your CSS is ready to go in your HTML. Definitely going to be using this for my upcoming portfolio project....
|
1792983212.280481
|
1793069612.280481
|
|
7292
|
veridian.study by @OrangJaguar | Stardance
|
OrangJaguar
|
1
|
25.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T04:05:21Z", "hours": 25.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a full-stack learning platform that builds personalized study plans from a student’s notes and exam dates, diagnoses exactly why they are getting questions wrong across six failure modes, and serves targeted practice each day using an ever-growing concept knowledge map.", "repo": "https://github.com/OrangJaguar/Veridian", "demo": "https://veridian.study/"}]...
|
[{"post_id": 19729, "ts": "202 [{"post_id": 19729, "ts": "2026-07-01T03:47:49Z", "hours": 24.8344, "text": "Veridian — Devlog 01 Sophomore year I walked into AP Chemistry, AP US History, and AP Psychology on the same schedule and realized for the first time that I had no idea how to actually study. Not in a “I’m lazy” way — I’d just never had to before. A quick review the night before a test was always enough. Nobody told me that was going to stop working until it already had. I tried everything. Re-reading notes felt like going through the motions. YouTube videos felt productive right up until I closed the tab and remembered nothing. Nothing told me whether what I was doing was actually working until the test came back with a number on it, and by then it was too late to change anything. I looked for something better. What I found were tools built for students who already knew how to study. None of them knew my material, my exam date, or which concepts I genuinely didn’t understand versus which ones just needed one more pass. So eventually I just built the thing myself. That’s Veridian . What It Does You upload your notes, a textbook chapter, a study guide — whatever you actually have for your class. Veridian pulls out the knowledge structure inside that material and builds you a Journey : a personalized study plan that figures out what you don’t know, drills you on it, and tells you exactly where you stand before the exam. Not after. The whole system is driven by FSRS , the most accurate spaced repetition algorithm out there, calibrated to your actual exam deadline so your review timing is mathematically optimized. The AI runs on Gemini Flash . And it’s completely free, permanently. Not a launch promotion. The students who need this the most are usually the ones who can’t afford another subscription. How It’s Built This is the part I’ve spent the most time on. Here’s the core architecture: Journeys are the main container. Inside each Journey are Modules , which are individual concept units extracted from your source material. Every Module moves through three stages: Stage A — Learn : A guided Learning Guide walks you through the concept with plain-language explanations, worked examples, and embedded check-in questions after each section. It’s not passive reading — you have to answer something before you move on. Stage B — Practice : AI-generated questions that never repeat. Every session builds new questions from your actual source material, so you’re always being tested on understanding, not card recognition. Stage C — Mastery : Active recall with no scaffolding. This is where you prove you actually know it. Underneath all of it is the FSRS engine deciding exactly when each concept needs to surface again based on your performance history. It’s not random — it’s a mathematical model of how human memory actually works. The Home screen is built around a single question: what should I do right now? Every Journey with something due today shows up as an action card with the activity type, a time estimate, and a single launch button. You open the app and start. That’s it. There’s also a Community Library where students can publish their Journey so others can clone it, plug in their own deadline, and use it. You share the structure — your personal progress and data always stays yours. Tech React + Vite + Tailwind + Zustand + TanStack Query + Base44 for the backend. Gemini Flash for AI. FSRS for scheduling. Full LaTeX rendering throughout for math-heavy subjects. Where It’s At Veridian is currently closed-source . You can sign up for the live public version at veridian.study . Free forever. No paywall, no AI upsell, no premium tier. More devlogs coming as I keep iterating. — Sanskar"}]...
|
Title: veridian.study by @OrangJaguar | Stardance
Title: veridian.study by @OrangJaguar | Stardance
Devlogs:
Veridian — Devlog 01 Sophomore year I walked into AP Chemistry, AP US History, and AP Psychology on the same schedule and realized for the first time that I had no idea how to actually study. Not in a “I’m lazy” way — I’d just never had to before. A quick review the night before a test was always enough. Nobody told me that was going to stop working until it already had. I tried everything. Re-reading notes felt like going through the motions. YouTube videos felt productive right up until I closed the tab and remembered nothing. Nothing told me whether what I was doing was actually working until the test came back with a number on it, and by then it was too late to change anything. I looked for something better. What I found were tools built for students who already knew how to study. None of them knew my material, my exam date, or which concepts I genuinely didn’t understand versus which ones just needed one more pass. So eventually I just built the thing myself. That’s Veridian . What It Does You upload your notes, a textbook chapter, a study guide — whatever you actually have for your class. Veridian pulls out the knowledge structure inside that material and builds you a Journey : a personalized study plan that figures out what you don’t know, drills you on it, and tells you exactly where you stand before the exam. Not after. The whole system is driven by FSRS , the most accurate spaced repetition algorithm out there, calibrated to your actual exam deadline so your review timing is mathematically optimized. The AI runs on Gemini Flash . And it’s completely free, permanently. Not a launch promotion. The students who need this the most are usually the ones who can’t afford another subscription. How It’s Built This is the part I’ve spent the most time on. Here’s the core architecture: Journeys are the main container. Inside each Journey are Modules , which are individual concept units extracted from your source material. Every Module moves through three stages: Stage A — Learn : A guided Learning Guide walks you through the concept with plain-language explanations, worked examples, and embedded check-in questions after each section. It’s not passive reading — you have to answer something before you move on. Stage B — Practice : AI-generated questions that never repeat. Every session builds new questions from your actual source material, so you’re always being tested on understanding, not card recognition. Stage C — Mastery : Active recall with no scaffolding. This is where you prove you actually know it. Underneath all of it is the FSRS engine deciding exactly when each concept needs to surface again based on your performance history. It’s not random — it’s a mathematical model of how human memory actually works. The Home screen is built around a single question: what should I do right now? Every Journey with something due today shows up as an action card with the activity type, a time estimate, and a single launch button. You open the app and start. That’s it. There’s also a Community Library where students can publish their Journey so others can clone it, plug in their own deadline, and use it. You share the structure — your personal progress and data always stays yours. Tech React + Vite + Tailwind + Zustand + TanStack Query + Base44 for the backend. Gemini Flash for AI. FSRS for scheduling. Full LaTeX rendering throughout for math-heavy subjects. Where It’s At Veridian is currently closed-source . You can sign up for the live public version at veridian.study . Free forever. No paywall, no AI upsell, no premium tier. More devlogs coming as I keep iterating. — Sanskar
Ships:
I built a full-stack learning platform that builds personalized study plans from a student’s notes and exam dates, diagnoses exactly why they are getting questions wrong across six failure modes, and serves targeted practice each day using an ever-growing concept knowledge map....
|
1793051563.4321878
|
1793137963.4321878
|
|
7293
|
Zerofiles by @franco | Stardance
|
franco
|
1
|
3.0
|
11
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T19:14:53Z", "hours": 3.0, "multiplier": 3.18, "payout": 11, "blessing": "neutral", "text": "Hey, i’ve made a Json Alternative called Zerofiles (.zr). I’ve made everything from 0 using only 2 libs and everything weighting a whoping 100kb so its also lightweight and fast. I am proud of making it a lossless, Custom AST engine which was kinda hard. So yeah. Run the test.py to test it.", "repo": "https://github.com/Franco-Senes/zerofiles", "demo": "https://github.com/Franco-Senes/zerofiles/blob/main/example.zr"}]...
|
[{"post_id": 3577, "ts": "2026 [{"post_id": 3577, "ts": "2026-06-06T16:04:00Z", "hours": 1.7214, "text": "Finished everything finally"}, {"post_id": 2512, "ts": "2026-06-05T01:23:20Z", "hours": 0.2669, "text": "I finally finished dumps and other stuff now we are going with ast & formatter classes :D"}, {"post_id": 2501, "ts": "2026-06-05T01:03:10Z", "hours": 0.7286, "text": "Finished my parser finally now we need to do loads and other functions so for now we are doing good"}, {"post_id": 2260, "ts": "2026-06-04T17:33:42Z", "hours": 0.4197, "text": "I ended implementing the comments now i need to actually add the json functionality"}, {"post_id": 2241, "ts": "2026-06-04T17:00:47Z", "hours": 0.3478, "text": "Implementing Json / Zerofiles The first step ill do for the projects is implementing json from 0 and adding a base for adding comments and other stuff. wish me luck"}]...
|
Title: Zerofiles by @franco | Stardance
Devlogs:
Title: Zerofiles by @franco | Stardance
Devlogs:
Implementing Json / Zerofiles The first step ill do for the projects is implementing json from 0 and adding a base for adding comments and other stuff. wish me luck
I ended implementing the comments now i need to actually add the json functionality
Finished my parser finally now we need to do loads and other functions so for now we are doing good
I finally finished dumps and other stuff now we are going with ast & formatter classes :D
Finished everything finally
Ships:
Hey, i’ve made a Json Alternative called Zerofiles (.zr). I’ve made everything from 0 using only 2 libs and everything weighting a whoping 100kb so its also lightweight and fast. I am proud of making it a lossless, Custom AST engine which was kinda hard. So yeah. Run the test.py to test it....
|
1792979680.8295288
|
1793066080.8295288
|
|
7303
|
chess-engin-c by @Leonhard | Stardance
|
Leonhard
|
1
|
70.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T07:39:08Z", "hours": 70.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Chees-Engin in C. It only lets you play legal moves, and handles all edge chases with Pins, Checks, Chasteling and Blocking. Finding which moves are legal and which illegal, was probably the hardest part about this project, because I do not just use a normal 8 by 8 array for the field but instead a 64Bit int for each piecetype and color where each bit reprecents a square. The bitmanipulation was a nightmare to say the least. The actuall engin itself wasn’t a walk in the park either, but by then I have allready gotten used to it. The projekt is on my Github, but only for LINUX. (Sorry, didn’t really bother making a Windows version, because I personaly avoid using Windows at all cost)", "repo": "https://github.com/Leonhard4321/chess-engin-c", "demo": "https://github.com/Leonhard4321/chess-engin-c/releases/tag/v1.0.0"}]...
|
[{"post_id": 23343, "ts": "202 [{"post_id": 23343, "ts": "2026-07-06T07:23:34Z", "hours": 5.0869, "text": "I addet a negative maximum funktion, with some other optimizations. The time spent to make the engin better isn’t addjustivied. I am gona leave it just like it is. It is better than me and that is good enough."}, {"post_id": 22004, "ts": "2026-07-04T07:19:23Z", "hours": 4.3028, "text": "I addet dynamic depth, so the fewer pieces are on the board the deeper the position gets analyzed."}, {"post_id": 21498, "ts": "2026-07-03T14:14:18Z", "hours": 4.3489, "text": "After some big optimizations, like moveordering and alpha-beta pruning, we are at a point where the engin actually beginns to get good. This engin is now comportable able to beat me. (I am about 1400 elo). It struggels a bit on endgames, and log-term development. I wasn’t really able to get a high depthed search, like other engins have it. I will have to take a good look why that might be. Thats gona be my next step."}, {"post_id": 21357, "ts": "2026-07-03T07:49:08Z", "hours": 6.4661, "text": "First test on the engin. I use a recursive minimax funktion. Look a couple of moves into the futer and evaluate the positions. The bot already understands the idea of captures. But it has no positional play at all. It is also terreable at checkmating."}, {"post_id": 18638, "ts": "2026-06-29T20:38:27Z", "hours": 2.1597, "text": "I am not really sure how to structure my next few blogs. It will defenitly take 20h+ until the engin is somewhere playable. And I don’t want to log such a long time in on go. So I think I am just gona give small updates inbetween to show the inside of a chess engin. The codepiece here is a basic evaluation funktion. It tells me exaclty which side is better at any given point. Although right now it is only counting material and not the quallity of the pieces that they contribute in the game."}, {"post_id": 18507, "ts": "2026-06-29T17:54:39Z", "hours": 0.8172, "text": "Now with all of the groundlaying rules done, it is time to focus on the bot. I have already worked on the way the bot is gona be implemented. But the implementation itsself is still the biggest thing to work on. Right here you can see a bot that does a random legal move on the board. I didn’t even bother to check what elo this would be, but i would assume 150 to 250 elo. Next I will work on a evaluation funktion, which should be pretty easy."}, {"post_id": 18462, "ts": "2026-06-29T16:57:40Z", "hours": 6.8078, "text": "This was the most frustrating error jet. Took me forever to figur out what even was going on. And I took me even longer fixing it. So what keept happening was this: Every time we look for a mate we simulate all of the opponents moves If a pawn on the second or seventh rankt(one square away from queening) was just sitting idle the programm simulated the promotion Because the promotion was just a simple scanf the complete programm came to a halt. To fix this I have implemented a way to queen as user and also, one for the Bot, later down the line. Although the bot one only queens for now. I am not sure jet if it is even nessecery to programm it to promot to any other piece, because it is almost never really the only winning idea."}, {"post_id": 16271, "ts": "2026-06-26T13:39:25Z", "hours": 1.8681, "text": "Checkmate has been addet, also the ability to draw, by stalemate and the 50 move rule. I won’t do the draw for insuficient material jet, maybe later down the road. But while testing I found a terrific but with pawnpromotion, It sometimes giliches out and ask you for a piece even if your not on the first or eightest rang."}, {"post_id": 16219, "ts": "2026-06-26T10:59:34Z", "hours": 1.1925, "text": "I honestly expected the castling to be more complicated. But it is done now. With all rules implemented. No castling, afte moving the rook, the king, or if the king is in check, or if a rook has been taken. There is only one thing missing to make this game really playable, in a Player vs Player sense. Checkmate!"}, {"post_id": 16181, "ts": "2026-06-26T09:12:58Z", "hours": 1.6783, "text": "Got it! Now blocks, checks, pins, and captures work. Everything works. The only missing thing is chastling wich might be a bit tricky to implement. The way the code works now, is the following: Every possable move from a piece gets calculated Every possition after the move gets looked at If the king is attacked in any possition delet the move from the possable moves. This may not ultimatle be the fasters way, but it’s fast enough for now. I might implement a even faster algorithem in the futur, but I like this one because it is just so clean and readable."}, {"post_id": 16140, "ts": "2026-06-26T07:22:38Z", "hours": 0.8508, "text": "With the new logic it was a easy to add the legal moves for the king back in. Now lets get back at tackeling the blocking and check, and block mechanics."}, {"post_id": 16116, "ts": "2026-06-26T06:25:44Z", "hours": 1.2175, "text": "All pieces are back to the right way the shouldm except the king. I know have some super clean funktions, that should make position calculation extreamly fast. I also heard about some optimizations with shifting bit array, to make the movecalculation for a sigle piece even faster. Not really shure how that works jet, but I am planing on implementing that to in the futer. The faster my legal moves calculator is now, the better the engin is gona get later on."}, {"post_id": 15912, "ts": "2026-06-25T21:18:34Z", "hours": 7.3344, "text": "I realized that the way my current isKingInCheck funktion works, would just be way to slow, to make a powerfull engin later on. I did a quick search on the internet, and it turns out I need to split between legal and pseudo legal moves. Where the pseudo legal moves, disregard checks. So I started rewriting the last 400 lines of code. There is not much to show here."}, {"post_id": 7597, "ts": "2026-06-12T18:21:37Z", "hours": 0.4103, "text": "Finally got the check logic on the king correctly. You are now unable to move a piece, if you are in check. Of course the blocking mecaniks are still missing. And I also should start working on the castlingmechaniks. But then I would me pretty much ready to start on the actual engin."}, {"post_id": 7580, "ts": "2026-06-12T17:51:04Z", "hours": 0.4639, "text": "Quick update, I solved the file capturing error of pawns. It was only a wrong < and > sign."}, {"post_id": 7367, "ts": "2026-06-12T08:39:37Z", "hours": 6.1, "text": "I am slowly getting the realization, how hard this actually gone be. Protected pieces now can’t be captured by the king. But I am still struggeling with the concept of check. It only works for pawns currently, there seems to be a big bug somewhere in the code. And pawns are able to capture from file a to h."}, {"post_id": 6263, "ts": "2026-06-10T15:03:30Z", "hours": 4.7922, "text": "Addet the complete movementlogic ecxept for the king. Even promotions and the sneaky en passant. The kings still proves to be a bit of a challange. But I will get it soon"}, {"post_id": 5722, "ts": "2026-06-09T16:52:46Z", "hours": 2.4717, "text": "I started on some legal checks for the pawn, rook and knight for now. Everything moves as expected. Even with captures and pieces of the own color blocking you. I have also added the blue indecators witch squares are allowed and witch are blocked. The other pieces will come soon."}, {"post_id": 5616, "ts": "2026-06-09T14:12:19Z", "hours": 4.8439, "text": "The piece moving logic is now implemented. You could now theoreticly play the game(exept for promoting pawns). But there are still no legal checks, this will be the next thing to add."}, {"post_id": 4431, "ts": "2026-06-07T19:09:00Z", "hours": 3.5058, "text": "I have addet some logic to mark specific squares if they have a piece on them, and am currently working on a way to move pieces across the board, for storring the possitions of pieces I have decidet to use bitmaps. They are basicly just a long int with 64 bits, each representing one square, one bitmap for every piece type. This may seem slow at the beginning but this will probably be faster for the engin itsself later on."}, {"post_id": 4143, "ts": "2026-06-07T10:50:19Z", "hours": 3.51, "text": "i am able now to display the board and the pieces whereever i want."}]...
|
Title: chess-engin-c by @Leonhard | Stardance
Dev Title: chess-engin-c by @Leonhard | Stardance
Devlogs:
i am able now to display the board and the pieces whereever i want.
I have addet some logic to mark specific squares if they have a piece on them, and am currently working on a way to move pieces across the board, for storring the possitions of pieces I have decidet to use bitmaps. They are basicly just a long int with 64 bits, each representing one square, one bitmap for every piece type. This may seem slow at the beginning but this will probably be faster for the engin itsself later on.
The piece moving logic is now implemented. You could now theoreticly play the game(exept for promoting pawns). But there are still no legal checks, this will be the next thing to add.
I started on some legal checks for the pawn, rook and knight for now. Everything moves as expected. Even with captures and pieces of the own color blocking you. I have also added the blue indecators witch squares are allowed and witch are blocked. The other pieces will come soon.
Addet the complete movementlogic ecxept for the king. Even promotions and the sneaky en passant. The kings still proves to be a bit of a challange. But I will get it soon
I am slowly getting the realization, how hard this actually gone be. Protected pieces now can’t be captured by the king. But I am still struggeling with the concept of check. It only works for pawns currently, there seems to be a big bug somewhere in the code. And pawns are able to capture from file a to h.
Quick update, I solved the file capturing error of pawns. It was only a wrong < and > sign.
Finally got the check logic on the king correctly. You are now unable to move a piece, if you are in check. Of course the blocking mecaniks are still missing. And I also should start working on the castlingmechaniks. But then I would me pretty much ready to start on the actual engin.
I realized that the way my current isKingInCheck funktion works, would just be way to slow, to make a powerfull engin later on. I did a quick search on the internet, and it turns out I need to split between legal and pseudo legal moves. Where the pseudo legal moves, disregard checks. So I started rewriting the last 400 lines of code. There is not much to show here.
All pieces are back to the right way the shouldm except the king. I know have some super clean funktions, that should make position calculation extreamly fast. I also heard about some optimizations with shifting bit array, to make the movecalculation for a sigle piece even faster. Not really shure how that works jet, but I am planing on implementing that to in the futer. The faster my legal moves calculator is now, the better the engin is gona get later on.
With the new logic it was a easy to add the legal moves for the king back in. Now lets get back at tackeling the blocking and check, and block mechanics.
Got it! Now blocks, checks, pins, and captures work. Everything works. The only missing thing is chastling wich might be a bit tricky to implement. The way the code works now, is the following: Every possable move from a piece gets calculated Every possition after the move gets looked at If the king is attacked in any possition delet the move from the possable moves. This may not ultimatle be the fasters way, but it’s fast enough for now. I might implement a even faster algorithem in the futur, but I like this one because it is just so clean and readable.
I honestly expected the castling to be more complicated. But it is done now. With all rules implemented. No castling, afte moving the rook, the king, or if the king is in check, or if a rook has been taken. There is only one thing missing to make this game really playable, in a Player vs Player sense. Checkmate!
Checkmate has been addet, also the ability to draw, by stalemate and the 50 move rule. I won’t do the draw for insuficient material jet, maybe later down the road. But while testing I found a terrific but with pawnpromotion, It sometimes giliches out and ask you for a piece even if your not on the first or eightest rang.
This was the most frustrating error jet. Took me forever to figur out what even was going on. And I took me even longer fixing it. So what keept happening was this: Every time we look for a mate we simulate all of the opponents moves If a pawn on the second or seventh rankt(one square away from queening) was just sitting idle the programm simulated the promotion Because the promotion was just a simple scanf the complete programm came to a halt. To fix this I have implemented a way to queen as user and also, one for the Bot, later down the line. Although the bot one only queens for now. I am not sure jet if it is even nessecery to programm it to promot to any other piece, because it is almost never really the only winning idea.
Now with all of the groundlaying rules done, it is time to focus on the bot. I have already worked on the way the bot is gona be implemented. But the implementation itsself is still the biggest thing to work on. Right here you can see a bot that does a random legal move on the board. I didn’t even bother to check what elo this would be, but i would assume 150 to 250 elo. Next I will work on a evaluation funktion, which should be pretty easy.
I am not really sure how to structure my next few blogs. It will defenitly take 20h+ until the engin is somewhere playable. And I don’t want to log such a long time in on go. So I think I am just gona give small updates inbetween to show the inside of a chess engin. The codepiece here is a basic evaluation funktion. It tells me exaclty which side is better at any given point. Although right now it is only counting material and not the quallity of the pieces that they contribute in the game.
First test on the engin. I use a recursive minimax funktion. Look a couple of moves into the futer and evaluate the positions. The bot already understands the idea of captures. But it has no positional play at all. It is also terreable at checkmating.
After some big optimizations, like moveordering and alpha-beta pruning, we are at a point where the engin actually beginns to get good. This engin is now comportable able to beat me. (I am about 1400 elo). It struggels a bit on endgames, and log-term development. I wasn’t really able to get a high depthed search, like other engins have it. I will have to take a good look why that might be. Thats gona be my next step.
I addet dynamic depth, so the fewer pieces are on the board the deeper the position gets analyzed.
I addet a negative maximum funktion, with some other optimizations. The time spent to make the engin better isn’t addjustivied. I am gona leave it just like it is. It is better than me and that is good enough.
Ships:
I made a Chees-Engin in C. It only lets you play legal moves, and handles all edge chases with Pins, Checks, Chasteling and Blocking. Finding which moves are legal and which illegal, was probably the hardest part about this project, because I do not just use a normal 8 by 8 array for the field but instead a 64Bit int for each piecetype and color where each bit reprecents a square. The bitmanipulation was a nightmare to say the least. The actuall engin itself wasn’t a walk in the park either, but by then I have allready gotten used to it. The projekt is on my Github, but only for LINUX. (Sorry, didn’t really bother making a Windows version, because I personaly avoid using Windows at all cost)...
|
1793001010.9056516
|
1793865010.9056516
|
|
7318
|
Hospital System by @Vasco | Stardance
|
Vasco
|
1
|
2.0
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-06T17:25:23Z", "hours": 2.0, "multiplier": 4.97, "payout": 12, "blessing": "neutral", "text": "What I made is a simple Hospital Management System built in Python using CustomTkinter. It has a login system, a dashboard, and different pages like patients, doctors, appointments, and settings with dark/light mode. The most challenging part was connecting everything together, especially making the login system work with users stored in a text file and managing the different pages in the same window without breaking the layout. I am proud that I was able to create a full working interface with multiple screens and a working navigation system, even though I am still learning Python. To test the project, users should run the program, log in using a username and password from the users.txt file, and then explore the different sections using the sidebar.", "repo": "https://github.com/vaskrodry/HospitalSystem", "demo": "https://github.com/vaskrodry/HospitalSystem/releases/tag/v1.0"}]...
|
[{"post_id": 3619, "ts": "2026 [{"post_id": 3619, "ts": "2026-06-06T16:56:02Z", "hours": 0.4228, "text": "It’s done! (:"}, {"post_id": 3599, "ts": "2026-06-06T16:25:43Z", "hours": 0.7289, "text": "I’M FINALLY DONE! I just need to fix a few bugs and that’s it!"}, {"post_id": 3561, "ts": "2026-06-06T15:40:20Z", "hours": 0.3119, "text": "I’m working on the main page, ALMOST FINISHED!"}, {"post_id": 3548, "ts": "2026-06-06T15:17:33Z", "hours": 0.2906, "text": "Now, I’m making the user interface prettier."}, {"post_id": 2229, "ts": "2026-06-04T16:47:30Z", "hours": 0.3008, "text": "I finished the login system and started the main page"}, {"post_id": 2213, "ts": "2026-06-04T16:22:37Z", "hours": 0.4283, "text": "Doing the login system!"}]...
|
Title: Hospital System by @Vasco | Stardance
Devl Title: Hospital System by @Vasco | Stardance
Devlogs:
Doing the login system!
I finished the login system and started the main page
Now, I’m making the user interface prettier.
I’m working on the main page, ALMOST FINISHED!
I’M FINALLY DONE! I just need to fix a few bugs and that’s it!
It’s done! (:
Ships:
What I made is a simple Hospital Management System built in Python using CustomTkinter. It has a login system, a dashboard, and different pages like patients, doctors, appointments, and settings with dark/light mode. The most challenging part was connecting everything together, especially making the login system work with users stored in a text file and managing the different pages in the same window without breaking the layout. I am proud that I was able to create a full working interface with multiple screens and a working navigation system, even though I am still learning Python. To test the project, users should run the program, log in using a username and password from the users.txt file, and then explore the different sections using the sidebar....
|
1792993963.1519647
|
1793080363.1519647
|
|
7322
|
MAI-UPY by @JSnap | Stardance
|
JSnap
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T15:46:05Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created MAI-UPY. This is a simply powerful AI, which is based on the Openrouter SDK, and PySide6. At its core, it is an application that allows AI models to answer more powerfully, and allows them to answer with better results, and less hallucinations. The most challanging part of this project was the UI, as I am extremely new to adding GUIs to Python Applications. I hope you enjoy it!!!", "repo": "https://github.com/JSnapXYZ/MAI-UPY", "demo": "https://github.com/JSnapXYZ/MAI-UPY/releases/"}]...
|
[{"post_id": 12584, "ts": "202 [{"post_id": 12584, "ts": "2026-06-20T15:29:35Z", "hours": 0.3042, "text": "I got the app finally ship-ready!!!!"}, {"post_id": 12558, "ts": "2026-06-20T14:48:05Z", "hours": 1.9208, "text": "DEVLOG 3!!!! wahey, i finally got a major bulk of the work done. the whole app now has a functioning UI, written in pyside6 , and context fully works!!!. the only addition i need now is to finally fix and impliment the update checker, and we will be all gucci to ship. Thanks for your support, JSnap."}, {"post_id": 8637, "ts": "2026-06-14T11:14:16Z", "hours": 0.5089, "text": "UPY!!!!!!!!!!!!!!1 Devlog #2 Boom!!! The AI is successfully using python!!!! WAHEY! The AI now responds with python scripts, which the local computer can now run. This is done relatively basically as of current, just simply using a “exec(result)” function. However, I still need to add support for context, and then onto bigger and better things, like more tools!! Thanks for reading, JSnap"}, {"post_id": 2299, "ts": "2026-06-04T18:26:08Z", "hours": 0.4875, "text": "MAI-UPY, we have contact! Devlog #1 So far I have been able to make requests to the AI using python, and the openrouter SDK! So far so good! Also, I stupidly created the installer script, before I made the actual app to install??? At least I now have a base for an installer script I guess. Soon, I will be able to make the AI use python… wait is that the name? Thanks, From JSNAP"}]...
|
Title: MAI-UPY by @JSnap | Stardance
Devlogs:
MAI Title: MAI-UPY by @JSnap | Stardance
Devlogs:
MAI-UPY, we have contact! Devlog #1 So far I have been able to make requests to the AI using python, and the openrouter SDK! So far so good! Also, I stupidly created the installer script, before I made the actual app to install??? At least I now have a base for an installer script I guess. Soon, I will be able to make the AI use python… wait is that the name? Thanks, From JSNAP
UPY!!!!!!!!!!!!!!1 Devlog #2 Boom!!! The AI is successfully using python!!!! WAHEY! The AI now responds with python scripts, which the local computer can now run. This is done relatively basically as of current, just simply using a “exec(result)” function. However, I still need to add support for context, and then onto bigger and better things, like more tools!! Thanks for reading, JSnap
DEVLOG 3!!!! wahey, i finally got a major bulk of the work done. the whole app now has a functioning UI, written in pyside6 , and context fully works!!!. the only addition i need now is to finally fix and impliment the update checker, and we will be all gucci to ship. Thanks for your support, JSnap.
I got the app finally ship-ready!!!!
Ships:
I created MAI-UPY. This is a simply powerful AI, which is based on the Openrouter SDK, and PySide6. At its core, it is an application that allows AI models to answer more powerfully, and allows them to answer with better results, and less hallucinations. The most challanging part of this project was the UI, as I am extremely new to adding GUIs to Python Applications. I hope you enjoy it!!!...
|
1792994047.564045
|
1793080447.564045
|
|
7330
|
My first slack bot! by @Rivaan | Stardance
|
Rivaan
|
1
|
6.34
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T08:17:08Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built SlackyBOT , an open-source AI-powered Slack assistant using Node.js, Slack Bolt, and Google Gemini AI. The bot supports multiple features including: Gemini AI chat ( /hbsc-gemini ) Weather reports ( /hbsc-weather ) Calculator commands Memes, jokes, and fun facts Coin flips Help and utility commands The most challenging part was integrating multiple APIs and debugging Slack permissions, payload handling, and external service responses. I also learned how to work with geocoding APIs since weather services require coordinates instead of city names. I’m most proud of successfully deploying the bot on Hack Club Nest and making it available for public testing through a live Slack workspace. How to Test Click Try Project . Join the demo Slack workspace. Open the #slackybot-demo-stardance channel. Run: /hbsc-help /hbsc-gemini explain recursion /hbsc-weather london /hbsc-meme The project includes a public GitHub repository, documentation, website, and a live deployment on NEST that remains online 24/7 for testing.", "repo": "https://github.com/Abhiudaymaurya/Slack-Bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BQZDSTC4S"}]...
|
[{"post_id": 9741, "ts": "2026 [{"post_id": 9741, "ts": "2026-06-16T05:09:17Z", "hours": 1.3353, "text": "Final Update Upgraded the Slack bot according to the reviewer’s comments. Deleted the AI capabilities from the bot, and edited the README accordingly for the updated version of the project. Some additional minor changes have been done in the code as well."}, {"post_id": 4064, "ts": "2026-06-07T07:45:17Z", "hours": 1.9183, "text": "🤖 SlackyBOT — Project Complete After several iterations, SlackyBOT is now fully functional, deployed, and available for public testing. SlackyBOT is an open-source Slack assistant built with Node.js, Slack Bolt, and Google Gemini API. The bot combines AI assistance, weather reports, utility tools, calculators, and entertainment features directly inside Slack. ✅ Implemented Features /hbsc-help /hbsc-ping /hbsc-sum /hbsc-minus /hbsc-multiply /hbsc-divide /hbsc-joke /hbsc-funfact /hbsc-meme /hbsc-coinflip /hbsc-weather <city> /hbsc-gemini <question> 🛠 What I Built Google Gemini AI integration Real-time weather reports with geocoding Calculator utilities Meme, joke, and fun fact commands Slash command handling with Slack Bolt Public demo workspace Project website and documentation Deployment on Hack Club Nest 📚 What I Learned This project taught me much more than Slack bot development. Building backend applications with Node.js Working with multiple external APIs Debugging production issues Environment variable management Slack permissions and app configuration Error handling and API validation Deploying and maintaining a live service One of the most interesting challenges was the weather system. Since weather APIs typically require coordinates rather than city names, I implemented geocoding to convert user input into usable location data before fetching forecasts. 🌐 Live Demo & Testing A public demo workspace is available for testing SlackyBOT. Demo Website https://abhiudaymaurya.github.io/Slack-Bot/ How to Test Open the demo website. Click Join Demo Workspace . Join the Slack workspace using your Slack account. Open the #slackybot-demo-stardance channel. Try the available slash commands. SlackyBOT is deployed on Hack Club Nest and remains online for public testing. The project includes: Public GitHub repository Documentation and setup instructions Demo website Public Slack workspace for testing 🎯 Final Result What started as a simple experiment with Slack slash commands evolved into a complete AI-powered Slack assistant with multiple integrations, public deployment, and real users able to test it. Building SlackyBOT gave me valuable experience with APIs, backend development, debugging, deployment, and designing software that people can interact with directly inside Slack. 🚀 Ready for review and public testing."}, {"post_id": 3378, "ts": "2026-06-06T08:39:59Z", "hours": 1.6344, "text": "🤖 SlackyBOT Progress Update Today was a big milestone for SlackyBOT. What started as a simple Slack bot now supports calculator commands, fun commands, weather lookups, and Google Gemini AI. ✅ Features Completed /hbsc-help /hbsc-ping /hbsc-sum /hbsc-minus /hbsc-multiply /hbsc-divide /hbsc-joke /hbsc-funfact /hbsc-meme /hbsc-coinflip /hbsc-weather <city> /hbsc-gemini <question> 🛠 What I Learned Building slash commands with Slack Bolt Working with external APIs Managing environment variables and permissions Debugging API responses and payload issues Using geocoding APIs for weather lookups Integrating Google Gemini AI into Slack 🌤 Biggest Challenge The weather command was more challenging than I expected. Most weather APIs require latitude and longitude instead of a city name, so I added geocoding to convert user input into coordinates before requesting weather data. 🚀 Current Progress Gemini AI integration complete Weather command complete Fun commands complete Calculator commands complete Documentation complete Demo workspace available Public website available 🎯 Next Step Deploy SlackyBOT on Hack Club Nest so it can stay online 24/7 and be tested without running it locally. This project has been a great way to learn more about APIs, backend development, debugging, and building tools that people can use directly inside Slack."}, {"post_id": 2654, "ts": "2026-06-05T10:06:58Z", "hours": 0.7667, "text": "🤖 Gemini AI Integration Complete I just integrated Google Gemini AI into SlackyBOT. Now users can ask questions right from Slack. Get answers generated by AI. It was tougher than I thought to get this feature working. I faced issues with API configuration, accessing models, Slack permissions and a few bugs in my code.. After checking logs and documentation I got it working. ✅ Available Commands /hbsc-help /hbsc-ping /hbsc-joke /hbsc-sum /hbsc-gemini <question> 🎬 Gemini AI Demo 🛠 What I Learned Handling commands with Slack Bolt Integrating Google Gemini API Managing environment variables Debugging. Handling errors Configuring Slack. App settings 🎯 Next Steps I plan to deploy SlackyBOT on Hack Club Nest. This way it can stay online all the time. Be accessible, without needing to run locally. Credits Gemini Documentation Slack Documentation StarDance Beginner Guide"}, {"post_id": 2574, "ts": "2026-06-05T04:43:23Z", "hours": 0.5281, "text": "🤖 First Step in Building SlackyBOT Today I started building my own Slack bot and learned how Slack apps and slash commands work. After setting up Slack Bolt and reading through the documentation, I got my first commands working: /hbsc-ping /hbsc-help /hbsc-joke The joke command fetches jokes from an external API and sends them directly to Slack. ✅ What I Built Created the Slack app Set up Slack Bolt Added slash command handling Implemented a ping command Implemented a help command Implemented a joke command using an external API 🛠 What I Learned How Slack slash commands work How to process user commands in the backend Slack Bolt fundamentals Making API requests from a Slack bot 🎯 Next Steps Add calculator commands Integrate Gemini AI Add weather commands Deploy the bot for testing A small step, but SlackyBOT is finally taking shape. 🚀"}]...
|
Title: My first slack bot! by @Rivaan | Stardance
Title: My first slack bot! by @Rivaan | Stardance
Devlogs:
🤖 First Step in Building SlackyBOT Today I started building my own Slack bot and learned how Slack apps and slash commands work. After setting up Slack Bolt and reading through the documentation, I got my first commands working: /hbsc-ping /hbsc-help /hbsc-joke The joke command fetches jokes from an external API and sends them directly to Slack. ✅ What I Built Created the Slack app Set up Slack Bolt Added slash command handling Implemented a ping command Implemented a help command Implemented a joke command using an external API 🛠 What I Learned How Slack slash commands work How to process user commands in the backend Slack Bolt fundamentals Making API requests from a Slack bot 🎯 Next Steps Add calculator commands Integrate Gemini AI Add weather commands Deploy the bot for testing A small step, but SlackyBOT is finally taking shape. 🚀
🤖 Gemini AI Integration Complete I just integrated Google Gemini AI into SlackyBOT. Now users can ask questions right from Slack. Get answers generated by AI. It was tougher than I thought to get this feature working. I faced issues with API configuration, accessing models, Slack permissions and a few bugs in my code.. After checking logs and documentation I got it working. ✅ Available Commands /hbsc-help /hbsc-ping /hbsc-joke /hbsc-sum /hbsc-gemini <question> 🎬 Gemini AI Demo 🛠 What I Learned Handling commands with Slack Bolt Integrating Google Gemini API Managing environment variables Debugging. Handling errors Configuring Slack. App settings 🎯 Next Steps I plan to deploy SlackyBOT on Hack Club Nest. This way it can stay online all the time. Be accessible, without needing to run locally. Credits Gemini Documentation Slack Documentation StarDance Beginner Guide
🤖 SlackyBOT Progress Update Today was a big milestone for SlackyBOT. What started as a simple Slack bot now supports calculator commands, fun commands, weather lookups, and Google Gemini AI. ✅ Features Completed /hbsc-help /hbsc-ping /hbsc-sum /hbsc-minus /hbsc-multiply /hbsc-divide /hbsc-joke /hbsc-funfact /hbsc-meme /hbsc-coinflip /hbsc-weather <city> /hbsc-gemini <question> 🛠 What I Learned Building slash commands with Slack Bolt Working with external APIs Managing environment variables and permissions Debugging API responses and payload issues Using geocoding APIs for weather lookups Integrating Google Gemini AI into Slack 🌤 Biggest Challenge The weather command was more challenging than I expected. Most weather APIs require latitude and longitude instead of a city name, so I added geocoding to convert user input into coordinates before requesting weather data. 🚀 Current Progress Gemini AI integration complete Weather command complete Fun commands complete Calculator commands complete Documentation complete Demo workspace available Public website available 🎯 Next Step Deploy SlackyBOT on Hack Club Nest so it can stay online 24/7 and be tested without running it locally. This project has been a great way to learn more about APIs, backend development, debugging, and building tools that people can use directly inside Slack.
🤖 SlackyBOT — Project Complete After several iterations, SlackyBOT is now fully functional, deployed, and available for public testing. SlackyBOT is an open-source Slack assistant built with Node.js, Slack Bolt, and Google Gemini API. The bot combines AI assistance, weather reports, utility tools, calculators, and entertainment features directly inside Slack. ✅ Implemented Features /hbsc-help /hbsc-ping /hbsc-sum /hbsc-minus /hbsc-multiply /hbsc-divide /hbsc-joke /hbsc-funfact /hbsc-meme /hbsc-coinflip /hbsc-weather <city> /hbsc-gemini <question> 🛠 What I Built Google Gemini AI integration Real-time weather reports with geocoding Calculator utilities Meme, joke, and fun fact commands Slash command handling with Slack Bolt Public demo workspace Project website and documentation Deployment on Hack Club Nest 📚 What I Learned This project taught me much more than Slack bot development. Building backend applications with Node.js Working with multiple external APIs Debugging production issues Environment variable management Slack permissions and app configuration Error handling and API validation Deploying and maintaining a live service One of the most interesting challenges was the weather system. Since weather APIs typically require coordinates rather than city names, I implemented geocoding to convert user input into usable location data before fetching forecasts. 🌐 Live Demo & Testing A public demo workspace is available for testing SlackyBOT. Demo Website https://abhiudaymaurya.github.io/Slack-Bot/ How to Test Open the demo website. Click Join Demo Workspace . Join the Slack workspace using your Slack account. Open the #slackybot-demo-stardance channel. Try the available slash commands. SlackyBOT is deployed on Hack Club Nest and remains online for public testing. The project includes: Public GitHub repository Documentation and setup instructions Demo website Public Slack workspace for testing 🎯 Final Result What started as a simple experiment with Slack slash commands evolved into a complete AI-powered Slack assistant with multiple integrations, public deployment, and real users able to test it. Building SlackyBOT gave me valuable experience with APIs, backend development, debugging, deployment, and designing software that people can interact with directly inside Slack. 🚀 Ready for review and public testing.
Final Update Upgraded the Slack bot according to the reviewer’s comments. Deleted the AI capabilities from the bot, and edited the README accordingly for the updated version of the project. Some additional minor changes have been done in the code as well.
Ships:
I built SlackyBOT , an open-source AI-powered Slack assistant using Node.js, Slack Bolt, and Google Gemini AI. The bot supports multiple features including: Gemini AI chat ( /hbsc-gemini ) Weather reports ( /hbsc-weather ) Calculator commands Memes, jokes, and fun facts Coin flips Help and utility commands The most challenging part was integrating multiple APIs and debugging Slack permissions, payload handling, and external service responses. I also learned how to work with geocoding APIs since weather services require coordinates instead of city names. I’m most proud of successfully deploying the bot on Hack Club Nest and making it available for public testing through a live Slack workspace. How to Test Click Try Project . Join the demo Slack workspace. Open the #slackybot-demo-stardance channel. Run: /hbsc-help /hbsc-gemini explain recursion /hbsc-weather london /hbsc-meme The project includes a public GitHub repository, documentation, website, and a live deployment on NEST that remains online 24/7 for testing....
|
1792979432.6429424
|
1793065832.6429424
|
|
7336
|
VoidBoard by @AuraMonster | Stardance
|
AuraMonster
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-11T14:49:37Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a macropad, so that it can do many things. The hardest part was the PCB designing because some parts were confusing.", "repo": "https://github.com/mdmutahhar24-pixel/VoidBoard", "demo": ""}]...
|
[{"post_id": 6549, "ts": "2026 [{"post_id": 6549, "ts": "2026-06-11T00:13:41Z", "hours": 4.3, "text": "What Is Voidboard going to be used for? I am thinking of using VoidBoard for shortcuts, keyboard, and numpad. It may not be obvious, but it’s design coloring was influenced by Hollow Knight. Current Progress: Finished Schematic Finished PCB Finished CAD Finished Firmware Uploaded all necessary files to Github Repository"}]...
|
Title: VoidBoard by @AuraMonster | Stardance
Devl Title: VoidBoard by @AuraMonster | Stardance
Devlogs:
What Is Voidboard going to be used for? I am thinking of using VoidBoard for shortcuts, keyboard, and numpad. It may not be obvious, but it’s design coloring was influenced by Hollow Knight. Current Progress: Finished Schematic Finished PCB Finished CAD Finished Firmware Uploaded all necessary files to Github Repository
Ships:
I made a macropad, so that it can do many things. The hardest part was the PCB designing because some parts were confusing....
|
1792997657.7326274
|
1793084057.7326274
|
|
7338
|
PC Stats by @dubbyy | Stardance
|
dubbyy
|
1
|
38.0
|
349
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T00:15:30Z", "hours": 38.0, "multiplier": 10.53, "payout": 349, "blessing": "neutral", "text": "Taken from my last devlog: … I’ve been making an app to track information about how I use my computer, and a companion website to display the data. Right now, it logs every click, as well as the positions and dimensions of apps every 5 minutes. The dashboard website then displays that data in a variety of interesting ways. The collection takes a long time and only works on Linux, so I’m using the dashboard as the demo. You can find the collector on the GithTub. The most challenging part was figuring out how to collect the data, especially the clicks, however I think I spent the most time on the dashboard. It was my first time using Javascript for something complex, so I’m pretty happy with how it turned out I hope you enjoy :)", "repo": "https://github.com/dubbyy1/pc-stats", "demo": "https://pc-stats.dubbyy.com/?db=https%3A%2F%2Fraw.githubusercontent.com%2Fdubbyy1%2Fpc-stats%2Fmain%2Fexamples%2Fstats.db"}]...
|
[{"post_id": 17266, "ts": "202 [{"post_id": 17266, "ts": "2026-06-28T00:01:16Z", "hours": 2.095, "text": "FINISHED Its finally finished! If you don’t know, I’ve been making an app to track information about how I use my computer, and a companion website to display the data. Right now, it logs every click, as well as the positions and dimensions of apps every 5 minutes. The dashboard website then displays that data in a variety of interesting ways. The collector is now (in theory) compatible with the majority of Linux desktops (sorry Windows users, maybe next year). I also added a small config file. Right now this only stores the window-snapshot interval, which you can change through the UI. I originally planned on adding a list of apps to ignore, but there were too many problems. Primarily, I wasn’t sure how to reliably handle the focused app being blocked without making it null, which is very messy, and the whole thing seemed too complicated for a feature I’m don’t really plan on using. I also considered making it a frontend filter, but chose not to for a similar reason. Once again, you can try it yourself here with my data. If you want to collect your own data, you can download the collector here (note: you need to give your user input permissions for this to detect clicks, more details in the README). I’ve only tested this on my machine (KDE Wayland) so if you have a different setup, tell me how it goes! Afterword I had a lot of fun making this. This was my deepest dive into web development yet and I learned so much. This is also the first time I’ve shipped a project for public use, which was a has been a valuable experience. I could definitely do more with this (more config, more charts, more data), and I do plan on revisiting it in the future, but I think this is a good place to leave it for now. Thanks for reading, see you next project :)"}, {"post_id": 17047, "ts": "2026-06-27T17:53:20Z", "hours": 15.2803, "text": "Day ?? - New Features! After 15 hours (got a bit carried away) the next feature is (mostly) finished! You can now monitor and display window data. Every 5 minutes, the collector logs what apps are open and their positions on screen, which you can then visualize on the dashboard. I thought it would be interesting to combine the click data and the window data in some way, but I decided against it. The reason being that I technically don’t know what app the user clicked since it could have changed in the 5 minutes. To collect the data I had to run a separate KWin script to get around the restrictions, same as with the clicks. This script gave me the windows as JSON, which I then stored in 2 SQLite tables. One containing general info (one entry per snapshot), and the other containing info about specific windows. The second major change is the collector’s new UI. It was a relatively small addition, but it makes the whole experience a lot smoother. It also uses the same UI library I was already using to get the monitor configuration which was nice. Finally, the dashboard now stores the database in cache so everything is preserved when you reload. This change was mostly for me, because having to re-upload the file every time I changed the code got really annoying. What’s Next There’s a few finishing touches I need to add before shipping, Specifically: Compatibility (KDE only right now) Config options (Snapshot frequency, apps to ignore, etc) Possibly more window features yap I definitely could have done all this way faster but I spent a lot of time fiddling, trying to fully understand everything. Now between the KWin scripts and the dashboard I have a much deeper understanding of Javascript than before which will help in the future. Hopefully I can ship this today or tomorrow so I can start working on my next project"}, {"post_id": 10289, "ts": "2026-06-16T22:34:09Z", "hours": 6.7747, "text": "Days 5 + 6? Changes I added filters for time and button type to make it more interactive. I also added new charts, specifically pie charts for button and monitor usage, and bar charts for hourly and daily activity. I used chart.js to make the charts, because it makes the programming way simpler while still giving me full control. The final change was reworking the heatmap again. instead of each click being an individual element, they’re now drawn on a canvas which boosts performance significantly. Try it! What’s Next Now that the dashboard is mostly finished. I want to add some quality of life things (namely caching the database so I don’t have to reupload it every time) before adding the next feature. Speaking of, the next feature is going to track what applications are open at what times, which I think will make for some really interesting data."}, {"post_id": 4535, "ts": "2026-06-07T21:35:10Z", "hours": 5.6419, "text": "Day 4 - Cleanup Changes Cleaned up the UI a lot. I like the new heatmap visualization a lot, but it’s a bit slow so I’ll continue to experiment with it. I optimized the backend a lot, it used to block a full CPU core but now it sleeps properly when idling. I also expanded compatibility to other Linux environments. This was actually way simpler than I expected, I just happened to start with KDE which is really complex for some reason. Notes The dashboard is now live on my website , which you can test with this sample data . My aim right now is to get the project ship-ready, and then add features one by one."}, {"post_id": 3823, "ts": "2026-06-06T21:37:25Z", "hours": 3.3017, "text": "Day 3 - Dashboard Today I started making the dashboard, to present the data. I decided to make it a website and have the user upload their data. This makes demoing a lot easier, as well as being good for compatibility. Right now it’s a very bare bones prototype with only a heatmap, but all the set up for reading the data should be finished, which means I can focus on polishing the UI and adding features. I also fixed some bugs in the backend. Previously the code would fail if your mouse disconnected, but now it can handle disconnects and reconnects, as well as detect multiple mice at the same time."}, {"post_id": 2918, "ts": "2026-06-05T20:23:31Z", "hours": 3.0511, "text": "Day 2 Continuing work on my data collection project. Yesterday finished the core of the first feature — a click heatmap. Today was mostly polish and fixing the structure to make shipping easier when the time comes. Changes Organisation Instead of having everything in one big ugly python file, I created a module and separated all each part into it’s own file. This will make things much easier as I continue to add new features. As well as organising the python code, the project uses a JavaScript script to get the position of the mouse, and a bash script to run it. Neither of these can be packaged, so I updated the code to generate the JS file in the user’s share directory and run it directly from python. Compatibility The original code was highly specific to my setup, and couldn’t be shipped. The fix came in two parts. I previously had my exact model of mouse hard-coded, so I added the ability to detect what mouse the user has The code only worked for my specific Window Manager. This is still the case, but I added the structure to detect the WM and adjust for it. I plan on adding support for other’s in the coming days Storage All data is now stored persistently in an SQLite database. In the future this will be read and displayed by the dashboard program. What’s Next Create the dashboard to start displaying data Expand compatibility to other Linux systems (might take a while)"}, {"post_id": 2454, "ts": "2026-06-04T23:05:57Z", "hours": 2.2456, "text": "Day 1 Making an app to track a bunch of data about how i use my computer. Currently trying to make a heatmap of where i click the most. No UI yet because getting the mouse position on Wayland took wayyy too long to figure out"}]...
|
Title: PC Stats by @dubbyy | Stardance
Devlogs:
D Title: PC Stats by @dubbyy | Stardance
Devlogs:
Day 1 Making an app to track a bunch of data about how i use my computer. Currently trying to make a heatmap of where i click the most. No UI yet because getting the mouse position on Wayland took wayyy too long to figure out
Day 2 Continuing work on my data collection project. Yesterday finished the core of the first feature — a click heatmap. Today was mostly polish and fixing the structure to make shipping easier when the time comes. Changes Organisation Instead of having everything in one big ugly python file, I created a module and separated all each part into it’s own file. This will make things much easier as I continue to add new features. As well as organising the python code, the project uses a JavaScript script to get the position of the mouse, and a bash script to run it. Neither of these can be packaged, so I updated the code to generate the JS file in the user’s share directory and run it directly from python. Compatibility The original code was highly specific to my setup, and couldn’t be shipped. The fix came in two parts. I previously had my exact model of mouse hard-coded, so I added the ability to detect what mouse the user has The code only worked for my specific Window Manager. This is still the case, but I added the structure to detect the WM and adjust for it. I plan on adding support for other’s in the coming days Storage All data is now stored persistently in an SQLite database. In the future this will be read and displayed by the dashboard program. What’s Next Create the dashboard to start displaying data Expand compatibility to other Linux systems (might take a while)
Day 3 - Dashboard Today I started making the dashboard, to present the data. I decided to make it a website and have the user upload their data. This makes demoing a lot easier, as well as being good for compatibility. Right now it’s a very bare bones prototype with only a heatmap, but all the set up for reading the data should be finished, which means I can focus on polishing the UI and adding features. I also fixed some bugs in the backend. Previously the code would fail if your mouse disconnected, but now it can handle disconnects and reconnects, as well as detect multiple mice at the same time.
Day 4 - Cleanup Changes Cleaned up the UI a lot. I like the new heatmap visualization a lot, but it’s a bit slow so I’ll continue to experiment with it. I optimized the backend a lot, it used to block a full CPU core but now it sleeps properly when idling. I also expanded compatibility to other Linux environments. This was actually way simpler than I expected, I just happened to start with KDE which is really complex for some reason. Notes The dashboard is now live on my website , which you can test with this sample data . My aim right now is to get the project ship-ready, and then add features one by one.
Days 5 + 6? Changes I added filters for time and button type to make it more interactive. I also added new charts, specifically pie charts for button and monitor usage, and bar charts for hourly and daily activity. I used chart.js to make the charts, because it makes the programming way simpler while still giving me full control. The final change was reworking the heatmap again. instead of each click being an individual element, they’re now drawn on a canvas which boosts performance significantly. Try it! What’s Next Now that the dashboard is mostly finished. I want to add some quality of life things (namely caching the database so I don’t have to reupload it every time) before adding the next feature. Speaking of, the next feature is going to track what applications are open at what times, which I think will make for some really interesting data.
Day ?? - New Features! After 15 hours (got a bit carried away) the next feature is (mostly) finished! You can now monitor and display window data. Every 5 minutes, the collector logs what apps are open and their positions on screen, which you can then visualize on the dashboard. I thought it would be interesting to combine the click data and the window data in some way, but I decided against it. The reason being that I technically don’t know what app the user clicked since it could have changed in the 5 minutes. To collect the data I had to run a separate KWin script to get around the restrictions, same as with the clicks. This script gave me the windows as JSON, which I then stored in 2 SQLite tables. One containing general info (one entry per snapshot), and the other containing info about specific windows. The second major change is the collector’s new UI. It was a relatively small addition, but it makes the whole experience a lot smoother. It also uses the same UI library I was already using to get the monitor configuration which was nice. Finally, the dashboard now stores the database in cache so everything is preserved when you reload. This change was mostly for me, because having to re-upload the file every time I changed the code got really annoying. What’s Next There’s a few finishing touches I need to add before shipping, Specifically: Compatibility (KDE only right now) Config options (Snapshot frequency, apps to ignore, etc) Possibly more window features yap I definitely could have done all this way faster but I spent a lot of time fiddling, trying to fully understand everything. Now between the KWin scripts and the dashboard I have a much deeper understanding of Javascript than before which will help in the future. Hopefully I can ship this today or tomorrow so I can start working on my next project
FINISHED Its finally finished! If you don’t know, I’ve been making an app to track information about how I use my computer, and a companion website to display the data. Right now, it logs every click, as well as the positions and dimensions of apps every 5 minutes. The dashboard website then displays that data in a variety of interesting ways. The collector is now (in theory) compatible with the majority of Linux desktops (sorry Windows users, maybe next year). I also added a small config file. Right now this only stores the window-snapshot interval, which you can change through the UI. I originally planned on adding a list of apps to ignore, but there were too many problems. Primarily, I wasn’t sure how to reliably handle the focused app being blocked without making it null, which is very messy, and the whole thing seemed too complicated for a feature I’m don’t really plan on using. I also considered making it a frontend filter, but chose not to for a similar reason. Once again, you can try it yourself here with my data. If you want to collect your own data, you can download the collector here (note: you need to give your user input permissions for this to detect clicks, more details in the README). I’ve only tested this on my machine (KDE Wayland) so if you have a different setup, tell me how it goes! Afterword I had a lot of fun making this. This was my deepest dive into web development yet and I learned so much. This is also the first time I’ve shipped a project for public use, which was a has been a valuable experience. I could definitely do more with this (more config, more charts, more data), and I do plan on revisiting it in the future, but I think this is a good place to leave it for now. Thanks for reading, see you next project :)
Ships:
Taken from my last devlog: … I’ve been making an app to track information about how I use my computer, and a companion website to display the data. Right now, it logs every click, as well as the positions and dimensions of apps every 5 minutes. The dashboard website then displays that data in a variety of interesting ways. The collection takes a long time and only works on Linux, so I’m using the dashboard as the demo. You can find the collector on the GithTub. The most challenging part was figuring out how to collect the data, especially the clicks, however I think I spent the most time on the dashboard. It was my first time using Javascript for something complex, so I’m pretty happy with how it turned out I hope you enjoy :)...
|
1793066086.3489928
|
1793152486.3489928
|
|
7339
|
Super Mr. Bennet (SCHOOL VERSION - DEPRECATED) by Super Mr. Bennet (SCHOOL VERSION - DEPRECATED) by @openchanter | Stardance...
|
openchanter
|
1
|
28.08
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T21:51:30Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a web-based platformer game called Super Mr. Bennet! I made this mainly for my English final project, which was to reinterpret a part of one of the texts we read this year in a creative way. It features 4 levels as well as a level editor, all running in a web browser and using Vite as a bundler on the backend.", "repo": "https://github.com/OpEnchanter/en25-final-project", "demo": "https://bennet.tgreenhagen.com"}]...
|
[{"post_id": 9018, "ts": "2026 [{"post_id": 9018, "ts": "2026-06-15T01:26:35Z", "hours": 3.7328, "text": "For this update, I worked a lot on cleaning up the code, making sure that there are now significantly less type-check errors present, and overall it’s easier to develop more features in the future. Onto things of actual substance I added though, there are now actual coins inside the lucky blocks scattered throughout the game as well as coins that can be placed directly in levels in the editor! Sometime soon I do plan to add some sort of asset caching system to the main game so that it isn’t trying to fetch assets as you are playing."}, {"post_id": 7157, "ts": "2026-06-11T23:11:01Z", "hours": 0.4333, "text": "I quickly added some hot air balloons, they aren’t in any of the campaign levels but they’re fun to play with in custom levels."}, {"post_id": 7083, "ts": "2026-06-11T21:17:11Z", "hours": 5.9783, "text": "I made some improvements to the UI, such as rounded button corners and a outline when hovering a button. I fixed some bugs with both the player and enemy movement and now the enemies are (a bit) more reliable. There’s also now grass that sways in the wind and interacts with the player in the game! Oh and I added a main menu screen. Also had to do some pretty major reworks to how the game loads levels, and I moved all of the code for that to a separate file where I can use it from both the normal levels and the main menu."}, {"post_id": 6644, "ts": "2026-06-11T04:05:32Z", "hours": 0.6953, "text": "Another quick devlog because I fixed some of the issues that existed after the previous one. I also made it so that anyone can enter the editor with any level loaded in it from any level and whenever you get to a new level in the campaign it saves your progress. I know this will cause issues with players not being able to replay the game so I will add a button on the title screen (whenever I get around to making that) for resetting save progress. Oh also I think most if not all of the bugs with movement getting stuck in a certain direction are fixed both in the editor and in game."}, {"post_id": 6617, "ts": "2026-06-11T03:14:20Z", "hours": 3.2364, "text": "I’ve decided to make the game and the editor feel more like one cohesive experience rather than two separate applications, so I’m adding a pause menu as well, and I’m changing the editor to be located at the website’s root rather than being a separate webpage. This will also hopefully make the experience playing the itch.io build of the game better. (note: none of these changes have been published on any public instance of the game yet because there are some unresolved issues with the editor however I have pushed my work from today to GitHub)"}, {"post_id": 5912, "ts": "2026-06-09T21:47:53Z", "hours": 0.6292, "text": "Apparently there was and issue with the level editor that caused it to not render the icons in the UI, so I fixed that. I also wrote the README for the project including information about the project such as the bundler it uses (vite), controls, and documentation on running the app."}, {"post_id": 5892, "ts": "2026-06-09T21:03:28Z", "hours": 3.8522, "text": "I did some behind the scenes work getting it to state where i could publish it on Itch.io and making sure that all the features were working as intended as well as making it automatically resize to maintain pixel size consistency as well as (again) making it work on Itch."}, {"post_id": 2212, "ts": "2026-06-04T16:20:56Z", "hours": 9.2106, "text": "So far I’ve written the engine for this project, which initializes and draws to a canvas element, as well as an editor ( https://bennet.tgreenhagen.com/editor/ ), some pieces that can be used to build levels and some of the campaign levels."}]...
|
Title: Super Mr. Bennet (SCHOOL VERSION - DEPRECAT Title: Super Mr. Bennet (SCHOOL VERSION - DEPRECATED) by @openchanter | Stardance
Devlogs:
So far I’ve written the engine for this project, which initializes and draws to a canvas element, as well as an editor ( https://bennet.tgreenhagen.com/editor/ ), some pieces that can be used to build levels and some of the campaign levels.
I did some behind the scenes work getting it to state where i could publish it on Itch.io and making sure that all the features were working as intended as well as making it automatically resize to maintain pixel size consistency as well as (again) making it work on Itch.
Apparently there was and issue with the level editor that caused it to not render the icons in the UI, so I fixed that. I also wrote the README for the project including information about the project such as the bundler it uses (vite), controls, and documentation on running the app.
I’ve decided to make the game and the editor feel more like one cohesive experience rather than two separate applications, so I’m adding a pause menu as well, and I’m changing the editor to be located at the website’s root rather than being a separate webpage. This will also hopefully make the experience playing the itch.io build of the game better. (note: none of these changes have been published on any public instance of the game yet because there are some unresolved issues with the editor however I have pushed my work from today to GitHub)
Another quick devlog because I fixed some of the issues that existed after the previous one. I also made it so that anyone can enter the editor with any level loaded in it from any level and whenever you get to a new level in the campaign it saves your progress. I know this will cause issues with players not being able to replay the game so I will add a button on the title screen (whenever I get around to making that) for resetting save progress. Oh also I think most if not all of the bugs with movement getting stuck in a certain direction are fixed both in the editor and in game.
I made some improvements to the UI, such as rounded button corners and a outline when hovering a button. I fixed some bugs with both the player and enemy movement and now the enemies are (a bit) more reliable. There’s also now grass that sways in the wind and interacts with the player in the game! Oh and I added a main menu screen. Also had to do some pretty major reworks to how the game loads levels, and I moved all of the code for that to a separate file where I can use it from both the normal levels and the main menu.
I quickly added some hot air balloons, they aren’t in any of the campaign levels but they’re fun to play with in custom levels.
For this update, I worked a lot on cleaning up the code, making sure that there are now significantly less type-check errors present, and overall it’s easier to develop more features in the future. Onto things of actual substance I added though, there are now actual coins inside the lucky blocks scattered throughout the game as well as coins that can be placed directly in levels in the editor! Sometime soon I do plan to add some sort of asset caching system to the main game so that it isn’t trying to fetch assets as you are playing.
Ships:
I made a web-based platformer game called Super Mr. Bennet! I made this mainly for my English final project, which was to reinterpret a part of one of the texts we read this year in a creative way. It features 4 levels as well as a level editor, all running in a web browser and using Vite as a bundler on the backend....
|
1792976032.0639834
|
1793062432.0639834
|
|
7347
|
Mouton Laser Tag. by @Lol123rl | Stardance
|
Lol123rl
|
1
|
16.0
|
197
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T05:01:59Z", "hours": 16.0, "multiplier": 12.05, "payout": 197, "blessing": "neutral", "text": "I made a 3D mountain laser tag game where the player fights against Red team enemies with Blue team allies. The game has multiple modes, including Team Elimination, Capture the Flag, Manhunt, Commander, King of the Hill, and a Final Boss battle. Players can earn money, buy upgrades, unlock achievements, and improve their character over time. I also added a main menu, mission briefs, save progress, reset options, and an ending screen. Overall, I built a full action game with combat, objectives, progression, and a final challenge.", "repo": "https://github.com/Lol123rl/hi", "demo": "https://majestic-douhua-9e1892.netlify.app/"}]...
|
[{"post_id": 10268, "ts": "202 [{"post_id": 10268, "ts": "2026-06-16T22:17:23Z", "hours": 4.7183, "text": "Dev Log — Mountain Laser Tag Update Since my last dev log, I focused on making Mountain Laser Tag feel more like a complete game instead of just a battle demo. I worked on the final boss ending, the save system, achievements, money rewards, the main menu, and overall game polish. One of the biggest changes was the final boss completion flow. After beating the final boss, the game now shows an ending credits screen instead of just ending suddenly. I added a SAVE & FINISH button that saves the player’s completion reward, fades out the audio, and moves into a final black “game saved” ending screen. This works better for a web game because browsers do not always allow a game to close the tab automatically. The final boss reward now saves a completed-game state, including overpowered mode with near-infinite ammo, very fast firing, huge stamina, fast reload, and maxed upgrades. I also fixed the reset system. Before, if the player beat the final boss and then reset their progress, the reward power mode could still remain active. Now reset clears money, upgrades, achievements, lifetime stats, boss unlocks, and final boss reward mode. That makes the reset button actually behave like a full fresh start. Another major update was fixing how eliminations count. I noticed that CPU eliminations were counting as the player’s eliminations, which meant the player could unlock achievements without actually doing anything. I changed the logic so CPU kills only help the team score, while player kills are the only ones that count toward personal elimination stats, money, and player achievements. I also changed the money system so different game modes reward the player differently. Team Elimination still rewards the player for eliminations and headshots, but Manhunt now works differently. If the player is hunted, they can earn money for surviving and escaping over time. If the player is hunting, they can earn money for finding the target quickly. Other modes now have smaller mode-specific rewards, such as Capture the Flag defense rewards, Commander eliminations, and King of the Hill rewards. I added more achievements to make the game feel like it has long-term goals. These include achievements for 100 lifetime eliminations, 500 lifetime eliminations, 25 Team Elimination knockouts, earning money while escaping in Manhunt, winning a fast Manhunt as the hunter, winning Capture the Flag, and winning King of the Hill. This gives players more reasons to try multiple modes instead of only playing one mode. I also worked on the title screen and mission brief system. The main menu has a larger mountain-themed command box with buttons for Deploy, Upgrade Shop, Achievements, Reset Save, Mission Brief, Mode Select, and Quit. I experimented with different mission brief layouts and then adjusted the system so the mission brief can be shown from the main screen without feeling like a completely separate menu. The mission brief explains the current mode’s objective so the player understands what to do before deploying. For performance, I made several smoothing changes. I reduced active CPU load, slowed down some repeated cleanup and UI update tasks, reduced how often the minimap redraws, and throttled some boss UI updates. I also experimented with edge fog, but it caused too much lag, so I rolled that back to keep the game running smoother. This was a useful lesson: not every cool visual effect is worth keeping if it hurts the actual gameplay experience. Overall, this update made the game more complete. It now has better save behavior, clearer progression, fairer achievements, better mode rewards, a more polished ending, and a cleaner main menu. The game still needs more testing, especially in a browser build, but it is much closer to being ready to ship for Stardance."}, {"post_id": 5937, "ts": "2026-06-09T22:37:53Z", "hours": 0.9497, "text": "added more gamemodes and added a title screen. Just started molti player"}, {"post_id": 5660, "ts": "2026-06-09T15:15:24Z", "hours": 2.7072, "text": "HELLCOPTER"}, {"post_id": 4876, "ts": "2026-06-08T13:14:21Z", "hours": 7.1797, "text": "Over 8-hours,, I built a fully functional, large-scale 3D first-person sci-fi game from scratch in Godot. The project focuses on a massive 50-player laser tag concept, splitting the battlefield into two teams of 25 (the player’s team versus smart enemies). Because the map is quite big, matches currently run long. However, completing a working first-person shooter loop with working AI, atmosphere, and custom health mechanics in a single day is a major technical milestone. Features Implemented Translucent Fog SystemTo solve the visual emptiness of a large map and add atmosphere, I implemented a translucent white fog effect.Purpose: It blocks long-range vision, forcing players to navigate carefully.Impact: It turns the massive arena into a high-stakes environment where enemies suddenly appear out of the white mist. Laser Gun MechanicsI coded and integrated a functional laser gun weapon system. It handles first-person aiming and registers fast, accurate sci-fi shots across the battlefield, complete with laser visuals that slice through the fog. 50-Player Smart AI Infrastructure. The biggest achievement of this 8-hour time was setting up 50 entities on the field that spond over time. Teammates: 24 AI allies that fight alongside the player.Smart Enemies: 25 aggressive AI units programmed to hunt down opponents and eliminate the player’s team. Optimization: Balancing 50 moving, targeting characters in a 3D Godot environment while keeping the game playable required clean, fast logic loops. Combat Logic & Dual-Zone Health to make the laser tag gameplay tactical, I designed and coded a specific combat system that rewards headshots:Instant Elimination Headshots: If you or an enemy take a direct laser hit to the head, it results in an immediate elimination.2-Life Body Armor: To balance the difficulty, shooting the body is more forgiving. Players and AI have exactly 2 lives for their body armor before being removed from the match. Future Milestones & Next StepsWith the core gameplay loop completed in one day, my next goal is to add more traditional laser tag elements to fill out the large map and speed up match times.Bunkers: Placing sci-fi structures across the open terrain to provide tactical cover.Targets: Adding shootable targets around the map for extra objectives.Pacing Tweaks: Adjusting player movement or AI paths to bring the 50 players together faster. Conclusion Developing a smart AI system, a dual-zone health mechanic, custom fog, and a working laser weapon in just 8 hours taught me a lot about rapid prototyping in Godot. The game is already fun to play, and the foundation is ready for a major arena expansion."}, {"post_id": 2215, "ts": "2026-06-04T16:25:49Z", "hours": 0.7517, "text": "Finly got working in godot 4.0"}]...
|
Title: Mouton Laser Tag. by @Lol123rl | Stardance
Title: Mouton Laser Tag. by @Lol123rl | Stardance
Devlogs:
Finly got working in godot 4.0
Over 8-hours,, I built a fully functional, large-scale 3D first-person sci-fi game from scratch in Godot. The project focuses on a massive 50-player laser tag concept, splitting the battlefield into two teams of 25 (the player’s team versus smart enemies). Because the map is quite big, matches currently run long. However, completing a working first-person shooter loop with working AI, atmosphere, and custom health mechanics in a single day is a major technical milestone. Features Implemented Translucent Fog SystemTo solve the visual emptiness of a large map and add atmosphere, I implemented a translucent white fog effect.Purpose: It blocks long-range vision, forcing players to navigate carefully.Impact: It turns the massive arena into a high-stakes environment where enemies suddenly appear out of the white mist. Laser Gun MechanicsI coded and integrated a functional laser gun weapon system. It handles first-person aiming and registers fast, accurate sci-fi shots across the battlefield, complete with laser visuals that slice through the fog. 50-Player Smart AI Infrastructure. The biggest achievement of this 8-hour time was setting up 50 entities on the field that spond over time. Teammates: 24 AI allies that fight alongside the player.Smart Enemies: 25 aggressive AI units programmed to hunt down opponents and eliminate the player’s team. Optimization: Balancing 50 moving, targeting characters in a 3D Godot environment while keeping the game playable required clean, fast logic loops. Combat Logic & Dual-Zone Health to make the laser tag gameplay tactical, I designed and coded a specific combat system that rewards headshots:Instant Elimination Headshots: If you or an enemy take a direct laser hit to the head, it results in an immediate elimination.2-Life Body Armor: To balance the difficulty, shooting the body is more forgiving. Players and AI have exactly 2 lives for their body armor before being removed from the match. Future Milestones & Next StepsWith the core gameplay loop completed in one day, my next goal is to add more traditional laser tag elements to fill out the large map and speed up match times.Bunkers: Placing sci-fi structures across the open terrain to provide tactical cover.Targets: Adding shootable targets around the map for extra objectives.Pacing Tweaks: Adjusting player movement or AI paths to bring the 50 players together faster. Conclusion Developing a smart AI system, a dual-zone health mechanic, custom fog, and a working laser weapon in just 8 hours taught me a lot about rapid prototyping in Godot. The game is already fun to play, and the foundation is ready for a major arena expansion.
HELLCOPTER
added more gamemodes and added a title screen. Just started molti player
Dev Log — Mountain Laser Tag Update Since my last dev log, I focused on making Mountain Laser Tag feel more like a complete game instead of just a battle demo. I worked on the final boss ending, the save system, achievements, money rewards, the main menu, and overall game polish. One of the biggest changes was the final boss completion flow. After beating the final boss, the game now shows an ending credits screen instead of just ending suddenly. I added a SAVE & FINISH button that saves the player’s completion reward, fades out the audio, and moves into a final black “game saved” ending screen. This works better for a web game because browsers do not always allow a game to close the tab automatically. The final boss reward now saves a completed-game state, including overpowered mode with near-infinite ammo, very fast firing, huge stamina, fast reload, and maxed upgrades. I also fixed the reset system. Before, if the player beat the final boss and then reset their progress, the reward power mode could still remain active. Now reset clears money, upgrades, achievements, lifetime stats, boss unlocks, and final boss reward mode. That makes the reset button actually behave like a full fresh start. Another major update was fixing how eliminations count. I noticed that CPU eliminations were counting as the player’s eliminations, which meant the player could unlock achievements without actually doing anything. I changed the logic so CPU kills only help the team score, while player kills are the only ones that count toward personal elimination stats, money, and player achievements. I also changed the money system so different game modes reward the player differently. Team Elimination still rewards the player for eliminations and headshots, but Manhunt now works differently. If the player is hunted, they can earn money for surviving and escaping over time. If the player is hunting, they can earn money for finding the target quickly. Other modes now have smaller mode-specific rewards, such as Capture the Flag defense rewards, Commander eliminations, and King of the Hill rewards. I added more achievements to make the game feel like it has long-term goals. These include achievements for 100 lifetime eliminations, 500 lifetime eliminations, 25 Team Elimination knockouts, earning money while escaping in Manhunt, winning a fast Manhunt as the hunter, winning Capture the Flag, and winning King of the Hill. This gives players more reasons to try multiple modes instead of only playing one mode. I also worked on the title screen and mission brief system. The main menu has a larger mountain-themed command box with buttons for Deploy, Upgrade Shop, Achievements, Reset Save, Mission Brief, Mode Select, and Quit. I experimented with different mission brief layouts and then adjusted the system so the mission brief can be shown from the main screen without feeling like a completely separate menu. The mission brief explains the current mode’s objective so the player understands what to do before deploying. For performance, I made several smoothing changes. I reduced active CPU load, slowed down some repeated cleanup and UI update tasks, reduced how often the minimap redraws, and throttled some boss UI updates. I also experimented with edge fog, but it caused too much lag, so I rolled that back to keep the game running smoother. This was a useful lesson: not every cool visual effect is worth keeping if it hurts the actual gameplay experience. Overall, this update made the game more complete. It now has better save behavior, clearer progression, fairer achievements, better mode rewards, a more polished ending, and a cleaner main menu. The game still needs more testing, especially in a browser build, but it is much closer to being ready to ship for Stardance.
Ships:
I made a 3D mountain laser tag game where the player fights against Red team enemies with Blue team allies. The game has multiple modes, including Team Elimination, Capture the Flag, Manhunt, Commander, King of the Hill, and a Final Boss battle. Players can earn money, buy upgrades, unlock achievements, and improve their character over time. I also added a main menu, mission briefs, save progress, reset options, and an ending screen. Overall, I built a full action game with combat, objectives, progression, and a final challenge....
|
1792975784.8755999
|
1793062184.8755999
|
|
7399
|
PlaPy by @twnarx | Stardance
|
twnarx
|
1
|
14.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-26T20:25:06Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A fully featured, pixel-art themed Snake game built with Python and Pygame. PlaPy combines classic Snake gameplay with custom pixel-art graphics, multiple difficulty levels, persistent high scores, bonus food mechanics, sound effects, and a polished menu system.", "repo": "https://github.com/twnar/PlaPy", "demo": "https://twnar.itch.io/plapy"}]...
|
[{"post_id": 35421, "ts": "202 [{"post_id": 35421, "ts": "2026-07-26T20:21:06Z", "hours": 1.0, "text": "Available on itch.io!"}, {"post_id": 35105, "ts": "2026-07-26T10:09:48Z", "hours": 6.0, "text": "My first game dev experience using python!"}, {"post_id": 34661, "ts": "2026-07-25T15:50:44Z", "hours": 0.0, "text": "only using python :D"}, {"post_id": 34637, "ts": "2026-07-25T15:12:30Z", "hours": 5.0, "text": "appleee"}]...
|
Title: PlaPy by @twnarx | Stardance
Devlogs:
appl Title: PlaPy by @twnarx | Stardance
Devlogs:
appleee
only using python :D
My first game dev experience using python!
Available on itch.io!
Ships:
A fully featured, pixel-art themed Snake game built with Python and Pygame. PlaPy combines classic Snake gameplay with custom pixel-art graphics, multiple difficulty levels, persistent high scores, bonus food mechanics, sound effects, and a polished menu system....
|
1792882045.076252
|
1793746045.076252
|
|
7427
|
PeerPath by @shouryamishra | Stardance
|
shouryamishra
|
1
|
23.09
|
204
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T17:29:24Z", "hours": 22.0, "multiplier": 9.65, "payout": 204, "blessing": "neutral", "text": "I have created PeerPath, a dynamic learning environment that supports multiple subjects and currently has full data-driven tracks for AP Calculus AB and BC with its own quiz engine, which automatically converts mathematical notation to beautiful inline LaTeX. The main challenge was to deal with streams of various formats between pre-loaded JSON files and the API endpoints, which led to raw KaTeX blocks for normal English prompts, resulting in string parsing errors and an unreadable italicized text. I have dealt with this issue by implementing my inline tokenizing renderer that is separating calculator functions such as “sqrt()” or “^” from regular dictionary words, thus rendering equations smoothly without any layout issues. I think it’s really cool how this state machine works in real time validating responses and updating user’s concept momentum (XP) through Supabase. If you want to see how it works, you can just dive into any Calculus AB or BC milestone tracker module, open “Intuition Check” widget and see how mathematical symbols are rendered in real time.", "repo": "https://github.com/Sh4rk-glitch/PeerPath", "demo": "https://peerpathv2.vercel.app"}]...
|
[{"post_id": 17702, "ts": "202 [{"post_id": 17702, "ts": "2026-06-28T16:49:39Z", "hours": 1.0886, "text": "I’ve been making a whole bunch of fixes with all of the feedback I’m getting from the multiple rejections of ships… but I mean its good feedback and I’ve been using it to my advantage. Fixes: LocalHost error popping up when signing up, removed email authentication Fixed search bar Fixed UI changes on home page with the sign in card Minor bugs and updates."}, {"post_id": 15760, "ts": "2026-06-25T17:09:07Z", "hours": 1.5214, "text": "PeerPath is ready. As of now, only AP Calc AB and AP Calc BC. I plan on adding more and more curriculums in the future, but as of now, those are the ones that are ready."}, {"post_id": 15399, "ts": "2026-06-25T01:09:33Z", "hours": 4.4694, "text": "I grinded out a LOT today. Got a whole bunch of updates in, fixed bugs, only a couple more things to do before PeerPath is ready to be shipped. #PeerPath"}, {"post_id": 15092, "ts": "2026-06-24T15:02:48Z", "hours": 1.1944, "text": "So i spent quite a bit of time yesterday adding proper videos and adding the corresponding questions to the calculus section. I’ve gotten everything down for it and all the videos work on AP Calc AB, now i just gotta get BC done. And then I think I’ll just fix a couple bugs here and there, work on some UI fixes, and then shabang (drake ref), I should be all done."}, {"post_id": 13797, "ts": "2026-06-22T16:51:43Z", "hours": 1.6872, "text": "PeerPath is almost done! I’ve gotten a lot done over the past couple days! At the moment the only available classes are ap calc ab and ap calc bc, i’m working on the curriculum for other classes as it takes me hours on end to get the curriculum for them. As of now, both files have about 2500 lines of code, so as you can tell it takes a while. The good thing is that I’ve integrated AI generated questions into each unit! It’s still a work in progress and isn’t fully completed but as of now, its going very good!"}, {"post_id": 13729, "ts": "2026-06-22T14:39:18Z", "hours": 3.4503, "text": "4000 lines of code later, AP Calc AB and BC are ready for deployment!"}, {"post_id": 8962, "ts": "2026-06-14T22:19:15Z", "hours": 1.3053, "text": "Got classes integrated in my SQL Database, i populated them all. Then after that I created filters and got started on making curriculums for every class."}, {"post_id": 8312, "ts": "2026-06-13T20:30:11Z", "hours": 1.46, "text": "Alright so I got started on the actual home page, everything is now up and running well! Now time to work on lesson data."}, {"post_id": 8250, "ts": "2026-06-13T18:31:58Z", "hours": 1.0306, "text": "I’ve published the main side at: https://peerpathv2.vercel.app You can check it out there, im still working on all the features though, just the home page is up right now, the sign in features don’t work as the actual app isn’t ready yet."}, {"post_id": 8180, "ts": "2026-06-13T17:01:53Z", "hours": 1.5122, "text": "Home page is fully done. Took me sooo long to get these tsx animations to work with the css code.."}, {"post_id": 7708, "ts": "2026-06-12T21:24:27Z", "hours": 3.9778, "text": "After 4 hours of work, the home page is done. PeerPath is looking good! Now i just gotta refine a couple things on the home page, I’m gonna call it a day for now though."}]...
|
Title: PeerPath by @shouryamishra | Stardance
Dev Title: PeerPath by @shouryamishra | Stardance
Devlogs:
After 4 hours of work, the home page is done. PeerPath is looking good! Now i just gotta refine a couple things on the home page, I’m gonna call it a day for now though.
Home page is fully done. Took me sooo long to get these tsx animations to work with the css code..
I’ve published the main side at: https://peerpathv2.vercel.app You can check it out there, im still working on all the features though, just the home page is up right now, the sign in features don’t work as the actual app isn’t ready yet.
Alright so I got started on the actual home page, everything is now up and running well! Now time to work on lesson data.
Got classes integrated in my SQL Database, i populated them all. Then after that I created filters and got started on making curriculums for every class.
4000 lines of code later, AP Calc AB and BC are ready for deployment!
PeerPath is almost done! I’ve gotten a lot done over the past couple days! At the moment the only available classes are ap calc ab and ap calc bc, i’m working on the curriculum for other classes as it takes me hours on end to get the curriculum for them. As of now, both files have about 2500 lines of code, so as you can tell it takes a while. The good thing is that I’ve integrated AI generated questions into each unit! It’s still a work in progress and isn’t fully completed but as of now, its going very good!
So i spent quite a bit of time yesterday adding proper videos and adding the corresponding questions to the calculus section. I’ve gotten everything down for it and all the videos work on AP Calc AB, now i just gotta get BC done. And then I think I’ll just fix a couple bugs here and there, work on some UI fixes, and then shabang (drake ref), I should be all done.
I grinded out a LOT today. Got a whole bunch of updates in, fixed bugs, only a couple more things to do before PeerPath is ready to be shipped. #PeerPath
PeerPath is ready. As of now, only AP Calc AB and AP Calc BC. I plan on adding more and more curriculums in the future, but as of now, those are the ones that are ready.
I’ve been making a whole bunch of fixes with all of the feedback I’m getting from the multiple rejections of ships… but I mean its good feedback and I’ve been using it to my advantage. Fixes: LocalHost error popping up when signing up, removed email authentication Fixed search bar Fixed UI changes on home page with the sign in card Minor bugs and updates.
Ships:
I have created PeerPath, a dynamic learning environment that supports multiple subjects and currently has full data-driven tracks for AP Calculus AB and BC with its own quiz engine, which automatically converts mathematical notation to beautiful inline LaTeX. The main challenge was to deal with streams of various formats between pre-loaded JSON files and the API endpoints, which led to raw KaTeX blocks for normal English prompts, resulting in string parsing errors and an unreadable italicized text. I have dealt with this issue by implementing my inline tokenizing renderer that is separating calculator functions such as “sqrt()” or “^” from regular dictionary words, thus rendering equations smoothly without any layout issues. I think it’s really cool how this state machine works in real time validating responses and updating user’s concept momentum (XP) through Supabase. If you want to see how it works, you can just dive into any Calculus AB or BC milestone tracker module, open “Intuition Check” widget and see how mathematical symbols are rendered in real time....
|
1792986494.528632
|
1793072894.528632
|
|
7439
|
race to the summit by @alyah | Stardance
|
alyah
|
1
|
10.93
|
35
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T16:17:11Z", "hours": 10.0, "multiplier": 3.35, "payout": 35, "blessing": "neutral", "text": "I made a racing game in Pygame from scratch by myself of a car driving simulator through three different mountain season regions. This project took way longer than it should’ve but I’ve learned so much about functions, math, and debugging.", "repo": "https://github.com/lyri3aly/race-to-the-summit", "demo": "https://lyri3aly.github.io/race-to-the-summit/"}]...
|
[{"post_id": 17168, "ts": "202 [{"post_id": 17168, "ts": "2026-06-27T21:26:25Z", "hours": 0.2956, "text": "finally got the pygbag folders working! race to the summit has a working github page now. playable here: https://lyri3aly.github.io/race-to-the-summit/"}, {"post_id": 12570, "ts": "2026-06-20T15:04:38Z", "hours": 0.6381, "text": "for the person reviewing my ship: pygbag and anything else literally isn’t running for some reason and I am unable to push my pygame file to the web, so it’s just going to be the github .py file"}, {"post_id": 8764, "ts": "2026-06-14T16:00:55Z", "hours": 2.7431, "text": "Final tasks! timer is now completed (stopwatch of time it takes for the user to drive to the summit) car designs. car can now be blue, yellow, or white commented everything"}, {"post_id": 7220, "ts": "2026-06-12T01:43:42Z", "hours": 2.5333, "text": "race the summit now officially has boundaries and collision detection! this project has taken way longer than it should.. but i’m happy i’m almost finished. here are the key takeways from this edition: the car can’t go pass the road now! it must stay inside or it will rebound and occasionally get “stuck in a ditch” camera tracking works perfectly- no more car disappearing off the screen win screen and help screen reset button (“R”)"}, {"post_id": 5319, "ts": "2026-06-09T01:44:52Z", "hours": 5.1133, "text": "i’m working on a racing game called “race to the summit” in pygame. the objective is, basically, to reach the summit. the game takes you along a long winding path throughout mountains and three different seasons. i’m still working on the artwork so there’s an ai generated placeholder there for now. here are the things I’ve been able to accomplish so far: car physics (acceleration, friction, spinning, turning, etc.), however, I can’t seem to gradually slow down the car spinning in circles alone through friction. friction only applies to the car going straight for some reason?? some camera tracking. when accelerating, the car goes out of frame sometimes… game menu, loading screen, and logo!! imported most images I will be using including the different colours available in “car design” soon"}]...
|
Title: race to the summit by @alyah | Stardance
D Title: race to the summit by @alyah | Stardance
Devlogs:
i’m working on a racing game called “race to the summit” in pygame. the objective is, basically, to reach the summit. the game takes you along a long winding path throughout mountains and three different seasons. i’m still working on the artwork so there’s an ai generated placeholder there for now. here are the things I’ve been able to accomplish so far: car physics (acceleration, friction, spinning, turning, etc.), however, I can’t seem to gradually slow down the car spinning in circles alone through friction. friction only applies to the car going straight for some reason?? some camera tracking. when accelerating, the car goes out of frame sometimes… game menu, loading screen, and logo!! imported most images I will be using including the different colours available in “car design” soon
race the summit now officially has boundaries and collision detection! this project has taken way longer than it should.. but i’m happy i’m almost finished. here are the key takeways from this edition: the car can’t go pass the road now! it must stay inside or it will rebound and occasionally get “stuck in a ditch” camera tracking works perfectly- no more car disappearing off the screen win screen and help screen reset button (“R”)
Final tasks! timer is now completed (stopwatch of time it takes for the user to drive to the summit) car designs. car can now be blue, yellow, or white commented everything
for the person reviewing my ship: pygbag and anything else literally isn’t running for some reason and I am unable to push my pygame file to the web, so it’s just going to be the github .py file
finally got the pygbag folders working! race to the summit has a working github page now. playable here: https://lyri3aly.github.io/race-to-the-summit/
Ships:
I made a racing game in Pygame from scratch by myself of a car driving simulator through three different mountain season regions. This project took way longer than it should’ve but I’ve learned so much about functions, math, and debugging....
|
1792997395.8903713
|
1793083795.8903713
|
|
7451
|
Fullstack python Calculator by @TheTank87 | Starda Fullstack python Calculator by @TheTank87 | Stardance...
|
TheTank87
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-10T19:15:22Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Made simple python calculator script that can run by running the executable.", "repo": "https://github.com/TheTank87/Ai-Python-Calculator/tree/master", "demo": "https://github.com/TheTank87/Ai-Python-Calculator/releases/tag/executable"}]...
|
[{"post_id": 2814, "ts": "2026 [{"post_id": 2814, "ts": "2026-06-05T17:14:58Z", "hours": 1.7386, "text": "Created a python scientific calculator, still working to make it graph functions."}]...
|
Title: Fullstack python Calculator by @TheTank87 | Title: Fullstack python Calculator by @TheTank87 | Stardance
Devlogs:
Created a python scientific calculator, still working to make it graph functions.
Ships:
Made simple python calculator script that can run by running the executable....
|
1792972443.295966
|
1793058843.295966
|
|
7453
|
DeckController by @aloyak | Stardance
|
aloyak
|
1
|
8.0
|
102
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-15T15:48:01Z", "hours": 8.0, "multiplier": 12.39, "payout": 102, "blessing": "neutral", "text": "This is a two-sided system that allows you to use a steamdeck as a normal usb controller. i used to play a lot of elden ring and dark souls on my steam deck, but when i was home i wanted to play with better resolution and fps, but i realized i didnt have a controller, so i made this! hope you like it check out the yt video!!! https://www.youtube.com/watch?v=EQWmOSJWbrk", "repo": "https://github.com/aloyak/deckcontroller", "demo": "https://youtu.be/EQWmOSJWbrk"}]...
|
[{"post_id": 28940, "ts": "202 [{"post_id": 28940, "ts": "2026-07-15T15:41:55Z", "hours": 0.6603, "text": "Been working on fixing a couple things before shipping, the problem was all with windows and its super wierd api. most of these changes were done long ago but i forgot to devlog them lol anyways, ive also published a demo video to see how it works if for some reason you dont own a steamdeck. i know this is not the most quality post but im a bit tired from all the work ive been doing on other projects. so, in a way, this project is completely finished!"}, {"post_id": 4806, "ts": "2026-06-08T09:38:19Z", "hours": 3.3789, "text": "I’ve created a really nice UI with a simple controller layout that allows you to monitor the input from the steamdeck with a fancy imgui interface and also tested the performance a bit and its honestly pretty good. I managed to get around 8ms latency with 20ms spikes which is pretty good, also battery life is around 7 hours!! It currently only works on linux as windows is trying so hard to make my life suck, so ill be adding windows support later on. It currently uses a custom driver with uinput that creates a generic virtual Xbox 360 controller that is automatically recognized by my pc and also by steam so thats great! The process to make this work is pretty simple: Add the steam deck side to steam as a non-steam game and make it use proton compatibility layer Run the PC side Run the steamdeck side That’s it, the PC side recognizes the steamdeck instantly and there’s no setup required at all from that point on. I would also like to add some sort of usb support but i think that will be a lot harder that im expecting :))"}, {"post_id": 4137, "ts": "2026-06-07T10:34:16Z", "hours": 2.0344, "text": "Huge progress!! Wifi connection is working nicely. Right now the best way to do it is by connecting the steamdeck to your pc with a hotspot and the latency is actually pretty nice! Theres still some small bugs but the setup is stupid simple so thats great. You just open the app on the steamdeck, and then the pc finds it right away I now should start developing the drivers to make the pc recognize this program as a generic controller but FIRST, Im going to make the UI of the desktop’s app fancy because its cool and fun to do. The idea is to fully recreate the steam controller based on an actual steamdeck, so you have all the features of the new steam controller, although its obvious that some stuff will be missing (like haptics, but I’ll see what I can do about that). And well, I also should research a bit how to make this through USB as well, but that will be done in a long time YAY"}, {"post_id": 3438, "ts": "2026-06-06T11:40:47Z", "hours": 2.1561, "text": "First ever post on stardance! I’m making a program that allows you to use your steamdeck as a generic pc controller. I’m sort of learning how to do this in the process so I can’t really showcase any future features but so far its going great! I created a simple program using SDL3 in C++, being my first time updating from SDL2 to SDL3, but not much changed honestly (at least that I noticed) that reads the steamdecks controller input and saves it to a light struct that will later be sent using either wifi or usb to a target pc. What I’m most proud of so far is how I managed to get a simple working environment to develop and test code on the deck quickly. I code on my computer and with the press of a button my mouse and keyboard now control the steamdeck, also being able to quickly send and receive files to test new builds etc… Thanks to KDE Connect and a few other tricks I will know start researching how to make any sort of wifi connection reliable enough, wish me luck! I also created a simple logo using gimp (probably not the last version, hopefully)"}]...
|
Title: DeckController by @aloyak | Stardance
Devl Title: DeckController by @aloyak | Stardance
Devlogs:
First ever post on stardance! I’m making a program that allows you to use your steamdeck as a generic pc controller. I’m sort of learning how to do this in the process so I can’t really showcase any future features but so far its going great! I created a simple program using SDL3 in C++, being my first time updating from SDL2 to SDL3, but not much changed honestly (at least that I noticed) that reads the steamdecks controller input and saves it to a light struct that will later be sent using either wifi or usb to a target pc. What I’m most proud of so far is how I managed to get a simple working environment to develop and test code on the deck quickly. I code on my computer and with the press of a button my mouse and keyboard now control the steamdeck, also being able to quickly send and receive files to test new builds etc… Thanks to KDE Connect and a few other tricks I will know start researching how to make any sort of wifi connection reliable enough, wish me luck! I also created a simple logo using gimp (probably not the last version, hopefully)
Huge progress!! Wifi connection is working nicely. Right now the best way to do it is by connecting the steamdeck to your pc with a hotspot and the latency is actually pretty nice! Theres still some small bugs but the setup is stupid simple so thats great. You just open the app on the steamdeck, and then the pc finds it right away I now should start developing the drivers to make the pc recognize this program as a generic controller but FIRST, Im going to make the UI of the desktop’s app fancy because its cool and fun to do. The idea is to fully recreate the steam controller based on an actual steamdeck, so you have all the features of the new steam controller, although its obvious that some stuff will be missing (like haptics, but I’ll see what I can do about that). And well, I also should research a bit how to make this through USB as well, but that will be done in a long time YAY
I’ve created a really nice UI with a simple controller layout that allows you to monitor the input from the steamdeck with a fancy imgui interface and also tested the performance a bit and its honestly pretty good. I managed to get around 8ms latency with 20ms spikes which is pretty good, also battery life is around 7 hours!! It currently only works on linux as windows is trying so hard to make my life suck, so ill be adding windows support later on. It currently uses a custom driver with uinput that creates a generic virtual Xbox 360 controller that is automatically recognized by my pc and also by steam so thats great! The process to make this work is pretty simple: Add the steam deck side to steam as a non-steam game and make it use proton compatibility layer Run the PC side Run the steamdeck side That’s it, the PC side recognizes the steamdeck instantly and there’s no setup required at all from that point on. I would also like to add some sort of usb support but i think that will be a lot harder that im expecting :))
Been working on fixing a couple things before shipping, the problem was all with windows and its super wierd api. most of these changes were done long ago but i forgot to devlog them lol anyways, ive also published a demo video to see how it works if for some reason you dont own a steamdeck. i know this is not the most quality post but im a bit tired from all the work ive been doing on other projects. so, in a way, this project is completely finished!
Ships:
This is a two-sided system that allows you to use a steamdeck as a normal usb controller. i used to play a lot of elden ring and dark souls on my steam deck, but when i was home i wanted to play with better resolution and fps, but i realized i didnt have a controller, so i made this! hope you like it check out the yt video!!! https://www.youtube.com/watch?v=EQWmOSJWbrk...
|
1792986660.6294918
|
1793073060.6294918
|
|
7459
|
Stardew Valley Pebble Watch Face by @Loekman | Sta Stardew Valley Pebble Watch Face by @Loekman | Stardance...
|
Loekman
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-11T14:26:13Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a watch face for the Pebble based on the Stardew Valley clock. Since this was my first time developing something for a Pebble, it was quite challenging. However, it is very rewarding to know that I have a custom watch face ready to test as soon as I receive my watch.", "repo": "https://github.com/Loekiboy/stardew_valley_pebble", "demo": "https://apps.repebble.com/stardew-valley-watchface_954dddca9a9c44f0ab1c3ff8"}]...
|
[{"post_id": 6276, "ts": "2026 [{"post_id": 6276, "ts": "2026-06-10T15:35:54Z", "hours": 0.3411, "text": "I Upoaded the watchface to the Pebble appstore you can now view and download it here: https://apps.repebble.com/954dddca9a9c44f0ab1c3ff8"}, {"post_id": 5705, "ts": "2026-06-09T16:31:23Z", "hours": 1.6336, "text": "I added a step counter. I edited the image so there stands an “S” instead of a “G”. For the step counter, I used a new font. It was really hard to get the numbers perfectly into the slots of the counter."}, {"post_id": 5012, "ts": "2026-06-08T17:37:07Z", "hours": 1.1819, "text": "I added the weather badge, which changes depending on the current weather. I also built a feature that automatically pops up a festival badge on special days like Christmas, New Year, or Easter! And I added a custom logo to the watchface."}, {"post_id": 4929, "ts": "2026-06-08T15:10:56Z", "hours": 0.3181, "text": "I added the season badge, the image changes depending on the season."}, {"post_id": 4324, "ts": "2026-06-07T16:16:08Z", "hours": 0.7092, "text": "I have added the dial to the watch face. The dial points downwards at 06:00 and slowly moves upwards until it reaches 00:00. It then remains upright until 06:00, at which point the dial jumps back down."}, {"post_id": 4261, "ts": "2026-06-07T14:51:44Z", "hours": 1.0278, "text": "I added the clock part to the watch face and adjusted the positioning of the time and date accordingly. And I updated the background image, the original gradient did not render well on the pebble, screen so I used this site https://loek.oerlemans.tv/pebble_images/ to generate a gradient that is optimized for the Pebble display."}, {"post_id": 4167, "ts": "2026-06-07T11:51:22Z", "hours": 1.9139, "text": "I added a background to the watch face. I tried to add the background for a very long time but I couldn’t get it to work. Ultimately, I remade the project in C instead of JS, and then it worked."}, {"post_id": 3402, "ts": "2026-06-06T09:53:57Z", "hours": 1.6928, "text": "I changed the standard font to the Stardew Valley pixel art font. I also tried to change the background, but everything I tried didn’t work, so I will continue with that later."}]...
|
Title: Stardew Valley Pebble Watch Face by @Loekma Title: Stardew Valley Pebble Watch Face by @Loekman | Stardance
Devlogs:
I changed the standard font to the Stardew Valley pixel art font. I also tried to change the background, but everything I tried didn’t work, so I will continue with that later.
I added a background to the watch face. I tried to add the background for a very long time but I couldn’t get it to work. Ultimately, I remade the project in C instead of JS, and then it worked.
I added the clock part to the watch face and adjusted the positioning of the time and date accordingly. And I updated the background image, the original gradient did not render well on the pebble, screen so I used this site https://loek.oerlemans.tv/pebble_images/ to generate a gradient that is optimized for the Pebble display.
I have added the dial to the watch face. The dial points downwards at 06:00 and slowly moves upwards until it reaches 00:00. It then remains upright until 06:00, at which point the dial jumps back down.
I added the season badge, the image changes depending on the season.
I added the weather badge, which changes depending on the current weather. I also built a feature that automatically pops up a festival badge on special days like Christmas, New Year, or Easter! And I added a custom logo to the watchface.
I added a step counter. I edited the image so there stands an “S” instead of a “G”. For the step counter, I used a new font. It was really hard to get the numbers perfectly into the slots of the counter.
I Upoaded the watchface to the Pebble appstore you can now view and download it here: https://apps.repebble.com/954dddca9a9c44f0ab1c3ff8
Ships:
I created a watch face for the Pebble based on the Stardew Valley clock. Since this was my first time developing something for a Pebble, it was quite challenging. However, it is very rewarding to know that I have a custom watch face ready to test as soon as I receive my watch....
|
1792979405.0431035
|
1793065805.0431035
|
|
7470
|
Dungeon-Adventure by @Reid | Stardance
|
Reid
|
1
|
31.66
|
286
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T22:10:55Z", "hours": 26.0, "multiplier": 11.61, "payout": 286, "blessing": "neutral", "text": "This is my first ship so I hope you all enjoy it. I made a Dungeon Adventure game that you run in your terminal or shell depending on what device you use. You can go through different dungeon levels that are randomly generated each time you enter a new one. You can also buy lifes or open chests in the shop using gold or keys that you can gather from withen the dungeon, but be careful because there are enemies that can attack you as well so keep an eye on your life and where the enemies are. Some challenges I faced while making this project were figuring out how to make the enemy movement and make it work well, I would say it was probably one of my most difficult and common problems because i had to rewrite how the enemies spawned and functioned over and over until i figured it out. I also had problems with making the small room generations withen the dungeon, because they would constantly keep generating paths that went outside the map causing a crash and i couldnt figure out why for the longest time (like most times with a problem like this it was a kinda simple solution but i still took forever to figure it out). I think my favorite part was making the random map generation because I found it fun to make and I built an algorithm to do it basically from the ground up which was exciting. I did have alot of problems with this too but I figured them out as well. This game is run in a terminal and you do need external libraries such as readchar and colorama to run the program. It comes in 2 files one is the main one you run and the other has a bunch of functions that are called from the first one or even from other functions because alot of the things need to be repeated constantly. Anyways i hope you guys enjoy this project and that it works for you (because im kinda scared that I uploaded something wrong or something to where it wont work for you guys) So have fun and let me know if anything isnt working right by commenting on one of my devlogs or contacting me in Slack (Jason Challand)", "repo": "https://github.com/GorillaReid/Dungeon-Adventure", "demo": "https://github.com/GorillaReid/Dungeon-Adventure/releases/tag/v1.0.0"}]...
|
[{"post_id": 44752, "ts": "202 [{"post_id": 44752, "ts": "2026-08-10T18:44:14Z", "hours": 5.6603, "text": "So I took a break and it’s been a while since I worked on the project but I did finally start working on it again. I’ve decided that since it’s only compatible with some Linux devices I would make a html version that can run in browsers, I did some research and found out I could use pyodide to run Python in a html/javascript environment so I started using that and basically copy pasted most my code into the new file, I have had to modify some of the code like the movement and coloration to work with JavaScript instead. I also decided to make going into the different menus have buttons instead of pushing keys, but I’m having a lot of trouble with getting the buttons to display at the right time and function correctly. Hopefully I can get them working right by the next devlog. (P.S. I’m new to html and JavaScript so I don’t fully know how it works and I kinda feel like buttons should be easier and I’m just missing something, but maybe not and they really are just hard.)"}, {"post_id": 20316, "ts": "2026-07-01T21:40:51Z", "hours": 6.0642, "text": "This is probably my longest work period between devlogs, I did also take like a week break in between them to. Im also hoping i can ship the project after this I worked on making the enemy movement smoother and work better, i decided to not use threading to run multiple loops since i didn’t like how it worked so i just did it semi turn based where the player moves and the enemies will then move, but its so quick the player can just hold down a button to move and it will move them multiple spaces seamlessly. I also worked on polishing the UIs like the Inventory and Shop so that they look better, they now have color and look nice. Something else i worked on was making a Info option too that tells you a little about the game I worked on making the code look cleaner and I added a bunch of comments so that anyone looking at it (and me later when i forget what it does) would know how it works and what does what. The Shop got chests added to it which can be opened with keys that you can also now collect in the dungeons. Thats pretty much it I did, im probably forgetting a few things but oh well. Im planing on making my first ship soon so Im trying to get it working well enough for people to use it"}, {"post_id": 10037, "ts": "2026-06-16T16:27:45Z", "hours": 5.34, "text": "I redid the enemy spawning yet again, but it’s much simpler and easier to modify now. I’ve also been working on enemy movement using the threading library to run multiple loops or functions at a time. I’ve also been working on trying to make the generation for each dungeon level better. One of my friends gave me the idea of having some rooms or something in each level, however there is a few bugs with it, in the photo below you can see it generates a path that just goes straight across the map whenever a room spawns on the initial path, and players can crash the game if they try to leave the map, so I need to fix both of those"}, {"post_id": 5402, "ts": "2026-06-09T04:50:03Z", "hours": 4.0883, "text": "I decided to redo some of the enemy/gold generation which toke me a while since I had to change it from doing a random percent of each row to a random percent of the whole map. I also worked on making some UIs (idk if that’s what these are technically called) for choosing to enter a dungeon, open the shop etc. Ive also started working on switching the way the enemies work."}, {"post_id": 3892, "ts": "2026-06-07T00:00:24Z", "hours": 5.6181, "text": "I recolored some of the map and i added enemy’s and gold. The gold you can gather and get 1-3. The enemy’s take a life from you, if you lose all 5 lives you lose. I fixed a few visual bugs and i split the file into 2 files so i can use import and the call function to be able to do multiple levels. I also scaled the map up more so its easier to see."}, {"post_id": 3223, "ts": "2026-06-06T01:43:38Z", "hours": 2.2025, "text": "I mostly redid the random map generation making the user able to actually reach the end of the dungeon without getting stuck. I also added some color to it so the walls and floor are easy to see. I also added a safety check on the player movement and map generation so the player couldn’t move outside of the map. I started to make it more interactive."}, {"post_id": 2492, "ts": "2026-06-05T00:43:04Z", "hours": 2.2664, "text": "I worked on setting up a random map generator and making it so the player could move around the map. I then added a fix that prevents the players from going through the walls. I then also setup a basic treasure/gold gathering system. After a bit I decided to redo most of the map generation and I’m still working on it. I didn’t realize I was supposed to have photos so this one is of a older version of it from my phone"}]...
|
Title: Dungeon-Adventure by @Reid | Stardance
Dev Title: Dungeon-Adventure by @Reid | Stardance
Devlogs:
I worked on setting up a random map generator and making it so the player could move around the map. I then added a fix that prevents the players from going through the walls. I then also setup a basic treasure/gold gathering system. After a bit I decided to redo most of the map generation and I’m still working on it. I didn’t realize I was supposed to have photos so this one is of a older version of it from my phone
I mostly redid the random map generation making the user able to actually reach the end of the dungeon without getting stuck. I also added some color to it so the walls and floor are easy to see. I also added a safety check on the player movement and map generation so the player couldn’t move outside of the map. I started to make it more interactive.
I recolored some of the map and i added enemy’s and gold. The gold you can gather and get 1-3. The enemy’s take a life from you, if you lose all 5 lives you lose. I fixed a few visual bugs and i split the file into 2 files so i can use import and the call function to be able to do multiple levels. I also scaled the map up more so its easier to see.
I decided to redo some of the enemy/gold generation which toke me a while since I had to change it from doing a random percent of each row to a random percent of the whole map. I also worked on making some UIs (idk if that’s what these are technically called) for choosing to enter a dungeon, open the shop etc. Ive also started working on switching the way the enemies work.
I redid the enemy spawning yet again, but it’s much simpler and easier to modify now. I’ve also been working on enemy movement using the threading library to run multiple loops or functions at a time. I’ve also been working on trying to make the generation for each dungeon level better. One of my friends gave me the idea of having some rooms or something in each level, however there is a few bugs with it, in the photo below you can see it generates a path that just goes straight across the map whenever a room spawns on the initial path, and players can crash the game if they try to leave the map, so I need to fix both of those
This is probably my longest work period between devlogs, I did also take like a week break in between them to. Im also hoping i can ship the project after this I worked on making the enemy movement smoother and work better, i decided to not use threading to run multiple loops since i didn’t like how it worked so i just did it semi turn based where the player moves and the enemies will then move, but its so quick the player can just hold down a button to move and it will move them multiple spaces seamlessly. I also worked on polishing the UIs like the Inventory and Shop so that they look better, they now have color and look nice. Something else i worked on was making a Info option too that tells you a little about the game I worked on making the code look cleaner and I added a bunch of comments so that anyone looking at it (and me later when i forget what it does) would know how it works and what does what. The Shop got chests added to it which can be opened with keys that you can also now collect in the dungeons. Thats pretty much it I did, im probably forgetting a few things but oh well. Im planing on making my first ship soon so Im trying to get it working well enough for people to use it
So I took a break and it’s been a while since I worked on the project but I did finally start working on it again. I’ve decided that since it’s only compatible with some Linux devices I would make a html version that can run in browsers, I did some research and found out I could use pyodide to run Python in a html/javascript environment so I started using that and basically copy pasted most my code into the new file, I have had to modify some of the code like the movement and coloration to work with JavaScript instead. I also decided to make going into the different menus have buttons instead of pushing keys, but I’m having a lot of trouble with getting the buttons to display at the right time and function correctly. Hopefully I can get them working right by the next devlog. (P.S. I’m new to html and JavaScript so I don’t fully know how it works and I kinda feel like buttons should be easier and I’m just missing something, but maybe not and they really are just hard.)
Ships:
This is my first ship so I hope you all enjoy it. I made a Dungeon Adventure game that you run in your terminal or shell depending on what device you use. You can go through different dungeon levels that are randomly generated each time you enter a new one. You can also buy lifes or open chests in the shop using gold or keys that you can gather from withen the dungeon, but be careful because there are enemies that can attack you as well so keep an eye on your life and where the enemies are. Some challenges I faced while making this project were figuring out how to make the enemy movement and make it work well, I would say it was probably one of my most difficult and common problems because i had to rewrite how the enemies spawned and functioned over and over until i figured it out. I also had problems with making the small room generations withen the dungeon, because they would constantly keep generating paths that went outside the map causing a crash and i couldnt figure out why for the longest time (like most times with a problem like this it was a kinda simple solution but i still took forever to figure it out). I think my favorite part was making the random map generation because I found it fun to make and I built an algorithm to do it basically from the ground up which was exciting. I did have alot of problems with this too but I figured them out as well. This game is run in a terminal and you do need external libraries such as readchar and colorama to run the program. It comes in 2 files one is the main one you run and the other has a bunch of functions that are called from the first one or even from other functions because alot of the things need to be repeated constantly. Anyways i hope you guys enjoy this project and that it works for you (because im kinda scared that I uploaded something wrong or something to where it wont work for you guys) So have fun and let me know if anything isnt working right by commenting on one of my devlogs or contacting me in Slack (Jason Challand)...
|
1792979637.8699183
|
1793066037.8699183
|
|
7472
|
rumi by @subhansh | Stardance
|
|
1
|
106.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-10T07:38:59Z", "hours": 106.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "rumi - research unified machine intelligence… rumi is an actual autonomous AI scientist designed to discover, not just describe. Powered by a 22 phase, 2 tracks scientific discovery pipeline, RUMI analyzes research literature, builds knowledge representations, identifies gaps in existing explanations, generates novel hypotheses, constructs mathematical and causal models, produces falsifiable predictions, and evaluates competing theories through automated scientific review. Operating across 17 domains, RUMI is built as a general-purpose discovery engine whose objective is to accelerate human research by systematically exploring explanations that may not yet exist in the literature while maintaining transparency, critique, and testability throughout the discovery process. NOTE :- rumi still cant do end to end novel discoveries on her own but she can provide novel ideas with grounded mechanisms and derivations and stronger the reasoning of a model = better results from rumi.. that said… once i get my hands on a frontier llm ill plug it into rumi and develop her more Proof that rumi works :- rumi has helped me publish 1 peer reviewed research paper on analytical number theory (DOI :- 10.5281/zenodo.21107958)", "repo": "https://github.com/subhansh-dev/rumi", "demo": "https://rumi-nu.vercel.app"}]...
|
[{"post_id": 11764, "ts": "202 [{"post_id": 11764, "ts": "2026-06-19T04:39:49Z", "hours": 16.0183, "text": "rumi-Devlog #9 🍓😺✌ today was mostly spent making RUMI faster because some runs were taking an absolutely stupid amount of time 😭 provider stack changes spent a while profiling the provider chain and found a few cursed bottlenecks. disabled Fireworks (credits died, every failed request was wasting ~90s) switched GLM routing to Kimi K2.6 via a second NVIDIA key tested Cerebras-first vs NVIDIA-first routing results were funny: Cerebras = ~2s/call but discoveries averaged around C grade NVIDIA = ~65s/call but much stronger reports so now different parts of the pipeline use different providers depending on the task. phase 6.5 speedup equation generation was committing crimes. rewrote the whole thing to run in parallel (6 workers). went from: ~16 min to ~1 min for a typical 15 mechanism loop. also finally fixed the legendary: 0/15 equations generated bug 😺🍓 literature search all literature sources now fetch concurrently: arXiv PubMed CrossRef OpenAlex etc runtime dropped from ~2 mins to ~64 seconds. RUMI TUI probably my favourite thing from today. built a proper Textual-based TUI so i can actually see what RUMI is doing instead of staring at a terminal for 10 hours. added: real-time phase tracking live agent status brain module dashboard discovery controls /brain /status /dream /memory /hypothesis also fixed a bunch of broken brain module APIs that were pretending to work 💀 random bug of the day RUMI was occasionally turning english into ancient cursed language and generating stuff like: withinamy instead of actual words. fixed topic truncation so it now cuts at word boundaries. current state provider stack healthier equation generation WAY faster literature search faster TUI finally usable brain modules actually verified at boot still spending most of my life waiting for discovery runs to finish though 🥀"}, {"post_id": 9228, "ts": "2026-06-15T14:33:23Z", "hours": 23.0847, "text": "rumi-Devlog #8 🍓 Current status: rumis smarter, my codebase survived, and my sanity is questionable 💔 A huge part of this session wasn’t actually spent improving discovery quality. It was spent improving everything around RUMI. As RUMI’s discovery pipeline keeps getting bigger, debugging has become a nightmare. Reading raw JSON reports, searching through logs, and manually inspecting hundreds of entities was getting painful. So I built a full visualization and monitoring system for RUMI. The dashboard can now visualize: discovery reports theory competitions adversarial testing results predictions refinement stages scoring breakdowns knowledge graphs paper collections hypothesis memory all from a single interface. Knowledge Graph Visualization One thing I’ve wanted for a while was being able to actually SEE what RUMI was discovering. Not read it. See it. So I built an interactive graph explorer using vis.js. Every entity type gets its own visual identity. Nodes glow based on type. Edges scale with confidence. Hovering shows metadata, paper counts, and relationships. The graph uses ForceAtlas physics and overlap avoidance to make large discovery graphs easier to navigate. Watching hundreds of concepts connect together is honestly way more useful than reading raw graph dumps. 🥀 Discovery Report Explorer RUMI reports have become massive. Some are hundreds of kilobytes. Some are over a thousand lines. Reading those manually sucks. So I built dedicated views for: theory competition adversarial evaluation predictions scoring derivations peer review refinement stages which makes analyzing runs significantly easier. Provider Stack Surgery 💔 While testing the new recurrent architecture I discovered a huge bottleneck. Xiaomi MiMo. It was slow. Constantly rate limiting. Burning through provider chains. And starving downstream phases. This turned out to be the reason molecule generation kept randomly failing. So MiMo got removed from the routing stack. After testing 17 API keys across all providers: 13 healthy 4 problematic Current routing stack includes: NVIDIA DeepSeek Kimi K2.6 Cerebras GPT-OSS-120B Groq Gemini Fireworks Still chasing down some timeout and rate limit issues but overall the stack is way healthier now. Discovery Testing Used the upgraded architecture to stress test RUMI on several difficult domains. One of the most interesting runs was Molecular Glue Drug Discovery. Current run stats: 16 hidden variables 15 mechanisms per loop 7 predictions multiple adversarial survivors recurrent refinement loops enabled The architecture is definitely producing stronger outputs than before. meow meow meow"}, {"post_id": 7717, "ts": "2026-06-12T21:37:49Z", "hours": 19.0981, "text": "rumi-Devlog #7 🍓 This was probably one of the most frustrating and important RUMI development sessions so far. Most people only see the final discovery reports. They don’t see the chaos that happens before RUMI can generate a single theory. And trust me, there was a lot of chaos. 💔 Bug Fixes, Bug Fixes, More Bug Fixes I started this session thinking I’d make a few improvements and continue testing. That did not happen. RUMI’s architecture has reached a point where changing one thing breaks three others. Every time I fixed 3 bugs, another 5 appeared from somewhere else. At one point I genuinely crashed out because every run ended with a new issue that didn’t even exist before. It felt like: fix_bug() spawn_more_bugs(count=5) Turns out there’s a reason people say: “If it’s working, don’t touch it.” Unfortunately I touched it. A lot. 🥀 The Problem Even though RUMI was producing interesting discoveries, I still wasn’t satisfied. The reports were often interesting, creative, and sometimes novel, but they still felt too generic. The pipeline would generate a theory, evaluate it once, pick a winner, and move on. I wanted RUMI to spend more time refining ideas instead of treating every discovery as a one-shot attempt. Falling Into The OpenMythos Rabbit Hole While researching I came across OpenMythos, a community attempt to reverse engineer Anthropic’s rumored Mythos architecture. Nobody actually knows how Mythos works, but the community has proposed several reasoning patterns that might explain Claude-style outputs. I spent hours reading through it asking myself: “What parts of this could actually work inside RUMI?” Not copying. Adapting. The Biggest Change I’ve Ever Made To RUMI 🥀 One idea stood out immediately: recurrent reasoning loops. Before: Mechanisms ↓ Predictions ↓ Theory Competition ↓ Winner One pass. One shot. If mechanism generation was weak, everything downstream became weak too. So I rebuilt a huge section of the pipeline. Now RUMI performs a 3-stage recurrent refinement process: Loop 1 — Exploration Maximum creativity Maximum diversity Broad theory generation Loop 2 — Refinement Survivors re-enter the pipeline Focus on evidence, consistency, and mechanism quality Loop 3 — Convergence Lowest creativity Highest rigor Final selection of the strongest explanation Instead of living or dying from a single generation pass, theories now get multiple opportunities to evolve. Preventing Theory Drift Another idea I adapted was evidence grounding injection. Recursive systems often suffer from theory drift, where ideas slowly become disconnected from the evidence that originally generated them. To prevent this, every refinement loop continuously receives: Literature evidence Contradictions Knowledge gaps Observed anomalies This keeps discoveries grounded instead of drifting into fantasy. Smarter Computation I also added convergence-aware halting. Not every scientific problem deserves the same amount of computation. Some topics converge quickly while others require deeper exploration. RUMI can now monitor improvements between loops and eventually stop refining once discoveries begin stabilizing. lwk so much happened in these last 17hrs that i cant even include everything in here cause of the word limit 😭🥀"}, {"post_id": 6459, "ts": "2026-06-10T21:25:00Z", "hours": 15.2386, "text": "rumi - Devlog #6 June 11, 2026 so yea… pulled an all nighter for this one 🥀 most of the work this time wasn’t adding entirely new systems. it was stress testing RUMI hard enough to find where the architecture starts breaking. and honestly i found a lot more than i expected. Track B Architecture Improvements spent a lot of time refining Track B after the initial curiosity pipeline integration. instead of just generating curiosity questions, it now runs through much more of the actual discovery stack. lots of internal changes here that don’t really show up visually but massively affect the quality of the final reports. 💔 Constraint Pipeline Fix found a pretty nasty issue where parts of the generated curiosity constraints weren’t making it all the way through the pipeline. after fixing it, the results became immediately obvious. latest dual-track run: Track A Unique Theories: 9 Track B Unique Theories: 8 Shared Theories: 0 which is honestly one of the strongest signals i’ve seen so far that the dual-track system is actually working as intended. both tracks are now exploring completely different hypothesis spaces instead of converging on the same ideas. Claude Fable 5 Experiment managed to get temporary access to Claude Fable 5 and immediately decided to throw RUMI at it. before i could even test it though… the integration broke 💔 spent a while fixing provider compatibility issues and getting everything working again. eventually got a discovery run started on: What happens to information when it crosses a black hole event horizon? Fable managed to reach roughly Phase 8.5 before the free trial looked at RUMI’s request count and basically said: aight imma head out 😭 What Fable Revealed this ended up being way more valuable than i expected. while comparing Fable’s outputs with the models i normally run, i noticed a massive difference. most models tend to generate: Hidden Variable ↓ Mechanism Description ↓ Prediction Fable was generating: Hidden Variable ↓ Mechanism ↓ Equation ↓ Parameter Extraction ↓ Derivation ↓ Numerical Validation ↓ Prediction actual equations. actual variables. actual derivation chains. actual numerical checks. 🥀 Switching Back To MiMo after the Fable credits died, i moved everything back to MiMo and started comparing outputs. and that’s when another weakness became obvious. the pipeline itself wasn’t failing. MiMo simply wasn’t producing the mathematical depth needed for the mechanism stage. which means the current bottleneck isn’t discovery anymore. it’s mathematical formalization. Mathematical Formalization Architecture one of the most interesting things i noticed while testing Claude Fable 5 was how differently it handled mechanism generation. most models would generate something like: Hidden Variable ↓ Mechanism Description ↓ Prediction while Fable was generating: Hidden Variable ↓ Mechanism ↓ Equation ↓ Parameter Extraction ↓ Derivation ↓ Numerical Validation ↓ Prediction and honestly that immediately exposed one of RUMI’s biggest weaknesses. theories and mechanisms were already being generated. the math wasn’t. so instead of just complaining about it, i started redesigning the mechanism pipeline around that pattern. RUMI now has the foundations for a much more quantitative discovery process where mechanisms aren’t just descriptions anymore, which is lwk tuff ig 🥀✌ equations variables derivations parameter extraction numerical validation Switching Back To MiMo 🥀 after Fable ran out of credits i moved everything back to MiMo and started testing the updated architecture and still doing it cause mimo is like hella slow bruh normally umi takes upto 30-40 mins but now with mimo shes taking aorund 2hr 30mins 💔"}, {"post_id": 5243, "ts": "2026-06-08T23:06:33Z", "hours": 10.65, "text": "Devlog #5 — RUMI Dual-Track Architecture so as yall know yesterday i finished adding the curiosity pipeline (wait… you dont know about this? naaa💔go read yesterday’s devlog >:3…WUT ? GO RN) but yea that was mostly just the foundation today was about actually refining it and wiring it into the rest of RUMI basically i ended up bringing a lot of the Track A discovery pipeline into Track B too because like… why wouldnt i 😭 not just straight up copy-pasting it though because then both tracks would end up doing the same thing instead i reused parts of the architecture while keeping the curiosity systems separate the biggest addition was making the generated curiosity constraints actually flow into the discovery process itself which sounds simple until you spend half the day finding out they werent actually being propagated through the pipeline properly 💔 and then came the debugging arc 😭 DNS resolution failures causing discovery runs to randomly die 😾 (like wdym rumi requested for more papers and data and dns forgetting that internet exists) curiosity constraints not propagating into the pipeline😫 Semantic Scholar 429 rate limits 🥀 Gemini 503 errors 😢 free-tier rate limits everywhere (she makes like 6-7k requests in one run )😺🥀 and somehow RUMI has become so LLM hungry that i had to run her on 13 API keys across 3 different providers just to keep discovery sessions alive 😭 (lwk running on hope and sum duct tape 🥀🥀) there was genuinely a point where i was about to crash out because providers kept rate limiting, APIs were dying, runs were hanging, and everything was fighting me at once 💔🥀😭 but after all that RUMI finally completed a full dual-track discovery run topic: “Why does the universe expand faster than expected?” results: Track A Winner → Scale-Dependent Effective Gravity Track B Winner → Temporal Vacuum Shear Framework and this is where things got interesting Track A and Track B finished with: 0 shared theories <–(🙀) different winners different hidden variables different contradiction sets different mechanisms 0 runtime errors RUMI generated: 17 theories 30 mechanisms 22 hidden variables 12 contradictions 12 predictions from a single discovery session 😭 and honestly the most important number isnt the score its this: Shared Theories: 0 because it means Track B isnt just making a slightly remixed version of Track A anymore both tracks started from the same question, same literature, same knowledge base, and still ended up exploring completely different hypothesis spaces which is pretty much the entire reason i built the curiosity system in the first place 😭🥀 still more work to do, but today feels like one of the biggest architecture milestones for RUMI so far💔🥀 lwk gonna try to improve GFlowNets tmrw here’s the updated pipeline diagram :-"}, {"post_id": 4578, "ts": "2026-06-07T22:28:00Z", "hours": 9.3764, "text": "Stardance Devlog #3 June 7, 2026 Today I realized RUMI’s biggest limitation wasn’t math, evidence, reviewers, or the 17-stage pipeline. It was curiosity. For days I’ve been making RUMI better at reading papers, finding gaps, generating hypotheses, scoring theories, and validating ideas, which actually improved her ALLAT… but still something felt missing. Then it hit me. RUMI could analyze research. RUMI could synthesize research. RUMI could critique research. But RUMI never stopped and asked: “Why does this happen at all?” And that’s where most discoveries begin🥀 So today I built Phase 0 — The Curiosity Engine. Before reading papers. Before building knowledge graphs. Before generating mechanisms. RUMI now starts by questioning the problem itself. What could be causing this? What assumptions are we making? What if the accepted explanation is incomplete? What are we not looking at? Basically, RUMI now wonders before she researches😭 The first implementation was a disaster. I merged curiosity directly into the main pipeline and immediately turned the architecture into spaghetti. So I rebuilt it. Now there are two separate paths: Conventional RUMI Reads Analyzes Verifies Curious RUMI Questions Explores Challenges assumptions Both run independently and merge into the final report💔 The funny part is that after building theory tournaments, Bayesian reasoning, evidence systems, mathematical verification, observability checks, and dozens of other modules… The biggest upgrade might have been teaching RUMI something humans learn as children: Curiosity🥀😭 Today’s Progress Phase 0 Curiosity Engine ✅ Dual-Pipeline Architecture ✅ Evidence Extraction Improvements ✅ Observability Checks ✅ Mechanism Completeness Scoring ✅ My Sanity ❌ See you tomorrow. Hopefully before RUMI starts asking questions that create more problems than answers. 🥀💔"}, {"post_id": 3851, "ts": "2026-06-06T22:22:37Z", "hours": 2.2931, "text": "spent basically the whole day inside RUMI’s discovery engine and ngl it was pain 💔 fixed 50+ bugs across the pipeline. some of the biggest ones were: empty hypotheses theory tournament crashing unicode errors on windows graph contamination novelty scoring issues mechanism validation deleting everything 😭 also built a few new systems: math verification engine counterfactual/“what if” hypothesis generation entity enrichment (NASA, PubChem, UniProt, PDB, etc.) better novelty scoring tournament winner override before the fixes, some discoveries were scoring: 0/100 40/100 45/100 after everything: FRB Magnetar: 66/100 (B) KRAS G12D: 65/100 (B) the coolest run today was on Fast Radio Bursts and magnetars. RUMI went through 69 papers, generated new hidden variables, built mechanisms around them, made testable predictions, then tried to destroy its own ideas through adversarial testing. finally it actually felt like the pipeline was working end-to-end instead of randomly exploding lol 😭 still got a long way to go though. biggest weaknesses right now are novelty and mathematical rigor. RUMI is getting better at explaining science, now I need to make her better at finding genuinely new stuff. back to debugging tomorrow frfr 💔🥀😭"}, {"post_id": 3528, "ts": "2026-06-06T14:42:38Z", "hours": 2.1419, "text": "yayaya finallyy finally the basic tui is working and the frontend-backend integration is almost there"}, {"post_id": 2865, "ts": "2026-06-05T18:48:30Z", "hours": 7.7036, "text": "12hr 726mins in and still not finished debugging 💔🥀"}]...
|
Title: rumi by @subhansh | Stardance
Devlogs:
12h Title: rumi by @subhansh | Stardance
Devlogs:
12hr 726mins in and still not finished debugging 💔🥀
yayaya finallyy finally the basic tui is working and the frontend-backend integration is almost there
spent basically the whole day inside RUMI’s discovery engine and ngl it was pain 💔 fixed 50+ bugs across the pipeline. some of the biggest ones were: empty hypotheses theory tournament crashing unicode errors on windows graph contamination novelty scoring issues mechanism validation deleting everything 😭 also built a few new systems: math verification engine counterfactual/“what if” hypothesis generation entity enrichment (NASA, PubChem, UniProt, PDB, etc.) better novelty scoring tournament winner override before the fixes, some discoveries were scoring: 0/100 40/100 45/100 after everything: FRB Magnetar: 66/100 (B) KRAS G12D: 65/100 (B) the coolest run today was on Fast Radio Bursts and magnetars. RUMI went through 69 papers, generated new hidden variables, built mechanisms around them, made testable predictions, then tried to destroy its own ideas through adversarial testing. finally it actually felt like the pipeline was working end-to-end instead of randomly exploding lol 😭 still got a long way to go though. biggest weaknesses right now are novelty and mathematical rigor. RUMI is getting better at explaining science, now I need to make her better at finding genuinely new stuff. back to debugging tomorrow frfr 💔🥀😭
Stardance Devlog #3 June 7, 2026 Today I realized RUMI’s biggest limitation wasn’t math, evidence, reviewers, or the 17-stage pipeline. It was curiosity. For days I’ve been making RUMI better at reading papers, finding gaps, generating hypotheses, scoring theories, and validating ideas, which actually improved her ALLAT… but still something felt missing. Then it hit me. RUMI could analyze research. RUMI could synthesize research. RUMI could critique research. But RUMI never stopped and asked: “Why does this happen at all?” And that’s where most discoveries begin🥀 So today I built Phase 0 — The Curiosity Engine. Before reading papers. Before building knowledge graphs. Before generating mechanisms. RUMI now starts by questioning the problem itself. What could be causing this? What assumptions are we making? What if the accepted explanation is incomplete? What are we not looking at? Basically, RUMI now wonders before she researches😭 The first implementation was a disaster. I merged curiosity directly into the main pipeline and immediately turned the architecture into spaghetti. So I rebuilt it. Now there are two separate paths: Conventional RUMI Reads Analyzes Verifies Curious RUMI Questions Explores Challenges assumptions Both run independently and merge into the final report💔 The funny part is that after building theory tournaments, Bayesian reasoning, evidence systems, mathematical verification, observability checks, and dozens of other modules… The biggest upgrade might have been teaching RUMI something humans learn as children: Curiosity🥀😭 Today’s Progress Phase 0 Curiosity Engine ✅ Dual-Pipeline Architecture ✅ Evidence Extraction Improvements ✅ Observability Checks ✅ Mechanism Completeness Scoring ✅ My Sanity ❌ See you tomorrow. Hopefully before RUMI starts asking questions that create more problems than answers. 🥀💔
Devlog #5 — RUMI Dual-Track Architecture so as yall know yesterday i finished adding the curiosity pipeline (wait… you dont know about this? naaa💔go read yesterday’s devlog >:3…WUT ? GO RN) but yea that was mostly just the foundation today was about actually refining it and wiring it into the rest of RUMI basically i ended up bringing a lot of the Track A discovery pipeline into Track B too because like… why wouldnt i 😭 not just straight up copy-pasting it though because then both tracks would end up doing the same thing instead i reused parts of the architecture while keeping the curiosity systems separate the biggest addition was making the generated curiosity constraints actually flow into the discovery process itself which sounds simple until you spend half the day finding out they werent actually being propagated through the pipeline properly 💔 and then came the debugging arc 😭 DNS resolution failures causing discovery runs to randomly die 😾 (like wdym rumi requested for more papers and data and dns forgetting that internet exists) curiosity constraints not propagating into the pipeline😫 Semantic Scholar 429 rate limits 🥀 Gemini 503 errors 😢 free-tier rate limits everywhere (she makes like 6-7k requests in one run )😺🥀 and somehow RUMI has become so LLM hungry that i had to run her on 13 API keys across 3 different providers just to keep discovery sessions alive 😭 (lwk running on hope and sum duct tape 🥀🥀) there was genuinely a point where i was about to crash out because providers kept rate limiting, APIs were dying, runs were hanging, and everything was fighting me at once 💔🥀😭 but after all that RUMI finally completed a full dual-track discovery run topic: “Why does the universe expand faster than expected?” results: Track A Winner → Scale-Dependent Effective Gravity Track B Winner → Temporal Vacuum Shear Framework and this is where things got interesting Track A and Track B finished with: 0 shared theories <–(🙀) different winners different hidden variables different contradiction sets different mechanisms 0 runtime errors RUMI generated: 17 theories 30 mechanisms 22 hidden variables 12 contradictions 12 predictions from a single discovery session 😭 and honestly the most important number isnt the score its this: Shared Theories: 0 because it means Track B isnt just making a slightly remixed version of Track A anymore both tracks started from the same question, same literature, same knowledge base, and still ended up exploring completely different hypothesis spaces which is pretty much the entire reason i built the curiosity system in the first place 😭🥀 still more work to do, but today feels like one of the biggest architecture milestones for RUMI so far💔🥀 lwk gonna try to improve GFlowNets tmrw here’s the updated pipeline diagram :-
rumi - Devlog #6 June 11, 2026 so yea… pulled an all nighter for this one 🥀 most of the work this time wasn’t adding entirely new systems. it was stress testing RUMI hard enough to find where the architecture starts breaking. and honestly i found a lot more than i expected. Track B Architecture Improvements spent a lot of time refining Track B after the initial curiosity pipeline integration. instead of just generating curiosity questions, it now runs through much more of the actual discovery stack. lots of internal changes here that don’t really show up visually but massively affect the quality of the final reports. 💔 Constraint Pipeline Fix found a pretty nasty issue where parts of the generated curiosity constraints weren’t making it all the way through the pipeline. after fixing it, the results became immediately obvious. latest dual-track run: Track A Unique Theories: 9 Track B Unique Theories: 8 Shared Theories: 0 which is honestly one of the strongest signals i’ve seen so far that the dual-track system is actually working as intended. both tracks are now exploring completely different hypothesis spaces instead of converging on the same ideas. Claude Fable 5 Experiment managed to get temporary access to Claude Fable 5 and immediately decided to throw RUMI at it. before i could even test it though… the integration broke 💔 spent a while fixing provider compatibility issues and getting everything working again. eventually got a discovery run started on: What happens to information when it crosses a black hole event horizon? Fable managed to reach roughly Phase 8.5 before the free trial looked at RUMI’s request count and basically said: aight imma head out 😭 What Fable Revealed this ended up being way more valuable than i expected. while comparing Fable’s outputs with the models i normally run, i noticed a massive difference. most models tend to generate: Hidden Variable ↓ Mechanism Description ↓ Prediction Fable was generating: Hidden Variable ↓ Mechanism ↓ Equation ↓ Parameter Extraction ↓ Derivation ↓ Numerical Validation ↓ Prediction actual equations. actual variables. actual derivation chains. actual numerical checks. 🥀 Switching Back To MiMo after the Fable credits died, i moved everything back to MiMo and started comparing outputs. and that’s when another weakness became obvious. the pipeline itself wasn’t failing. MiMo simply wasn’t producing the mathematical depth needed for the mechanism stage. which means the current bottleneck isn’t discovery anymore. it’s mathematical formalization. Mathematical Formalization Architecture one of the most interesting things i noticed while testing Claude Fable 5 was how differently it handled mechanism generation. most models would generate something like: Hidden Variable ↓ Mechanism Description ↓ Prediction while Fable was generating: Hidden Variable ↓ Mechanism ↓ Equation ↓ Parameter Extraction ↓ Derivation ↓ Numerical Validation ↓ Prediction and honestly that immediately exposed one of RUMI’s biggest weaknesses. theories and mechanisms were already being generated. the math wasn’t. so instead of just complaining about it, i started redesigning the mechanism pipeline around that pattern. RUMI now has the foundations for a much more quantitative discovery process where mechanisms aren’t just descriptions anymore, which is lwk tuff ig 🥀✌ equations variables derivations parameter extraction numerical validation Switching Back To MiMo 🥀 after Fable ran out of credits i moved everything back to MiMo and started testing the updated architecture and still doing it cause mimo is like hella slow bruh normally umi takes upto 30-40 mins but now with mimo shes taking aorund 2hr 30mins 💔
rumi-Devlog #7 🍓 This was probably one of the most frustrating and important RUMI development sessions so far. Most people only see the final discovery reports. They don’t see the chaos that happens before RUMI can generate a single theory. And trust me, there was a lot of chaos. 💔 Bug Fixes, Bug Fixes, More Bug Fixes I started this session thinking I’d make a few improvements and continue testing. That did not happen. RUMI’s architecture has reached a point where changing one thing breaks three others. Every time I fixed 3 bugs, another 5 appeared from somewhere else. At one point I genuinely crashed out because every run ended with a new issue that didn’t even exist before. It felt like: fix_bug() spawn_more_bugs(count=5) Turns out there’s a reason people say: “If it’s working, don’t touch it.” Unfortunately I touched it. A lot. 🥀 The Problem Even though RUMI was producing interesting discoveries, I still wasn’t satisfied. The reports were often interesting, creative, and sometimes novel, but they still felt too generic. The pipeline would generate a theory, evaluate it once, pick a winner, and move on. I wanted RUMI to spend more time refining ideas instead of treating every discovery as a one-shot attempt. Falling Into The OpenMythos Rabbit Hole While researching I came across OpenMythos, a community attempt to reverse engineer Anthropic’s rumored Mythos architecture. Nobody actually knows how Mythos works, but the community has proposed several reasoning patterns that might explain Claude-style outputs. I spent hours reading through it asking myself: “What parts of this could actually work inside RUMI?” Not copying. Adapting. The Biggest Change I’ve Ever Made To RUMI 🥀 One idea stood out immediately: recurrent reasoning loops. Before: Mechanisms ↓ Predictions ↓ Theory Competition ↓ Winner One pass. One shot. If mechanism generation was weak, everything downstream became weak too. So I rebuilt a huge section of the pipeline. Now RUMI performs a 3-stage recurrent refinement process: Loop 1 — Exploration Maximum creativity Maximum diversity Broad theory generation Loop 2 — Refinement Survivors re-enter the pipeline Focus on evidence, consistency, and mechanism quality Loop 3 — Convergence Lowest creativity Highest rigor Final selection of the strongest explanation Instead of living or dying from a single generation pass, theories now get multiple opportunities to evolve. Preventing Theory Drift Another idea I adapted was evidence grounding injection. Recursive systems often suffer from theory drift, where ideas slowly become disconnected from the evidence that originally generated them. To prevent this, every refinement loop continuously receives: Literature evidence Contradictions Knowledge gaps Observed anomalies This keeps discoveries grounded instead of drifting into fantasy. Smarter Computation I also added convergence-aware halting. Not every scientific problem deserves the same amount of computation. Some topics converge quickly while others require deeper exploration. RUMI can now monitor improvements between loops and eventually stop refining once discoveries begin stabilizing. lwk so much happened in these last 17hrs that i cant even include everything in here cause of the word limit 😭🥀
rumi-Devlog #8 🍓 Current status: rumis smarter, my codebase survived, and my sanity is questionable 💔 A huge part of this session wasn’t actually spent improving discovery quality. It was spent improving everything around RUMI. As RUMI’s discovery pipeline keeps getting bigger, debugging has become a nightmare. Reading raw JSON reports, searching through logs, and manually inspecting hundreds of entities was getting painful. So I built a full visualization and monitoring system for RUMI. The dashboard can now visualize: discovery reports theory competitions adversarial testing results predictions refinement stages scoring breakdowns knowledge graphs paper collections hypothesis memory all from a single interface. Knowledge Graph Visualization One thing I’ve wanted for a while was being able to actually SEE what RUMI was discovering. Not read it. See it. So I built an interactive graph explorer using vis.js. Every entity type gets its own visual identity. Nodes glow based on type. Edges scale with confidence. Hovering shows metadata, paper counts, and relationships. The graph uses ForceAtlas physics and overlap avoidance to make large discovery graphs easier to navigate. Watching hundreds of concepts connect together is honestly way more useful than reading raw graph dumps. 🥀 Discovery Report Explorer RUMI reports have become massive. Some are hundreds of kilobytes. Some are over a thousand lines. Reading those manually sucks. So I built dedicated views for: theory competition adversarial evaluation predictions scoring derivations peer review refinement stages which makes analyzing runs significantly easier. Provider Stack Surgery 💔 While testing the new recurrent architecture I discovered a huge bottleneck. Xiaomi MiMo. It was slow. Constantly rate limiting. Burning through provider chains. And starving downstream phases. This turned out to be the reason molecule generation kept randomly failing. So MiMo got removed from the routing stack. After testing 17 API keys across all providers: 13 healthy 4 problematic Current routing stack includes: NVIDIA DeepSeek Kimi K2.6 Cerebras GPT-OSS-120B Groq Gemini Fireworks Still chasing down some timeout and rate limit issues but overall the stack is way healthier now. Discovery Testing Used the upgraded architecture to stress test RUMI on several difficult domains. One of the most interesting runs was Molecular Glue Drug Discovery. Current run stats: 16 hidden variables 15 mechanisms per loop 7 predictions multiple adversarial survivors recurrent refinement loops enabled The architecture is definitely producing stronger outputs than before. meow meow meow
rumi-Devlog #9 🍓😺✌ today was mostly spent making RUMI faster because some runs were taking an absolutely stupid amount of time 😭 provider stack changes spent a while profiling the provider chain and found a few cursed bottlenecks. disabled Fireworks (credits died, every failed request was wasting ~90s) switched GLM routing to Kimi K2.6 via a second NVIDIA key tested Cerebras-first vs NVIDIA-first routing results were funny: Cerebras = ~2s/call but discoveries averaged around C grade NVIDIA = ~65s/call but much stronger reports so now different parts of the pipeline use different providers depending on the task. phase 6.5 speedup equation generation was committing crimes. rewrote the whole thing to run in parallel (6 workers). went from: ~16 min to ~1 min for a typical 15 mechanism loop. also finally fixed the legendary: 0/15 equations generated bug 😺🍓 literature search all literature sources now fetch concurrently: arXiv PubMed CrossRef OpenAlex etc runtime dropped from ~2 mins to ~64 seconds. RUMI TUI probably my favourite thing from today. built a proper Textual-based TUI so i can actually see what RUMI is doing instead of staring at a terminal for 10 hours. added: real-time phase tracking live agent status brain module dashboard discovery controls /brain /status /dream /memory /hypothesis also fixed a bunch of broken brain module APIs that were pretending to work 💀 random bug of the day RUMI was occasionally turning english into ancient cursed language and generating stuff like: withinamy instead of actual words. fixed topic truncation so it now cuts at word boundaries. current state provider stack healthier equation generation WAY faster literature search faster TUI finally usable brain modules actually verified at boot still spending most of my life waiting for discovery runs to finish though 🥀
Ships:
rumi - research unified machine intelligence… rumi is an actual autonomous AI scientist designed to discover, not just describe. Powered by a 22 phase, 2 tracks scientific discovery pipeline, RUMI analyzes research literature, builds knowledge representations, identifies gaps in existing explanations, generates novel hypotheses, constructs mathematical and causal models, produces falsifiable predictions, and evaluates competing theories through automated scientific review. Operating across 17 domains, RUMI is built as a general-purpose discovery engine whose objective is to accelerate human research by systematically exploring explanations that may not yet exist in the literature while maintaining transparency, critique, and testability throughout the discovery process. NOTE :- rumi still cant do end to end novel discoveries on her own but she can provide novel ideas with grounded mechanisms and derivations and stronger the reasoning of a model = better results from rumi.. that said… once i get my hands on a frontier llm ill plug it into rumi and develop her more Proof that rumi works :- rumi has helped me publish 1 peer reviewed research paper on analytical number theory (DOI :- 10.5281/zenodo.21107958)...
|
1792979579.6760461
|
1793065979.6760461
|
|
7496
|
soul browser by @soulcloude | Stardance
|
soulcloude
|
1
|
124.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T09:57:29Z", "hours": 124.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built the Soul Browser! It’s a high-performance, privacy-first web browser built natively for macOS. Instead of relying on bloated web-wrappers like Electron, I built the entire UI natively in SwiftUI and hooked it into the Chromium Embedded Framework (CEF) backend. This gives it the lightning-fast V8 JavaScript engine and Blink rendering, wrapped in a beautiful, macOS-native shell. The biggest challenge was wrestling with memory optimization and IPC (Inter-Process Communication). Because I avoided Electron, I had to manually manage how the native Swift UI communicated with the underlying Chromium processes. I spent a lot of time stripping down site isolation overhead and tuning the V8 heap limits so the browser stays incredibly lightweight. We also had to build custom retry-logic to stabilize our local AI Codex server connection! I’m incredibly proud of the UI aesthetics and the performance metrics. The browser looks and feels like an expensive Apple product thanks to the frosted glassmorphism and native Swift animations. But more importantly, it runs like a dream. Features like the AI Tab Grouper and native !Bangs integration make it a genuine power-tool for developers. You can download the v1.0.0-beta directly from the Releases tab on GitHub! Since it’s a native macOS app in beta, you may need to right-click and hit “Open” to bypass the unverified developer warning. Try out the !w bangs in the address bar, or open 20 tabs to watch the AI Tab Grouper automatically organize them for you!", "repo": "https://github.com/soulcloude00/soul-browser", "demo": "https://github.com/soulcloude00/soul-browser/releases/tag/v1.0.1-beta"}]...
|
[{"post_id": 7376, "ts": "2026 [{"post_id": 7376, "ts": "2026-06-12T09:36:13Z", "hours": 9.7667, "text": "We just open-sourced the Soul Browser! 🚀 I wanted to build a browser that feels incredibly fast, native to macOS, and respects your privacy—without relying on heavy Electron wrappers. 🛠 The Stack: Built entirely in native Swift & SwiftUI for a buttery smooth UI, powered by the Chromium Embedded Framework (CEF) under the hood for world-class web rendering and V8 JavaScript performance. ✨ Core Features: • !Bangs Integration: Instantly search your favorite sites directly from the address bar (e.g., type !w macOS to jump straight to Wikipedia). • Built for Developers: First-class DevTools support natively integrated, plus aggressive memory optimization so your browser doesn’t compete with your compiler for RAM. • Privacy & Security First: Zero telemetry. No aggressive tracking. We baked in anti-phishing scanners, Tor-proxy support, and secure local keychain integration. If you’re tired of bloated web browsers, come check out the code, leave a ⭐, or contribute! 🔗 GitHub: https://github.com/soulcloude00/soul-browser Let me know what you think of the architecture! 👇 #swiftui #macos #opensource #buildinpublic"}, {"post_id": 6403, "ts": "2026-06-10T19:31:08Z", "hours": 14.0, "text": "done a full setting page for the browser took almost 14 hours , so basically its focused all all the use cases , developers , normal users and so many - planing to make a browser that no other browser has achieved"}, {"post_id": 2945, "ts": "2026-06-05T21:05:35Z", "hours": 0.5053, "text": "made an onboarding pages for the browser"}, {"post_id": 2687, "ts": "2026-06-05T11:17:35Z", "hours": 0.7861, "text": "added local ai assisted chat and navigation panel like comet browser on my browser it took lot of time lol"}, {"post_id": 2653, "ts": "2026-06-05T09:56:11Z", "hours": 13.3472, "text": "soul browser devlog 2 - creating a web page for the browser so that users can download from my website"}, {"post_id": 2372, "ts": "2026-06-04T20:35:41Z", "hours": 85.8667, "text": "crafting my own browser"}]...
|
Title: soul browser by @soulcloude | Stardance
De Title: soul browser by @soulcloude | Stardance
Devlogs:
crafting my own browser
soul browser devlog 2 - creating a web page for the browser so that users can download from my website
added local ai assisted chat and navigation panel like comet browser on my browser it took lot of time lol
made an onboarding pages for the browser
done a full setting page for the browser took almost 14 hours , so basically its focused all all the use cases , developers , normal users and so many - planing to make a browser that no other browser has achieved
We just open-sourced the Soul Browser! 🚀 I wanted to build a browser that feels incredibly fast, native to macOS, and respects your privacy—without relying on heavy Electron wrappers. 🛠 The Stack: Built entirely in native Swift & SwiftUI for a buttery smooth UI, powered by the Chromium Embedded Framework (CEF) under the hood for world-class web rendering and V8 JavaScript performance. ✨ Core Features: • !Bangs Integration: Instantly search your favorite sites directly from the address bar (e.g., type !w macOS to jump straight to Wikipedia). • Built for Developers: First-class DevTools support natively integrated, plus aggressive memory optimization so your browser doesn’t compete with your compiler for RAM. • Privacy & Security First: Zero telemetry. No aggressive tracking. We baked in anti-phishing scanners, Tor-proxy support, and secure local keychain integration. If you’re tired of bloated web browsers, come check out the code, leave a ⭐, or contribute! 🔗 GitHub: https://github.com/soulcloude00/soul-browser Let me know what you think of the architecture! 👇 #swiftui #macos #opensource #buildinpublic
Ships:
I built the Soul Browser! It’s a high-performance, privacy-first web browser built natively for macOS. Instead of relying on bloated web-wrappers like Electron, I built the entire UI natively in SwiftUI and hooked it into the Chromium Embedded Framework (CEF) backend. This gives it the lightning-fast V8 JavaScript engine and Blink rendering, wrapped in a beautiful, macOS-native shell. The biggest challenge was wrestling with memory optimization and IPC (Inter-Process Communication). Because I avoided Electron, I had to manually manage how the native Swift UI communicated with the underlying Chromium processes. I spent a lot of time stripping down site isolation overhead and tuning the V8 heap limits so the browser stays incredibly lightweight. We also had to build custom retry-logic to stabilize our local AI Codex server connection! I’m incredibly proud of the UI aesthetics and the performance metrics. The browser looks and feels like an expensive Apple product thanks to the frosted glassmorphism and native Swift animations. But more importantly, it runs like a dream. Features like the AI Tab Grouper and native !Bangs integration make it a genuine power-tool for developers. You can download the v1.0.0-beta directly from the Releases tab on GitHub! Since it’s a native macOS app in beta, you may need to right-click and hit “Open” to bypass the unverified developer warning. Try out the !w bangs in the address bar, or open 20 tabs to watch the AI Tab Grouper automatically organize them for you!...
|
1792982951.6738513
|
1793069351.6738513
|
|
7503
|
Pc parts lister by @Fiskerz | Stardance
|
Fiskerz
|
1
|
77.0
|
1286
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T13:41:56Z", "hours": 77.0, "multiplier": 19.41, "payout": 1286, "blessing": "neutral", "text": "What is this? You are currently looking at a native windows app , written entirely in C# & XAML . The main goal of this app is to make for a pc hardware person like me, keeping track of components I might happen to have laying around a lot easier and incredibly organized, without having to use endless and ugly excel tables. It is my first ever project of this kind, as I’ve been always making games, or mods, but not actual apps. What was challenging/I’m proud of As I said this was the first project of this type I’ve made ever so learning XAML took me some real time and effort. The expandible system and the mark-down style parser are the real “trophies” here, the amount of time and effort they took is just still horryfic to me. But I’m extremely proud of myself for biting through them. Features I’ll only go through some of the most important features, as there’s just many smaller things to cover. You can view all of the features in the github repository’s README file that took me a pretty long time to write and decorate. There are so many features that I can’t even fit them within this posts text limits. Adding, searching up, viewing, editing and deleting Components You can do all of these with any Component. Adding and searching up components is pretty simple, you just click on the gigantic buttons on the window that you will first see. And once you open the search window you can then view in detail, edit and delete the components from there using the dedicated buttons. Mark-down style description parser, writer and viewer. One of the most difficult things I’ve done in this project, as getting it to fully work was really difficult, even more so due to it being my first time having to solve an issue like this. But hey you can: Write in bold , italic , bold-italic and have two different headings styles. See what you’re writing in a preview box placed next to the description writer View the rendered descriptions in the detail window afterwards. Making your own Parameters, as well as editing default ones, or removing them entirely This is the most difficult thing I’ve dealt with throughout the entire project. As let me tell you - rewriting the entire app into architecture where the app itself has no idea what concrete step it’s doing is pure hell. I called this the Expandible system and it revolves mainly around being dynamic and expandable. Instead of having a Component that has a string value for its model, you now have a Component that may, or may not have a Model parameter assigned in its parameters. And that specific Model parameter can hold some value. And now try explaining this to the app. Just hell to deal with. But hey it works and I am super happy with how it turned out. Thanks to it you can: Add your own parameters . You yourself can make any of available rules for it, all using a pretty simply navigatable UI. Edit current parameters just as easily as you can add parameters, you can also edit any parameters and shape them into your liking. Or.. Delete any parameter you now dislike, or have no interest/use for. The UI scales and renders your parameters all throughout the app, based on what parameters you set up. Filtering Components Once again, from any of the parameters you’ve set up you can use them to filter out specific components, using any kind of parameter you decided to add in. Multi-language support In the app settings you can swap out between English (Default) and Czech. And the language is implemented all accross the app. So much so that even the default parameters will be generated in your selected language. Testing and using You can download the app from the latest release on github for Windows 10/11. There is unfortunately no other way to publish this app, since it’s a native windows app. For more detail follow the guide in the README file.", "repo": "https://github.com/Catmaster543/PC-Parts-Lister", "demo": "https://github.com/Catmaster543/PC-Parts-Lister/releases/tag/v1.0.2"}]...
|
[{"post_id": 74472, "ts": "202 [{"post_id": 74472, "ts": "2026-09-27T13:39:43Z", "hours": 5.5408, "text": "Added QOL features, README rewrite, bugfixes & shipping preparations! After all this time- the app is finally entering the final stretch (atleast for its first ship). A pretty thorough testing has been done and I am now quite confident that there’s not much missing. I got some feedback from a friend of mine and used it to add in some things he found missing, soo shoutout to him! Added many warnings and pop-ups throughout the app . In the app there are many settings that if you tweak at the wrong time, or incorrectly you can get yourself into quite some mess. With these warnings it should be more easily preventable. Completely rewrote the README , so that it now includes many images, gifs and most importantly very good documentation of the features. Added translations for more things , such as when parameters are regenerated it is done so in your chosen language. Added watermark text to the add window . Since I’ve heard it multiple times now, that the text box for components name is not intuitive to click on at all this should fix it. Fixed many issues , ranging from parameters saving as their opposite type, to the app crashing just from opening settings. You can read through these in detail in the respective github commits. Ship preparations . I took some time to deal with these things, such as making the app as humanly simple to run as possible, thourough testing, making github releases and writing the README as well as the ship description. And that is probably it here. This is likely the last devlog before shipping, so hopefully see you there! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!"}, {"post_id": 74151, "ts": "2026-09-26T19:39:02Z", "hours": 6.2444, "text": "Added multi-language support + settings + first README written! You might notice quite some time logged on this one. And let me tell you, you would not believe just how bad a simple mistake can be. I’ll get to this on the end of the devlog, for now let me tell you about the stuff that I’ve added. Added multi-language support . Now all text you see in the app is either dynamically generated based on the things you make, so that’s in your language, or use a key , which is then filled from the decently sized language tables I’ve written. Added English support . Up until now, the entirety of the app has been written in czech, my native language. But since I’ve now added the multi-language support I of course chose english as the first one to add. Now personally I will probably NOT be adding any other languages, as I don’t want to use google translate for them, since I know how choppy it can come out and personally don’t know any other languages on a tier high-enough to trust myself with writing the tables right. If anyone out there would be willing to translate the app into a language they can speak, I’m down! Added settings . Settings is actually a bit of a.. silly name to use here, as there’s only one setting there. Which is of course the language toggle. Written the first README . Now first clarifies only as first for this project, as I’ve written a few of these before, but this project is the largest one I’ve ever made, so it took me quite a bit of time to write this one. I’ll be improving it further, as it’s incomplete so far. And that’s it I think. The awful mistake I’ve made was forgetting to merge the github branches before starting this part and made an absolutely ridiculous amount of issues by that, such as the app mixing old and new codes and other terrible stuff. Outside these, I think that’s all for this one. I’m expecting this to finally be one of the last devlogs before the first ship, as there’s not much blocking me now from shipping. Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!"}, {"post_id": 73754, "ts": "2026-09-25T21:13:23Z", "hours": 2.4719, "text": "Added the custom settings from last time + custom parameters adding Devlog #9 for PC Parts Lister Soo as I said last time, I’ve now implemented the following: List option for string type parameters . This allows parameters to load as a selectable list of options, instead of just a text field. Allowing custom list entries . An extension to the list option, which when toggled also allows you to type out your own thing if none from the list suits your need. Custom numbers sufix . Just as I said last time- this enables you to set a custom sufix to number type parameters and will do one simple thing - wherever this parameter is displayed, your sufix will be displayed after the number, so instead of “Capacity: 500”, it will now be “Capacity: 500 GB”. That is ofc if you set the sufix to be GB. Adding custom parameters . Since you could edit current parameters last time, I now gave you the power to make your own parameters. Everything since I’ve began building the expandible system has been preparing for this moment and now it’s here. It took me just a few lines of code to add this, but thanks to the complex system I’ve built custom parameters are supported everywhere in the app. Bugfixes Fixed Possible parameters obtaining values . As simple and unimportant this sounds, Possible parameters act only ONLY as a sort of template. Thus no actual value should be assigned to them. And thanks to a bug in the code this was happening, which broke the app way more than I expected. Fixed filtering-related issues . There were issues where the filtering system would be unable to filter out correctly, despite everything being right. UI fixes , such as scrollbars in places that were missing. Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!"}, {"post_id": 73326, "ts": "2026-09-24T21:30:06Z", "hours": 5.9783, "text": "Added the parameters editing windows! Devlog #8 for PC Parts Lister Great day ya’ll. Added the edit parameters window , which features the following: See all current parameters Edit current parameters Delete current parameters Added the parameter edit window itself , which you can from the previous window and it allows you to: Change the parameter name Change the parameters ID Select if the parameter is either text, or a number Change the possible values in case of text Set if the parameter is supposed to be in a list in the case of text Set if the parameter can be edited, or just selected from set values in case of text Set a custom suffix to number type parameters, for example if you want to add a parameter for storage capacity it would be weird to have just “500”. 500 potatoes? You can use this to instead show “500 Gb”. Much better ain’t it? In cases of all these three new settings - they are only selectable here and the app saves them, but they are yet to be implemented! Added and edited the main window layout , adding the parameter settings button. And that is about it, hopefully se any one of you around! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!"}, {"post_id": 72368, "ts": "2026-09-22T19:27:35Z", "hours": 2.995, "text": "Finished migrating the filter window, added back category selection buttons, filtering by favorite and searching up components by name! Devlog #7 for PC Parts Lister Before I start - WHY THE HELL DOES THE REVIEW PROCESS ON MY OTHER PROJECT TAKE SOO LONG? My other project, the Sponsor system has been under review for OVER 12 DAYS now, anyone got any idea what’s up with that? Either way, to the actual devlog now- Soo since last time not any crazy time has passed, although I still did quite some work and want to write a devlog before heading onto the next parts that I assume will take a little while. Added searching components up by name back. Just like the other features, this has been implemented before already, but due to the migration to the expandible (= aka. dynamic) system has been broken. Added filtering by favorites back. Soo you can filter out all of your favorited components. Added back the category buttons . They behave just as before, you click on a category and see components under that category. Pretty neat, no? A whole lot of bugfixing and testing . Since last time I’ve discovered quite an insane amount of bugs and had to do patches almost constantly. Not to mention I had to pretty deeply test out all of the features to make sure there are not any holes I missed. But I believe not. Anyways I think that’s mostly it this time, I gotta say though that I should really hurry up with this project to finish it on time, soo cya! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!"}, {"post_id": 70833, "ts": "2026-09-19T20:56:29Z", "hours": 6.3892, "text": "Added support for filtering by numbers and text for the new system! Devlog #6 for PC Parts Lister Since last time I’ve began work on the expandible system quite some time has passed and I’ve worked on other projects in the meantime, but here am I now to hopefully finish this. Soo.. Added support to the filtering window for the new system, meaning it now generates the parameters dynamically, just like add window does Added back filtering by numbers , such as wattage and other number based parameters, with the old smaller/bigger/equal toggles Added back filtering by text so long story short - you can filter the other things that are not in numbers, such as names, series, subseries, etc. Added the reset filter button back . Pretty self explanatory I think, ain’t it? Many bugfixes . Since last time’s revert to the new system old things just keep on breaking and breaking and I have to constantly patch/disable features (temporarily) till I am able to fix them. Outside that I think that’s mostly it for this time, the main eater of time here was me really just spending a whole lot of time figuring out the architecture that would work for this whole system and let me tell you - it’s a real nightmare to think about. (wouldn’t be surprised if I had nightmares abt it tonight lol) Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also mz first time making anz kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to stick around and hit the follow, ty!"}, {"post_id": 64275, "ts": "2026-09-08T15:38:48Z", "hours": 6.49, "text": "Overhauled the Add window + started work on the expandible system! Devlog #5 for PC Parts Lister This is a change I’ve long anticipated and feared , but it should elevate the app by entire levels higher. Now what is the Expandible system? Up until now you could only use pre-specified, hardcoded parameters with very little flexibility to it. The expandible system aims to completely overhaul the way information is handled in the app , which will allow for custom parameters, parameter options, etc. etc. in the future. The biggest issue with that is the transfer from the current system. As of now I had to purposely break big chunks of the app for the sake of testing the basics and I will have to rebuild it back up, just with the expandible system. Overhaul of the Add window Since I’ve started the expandible system, the Add window, as one of the most outdated (both technically and visually) had to go first. Also this was due to me needing a way to add in components using the new system outside having to hard-code each tester. I think it is decent, but it is not finished yet, keep that in mind! A majority of the windows overhaul was technical , but I made sure to use the way more recent UI style from Detail and Edit windows that got updated recently to improve the visuals atleast a bit. I think there’s not all that much more I can specify as of right now, but when the system is done I’ll be sure to write some more about it, soo cya for now! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. If you find this project cool be sure to stick around and hit the follow, thx!"}, {"post_id": 43957, "ts": "2026-08-09T12:38:35Z", "hours": 8.3703, "text": "Improved the description by a whole new level! Devlog #4 This time I didn’t forget to post a devlog, so yay I don’t lose the payout on this one- Anyways my focus here was to make a pretty simple yet convenient description system, because the original one was… let’s say way too simple ( just plain text ). So to improve it I changed it into a Markdown-style system . So what did I add/change? An entire new renderer for the description in Detail Window . I had to write a custom parser for it in order for it to read bold, italic and other styles, more on them later though- An entirely new description editor in the Edit Window. Since I do not have the skill, time, or interest in making a live-preview editor that apps like obsidian have I chose a different approach. You have a regular text field with buttons for each function added (such as bold, etc.). On the other half you have a preview window that updates after you stop writing automatically (thus preventing lag) and displays a preview of what you wrote. Bold, Italic, BoldItalic, Heading & Small Heading are all the styles I added (maybe for now, maybe for good.). Each and every single one of these has a button, that either turns on or off that style. And that’s it for now I think. Seeing this project for the first time? This project is a windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. If you find this project cool be sure to stick around!"}, {"post_id": 24247, "ts": "2026-07-07T18:00:38Z", "hours": 17.6844, "text": "Devlog #3 for PC Parts Lister Alright, so I may, or may not have forgotten to post any updates in a while and quite a lot of things have been added, so here’s a small overview: Complete visual (and technical) overhaul of the Edit and Detail window . I improved their overall visuals, added a lot of new things, such as the photogallery, all while fixing some older bugs and issues. Addition of a whole new photogallery , to both edit and detail window. With it you can now have multiple different pictures for each component + a main picture. You can click on each picture to view them in a new window; in their full scale. You can also delete each picture, or in the case of the main picture you can also swap it out for a new one. In the full picture view you can also cycle between the components individual pictures, just like in most photogallery apps. Newly added description , it is very simple, but you can have a description at the very least. I am currently working on a whole new description system with MarkDown support, so you can make bold text , italic , or things like headings and paragraphs. Also I added the ability to favorite your favorite components and sort by that. It is quite a simple feature but in my opinion it is a nice to have feature. Alongside this I added the ability to filter components, so now you can easily separate your fav components. It is quite a lot of stuff to say the least and I’ll try my best from now on to do the devlogs in their respective times. See the 2 people who even read these in the next one!"}, {"post_id": 8651, "ts": "2026-06-14T11:35:07Z", "hours": 12.955, "text": "Devlog #2 for PC Parts Lister Main addition: Super specific and smart filtering system, allowing to seamlessly filter your components; by name, by type, even by things like amount! List of important changes: Added the smart filtering system window Added the amount value for components Re-used part of code from adding components Completely overhauled the re-used code, to be smarter, more effecient and way more easily expandable in the future Added a smart error reporting inside the filtering window, informing you if there’s something wrong Changed the way certain components values are stored Added and improved a few already existing button designs Improved certain behaviours of windows Fixed issues when opening the app in full-screen Fixed components saving with unrealistic values (for example having a SSD with the capacity “donkey”)"}, {"post_id": 2755, "ts": "2026-06-05T15:07:41Z", "hours": 1.7581, "text": "I just added the ability to search up by name"}]...
|
Title: Pc parts lister by @Fiskerz | Stardance
De Title: Pc parts lister by @Fiskerz | Stardance
Devlogs:
I just added the ability to search up by name
Devlog #2 for PC Parts Lister Main addition: Super specific and smart filtering system, allowing to seamlessly filter your components; by name, by type, even by things like amount! List of important changes: Added the smart filtering system window Added the amount value for components Re-used part of code from adding components Completely overhauled the re-used code, to be smarter, more effecient and way more easily expandable in the future Added a smart error reporting inside the filtering window, informing you if there’s something wrong Changed the way certain components values are stored Added and improved a few already existing button designs Improved certain behaviours of windows Fixed issues when opening the app in full-screen Fixed components saving with unrealistic values (for example having a SSD with the capacity “donkey”)
Devlog #3 for PC Parts Lister Alright, so I may, or may not have forgotten to post any updates in a while and quite a lot of things have been added, so here’s a small overview: Complete visual (and technical) overhaul of the Edit and Detail window . I improved their overall visuals, added a lot of new things, such as the photogallery, all while fixing some older bugs and issues. Addition of a whole new photogallery , to both edit and detail window. With it you can now have multiple different pictures for each component + a main picture. You can click on each picture to view them in a new window; in their full scale. You can also delete each picture, or in the case of the main picture you can also swap it out for a new one. In the full picture view you can also cycle between the components individual pictures, just like in most photogallery apps. Newly added description , it is very simple, but you can have a description at the very least. I am currently working on a whole new description system with MarkDown support, so you can make bold text , italic , or things like headings and paragraphs. Also I added the ability to favorite your favorite components and sort by that. It is quite a simple feature but in my opinion it is a nice to have feature. Alongside this I added the ability to filter components, so now you can easily separate your fav components. It is quite a lot of stuff to say the least and I’ll try my best from now on to do the devlogs in their respective times. See the 2 people who even read these in the next one!
Improved the description by a whole new level! Devlog #4 This time I didn’t forget to post a devlog, so yay I don’t lose the payout on this one- Anyways my focus here was to make a pretty simple yet convenient description system, because the original one was… let’s say way too simple ( just plain text ). So to improve it I changed it into a Markdown-style system . So what did I add/change? An entire new renderer for the description in Detail Window . I had to write a custom parser for it in order for it to read bold, italic and other styles, more on them later though- An entirely new description editor in the Edit Window. Since I do not have the skill, time, or interest in making a live-preview editor that apps like obsidian have I chose a different approach. You have a regular text field with buttons for each function added (such as bold, etc.). On the other half you have a preview window that updates after you stop writing automatically (thus preventing lag) and displays a preview of what you wrote. Bold, Italic, BoldItalic, Heading & Small Heading are all the styles I added (maybe for now, maybe for good.). Each and every single one of these has a button, that either turns on or off that style. And that’s it for now I think. Seeing this project for the first time? This project is a windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. If you find this project cool be sure to stick around!
Overhauled the Add window + started work on the expandible system! Devlog #5 for PC Parts Lister This is a change I’ve long anticipated and feared , but it should elevate the app by entire levels higher. Now what is the Expandible system? Up until now you could only use pre-specified, hardcoded parameters with very little flexibility to it. The expandible system aims to completely overhaul the way information is handled in the app , which will allow for custom parameters, parameter options, etc. etc. in the future. The biggest issue with that is the transfer from the current system. As of now I had to purposely break big chunks of the app for the sake of testing the basics and I will have to rebuild it back up, just with the expandible system. Overhaul of the Add window Since I’ve started the expandible system, the Add window, as one of the most outdated (both technically and visually) had to go first. Also this was due to me needing a way to add in components using the new system outside having to hard-code each tester. I think it is decent, but it is not finished yet, keep that in mind! A majority of the windows overhaul was technical , but I made sure to use the way more recent UI style from Detail and Edit windows that got updated recently to improve the visuals atleast a bit. I think there’s not all that much more I can specify as of right now, but when the system is done I’ll be sure to write some more about it, soo cya for now! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. If you find this project cool be sure to stick around and hit the follow, thx!
Added support for filtering by numbers and text for the new system! Devlog #6 for PC Parts Lister Since last time I’ve began work on the expandible system quite some time has passed and I’ve worked on other projects in the meantime, but here am I now to hopefully finish this. Soo.. Added support to the filtering window for the new system, meaning it now generates the parameters dynamically, just like add window does Added back filtering by numbers , such as wattage and other number based parameters, with the old smaller/bigger/equal toggles Added back filtering by text so long story short - you can filter the other things that are not in numbers, such as names, series, subseries, etc. Added the reset filter button back . Pretty self explanatory I think, ain’t it? Many bugfixes . Since last time’s revert to the new system old things just keep on breaking and breaking and I have to constantly patch/disable features (temporarily) till I am able to fix them. Outside that I think that’s mostly it for this time, the main eater of time here was me really just spending a whole lot of time figuring out the architecture that would work for this whole system and let me tell you - it’s a real nightmare to think about. (wouldn’t be surprised if I had nightmares abt it tonight lol) Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also mz first time making anz kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to stick around and hit the follow, ty!
Finished migrating the filter window, added back category selection buttons, filtering by favorite and searching up components by name! Devlog #7 for PC Parts Lister Before I start - WHY THE HELL DOES THE REVIEW PROCESS ON MY OTHER PROJECT TAKE SOO LONG? My other project, the Sponsor system has been under review for OVER 12 DAYS now, anyone got any idea what’s up with that? Either way, to the actual devlog now- Soo since last time not any crazy time has passed, although I still did quite some work and want to write a devlog before heading onto the next parts that I assume will take a little while. Added searching components up by name back. Just like the other features, this has been implemented before already, but due to the migration to the expandible (= aka. dynamic) system has been broken. Added filtering by favorites back. Soo you can filter out all of your favorited components. Added back the category buttons . They behave just as before, you click on a category and see components under that category. Pretty neat, no? A whole lot of bugfixing and testing . Since last time I’ve discovered quite an insane amount of bugs and had to do patches almost constantly. Not to mention I had to pretty deeply test out all of the features to make sure there are not any holes I missed. But I believe not. Anyways I think that’s mostly it this time, I gotta say though that I should really hurry up with this project to finish it on time, soo cya! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!
Added the parameters editing windows! Devlog #8 for PC Parts Lister Great day ya’ll. Added the edit parameters window , which features the following: See all current parameters Edit current parameters Delete current parameters Added the parameter edit window itself , which you can from the previous window and it allows you to: Change the parameter name Change the parameters ID Select if the parameter is either text, or a number Change the possible values in case of text Set if the parameter is supposed to be in a list in the case of text Set if the parameter can be edited, or just selected from set values in case of text Set a custom suffix to number type parameters, for example if you want to add a parameter for storage capacity it would be weird to have just “500”. 500 potatoes? You can use this to instead show “500 Gb”. Much better ain’t it? In cases of all these three new settings - they are only selectable here and the app saves them, but they are yet to be implemented! Added and edited the main window layout , adding the parameter settings button. And that is about it, hopefully se any one of you around! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!
Added the custom settings from last time + custom parameters adding Devlog #9 for PC Parts Lister Soo as I said last time, I’ve now implemented the following: List option for string type parameters . This allows parameters to load as a selectable list of options, instead of just a text field. Allowing custom list entries . An extension to the list option, which when toggled also allows you to type out your own thing if none from the list suits your need. Custom numbers sufix . Just as I said last time- this enables you to set a custom sufix to number type parameters and will do one simple thing - wherever this parameter is displayed, your sufix will be displayed after the number, so instead of “Capacity: 500”, it will now be “Capacity: 500 GB”. That is ofc if you set the sufix to be GB. Adding custom parameters . Since you could edit current parameters last time, I now gave you the power to make your own parameters. Everything since I’ve began building the expandible system has been preparing for this moment and now it’s here. It took me just a few lines of code to add this, but thanks to the complex system I’ve built custom parameters are supported everywhere in the app. Bugfixes Fixed Possible parameters obtaining values . As simple and unimportant this sounds, Possible parameters act only ONLY as a sort of template. Thus no actual value should be assigned to them. And thanks to a bug in the code this was happening, which broke the app way more than I expected. Fixed filtering-related issues . There were issues where the filtering system would be unable to filter out correctly, despite everything being right. UI fixes , such as scrollbars in places that were missing. Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!
Added multi-language support + settings + first README written! You might notice quite some time logged on this one. And let me tell you, you would not believe just how bad a simple mistake can be. I’ll get to this on the end of the devlog, for now let me tell you about the stuff that I’ve added. Added multi-language support . Now all text you see in the app is either dynamically generated based on the things you make, so that’s in your language, or use a key , which is then filled from the decently sized language tables I’ve written. Added English support . Up until now, the entirety of the app has been written in czech, my native language. But since I’ve now added the multi-language support I of course chose english as the first one to add. Now personally I will probably NOT be adding any other languages, as I don’t want to use google translate for them, since I know how choppy it can come out and personally don’t know any other languages on a tier high-enough to trust myself with writing the tables right. If anyone out there would be willing to translate the app into a language they can speak, I’m down! Added settings . Settings is actually a bit of a.. silly name to use here, as there’s only one setting there. Which is of course the language toggle. Written the first README . Now first clarifies only as first for this project, as I’ve written a few of these before, but this project is the largest one I’ve ever made, so it took me quite a bit of time to write this one. I’ll be improving it further, as it’s incomplete so far. And that’s it I think. The awful mistake I’ve made was forgetting to merge the github branches before starting this part and made an absolutely ridiculous amount of issues by that, such as the app mixing old and new codes and other terrible stuff. Outside these, I think that’s all for this one. I’m expecting this to finally be one of the last devlogs before the first ship, as there’s not much blocking me now from shipping. Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!
Added QOL features, README rewrite, bugfixes & shipping preparations! After all this time- the app is finally entering the final stretch (atleast for its first ship). A pretty thorough testing has been done and I am now quite confident that there’s not much missing. I got some feedback from a friend of mine and used it to add in some things he found missing, soo shoutout to him! Added many warnings and pop-ups throughout the app . In the app there are many settings that if you tweak at the wrong time, or incorrectly you can get yourself into quite some mess. With these warnings it should be more easily preventable. Completely rewrote the README , so that it now includes many images, gifs and most importantly very good documentation of the features. Added translations for more things , such as when parameters are regenerated it is done so in your chosen language. Added watermark text to the add window . Since I’ve heard it multiple times now, that the text box for components name is not intuitive to click on at all this should fix it. Fixed many issues , ranging from parameters saving as their opposite type, to the app crashing just from opening settings. You can read through these in detail in the respective github commits. Ship preparations . I took some time to deal with these things, such as making the app as humanly simple to run as possible, thourough testing, making github releases and writing the README as well as the ship description. And that is probably it here. This is likely the last devlog before shipping, so hopefully see you there! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!
Ships:
What is this? You are currently looking at a native windows app , written entirely in C# & XAML . The main goal of this app is to make for a pc hardware person like me, keeping track of components I might happen to have laying around a lot easier and incredibly organized, without having to use endless and ugly excel tables. It is my first ever project of this kind, as I’ve been always making games, or mods, but not actual apps. What was challenging/I’m proud of As I said this was the first project of this type I’ve made ever so learning XAML took me some real time and effort. The expandible system and the mark-down style parser are the real “trophies” here, the amount of time and effort they took is just still horryfic to me. But I’m extremely proud of myself for biting through them. Features I’ll only go through some of the most important features, as there’s just many smaller things to cover. You can view all of the features in the github repository’s README file that took me a pretty long time to write and decorate. There are so many features that I can’t even fit them within this posts text limits. Adding, searching up, viewing, editing and deleting Components You can do all of these with any Component. Adding and searching up components is pretty simple, you just click on the gigantic buttons on the window that you will first see. And once you open the search window you can then view in detail, edit and delete the components from there using the dedicated buttons. Mark-down style description parser, writer and viewer. One of the most difficult things I’ve done in this project, as getting it to fully work was really difficult, even more so due to it being my first time having to solve an issue like this. But hey you can: Write in bold , italic , bold-italic and have two different headings styles. See what you’re writing in a preview box placed next to the description writer View the rendered descriptions in the detail window afterwards. Making your own Parameters, as well as editing default ones, or removing them entirely This is the most difficult thing I’ve dealt with throughout the entire project. As let me tell you - rewriting the entire app into architecture where the app itself has no idea what concrete step it’s doing is pure hell. I called this the Expandible system and it revolves mainly around being dynamic and expandable. Instead of having a Component that has a string value for its model, you now have a Component that may, or may not have a Model parameter assigned in its parameters. And that specific Model parameter can hold some value. And now try explaining this to the app. Just hell to deal with. But hey it works and I am super happy with how it turned out. Thanks to it you can: Add your own parameters . You yourself can make any of available rules for it, all using a pretty simply navigatable UI. Edit current parameters just as easily as you can add parameters, you can also edit any parameters and shape them into your liking. Or.. Delete any parameter you now dislike, or have no interest/use for. The UI scales and renders your parameters all throughout the app, based on what parameters you set up. Filtering Components Once again, from any of the parameters you’ve set up you can use them to filter out specific components, using any kind of parameter you decided to add in. Multi-language support In the app settings you can swap out between English (Default) and Czech. And the language is implemented all accross the app. So much so that even the default parameters will be generated in your selected language. Testing and using You can download the app from the latest release on github for Windows 10/11. There is unfortunately no other way to publish this app, since it’s a native windows app. For more detail follow the guide in the README file....
|
1793004489.6726213
|
1793090889.6726213
|
|
7506
|
The handy pad by @nilaynagh | Stardance
|
nilaynagh
|
1
|
1.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T18:07:41Z", "hours": 1.0, "multiplier": 5.0, "payout": 4, "blessing": "neutral", "text": "I made a macropod called the handypad! The most challenging part was probably designing the PCB since it was my first time. The clean CAD is probably what I am most proud of. Everything you should know is pretty straightforward. the keys are short cuts screen displays an animation and knob is for volume.", "repo": "https://github.com/nilaynagh8-del/HandyPad", "demo": ""}]...
|
[{"post_id": 58278, "ts": "202 [{"post_id": 58278, "ts": "2026-08-30T17:25:45Z", "hours": 0.8872, "text": "Finally finished assembling it. It’s looking great so far"}, {"post_id": 6609, "ts": "2026-06-11T02:40:42Z", "hours": 2.71, "text": "Finished My macropad, I’m about to do sanity check and then it is ready to ship!"}, {"post_id": 5256, "ts": "2026-06-08T23:36:32Z", "hours": 1.7261, "text": "Finished Designing the CAD model. Looking pretty nice so far!"}, {"post_id": 4943, "ts": "2026-06-08T16:00:19Z", "hours": 1.35, "text": "Started making a case in CAD. Finished designing the bottom shell."}, {"post_id": 3722, "ts": "2026-06-06T19:28:05Z", "hours": 0.5642, "text": "Added all the 3d models to the components for 3d viewer and finished designing the PCB. spent an hour sorting out DRC issues."}, {"post_id": 3511, "ts": "2026-06-06T14:18:17Z", "hours": 1.5458, "text": "Removed one switch for better component placement. Finished routing the traces after a while of trying to figure out why I couldn’t draw a trace over another."}, {"post_id": 2925, "ts": "2026-06-05T20:34:47Z", "hours": 0.7267, "text": "I Started designing the PCB. It has 8 switches 1 knob and a screen."}]...
|
Title: The handy pad by @nilaynagh | Stardance
De Title: The handy pad by @nilaynagh | Stardance
Devlogs:
I Started designing the PCB. It has 8 switches 1 knob and a screen.
Removed one switch for better component placement. Finished routing the traces after a while of trying to figure out why I couldn’t draw a trace over another.
Added all the 3d models to the components for 3d viewer and finished designing the PCB. spent an hour sorting out DRC issues.
Started making a case in CAD. Finished designing the bottom shell.
Finished Designing the CAD model. Looking pretty nice so far!
Finished My macropad, I’m about to do sanity check and then it is ready to ship!
Finally finished assembling it. It’s looking great so far
Ships:
I made a macropod called the handypad! The most challenging part was probably designing the PCB since it was my first time. The clean CAD is probably what I am most proud of. Everything you should know is pretty straightforward. the keys are short cuts screen displays an animation and knob is for volume....
|
1792975997.9359574
|
1793062397.9359574
|
|
7511
|
teto by @subhansh | Stardance
|
|
1
|
1.58
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-05T17:40:51Z", "hours": 1.0, "multiplier": 1.19, "payout": 1, "blessing": "neutral", "text": "made a slack bot with 25 commands!", "repo": "https://github.com/subhansh-dev/slack-bot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0B8W5WP5M5"}]...
|
[{"post_id": 5633, "ts": "2026 [{"post_id": 5633, "ts": "2026-06-09T14:39:48Z", "hours": 0.5764, "text": "okaaa shes completet and now responding fine !!!"}, {"post_id": 2421, "ts": "2026-06-04T21:54:00Z", "hours": 0.6633, "text": "wawawa created my first slack-bot meow"}]...
|
Title: teto by @subhansh | Stardance
Devlogs:
waw Title: teto by @subhansh | Stardance
Devlogs:
wawawa created my first slack-bot meow
okaaa shes completet and now responding fine !!!
Ships:
made a slack bot with 25 commands!...
|
1793000918.1582062
|
1793087318.1582062
|
|
7558
|
R2D2 by @Art3mis | Stardance
|
Art3mis
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-24T17:30:36Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "my slackbot is finally live!! r2d2 is up and running after a long time of fighting with nest. this was challenging as a newbie to nest and slack, but i did it! r2d2 has 3 functions, it can tell you the ping latency, show a help menu, and tell you a random fact!", "repo": "https://github.com/artemis9703/R2D2-slackbot", "demo": "https://hackclub.enterprise.slack.com/archives/C08JZ1LF3K5"}]...
|
[{"post_id": 3077, "ts": "2026 [{"post_id": 3077, "ts": "2026-06-05T23:38:27Z", "hours": 0.5211, "text": "today i added two more commands to r2d2, and install the ability to use APIs. r2d2 can now list all the commands you can use, and it can tell you a random fact. tomorrows goal is to start adding some kind of Q&A or roleplay function."}, {"post_id": 2470, "ts": "2026-06-04T23:49:09Z", "hours": 0.3811, "text": "I started my first slackbot and decided to code it as rd2d because clone wars is the best thing ever. Managed to get it up and running, and it can now tell you the ping latency. Got the profile and photo sent up as well."}]...
|
Title: R2D2 by @Art3mis | Stardance
Devlogs:
I st Title: R2D2 by @Art3mis | Stardance
Devlogs:
I started my first slackbot and decided to code it as rd2d because clone wars is the best thing ever. Managed to get it up and running, and it can now tell you the ping latency. Got the profile and photo sent up as well.
today i added two more commands to r2d2, and install the ability to use APIs. r2d2 can now list all the commands you can use, and it can tell you a random fact. tomorrows goal is to start adding some kind of Q&A or roleplay function.
Ships:
my slackbot is finally live!! r2d2 is up and running after a long time of fighting with nest. this was challenging as a newbie to nest and slack, but i did it! r2d2 has 3 functions, it can tell you the ping latency, show a help menu, and tell you a random fact!...
|
1792982880.9353852
|
1793069280.9353852
|
|
7567
|
Printful Preview Generator by @jdszekeres | Starda Printful Preview Generator by @jdszekeres | Stardance...
|
jdszekeres
|
1
|
3.31
|
30
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-06T00:36:53Z", "hours": 3.0, "multiplier": 10.69, "payout": 30, "blessing": "neutral", "text": "I made a Chrome extension that allows you to create embeddable entries for Printable Quick Stores on any other website hosting platform.", "repo": "https://github.com/jdszekeres/printful_preview_generator", "demo": "https://github.com/jdszekeres/printful_preview_generator/releases"}]...
|
[{"post_id": 6251, "ts": "2026 [{"post_id": 6251, "ts": "2026-06-10T14:39:20Z", "hours": 0.3111, "text": "Debbuged an issue where products were not listed in a production environment"}, {"post_id": 3159, "ts": "2026-06-06T00:32:30Z", "hours": 0.5197, "text": "Polishing touches: CSS styling, logo, etc"}, {"post_id": 2936, "ts": "2026-06-05T20:53:05Z", "hours": 1.0892, "text": "Added the ability to preview what the generated HTML looks like before having to download it"}, {"post_id": 2878, "ts": "2026-06-05T19:22:41Z", "hours": 0.2981, "text": "Got the ability to add different product endings to the custom html"}, {"post_id": 2819, "ts": "2026-06-05T17:20:25Z", "hours": 0.99, "text": "I created a content script to pull data from the site and a popup window to read data and display it, although unformatted right now."}]...
|
Title: Printful Preview Generator by @jdszekeres | Title: Printful Preview Generator by @jdszekeres | Stardance
Devlogs:
I created a content script to pull data from the site and a popup window to read data and display it, although unformatted right now.
Got the ability to add different product endings to the custom html
Added the ability to preview what the generated HTML looks like before having to download it
Polishing touches: CSS styling, logo, etc
Debbuged an issue where products were not listed in a production environment
Ships:
I made a Chrome extension that allows you to create embeddable entries for Printable Quick Stores on any other website hosting platform....
|
1792997556.7296848
|
1793083956.7296848
|
|
7569
|
Portfolio Website by @sp09 | Stardance
|
sp09
|
1
|
10.0
|
82
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-22T16:01:13Z", "hours": 10.0, "multiplier": 7.9, "payout": 82, "blessing": "neutral", "text": "I built a personal portfolio website to showcase some of my technical experience and projects with who I am as a person and hobbies. It was made using HTML, CSS, and JavaScript and has a video montage giving glimpses into some important things in my life, animated navigation bar, an experience timeline, projects, my tech stack, and a contacts section. I don’t usually make very nice frontend UI so the biggest challenge for me while making this was to make the site dynamic using static HTML, CSS, and JavaScript. There was a lot of coordinating where the user was in terms of scrolling and making sections pop up. I’m most proud of the project gallery since it’s interactive so anyone viewing it can get more information about projects that interest them while still staying on the website and not being overwhelmed with just pure code. Since this is a static website, to test, you can open index.html directly in your browser or run a local server.", "repo": "https://github.com/SVPandya/PortfolioWeb", "demo": "https://svpandya.github.io/"}]...
|
[{"post_id": 33004, "ts": "202 [{"post_id": 33004, "ts": "2026-07-22T15:22:29Z", "hours": 2.4433, "text": "I added popup cards for each of my projects. They’re all arranged in a grid, but I wanted a way to get more information about each project quickly. It basically adds a popup card when you click on each project that lets you scroll through each image, read a short description, figure out what tools were used, and go to the GitHub repo for even more information."}, {"post_id": 16691, "ts": "2026-06-27T03:53:46Z", "hours": 1.8469, "text": "I did a bunch of little changes in color and theme that I won’t bore you with here but I did have one major update. I finally created a tools/technologies stack that continuously scrolls in two rows. I was actually inspired by how Hack Club has scrolling displays for their prizes on an event homepage."}, {"post_id": 14698, "ts": "2026-06-23T21:56:58Z", "hours": 1.5983, "text": "I finished the about me section of my website! This honestly should’ve been done earlier but I was too lazy. Anyways, it features some personal info about me along with a picture and that’s basically it. I’m thinking of removing my email from there since I have a dedicated contacts section at the very bottom of my page now as well with my email, LinkedIn, and Github. The next and probably final section to add will be tools and technologies."}, {"post_id": 14391, "ts": "2026-06-23T14:39:53Z", "hours": 1.6708, "text": "I know you can’t really see it in the picture but I added transitions to my website. Nothing crazy, just small animations to things pop up sequentially as you scroll down but it really ties the website together. Other than that, I basically just spent a lot of time making very small edits to make the website look just how I want it. There’s also a vignette on the main intro video now so that there isn’t a hard cutoff between the video and the rest of the page. Again, just a transition!"}, {"post_id": 13908, "ts": "2026-06-22T20:06:05Z", "hours": 2.0261, "text": "I’m really happy with how my experience section looks. I have to add in the actual content but in terms of the design I was going for, this fits the rest of my website really well and is super easy to follow. The next part will be adding a small about me section near the top of the website but I got the main “hard” parts out of the way!"}, {"post_id": 11521, "ts": "2026-06-18T20:19:18Z", "hours": 0.4353, "text": "I’m basically done with my intro screen! Sure, there will be some small changes here and there as I make the rest of my website but for the landing screen, I’m really happy with how it looks. The intro text has a little typewriter-like animation to it which doesn’t come across in one screenshot but it’s there! The background also has a video montage playing just showing some of my hobbies. I’m not sure about the color theme just yet but the next part is to add in my about me section and projects."}, {"post_id": 11335, "ts": "2026-06-18T15:24:13Z", "hours": 0.3869, "text": "I began working on my porfolio website! Right now, I have just made the navbar with all the main sections that I want to include later. You can’t see it right now because there isn’t anything else on the page, but I added some random content to make it longer that my window height since I wanted to have a scroll transition. Instead of being a pill shape in the middle, the navbar will transition and spread itself out over the entire window width when it disappears after a scroll. Also, for hovering it just disappears right now because I put arbitrary color variables since I haven’t actually finalized a color theme yet but that will come soon. My next step is going to be to add my home screen with hopefully some cool functionality!"}]...
|
Title: Portfolio Website by @sp09 | Stardance
Dev Title: Portfolio Website by @sp09 | Stardance
Devlogs:
I began working on my porfolio website! Right now, I have just made the navbar with all the main sections that I want to include later. You can’t see it right now because there isn’t anything else on the page, but I added some random content to make it longer that my window height since I wanted to have a scroll transition. Instead of being a pill shape in the middle, the navbar will transition and spread itself out over the entire window width when it disappears after a scroll. Also, for hovering it just disappears right now because I put arbitrary color variables since I haven’t actually finalized a color theme yet but that will come soon. My next step is going to be to add my home screen with hopefully some cool functionality!
I’m basically done with my intro screen! Sure, there will be some small changes here and there as I make the rest of my website but for the landing screen, I’m really happy with how it looks. The intro text has a little typewriter-like animation to it which doesn’t come across in one screenshot but it’s there! The background also has a video montage playing just showing some of my hobbies. I’m not sure about the color theme just yet but the next part is to add in my about me section and projects.
I’m really happy with how my experience section looks. I have to add in the actual content but in terms of the design I was going for, this fits the rest of my website really well and is super easy to follow. The next part will be adding a small about me section near the top of the website but I got the main “hard” parts out of the way!
I know you can’t really see it in the picture but I added transitions to my website. Nothing crazy, just small animations to things pop up sequentially as you scroll down but it really ties the website together. Other than that, I basically just spent a lot of time making very small edits to make the website look just how I want it. There’s also a vignette on the main intro video now so that there isn’t a hard cutoff between the video and the rest of the page. Again, just a transition!
I finished the about me section of my website! This honestly should’ve been done earlier but I was too lazy. Anyways, it features some personal info about me along with a picture and that’s basically it. I’m thinking of removing my email from there since I have a dedicated contacts section at the very bottom of my page now as well with my email, LinkedIn, and Github. The next and probably final section to add will be tools and technologies.
I did a bunch of little changes in color and theme that I won’t bore you with here but I did have one major update. I finally created a tools/technologies stack that continuously scrolls in two rows. I was actually inspired by how Hack Club has scrolling displays for their prizes on an event homepage.
I added popup cards for each of my projects. They’re all arranged in a grid, but I wanted a way to get more information about each project quickly. It basically adds a popup card when you click on each project that lets you scroll through each image, read a short description, figure out what tools were used, and go to the GitHub repo for even more information.
Ships:
I built a personal portfolio website to showcase some of my technical experience and projects with who I am as a person and hobbies. It was made using HTML, CSS, and JavaScript and has a video montage giving glimpses into some important things in my life, animated navigation bar, an experience timeline, projects, my tech stack, and a contacts section. I don’t usually make very nice frontend UI so the biggest challenge for me while making this was to make the site dynamic using static HTML, CSS, and JavaScript. There was a lot of coordinating where the user was in terms of scrolling and making sections pop up. I’m most proud of the project gallery since it’s interactive so anyone viewing it can get more information about projects that interest them while still staying on the website and not being overwhelmed with just pure code. Since this is a static website, to test, you can open index.html directly in your browser or run a local server....
|
1792979555.2431588
|
1793065955.2431588
|
|
7574
|
Kolori by @nikooo | Stardance
|
nikooo
|
1
|
142.69
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T21:34:34Z", "hours": 100.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Kolori is a desktop application that lets you create beautiful pieces of art from mathematical expressions. Kolori features a custom hand-written recursive descent parser to parse mathematical expressions–which it then uses to transpile your input down to low-level shader instructions to render images to the screen on the GPU. Kolori also supports rendering not only images, but animations using the “ t ” variable in the input expression, which grows linearly with time elapsed–the speed at which is adjustable. Kolori offers four coloring modes that can generate different images based on your input: HSL : Uses the HSL color space to generate pixel colors HSLuv : Uses the HSLuv color space, a perceptually uniform alternative to HSL, to generate pixel colors Custom Palette Generation : Input 4 colors of your choosing so Kolori can generate a custom color palette based on them, to determine pixel colors Use an Image : Select an image using your file manager, or just drag and drop one onto the window for Kolori to sample pixel colors from the input image to determine pixel colors. Making this project was a bit of an adventure, as I had never worked with libraries such as ImGui, SDL, and OpenGL before. The biggest challenge when creating the program was managing memory correctly–which makes me appreciate languages like Nim even more–and code organization.", "repo": "https://github.com/neroist/kolori", "demo": "https://github.com/neroist/kolori/releases/latest"}]...
|
[{"post_id": 18957, "ts": "202 [{"post_id": 18957, "ts": "2026-06-30T04:15:45Z", "hours": 3.4697, "text": "Managed to get everything working <3 The main issue was not assigning texture units to the sampler uniforms whenever the shaders were rebuilt 🤦. Either way, the feature works fully now. The rest that’s left before making a release is chasing some bugs that are left: e.g. crashes on Windows on startup and access violation errors when making a screenshot on fullscreen (also specifically on Windows). Below is the Joukowski function, as I briefly mentioned before in the prior devlog."}, {"post_id": 18224, "ts": "2026-06-29T09:17:52Z", "hours": 16.4414, "text": "After much, much longer than I’d like to admit, I finally got “sliced” coloring to work! Naturally we need a better name, but that can wait. A bit on implementation So, for Kolori, we use OpenGL to render scenes on the GPU. Specifically, we target at minimum desktop OpenGL 3.3, and the GLSL shaders are written for GL ES 3.0 (we plan to target WebGL in the future, maybe moving to WebGPU later. Maybe.). We implement the “slices” coloring mode as follows: The user inputs a list of colors We store these colors as a variable-length array (VLA) which can grow dynamically but, instead of giving these values to the GPU as an array, we instead upload the color data onto the GPU as a one-dimensional texture , since GLSL doesnt support VLAs (and I didn’t want to limit the amount of colors one can add). Though, I did still do that inadvertently. Slice colors are managed by color edit widgets. Each widget’s ID (which must be unique) is generated using the index of the slice color it controls, casted to a byte. Thus, the number of colors cannot exceed 256. Something I hope to fix in the future. Also, an interesting note: GLSL for GLES 3.0 doesn’t support the sampler1D type (which literally represents a 1D texture), so one would have to use the type that represents a 2D texture, but set the height of the texture to 1, to emulate the same behavior and structure. This means that there are now two textures we handle in the shaders: the image texture that holds a user-uploaded image for the “Use an Image” coloring mode, and the slices texture that holds the selected colors for the “(Pizza) Slices” coloring mode. OK, but why’d you take so long? The major obstacle that was ran into was texture data mix-up: the data for the image texture would always overwrite the data for the slices texture, and it would even seem that the two textures were pointing to the same data, even though I assigned separate texture units to each one, and made sure to set the active texture each time before binding textures. OK, can I see it? See the demo below :) They don’t really start to look like “pizza slices” until you have 5+ slices. There are some really interesting graphs you can create using this, such as the graph of the Joukowski function , defined as: f(z)=(z+1/z)/2 (unfortunately not pictured below)."}, {"post_id": 16041, "ts": "2026-06-26T02:00:22Z", "hours": 22.7831, "text": "Progress on 0.4.0 Mainly, two new features/fixes: AppImage builds for Linux (we may add .deb files in releases in the future aswell) Image aspect ratio persistence AppImage builds In past releases, only an executable was published for Linux platforms. This is not a proper solution for distribution–different Linux systems may differ in ABI, available shared libraries, and packages. For instance, on WSL in my Windows machine, SDL3 is not available in the default repository, leaving me unable to build or even run the application. AppImage builds bundle the executable and everything needed for running the application into one file–perfect for distributing. “One app = one file”, or whatever those nerds say. To run on a Linux system, users will only need to do the following: Give the .AppImage file executable permissions Run the app! Its that easy. Image aspect ratio persistence Before, when you put in an image, it would be squished down into a square, distorting the image along its longest dimension. For images with a 1:1 aspect ratio, this is fine. For other images? Not so fine. We now apply proper scaling in the vertex shader pass to textures so that image aspect ratio is preserved in the canvas. Future changes Expect a new coloring mode: “Slices” . This will split the canvas into a number of “slices”–similar to how the four quadrants of the cartesian plane split it up into four slices itself"}, {"post_id": 11476, "ts": "2026-06-18T19:13:22Z", "hours": 5.6697, "text": "I’ve finally added image coloring to Kolori! Kolori can now take an image as input, by either selecting a image file using a native file dialog or dragging and dropping a image onto the window! The image below was created using the feature–using one of the gallery images as the input image. The hard part about this was, not actually loading the image file, reading the pixel data, uploading that into the GPU, and rendering it, but instead managing the file dialog by which a user can upload an image into the application. We use SDL3 for windowing and make use of the SDL_ShowOpenFileDialog function to, well, show an open file dialog. I initially put all of the image loading and OpenGL calls into the dialog callback, but something strange happened then. All of my OpenGL calls were triggering an GL_INVALID_OPERATION error–and specifically on Windows–but why? All of my OpenGL calls were fine, no invalid arguments passed in (or in the wrong order), so everything should’ve been fine. The answer lies in the SDL_ShowOpenFileDialog and how OpenGL works with multiple threads. SDL_ShowOpenFileDialog is an asynchronous function–it will return immediately, and the result of the dialog will be passed on to the callback. However, the callback function may be called on a different thread depending on the operating system, which explains the difference in effect on Windows, and the GL_INVALID_OPERATION errors were caused by the absence of an active OpenGL context on the new thread. SDL3 does not provide an API for setting the current thread’s OpenGL context, so I had to cope. I moved most of the business logic out of the callback function, only keeping the image loading logic, and instead performed the texture uploading into the UI rendering logic, where we check if there is any new image data that happened to be uploaded, upload the data onto the GPU as a texture and show it on screen."}, {"post_id": 11058, "ts": "2026-06-18T02:57:25Z", "hours": 13.5519, "text": "Bumped version from 0.1.0 to 0.2.0! See it here: https://github.com/neroist/kolori/releases/tag/0.2.0 . Some interesting changes are that there is now a VSync toggle + a frame rate slider with support for unlimited frame rate (as much as your GPU can handle), build system improvements–so that Kolori is one make release away on all platforms that have make , and the UI is now DPI-aware and will scale based on the monitor’s DPI (we do not change scaling however if the monitor were to change–something to fix in a future release). We also changed our color input sliders to display RGB colors in their integral components from 0 to 255–what you would expect, rather than a decimal display. See it below!"}, {"post_id": 10217, "ts": "2026-06-16T20:45:34Z", "hours": 5.3461, "text": "Wrote a full-length devlog about a core feature of Kolori and its implementation, but it got deleted for being “too long”. Lets try again then, with a piece that only demands a bit of your time. Kolori offers users three (at the moment) coloring modes: HSL, HSLuv, and custom palette generation. How do these work? Custom palette generation Unlike HSL and HSLuv, using a custom palette to color the complex plane is much more simple. Kolori lets the user input four arbitrary RGB colors. We then use Inigo Quilez’s cosine-based formula for procedural palette generation to determine the color of a pixel. An article of his that describes it is here: https://iquilezles.org/articles/palettes/ . The shader code that does it all: // From https://iquilezles.org/articles/palettes/ vec4 palette ( float t , vec3 a , vec3 b , vec3 c , vec3 d ) { return vec4 ( a + b * cos ( TAU * ( c * t + d )), 1 ); } Our a , b , c , and d are the colors the user has selected, and t is an input variable to vary. However, one would notice that t is a scalar, while we work in the complex numbers. How would we map the plane onto the real line in order to get a valid t to input into palette ? The answer we chose is simple: we take the projection onto the real axis–i.e. just taking the real part of the complex number This is an answer that a user would expect and is pointed out in the user guide. Furthermore, by not choosing ahead of time for the user, we allow the user to exert more control over what they wish to generate."}, {"post_id": 9714, "ts": "2026-06-16T04:10:17Z", "hours": 12.3725, "text": "Was preparing for first our ship, but then discovered that my application was leaking memory–badly. Memory usage would climb by a gigabyte in <2 minutes. Worse than any browser you’ve ever seen. To start, I use Odin, which has a tracking allocator that lets you see where you didn’t free up memory, or perhaps made bad frees. On program exit, it prints out how many bytes you leaked, and where you made the allocations. I had been using this allocator, and it had not reported anything . Furthermore, upon, admittedly, a very cursory look into my code, I couldn’t find anything that would’ve caused any leaks either–all allocations were eventually freed: whether that be manually or via Odin’s temporary allocator (a really nice feature of the language). LSan hadn’t pointed out anything, and Valgrind didn’t report anything scary, only ~200KiB of memory usage. I had even patched myself a custom allocator, which would print to stdout whenever an allocation was made with it, and I saw nothing concerning at all . Only small allocations were made which were, again, eventually freed. My application uses SDL3 for windowing and ImGui for GUI, so perhaps one of those has a memory leak in it? I’m not sure. For such a large library, I doubt that’s the case. Though, when running valgrind with --leak-check=full --show-leak-kinds=all I did keep seeing SDL pop up, but it didn’t report any outright leaks. Upon researching potential external sources for this memory leak, I found https://github.com/libsdl-org/SDL/issues/15192 , which describes my issue exactly. It seems that there is no memory leak in SDL, ImGui, or whatever I’m doing, but instead a driver issue, which is interesting. The example that was given to reproduce the leak is quite minimal, so I wonder how that got past their testing. Furthermore, if this is indeed a driver-level issue, why is it that no other applications running on this device leak memory this egregiously? In any case, the leak is not my fault, and out of my hands."}, {"post_id": 8767, "ts": "2026-06-14T16:04:51Z", "hours": 3.8556, "text": "Learned how cool rubberducking is. I was having a problem fixing a bug with the parser (as described below), and I went to write a devlog about it. As I was describing the bug, I immediately had an idea about how to fix it, and lo and behold, it worked. The original post was going to be as follows: Fixed a bug where trailing input after the parser successfully completes is not disallowed. This most commonly occurs, as I’ve found, after the use of a comma character. The parser simply does not see it, and instead only parses the expression it sees before it. Internally, a comma character is used to delimit function arguments, so this kind of behavior is not totally useless. However, for situations like picrel, it just seems strange. doesn’t it? This usually would be an easy bug to fix. We currently use a recursive descent parser (considering moving to a pratt parser) for parsing mathematical expression. All that honestly would’ve needed to be done was adding a check at the procedure that parses the top level grammar rule: “OK, are we at the end of our input? We should be. If not, return an error.” (Here, I realized that if we literally call this procedure while parsing function calls, it really isn’t too wise to immediately ask “are we done yet?” if we very much aren’t done yet. I then added the check into a procedure that isn’t called by the parser and we should definitely be done by the time that check is ran.)"}, {"post_id": 7892, "ts": "2026-06-13T05:13:05Z", "hours": 13.1858, "text": "(excuse the amount of time, i’m doing general refactors + debugging as well as working on other features) Implemented adjusting the gamma correction amount. Normally, with the gamma correction, areas close to zero would appear black, and areas that have large magnitudes would appear white. However, you might not always want this, and instead would prefer only pure hue . Set the gamma correction amount to zero to reduce the amount that colors’ lightness values are altered. An example is shown where we use this feature to produce a colorful, moving spiral. Note that when gamma correction is not zero, as demonstrated, the effect does not work as well."}, {"post_id": 7005, "ts": "2026-06-11T19:13:46Z", "hours": 32.8386, "text": "The project has come a long way (see the 30 hours of work that went into this). We now support: arbitrary function input on-the-fly graphing and error checking a “t” time variable, allowing you to animate graphs being able to speed up, slow down, and pause animations screenshots (not imaged below) zoom in/out panning As well as being multiplatform for both Linux and Windows (you can go build and run this, right now ). What to expect: the ability to change coloring method (hsl, hsluv, palette generation) the ability to use an image for coloring WASM web builds coordinate inspector to see where exactly in the complex plane you are Check it out on github: https://github.com/neroist/kolori"}, {"post_id": 3571, "ts": "2026-06-06T15:51:37Z", "hours": 12.8247, "text": "Finally! SDL3 & the GPU shaders are working. FWIW – this is the graph of f(z)=z, the identity transformation. I will make a devlog on how these images are generated later."}]...
|
Title: Kolori by @nikooo | Stardance
Devlogs:
Fin Title: Kolori by @nikooo | Stardance
Devlogs:
Finally! SDL3 & the GPU shaders are working. FWIW – this is the graph of f(z)=z, the identity transformation. I will make a devlog on how these images are generated later.
The project has come a long way (see the 30 hours of work that went into this). We now support: arbitrary function input on-the-fly graphing and error checking a “t” time variable, allowing you to animate graphs being able to speed up, slow down, and pause animations screenshots (not imaged below) zoom in/out panning As well as being multiplatform for both Linux and Windows (you can go build and run this, right now ). What to expect: the ability to change coloring method (hsl, hsluv, palette generation) the ability to use an image for coloring WASM web builds coordinate inspector to see where exactly in the complex plane you are Check it out on github: https://github.com/neroist/kolori
(excuse the amount of time, i’m doing general refactors + debugging as well as working on other features) Implemented adjusting the gamma correction amount. Normally, with the gamma correction, areas close to zero would appear black, and areas that have large magnitudes would appear white. However, you might not always want this, and instead would prefer only pure hue . Set the gamma correction amount to zero to reduce the amount that colors’ lightness values are altered. An example is shown where we use this feature to produce a colorful, moving spiral. Note that when gamma correction is not zero, as demonstrated, the effect does not work as well.
Learned how cool rubberducking is. I was having a problem fixing a bug with the parser (as described below), and I went to write a devlog about it. As I was describing the bug, I immediately had an idea about how to fix it, and lo and behold, it worked. The original post was going to be as follows: Fixed a bug where trailing input after the parser successfully completes is not disallowed. This most commonly occurs, as I’ve found, after the use of a comma character. The parser simply does not see it, and instead only parses the expression it sees before it. Internally, a comma character is used to delimit function arguments, so this kind of behavior is not totally useless. However, for situations like picrel, it just seems strange. doesn’t it? This usually would be an easy bug to fix. We currently use a recursive descent parser (considering moving to a pratt parser) for parsing mathematical expression. All that honestly would’ve needed to be done was adding a check at the procedure that parses the top level grammar rule: “OK, are we at the end of our input? We should be. If not, return an error.” (Here, I realized that if we literally call this procedure while parsing function calls, it really isn’t too wise to immediately ask “are we done yet?” if we very much aren’t done yet. I then added the check into a procedure that isn’t called by the parser and we should definitely be done by the time that check is ran.)
Was preparing for first our ship, but then discovered that my application was leaking memory–badly. Memory usage would climb by a gigabyte in <2 minutes. Worse than any browser you’ve ever seen. To start, I use Odin, which has a tracking allocator that lets you see where you didn’t free up memory, or perhaps made bad frees. On program exit, it prints out how many bytes you leaked, and where you made the allocations. I had been using this allocator, and it had not reported anything . Furthermore, upon, admittedly, a very cursory look into my code, I couldn’t find anything that would’ve caused any leaks either–all allocations were eventually freed: whether that be manually or via Odin’s temporary allocator (a really nice feature of the language). LSan hadn’t pointed out anything, and Valgrind didn’t report anything scary, only ~200KiB of memory usage. I had even patched myself a custom allocator, which would print to stdout whenever an allocation was made with it, and I saw nothing concerning at all . Only small allocations were made which were, again, eventually freed. My application uses SDL3 for windowing and ImGui for GUI, so perhaps one of those has a memory leak in it? I’m not sure. For such a large library, I doubt that’s the case. Though, when running valgrind with --leak-check=full --show-leak-kinds=all I did keep seeing SDL pop up, but it didn’t report any outright leaks. Upon researching potential external sources for this memory leak, I found https://github.com/libsdl-org/SDL/issues/15192 , which describes my issue exactly. It seems that there is no memory leak in SDL, ImGui, or whatever I’m doing, but instead a driver issue, which is interesting. The example that was given to reproduce the leak is quite minimal, so I wonder how that got past their testing. Furthermore, if this is indeed a driver-level issue, why is it that no other applications running on this device leak memory this egregiously? In any case, the leak is not my fault, and out of my hands.
Wrote a full-length devlog about a core feature of Kolori and its implementation, but it got deleted for being “too long”. Lets try again then, with a piece that only demands a bit of your time. Kolori offers users three (at the moment) coloring modes: HSL, HSLuv, and custom palette generation. How do these work? Custom palette generation Unlike HSL and HSLuv, using a custom palette to color the complex plane is much more simple. Kolori lets the user input four arbitrary RGB colors. We then use Inigo Quilez’s cosine-based formula for procedural palette generation to determine the color of a pixel. An article of his that describes it is here: https://iquilezles.org/articles/palettes/ . The shader code that does it all: // From https://iquilezles.org/articles/palettes/ vec4 palette ( float t , vec3 a , vec3 b , vec3 c , vec3 d ) { return vec4 ( a + b * cos ( TAU * ( c * t + d )), 1 ); } Our a , b , c , and d are the colors the user has selected, and t is an input variable to vary. However, one would notice that t is a scalar, while we work in the complex numbers. How would we map the plane onto the real line in order to get a valid t to input into palette ? The answer we chose is simple: we take the projection onto the real axis–i.e. just taking the real part of the complex number This is an answer that a user would expect and is pointed out in the user guide. Furthermore, by not choosing ahead of time for the user, we allow the user to exert more control over what they wish to generate.
Bumped version from 0.1.0 to 0.2.0! See it here: https://github.com/neroist/kolori/releases/tag/0.2.0 . Some interesting changes are that there is now a VSync toggle + a frame rate slider with support for unlimited frame rate (as much as your GPU can handle), build system improvements–so that Kolori is one make release away on all platforms that have make , and the UI is now DPI-aware and will scale based on the monitor’s DPI (we do not change scaling however if the monitor were to change–something to fix in a future release). We also changed our color input sliders to display RGB colors in their integral components from 0 to 255–what you would expect, rather than a decimal display. See it below!
I’ve finally added image coloring to Kolori! Kolori can now take an image as input, by either selecting a image file using a native file dialog or dragging and dropping a image onto the window! The image below was created using the feature–using one of the gallery images as the input image. The hard part about this was, not actually loading the image file, reading the pixel data, uploading that into the GPU, and rendering it, but instead managing the file dialog by which a user can upload an image into the application. We use SDL3 for windowing and make use of the SDL_ShowOpenFileDialog function to, well, show an open file dialog. I initially put all of the image loading and OpenGL calls into the dialog callback, but something strange happened then. All of my OpenGL calls were triggering an GL_INVALID_OPERATION error–and specifically on Windows–but why? All of my OpenGL calls were fine, no invalid arguments passed in (or in the wrong order), so everything should’ve been fine. The answer lies in the SDL_ShowOpenFileDialog and how OpenGL works with multiple threads. SDL_ShowOpenFileDialog is an asynchronous function–it will return immediately, and the result of the dialog will be passed on to the callback. However, the callback function may be called on a different thread depending on the operating system, which explains the difference in effect on Windows, and the GL_INVALID_OPERATION errors were caused by the absence of an active OpenGL context on the new thread. SDL3 does not provide an API for setting the current thread’s OpenGL context, so I had to cope. I moved most of the business logic out of the callback function, only keeping the image loading logic, and instead performed the texture uploading into the UI rendering logic, where we check if there is any new image data that happened to be uploaded, upload the data onto the GPU as a texture and show it on screen.
Progress on 0.4.0 Mainly, two new features/fixes: AppImage builds for Linux (we may add .deb files in releases in the future aswell) Image aspect ratio persistence AppImage builds In past releases, only an executable was published for Linux platforms. This is not a proper solution for distribution–different Linux systems may differ in ABI, available shared libraries, and packages. For instance, on WSL in my Windows machine, SDL3 is not available in the default repository, leaving me unable to build or even run the application. AppImage builds bundle the executable and everything needed for running the application into one file–perfect for distributing. “One app = one file”, or whatever those nerds say. To run on a Linux system, users will only need to do the following: Give the .AppImage file executable permissions Run the app! Its that easy. Image aspect ratio persistence Before, when you put in an image, it would be squished down into a square, distorting the image along its longest dimension. For images with a 1:1 aspect ratio, this is fine. For other images? Not so fine. We now apply proper scaling in the vertex shader pass to textures so that image aspect ratio is preserved in the canvas. Future changes Expect a new coloring mode: “Slices” . This will split the canvas into a number of “slices”–similar to how the four quadrants of the cartesian plane split it up into four slices itself
After much, much longer than I’d like to admit, I finally got “sliced” coloring to work! Naturally we need a better name, but that can wait. A bit on implementation So, for Kolori, we use OpenGL to render scenes on the GPU. Specifically, we target at minimum desktop OpenGL 3.3, and the GLSL shaders are written for GL ES 3.0 (we plan to target WebGL in the future, maybe moving to WebGPU later. Maybe.). We implement the “slices” coloring mode as follows: The user inputs a list of colors We store these colors as a variable-length array (VLA) which can grow dynamically but, instead of giving these values to the GPU as an array, we instead upload the color data onto the GPU as a one-dimensional texture , since GLSL doesnt support VLAs (and I didn’t want to limit the amount of colors one can add). Though, I did still do that inadvertently. Slice colors are managed by color edit widgets. Each widget’s ID (which must be unique) is generated using the index of the slice color it controls, casted to a byte. Thus, the number of colors cannot exceed 256. Something I hope to fix in the future. Also, an interesting note: GLSL for GLES 3.0 doesn’t support the sampler1D type (which literally represents a 1D texture), so one would have to use the type that represents a 2D texture, but set the height of the texture to 1, to emulate the same behavior and structure. This means that there are now two textures we handle in the shaders: the image texture that holds a user-uploaded image for the “Use an Image” coloring mode, and the slices texture that holds the selected colors for the “(Pizza) Slices” coloring mode. OK, but why’d you take so long? The major obstacle that was ran into was texture data mix-up: the data for the image texture would always overwrite the data for the slices texture, and it would even seem that the two textures were pointing to the same data, even though I assigned separate texture units to each one, and made sure to set the active texture each time before binding textures. OK, can I see it? See the demo below :) They don’t really start to look like “pizza slices” until you have 5+ slices. There are some really interesting graphs you can create using this, such as the graph of the Joukowski function , defined as: f(z)=(z+1/z)/2 (unfortunately not pictured below).
Managed to get everything working <3 The main issue was not assigning texture units to the sampler uniforms whenever the shaders were rebuilt 🤦. Either way, the feature works fully now. The rest that’s left before making a release is chasing some bugs that are left: e.g. crashes on Windows on startup and access violation errors when making a screenshot on fullscreen (also specifically on Windows). Below is the Joukowski function, as I briefly mentioned before in the prior devlog.
Ships:
Kolori is a desktop application that lets you create beautiful pieces of art from mathematical expressions. Kolori features a custom hand-written recursive descent parser to parse mathematical expressions–which it then uses to transpile your input down to low-level shader instructions to render images to the screen on the GPU. Kolori also supports rendering not only images, but animations using the “ t ” variable in the input expression, which grows linearly with time elapsed–the speed at which is adjustable. Kolori offers four coloring modes that can generate different images based on your input: HSL : Uses the HSL color space to generate pixel colors HSLuv : Uses the HSLuv color space, a perceptually uniform alternative to HSL, to generate pixel colors Custom Palette Generation : Input 4 colors of your choosing so Kolori can generate a custom color palette based on them, to determine pixel colors Use an Image : Select an image using your file manager, or just drag and drop one onto the window for Kolori to sample pixel colors from the input image to determine pixel colors. Making this project was a bit of an adventure, as I had never worked with libraries such as ImGui, SDL, and OpenGL before. The biggest challenge when creating the program was managing memory correctly–which makes me appreciate languages like Nim even more–and code organization....
|
1792983191.248482
|
1793069591.248482
|
|
7577
|
Sonora Music by @Samuel-Dingle | Stardance
|
Samuel-Dingle
|
1
|
15.0
|
112
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-21T01:34:20Z", "hours": 15.0, "multiplier": 7.41, "payout": 112, "blessing": "neutral", "text": "I built a macOS native music app called Sonora Music. It is designed to be a simple music player for local files. It uses Apple’s own AV Frameworks in order to be lightweight. The main thing I found challenging at the start was configuring all of the rust code to get actual audio playback. After some reading and a bit of help from AI, I was able to get a basic player, from which I scaled up with Shuffle, Repeat, a working playbar that supports scrubbing, and a queue system. To try out the project, just click the try project button and download the latest release from github. I have included 2 songs to test the app with!", "repo": "https://github.com/TheApparition1/Sonora-Music", "demo": "https://github.com/TheApparition1/Sonora-Music/releases"}]...
|
[{"post_id": 71504, "ts": "202 [{"post_id": 71504, "ts": "2026-09-20T23:07:40Z", "hours": 1.9058, "text": "Devlog 7 - Sonora Music I decided that with so little time left with Stardance, it wasn’t worth migrating to a new audio engine, especially with all the testing that would have to be done. I ended up deciding to just clean up the app, fix some small errors and making general fixes here and there. Here’s a short list of some bugs I fixed: Fixed a loud bang when spamming skip or closing the app with media playing The app being unable to select directories with only one file Broken UI theme selection Other than that, I’ve just spent time on rewording the readme and making the DMG background and App logo to prepare for shipping the app. Of course in typical developer logic, the build command just has to break, only for me to spend time debugging a missing image file."}, {"post_id": 52821, "ts": "2026-08-23T05:24:42Z", "hours": 2.95, "text": "Devlog 6 - Sonora Music So I left this project alone for a while to focus on other things, but i’m back! I ended up fixing a few bugs here and there, and removing 2 themes I thought didn’t look great. I also added a fallback for that, so if you were using Sonora with that theme, and updated, your app won’t break. I fixed a few memory leaks, mostly because I fell victim to a bunch of them while writing code and testing things. From what I can tell, it was because AVAudioPlayer wasn’t properly releasing itself. This meant that more instances accumulated over time, eating up more RAM and CPU. I also did some visual polishing, by cleaning up unnecessary icons I added, and also just making the UI more refined. I pinned the playbar and controls to the bottom of the screen so that you can always see the controls, and fixed the broken color swatches for the themes so you can see what you are applying. I’m getting close to being ready to ship this project, all I really have left to do is to decide if migrating to AVAudioEngine is worth it as it is an extremely intensive task, and will require lots of tedious work and debugging. The other thing I’ll consider is writing a windows build in Symphonia or some other thing so that this can be cross platform. The main reason I am migrating is so that I can have more refined control of the signal chain and DSP (The chain that your audio passes through and how it is modified, say for an EQ). AVAudioPlayer is designed to just play audio easily, where I want more control and be able to implement the ability to add EQ down the line to further enhance the experience. Hopefully the migration goes well, and I should be able to ship in the next week or two."}, {"post_id": 22506, "ts": "2026-07-05T00:38:03Z", "hours": 4.9175, "text": "Sonora Music – Pain Edition After a week of absolute debugging hell, I finally located and fixed an issue that prevented audio from playing entirely. That took up most of my week, and I also forgot to reinstall Wakatime after I reset my laptop and lost 2-3 hrs there :( While I was at it, I also added Shuffle and Repeat functionality, making the player a bit nicer to use. I’m currently experimenting with a few UI prototypes because I’d really like to add proper playlist creation and management in the future. In terms of releases, I uploaded the first version to GitHub, then realised I built my backup one that didn’t have shuffle and repeat, or the customisation. After uploading the correct build, my next steps are just to update the Sonora Website (another Stardance project ofc) Here’s what I want to tackle next: Migrate the audio system to AVAudioEngine so I can implement more advanced audio features. Add a 3-band EQ (This is why I need to migrate over to AVAudioEngine, as my current AVF Framework doesn’t have support for these types of things or DSP in general). Implement a proper library and playlist view. Create a few custom themes which are similar to the current palette. Add a dedicated Settings page for things like themes, EQ controls, and other app parameters to keep the main UI less cluttered. Overall, this update was mostly focused on bug fixes and polishing. Aside from the features above, I also designed a custom application logo and branded the DMG installer with a custom Sonora Music background, replacing the plain white installer window with something that actually matches the application’s style. Hopefully, the next devlog is a little less about debugging and a little more about adding new features. Maybe? Please???"}, {"post_id": 12851, "ts": "2026-06-21T01:30:51Z", "hours": 1.2872, "text": "I was able to add a working play bar to the app and got the controls to work so that you are now able to skip forward and back songs. I now want to remove that scroll bar on the side and pin the play controls to the bottom of the screen."}, {"post_id": 12428, "ts": "2026-06-20T08:53:34Z", "hours": 0.7778, "text": "So I decided to pivot the whole application to be macOS native by using AVFoundation for Audio. I had too many issues with rodio which is used with rust. While this means it is only for macOS users, it does mean that I can focus on creating for only one OS, and I can develop easier and better. After implementing AVFoundation I am able to select a song using the UI I developed earlier, and then play the song. The next step is to add player controls and a time bar, and work on adding a shuffle feature."}, {"post_id": 12396, "ts": "2026-06-20T07:11:11Z", "hours": 0.4494, "text": "I added logic to select a folder for music and have it list the songs in the folder! I’m now going to add the ability to play music back"}, {"post_id": 11065, "ts": "2026-06-18T03:15:52Z", "hours": 2.8081, "text": "I added the main UI as a mockup. This is only the first page, the player window. Eventually I will add a few more pages and only after will I write the logic to play music."}]...
|
Title: Sonora Music by @Samuel-Dingle | Stardance
Title: Sonora Music by @Samuel-Dingle | Stardance
Devlogs:
I added the main UI as a mockup. This is only the first page, the player window. Eventually I will add a few more pages and only after will I write the logic to play music.
I added logic to select a folder for music and have it list the songs in the folder! I’m now going to add the ability to play music back
So I decided to pivot the whole application to be macOS native by using AVFoundation for Audio. I had too many issues with rodio which is used with rust. While this means it is only for macOS users, it does mean that I can focus on creating for only one OS, and I can develop easier and better. After implementing AVFoundation I am able to select a song using the UI I developed earlier, and then play the song. The next step is to add player controls and a time bar, and work on adding a shuffle feature.
I was able to add a working play bar to the app and got the controls to work so that you are now able to skip forward and back songs. I now want to remove that scroll bar on the side and pin the play controls to the bottom of the screen.
Sonora Music – Pain Edition After a week of absolute debugging hell, I finally located and fixed an issue that prevented audio from playing entirely. That took up most of my week, and I also forgot to reinstall Wakatime after I reset my laptop and lost 2-3 hrs there :( While I was at it, I also added Shuffle and Repeat functionality, making the player a bit nicer to use. I’m currently experimenting with a few UI prototypes because I’d really like to add proper playlist creation and management in the future. In terms of releases, I uploaded the first version to GitHub, then realised I built my backup one that didn’t have shuffle and repeat, or the customisation. After uploading the correct build, my next steps are just to update the Sonora Website (another Stardance project ofc) Here’s what I want to tackle next: Migrate the audio system to AVAudioEngine so I can implement more advanced audio features. Add a 3-band EQ (This is why I need to migrate over to AVAudioEngine, as my current AVF Framework doesn’t have support for these types of things or DSP in general). Implement a proper library and playlist view. Create a few custom themes which are similar to the current palette. Add a dedicated Settings page for things like themes, EQ controls, and other app parameters to keep the main UI less cluttered. Overall, this update was mostly focused on bug fixes and polishing. Aside from the features above, I also designed a custom application logo and branded the DMG installer with a custom Sonora Music background, replacing the plain white installer window with something that actually matches the application’s style. Hopefully, the next devlog is a little less about debugging and a little more about adding new features. Maybe? Please???
Devlog 6 - Sonora Music So I left this project alone for a while to focus on other things, but i’m back! I ended up fixing a few bugs here and there, and removing 2 themes I thought didn’t look great. I also added a fallback for that, so if you were using Sonora with that theme, and updated, your app won’t break. I fixed a few memory leaks, mostly because I fell victim to a bunch of them while writing code and testing things. From what I can tell, it was because AVAudioPlayer wasn’t properly releasing itself. This meant that more instances accumulated over time, eating up more RAM and CPU. I also did some visual polishing, by cleaning up unnecessary icons I added, and also just making the UI more refined. I pinned the playbar and controls to the bottom of the screen so that you can always see the controls, and fixed the broken color swatches for the themes so you can see what you are applying. I’m getting close to being ready to ship this project, all I really have left to do is to decide if migrating to AVAudioEngine is worth it as it is an extremely intensive task, and will require lots of tedious work and debugging. The other thing I’ll consider is writing a windows build in Symphonia or some other thing so that this can be cross platform. The main reason I am migrating is so that I can have more refined control of the signal chain and DSP (The chain that your audio passes through and how it is modified, say for an EQ). AVAudioPlayer is designed to just play audio easily, where I want more control and be able to implement the ability to add EQ down the line to further enhance the experience. Hopefully the migration goes well, and I should be able to ship in the next week or two.
Devlog 7 - Sonora Music I decided that with so little time left with Stardance, it wasn’t worth migrating to a new audio engine, especially with all the testing that would have to be done. I ended up deciding to just clean up the app, fix some small errors and making general fixes here and there. Here’s a short list of some bugs I fixed: Fixed a loud bang when spamming skip or closing the app with media playing The app being unable to select directories with only one file Broken UI theme selection Other than that, I’ve just spent time on rewording the readme and making the DMG background and App logo to prepare for shipping the app. Of course in typical developer logic, the build command just has to break, only for me to spend time debugging a missing image file.
Ships:
I built a macOS native music app called Sonora Music. It is designed to be a simple music player for local files. It uses Apple’s own AV Frameworks in order to be lightweight. The main thing I found challenging at the start was configuring all of the rust code to get actual audio playback. After some reading and a bit of help from AI, I was able to get a basic player, from which I scaled up with Shuffle, Repeat, a working playbar that supports scrubbing, and a queue system. To try out the project, just click the try project button and download the latest release from github. I have included 2 songs to test the app with!...
|
1793004515.523585
|
1793090915.523585
|
|
7586
|
Python Examples by @Vedant_Daga | Stardance
|
Vedant_Daga
|
1
|
13.0
|
182
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T19:47:44Z", "hours": 13.0, "multiplier": 14.37, "payout": 182, "blessing": "neutral", "text": "## Learn Python, an interactive course that runs in your browser ### What I made A full beginner Python course that runs in the browser, no downloads or setup. 28 lessons across 7 units, from your first program up to 2D lists. Each lesson has the concept, a runnable code example, two practice tasks, a quiz, and a mini project. Theres a built in editor running real Python, accounts that save your progress, and AI that checks your practice code and gives real feedback. ### What was challenging The AI grading. I didnt want my API key in the browser, so I moved it to a Supabase function that keeps it server side, then added rate limiting and caching so nobody could spam it or run up my bill. The free preview was tricky too. Progress and AI grading need a logged in user, so I had to split which features work signed out (reading, running code, quizzes) vs signed in (save and AI check) without breaking anything. ### What Im proud of Im proud that this feels like a real product, not a school project. Code runs in the browser with no server, the AI feedback is actually helpful, and anyone can try it in like 10 seconds. ### How to test it Just click the Try Project Button 1. The first two lessons are free, no account. Read one, write Python in the editor and hit run, take the quiz. 2. Want the rest? Make a free account (any email). That unlocks all 28 lessons and the AI feedback. 3. For the AI grading, go to a practice task, write your code, and hit Check. No cloning or commands needed, it all works on the live site. Thanks for checking it out!!! FYI: I'm only asking for an email to make sure that my API bill doesn't get out of hand because I don't want bots, hence email protection, your data is safe don't worry Image is of the AI Feedback and the in-built code editor", "repo": "https://github.com/DagaVedant/Python-Examples", "demo": "https://dagavedant.github.io/Python-Examples/"}]...
|
[{"post_id": 11270, "ts": "202 [{"post_id": 11270, "ts": "2026-06-18T13:02:52Z", "hours": 0.0, "text": "so signups were just breaking with “email rate limit exceeded” and i couldn’t figure out why for a bit. turns out supabase sends a confirmation email every single time someone signs up, and the free email thing only lets you send like2 an hour. so once a couple people tried it, it was dead for everyone else lol. for now i just turned off the email confirmation so accounts get made right away with no email, and made it drop you straight into the course after. gonna hookup a real SMTP (probably resend) later so i can turn verification back on without it blowing up again."}, {"post_id": 10756, "ts": "2026-06-17T17:26:31Z", "hours": 0.0, "text": "just figured out why “create account” wasn’t working….turns out we needed a proper signup page instead of jamming everything into login. built a new dedicated page and made sure that the demo goes to the signUP page"}, {"post_id": 10091, "ts": "2026-06-16T17:55:15Z", "hours": 0.0, "text": "Devlog: getting ready to ship Spent this session getting everything ready to ship. Turns out “it works on my machine” and “a random person can actually try it” are super different things lol. Free preview so people can actually try it Biggest problem was the whole site was locked behind a login. If someone clicked the link they just hit a sign in wall, which is basically the fastest way to make people leave. So I made the first two lessons (Unit 1 lesson 1 and 1.2) totally free, no account needed. Now if your signed out: The homepage loads like normal instead of throwing you to the login page The free lessons open up so you can read them, run real Python in the browser, and take the quiz Every other lesson has a little lock icon and sends you to login Save and Check still ask you to sign in since those need an account (progress and the AI grading are tied to your user) Best part is running code and the quizzes already worked without an account, so the free preview actually feels real and not just a teaser. Pretty happy with how that turned out. Lock icons on the homepage Added some logic so signed out people see a lock on the lessons they cant open yet, plus a “Free preview, sign in to unlock all lessons” message at the top. The free ones keep the normal arrow so its obvious which ones you can actually click. Fixed the README My old README was kinda lying at this point lol. It said “no server needed” and “all your data stays locally” which used to be true but isnt anymore now that I got Supabase doing accounts, progress syncing, and AI grading. So I rewrote the whole thing to actually match what the project does, threw the live demo link right at the top, and explained how the free preview works. What I checked Made sure my OpenAI key never got committed (its gitignored and the grading function reads it server side only) Tested the signed out flow in an incognito window so I could see exactly what a new visitor sees Feeling really good about where its at now. Basically just doing one last check over everything before I actually ship it!!!"}, {"post_id": 6837, "ts": "2026-06-11T13:59:38Z", "hours": 3.0, "text": "Deleted 24,000 Lines, Added a Python IDE, and Made AI Grade Your Code Big update. Since last time, the site went from 27 copy-pasted lesson pages to one dynamic page , got a real Python editor that runs in the browser , and now has an AI that checks your practice answers and gives you hints . The Great Deletion Every lesson used to be its own 907-line HTML file. 27 of them. All basically identical. Changing one button meant changing it 27 times, which I was obviously never going to do. So I merged them into one lesson.html that reads ?unit=2&lesson=3 from the URL and imports that lesson’s data.js dynamically. 29 files changed, 25 insertions(+), 24498 deletions(-) Deleted 24,498 lines! Best commit ever. The IDE Next, I replaced the static code examples with an actual editor ( CodeMirror ) plus Python running in the browser through Pyodide . No server, because the code runs on your own machine. Then I added it to the practice questions too: every question gets its own mini IDE with Run + Save , and saves go to Supabase so your code is still there when you come back. This took way more bug fixing than expected. There was a cursed '\\n' error, the editor kept breaking when switching themes, and long lines ran off the screen until I added line wrapping. Like 5 commits of just fixing the editor (help me). The AI Checker The big one. There is now a Check button next to Run that has gpt-4o-mini grade your code: ✗ Almost! Your scoreboard only prints one player. Hint: you need a second print() line for the second player. The site is fully static, so I couldn’t just put an API key in the frontend (the whole internet would spend my credits). Instead, the code and its output get sent to a Supabase Edge Function , which hides the key, checks that you’re logged in, and asks OpenAI for a strict JSON verdict: passed, feedback, hint . I compared Gemini and Ollama first, but went with OpenAI because I have $5 of credits left from a previous grant. And since I don’t want to overuse my credits: 5 checks per minute and 500 per day per user, 1,400 per day for the whole app. Next up: grading notes per question so the AI knows exactly what each task wants, and maybe an admin dashboard to watch usage."}, {"post_id": 6041, "ts": "2026-06-10T04:42:41Z", "hours": 1.0, "text": "Progress now saves to the cloud!!! Ripped out localStorage and replaced it with Supabase so lesson completions are now tied to your account, not your browser. You can now sign in on any device and your progress is tracked there too. I had to change 30 DIFFERENT FILES JUST TO ADD THIS, but hey its working properly now and its another BIG step towards making a full learning platform…you guys can now try it!!!!!!!"}, {"post_id": 4428, "ts": "2026-06-07T19:04:50Z", "hours": 3.0, "text": "JUST ADDED UNITS 4, 5, 6, AND 7!!!!!!!!! The course is officially 27 lessons in total. I also made an actual home page that lists every unit and lesson so it’s easier to use the course without having to open tons of random files. My favorite part of everything was adding the lesson completion tracking. Basically each lesson has a “Mark as complete” button which then saves everything to a localStorage. No backend needed (thank god).. Also the homepage now shows all the finished lessons in green, and also has an overall progress bar showing how far someone is through all 27 lessons. I MAY have spent way too much time trying to figure out why it kept showing an Error 404 when clicking through different lessons. I checked the JS, checked all the paths, and then rewrote all the href logic. Turns out a browser can’t handle spaces in folder names over file://. I just wrapped the path in encodeURI(). MAY have spent an hour tryna debug this but it works so yayyaya!!! Gonna deploy to GitHub Pages so it’s a real URL, add a quiz score tracker so students can see how they’re doing across the whole course, and maybe create an account system so people can track everything, but its not fixed yet so keep looking"}, {"post_id": 3653, "ts": "2026-06-06T18:05:51Z", "hours": 0.0, "text": "JUST FINISHED UNIT 3 AND MADE A PROPER README!!!!!!!!! Just finished all 4 lessons for unit 3 today: comparisons and booleans if/else elif chains combining conditions with and/or/not Each one is fully complete with a goal, explanation, an example code, practice questions, a quiz, and a project. the projects are actually pretty fun (BMI calculator, theme park entry checker, and even more…you should check the repo out frfr) Also just added a full README to show the entire course, what it covers, what each lesson has, how the file system works, and a full breakdown of every single unit, every lesson, and every project. Right now the course is sitting at 7 units, 27 lessons, 27 projects and 54 practice tasks total. Just finished unit 3, FOUR MORE TO GO!!!"}, {"post_id": 3620, "ts": "2026-06-06T17:01:06Z", "hours": 1.0, "text": "JUST FINISHED UNIT TWO!!! also organized the files into a data.js file and a lesson.html file for each lesson. check my github for the latest updatesssssss"}, {"post_id": 3266, "ts": "2026-06-06T03:38:12Z", "hours": 0.0, "text": "JUST CREATED UNIT ONE!!!!!! just some basic print(), input(), different variables, and casting"}, {"post_id": 2979, "ts": "2026-06-05T22:10:55Z", "hours": 0.0, "text": "Just created the entire lesson plan for my course and JUST LEARNED HOW TO USE FIGMA!!!! I’m lowk just used Figma for the website design"}]...
|
Title: Python Examples by @Vedant_Daga | Stardance Title: Python Examples by @Vedant_Daga | Stardance
Devlogs:
Just created the entire lesson plan for my course and JUST LEARNED HOW TO USE FIGMA!!!! I’m lowk just used Figma for the website design
JUST CREATED UNIT ONE!!!!!! just some basic print(), input(), different variables, and casting
JUST FINISHED UNIT TWO!!! also organized the files into a data.js file and a lesson.html file for each lesson. check my github for the latest updatesssssss
JUST FINISHED UNIT 3 AND MADE A PROPER README!!!!!!!!! Just finished all 4 lessons for unit 3 today: comparisons and booleans if/else elif chains combining conditions with and/or/not Each one is fully complete with a goal, explanation, an example code, practice questions, a quiz, and a project. the projects are actually pretty fun (BMI calculator, theme park entry checker, and even more…you should check the repo out frfr) Also just added a full README to show the entire course, what it covers, what each lesson has, how the file system works, and a full breakdown of every single unit, every lesson, and every project. Right now the course is sitting at 7 units, 27 lessons, 27 projects and 54 practice tasks total. Just finished unit 3, FOUR MORE TO GO!!!
JUST ADDED UNITS 4, 5, 6, AND 7!!!!!!!!! The course is officially 27 lessons in total. I also made an actual home page that lists every unit and lesson so it’s easier to use the course without having to open tons of random files. My favorite part of everything was adding the lesson completion tracking. Basically each lesson has a “Mark as complete” button which then saves everything to a localStorage. No backend needed (thank god).. Also the homepage now shows all the finished lessons in green, and also has an overall progress bar showing how far someone is through all 27 lessons. I MAY have spent way too much time trying to figure out why it kept showing an Error 404 when clicking through different lessons. I checked the JS, checked all the paths, and then rewrote all the href logic. Turns out a browser can’t handle spaces in folder names over file://. I just wrapped the path in encodeURI(). MAY have spent an hour tryna debug this but it works so yayyaya!!! Gonna deploy to GitHub Pages so it’s a real URL, add a quiz score tracker so students can see how they’re doing across the whole course, and maybe create an account system so people can track everything, but its not fixed yet so keep looking
Progress now saves to the cloud!!! Ripped out localStorage and replaced it with Supabase so lesson completions are now tied to your account, not your browser. You can now sign in on any device and your progress is tracked there too. I had to change 30 DIFFERENT FILES JUST TO ADD THIS, but hey its working properly now and its another BIG step towards making a full learning platform…you guys can now try it!!!!!!!
Deleted 24,000 Lines, Added a Python IDE, and Made AI Grade Your Code Big update. Since last time, the site went from 27 copy-pasted lesson pages to one dynamic page , got a real Python editor that runs in the browser , and now has an AI that checks your practice answers and gives you hints . The Great Deletion Every lesson used to be its own 907-line HTML file. 27 of them. All basically identical. Changing one button meant changing it 27 times, which I was obviously never going to do. So I merged them into one lesson.html that reads ?unit=2&lesson=3 from the URL and imports that lesson’s data.js dynamically. 29 files changed, 25 insertions(+), 24498 deletions(-) Deleted 24,498 lines! Best commit ever. The IDE Next, I replaced the static code examples with an actual editor ( CodeMirror ) plus Python running in the browser through Pyodide . No server, because the code runs on your own machine. Then I added it to the practice questions too: every question gets its own mini IDE with Run + Save , and saves go to Supabase so your code is still there when you come back. This took way more bug fixing than expected. There was a cursed '\n' error, the editor kept breaking when switching themes, and long lines ran off the screen until I added line wrapping. Like 5 commits of just fixing the editor (help me). The AI Checker The big one. There is now a Check button next to Run that has gpt-4o-mini grade your code: ✗ Almost! Your scoreboard only prints one player. Hint: you need a second print() line for the second player. The site is fully static, so I couldn’t just put an API key in the frontend (the whole internet would spend my credits). Instead, the code and its output get sent to a Supabase Edge Function , which hides the key, checks that you’re logged in, and asks OpenAI for a strict JSON verdict: passed, feedback, hint . I compared Gemini and Ollama first, but went with OpenAI because I have $5 of credits left from a previous grant. And since I don’t want to overuse my credits: 5 checks per minute and 500 per day per user, 1,400 per day for the whole app. Next up: grading notes per question so the AI knows exactly what each task wants, and maybe an admin dashboard to watch usage.
Devlog: getting ready to ship Spent this session getting everything ready to ship. Turns out “it works on my machine” and “a random person can actually try it” are super different things lol. Free preview so people can actually try it Biggest problem was the whole site was locked behind a login. If someone clicked the link they just hit a sign in wall, which is basically the fastest way to make people leave. So I made the first two lessons (Unit 1 lesson 1 and 1.2) totally free, no account needed. Now if your signed out: The homepage loads like normal instead of throwing you to the login page The free lessons open up so you can read them, run real Python in the browser, and take the quiz Every other lesson has a little lock icon and sends you to login Save and Check still ask you to sign in since those need an account (progress and the AI grading are tied to your user) Best part is running code and the quizzes already worked without an account, so the free preview actually feels real and not just a teaser. Pretty happy with how that turned out. Lock icons on the homepage Added some logic so signed out people see a lock on the lessons they cant open yet, plus a “Free preview, sign in to unlock all lessons” message at the top. The free ones keep the normal arrow so its obvious which ones you can actually click. Fixed the README My old README was kinda lying at this point lol. It said “no server needed” and “all your data stays locally” which used to be true but isnt anymore now that I got Supabase doing accounts, progress syncing, and AI grading. So I rewrote the whole thing to actually match what the project does, threw the live demo link right at the top, and explained how the free preview works. What I checked Made sure my OpenAI key never got committed (its gitignored and the grading function reads it server side only) Tested the signed out flow in an incognito window so I could see exactly what a new visitor sees Feeling really good about where its at now. Basically just doing one last check over everything before I actually ship it!!!
just figured out why “create account” wasn’t working….turns out we needed a proper signup page instead of jamming everything into login. built a new dedicated page and made sure that the demo goes to the signUP page
so signups were just breaking with “email rate limit exceeded” and i couldn’t figure out why for a bit. turns out supabase sends a confirmation email every single time someone signs up, and the free email thing only lets you send like2 an hour. so once a couple people tried it, it was dead for everyone else lol. for now i just turned off the email confirmation so accounts get made right away with no email, and made it drop you straight into the course after. gonna hookup a real SMTP (probably resend) later so i can turn verification back on without it blowing up again.
Ships:
## Learn Python, an interactive course that runs in your browser ### What I made A full beginner Python course that runs in the browser, no downloads or setup. 28 lessons across 7 units, from your first program up to 2D lists. Each lesson has the concept, a runnable code example, two practice tasks, a quiz, and a mini project. Theres a built in editor running real Python, accounts that save your progress, and AI that checks your practice code and gives real feedback. ### What was challenging The AI grading. I didnt want my API key in the browser, so I moved it to a Supabase function that keeps it server side, then added rate limiting and caching so nobody could spam it or run up my bill. The free preview was tricky too. Progress and AI grading need a logged in user, so I had to split which features work signed out (reading, running code, quizzes) vs signed in (save and AI check) without breaking anything. ### What Im proud of Im proud that this feels like a real product, not a school project. Code runs in the browser with no server, the AI feedback is actually helpful, and anyone can try it in like 10 seconds. ### How to test it Just click the Try Project Button 1. The first two lessons are free, no account. Read one, write Python in the editor and hit run, take the quiz. 2. Want the rest? Make a free account (any email). That unlocks all 28 lessons and the AI feedback. 3. For the AI grading, go to a practice task, write your code, and hit Check. No cloning or commands needed, it all works on the live site. Thanks for checking it out!!! FYI: I'm only asking for an email to make sure that my API bill doesn't get out of hand because I don't want bots, hence email protection, your data is safe don't worry Image is of the AI Feedback and the in-built code editor...
|
1792882054.368967
|
1793746054.368967
|
|
7589
|
Self-Balancing Robot - Gary by @benMakesStuff | St Self-Balancing Robot - Gary by @benMakesStuff | Stardance...
|
benMakesStuff
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T22:05:51Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a self-balancing robot. That works through a PID control loop. I have not yet finished the design or the code because the IMU sensor does not have a stable connection. Therefore it can stop giving data to the Pico at any time, so it is not working perfectly yet. I think I could solve this either by soldering the IMU sensor to the cables (its not soldered yet) or by getting a custom PCB but I don’t have any soldering iron to do that yet.", "repo": "https://github.com/benvelzul/Balancing-robot", "demo": ""}]...
|
[{"post_id": 8454, "ts": "2026 [{"post_id": 8454, "ts": "2026-06-14T01:48:40Z", "hours": 1.5022, "text": "Building For this phase of the project, the primary goal was to construct a stable chassis for Gary (the robot’s name). I designed and fabricated a new, updated base intended to improve structural integrity. However, during the assembly phase, I ran into a clearance issue—the motors did not fit properly into the new mounts. As a result, I had to pivot and revert back to the previous design iteration. Figure 1: The first version of the base (successful fit). Figure 2: The second version of the base that unfortunately did not work due to motor clearance. Because my immediate goal was to establish a quick Proof of Concept (PoC) and test the self-balancing algorithms, I decided not to let the chassis setback halt my momentum. To secure the electronics, I temporary mounted all the internal components, sensors, and the battery pack directly onto the older chassis using hot glue. While not the final aesthetic design, this kept the center of gravity fixed and robust enough for testing. With the physical structure secured, Gary was officially ready to move on to the wiring stage. Wiring The wiring phase presented several hardware limitations that required creative, temporary solutions, many of which became valuable learning experiences later in the project. Power Supply & Connections Because a dedicated 4xAA battery pack wasn’t available, I engineered a solution by combining two separate smaller battery packs to supply the necessary voltage. Furthermore, because I did not have access to a soldering iron, I had to secure the spliced power wires together using hot glue. While this worked initially to establish a connection, the lack of a proper mechanical bond introduced intermittent power issues down the line. Microcontroller & Motor Protection Before connecting any components, I had to research safe wiring configurations to ensure the high-voltage motor circuits wouldn’t back-feed and destroy the Raspberry Pi Pico. To safely bridge the Pico, the dual battery packs, and the motor outputs without soldering, I mapped the entire circuit out on a standard breadboard. [Battery Packs] —> [Motor Driver] <—> [Raspberry Pi Pico] | [DC Motors] The Breadboard & Sensor Bottleneck While the breadboard was essential for a solderless prototype, it quickly became a primary source of instability. The most critical issue occurred with the ADXL345 accelerometer: Because the header pins couldn’t be permanently soldered, I had to rely on friction and physical pressure to keep the jumper wires connected to the sensor. This poor connection meant that as soon as the robot’s motors spun up, the physical vibrations shook the loose wires. This resulted in erratic sensor readings, momentary ‘’‘OSError’’’ crashes, and distorted tilt data, proving that a reliable mechanical connection is vital for self-balancing robotics. Coding Sensor Integration & Debugging The coding phase began by reading raw 6-byte chunks from the ADXL345 register 0x32. These data points were converted into integers and printed out as a tuple ‘’’(x, y, z)’’’ so they could be monitored and visualized inside the Thonny Plotter. Implementing the PID Control Loop A PID framework was written to determine how Gary reacts to falling: K_p (Proportional): Pushes back against the present error based on how far the robot is currently tilting. K_d (Derivative): Counteracts future error by assessing how fast the robot is falling, which dampens shaking. K_i (Integral): Tracks past error over time to eliminate minor, steady leaning issues. Figure 3: Assembled robot"}, {"post_id": 4038, "ts": "2026-06-07T06:51:05Z", "hours": 0.5064, "text": "I have designed the first version of the base for the robot (the thing holder for the motors)"}]...
|
Title: Self-Balancing Robot - Gary by @benMakesStu Title: Self-Balancing Robot - Gary by @benMakesStuff | Stardance
Devlogs:
I have designed the first version of the base for the robot (the thing holder for the motors)
Building For this phase of the project, the primary goal was to construct a stable chassis for Gary (the robot’s name). I designed and fabricated a new, updated base intended to improve structural integrity. However, during the assembly phase, I ran into a clearance issue—the motors did not fit properly into the new mounts. As a result, I had to pivot and revert back to the previous design iteration. Figure 1: The first version of the base (successful fit). Figure 2: The second version of the base that unfortunately did not work due to motor clearance. Because my immediate goal was to establish a quick Proof of Concept (PoC) and test the self-balancing algorithms, I decided not to let the chassis setback halt my momentum. To secure the electronics, I temporary mounted all the internal components, sensors, and the battery pack directly onto the older chassis using hot glue. While not the final aesthetic design, this kept the center of gravity fixed and robust enough for testing. With the physical structure secured, Gary was officially ready to move on to the wiring stage. Wiring The wiring phase presented several hardware limitations that required creative, temporary solutions, many of which became valuable learning experiences later in the project. Power Supply & Connections Because a dedicated 4xAA battery pack wasn’t available, I engineered a solution by combining two separate smaller battery packs to supply the necessary voltage. Furthermore, because I did not have access to a soldering iron, I had to secure the spliced power wires together using hot glue. While this worked initially to establish a connection, the lack of a proper mechanical bond introduced intermittent power issues down the line. Microcontroller & Motor Protection Before connecting any components, I had to research safe wiring configurations to ensure the high-voltage motor circuits wouldn’t back-feed and destroy the Raspberry Pi Pico. To safely bridge the Pico, the dual battery packs, and the motor outputs without soldering, I mapped the entire circuit out on a standard breadboard. [Battery Packs] —> [Motor Driver] <—> [Raspberry Pi Pico] | [DC Motors] The Breadboard & Sensor Bottleneck While the breadboard was essential for a solderless prototype, it quickly became a primary source of instability. The most critical issue occurred with the ADXL345 accelerometer: Because the header pins couldn’t be permanently soldered, I had to rely on friction and physical pressure to keep the jumper wires connected to the sensor. This poor connection meant that as soon as the robot’s motors spun up, the physical vibrations shook the loose wires. This resulted in erratic sensor readings, momentary ‘’‘OSError’’’ crashes, and distorted tilt data, proving that a reliable mechanical connection is vital for self-balancing robotics. Coding Sensor Integration & Debugging The coding phase began by reading raw 6-byte chunks from the ADXL345 register 0x32. These data points were converted into integers and printed out as a tuple ‘’’(x, y, z)’’’ so they could be monitored and visualized inside the Thonny Plotter. Implementing the PID Control Loop A PID framework was written to determine how Gary reacts to falling: K_p (Proportional): Pushes back against the present error based on how far the robot is currently tilting. K_d (Derivative): Counteracts future error by assessing how fast the robot is falling, which dampens shaking. K_i (Integral): Tracks past error over time to eliminate minor, steady leaning issues. Figure 3: Assembled robot
Ships:
I made a self-balancing robot. That works through a PID control loop. I have not yet finished the design or the code because the IMU sensor does not have a stable connection. Therefore it can stop giving data to the Pico at any time, so it is not working perfectly yet. I think I could solve this either by soldering the IMU sensor to the cables (its not soldered yet) or by getting a custom PCB but I don’t have any soldering iron to do that yet....
|
1792997735.573969
|
1793084135.573969
|
|
7599
|
Task Manager by @elijahkott | Stardance
|
elijahkott
|
1
|
4.0
|
10
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T21:42:02Z", "hours": 4.0, "multiplier": 2.42, "payout": 10, "blessing": "neutral", "text": "I made a simple task manager in Rust as a first Rust project. I was proud that I was able to pretty quickly pick up Rust. What was challenging was implementing Rust code that I’ve never seen to make this project work. Also, testing the project on all platforms. You can use both the terminal commands and the TUI to use the project.", "repo": "https://github.com/LijKott/task-manager/tree/master", "demo": "https://crates.io/crates/task-manager-kotter"}]...
|
[{"post_id": 3837, "ts": "2026 [{"post_id": 3837, "ts": "2026-06-06T21:55:41Z", "hours": 1.9919, "text": "TUI is done, tsk is live So last time I had the CLI working. Today I finished the TUI and shipped the whole thing. Getting ratatui going was interesting. It doesn’t work like anything I’ve done before. Instead of just printing stuff, you’ve got a loop that redraws the whole screen every time you press a key. You also have to set up and tear down the terminal manually. If you don’t, your terminal just breaks after you exit. Took me a second to get my head around it but once it clicked it made sense. The TUI has two modes, Normal and Adding. Normal is where you scroll around and do things to tasks. Adding turns the bottom bar into a text input where you type your task and hit Enter. I think using enums for that was pretty clean. I added two things that weren’t in the original plan. A reset command that wipes everything and brings the IDs back to 1, and making the done button a toggle instead of one way. The toggle was annoying, but in the end it worked out fine. The problem was that I forgot to update the function’s name to the updated one. Small thing but it tripped me up. After that, I published to crates.io as task-manager-kotter (tsk) because task-manager was already taken. Then I set up GitHub Actions to build binaries for Linux, Windows, and Mac automatically when I push a tag. Hit a permissions error first try, so I had to go into the repo settings and flip on read/write for workflows. After that I programmed the yml file wrong, so it would merge the binaries instead of having them seperate. I fixed that, and it worked, all three binaries showed up in the release. What’s working Full TUI with scrolling, adding, toggling, deleting, and resetting cargo install tsk works Prebuilt binaries on GitHub Releases for all three platforms"}, {"post_id": 3062, "ts": "2026-06-05T23:10:22Z", "hours": 1.9483, "text": "I got the core database and CLI working Built the foundation today for my SQLite task store and a working CLI with four commands: add, list, done, and delete. You can actually add tasks and check them off from the terminal now. What’s working cargo run – add “buy milk” cargo run – list Output: 1: buy milk [ ] cargo run – done 1 cargo run – list Output: 1: buy milk [x] The stack is rusqlite for SQLite (with the bundled feature so there are no system deps), clap for argument parsing with the derive macro, and chrono for timestamps. The project is split into models.rs, db.rs, commands.rs, and main.rs. These keep the database logic completely separate from the CLI wiring. One thing that tripped me up: Rust’s ownership model means you can’t just pass a Connection willy nilly, you have to borrow it with &Connection everywhere. Took a few compiler errors to get the hang of it, but now it makes sense. Next up Building the TUI with ratatui so you can navigate tasks without typing commands. After that: publishing to crates.io and updating the README."}]...
|
Title: Task Manager by @elijahkott | Stardance
De Title: Task Manager by @elijahkott | Stardance
Devlogs:
I got the core database and CLI working Built the foundation today for my SQLite task store and a working CLI with four commands: add, list, done, and delete. You can actually add tasks and check them off from the terminal now. What’s working cargo run – add “buy milk” cargo run – list Output: 1: buy milk [ ] cargo run – done 1 cargo run – list Output: 1: buy milk [x] The stack is rusqlite for SQLite (with the bundled feature so there are no system deps), clap for argument parsing with the derive macro, and chrono for timestamps. The project is split into models.rs, db.rs, commands.rs, and main.rs. These keep the database logic completely separate from the CLI wiring. One thing that tripped me up: Rust’s ownership model means you can’t just pass a Connection willy nilly, you have to borrow it with &Connection everywhere. Took a few compiler errors to get the hang of it, but now it makes sense. Next up Building the TUI with ratatui so you can navigate tasks without typing commands. After that: publishing to crates.io and updating the README.
TUI is done, tsk is live So last time I had the CLI working. Today I finished the TUI and shipped the whole thing. Getting ratatui going was interesting. It doesn’t work like anything I’ve done before. Instead of just printing stuff, you’ve got a loop that redraws the whole screen every time you press a key. You also have to set up and tear down the terminal manually. If you don’t, your terminal just breaks after you exit. Took me a second to get my head around it but once it clicked it made sense. The TUI has two modes, Normal and Adding. Normal is where you scroll around and do things to tasks. Adding turns the bottom bar into a text input where you type your task and hit Enter. I think using enums for that was pretty clean. I added two things that weren’t in the original plan. A reset command that wipes everything and brings the IDs back to 1, and making the done button a toggle instead of one way. The toggle was annoying, but in the end it worked out fine. The problem was that I forgot to update the function’s name to the updated one. Small thing but it tripped me up. After that, I published to crates.io as task-manager-kotter (tsk) because task-manager was already taken. Then I set up GitHub Actions to build binaries for Linux, Windows, and Mac automatically when I push a tag. Hit a permissions error first try, so I had to go into the repo settings and flip on read/write for workflows. After that I programmed the yml file wrong, so it would merge the binaries instead of having them seperate. I fixed that, and it worked, all three binaries showed up in the release. What’s working Full TUI with scrolling, adding, toggling, deleting, and resetting cargo install tsk works Prebuilt binaries on GitHub Releases for all three platforms
Ships:
I made a simple task manager in Rust as a first Rust project. I was proud that I was able to pretty quickly pick up Rust. What was challenging was implementing Rust code that I’ve never seen to make this project work. Also, testing the project on all platforms. You can use both the terminal commands and the TUI to use the project....
|
1793000904.2736797
|
1793087304.2736797
|
|
7606
|
Banana Leclerc by @Scrax99 | Stardance
|
Scrax99
|
1
|
3.0
|
16
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-05T21:11:36Z", "hours": 3.0, "multiplier": 4.97, "payout": 16, "blessing": "neutral", "text": "I built a bot that is supposed to appeal to fans of the f1 driver Charles Leclerc. I wanted to learn how to do projects like this and thought that this would be a good learning opportunity. This bot responds to many different brands and has somewhat of a personality of its own.", "repo": "https://github.com/scraxx99/BananaLeclerc", "demo": "https://discord.com/oauth2/authorize?client_id=1512247188397490268"}]...
|
[{"post_id": 2934, "ts": "2026 [{"post_id": 2934, "ts": "2026-06-05T20:48:59Z", "hours": 1.1811, "text": "Finally finished this wondrous project, and it has a bunch of stuff I wanted to add. I learned so much and am proud with how it came out :)"}, {"post_id": 2836, "ts": "2026-06-05T17:53:28Z", "hours": 0.6847, "text": "Finally got the first working F1 command done!"}, {"post_id": 2732, "ts": "2026-06-05T14:19:04Z", "hours": 0.9733, "text": "Finished all the boiler-plate code for the bot and am now moving on the main menu for what makes it BANANA LECLERC!!!!"}, {"post_id": 2508, "ts": "2026-06-05T01:12:55Z", "hours": 0.5419, "text": "Banana Leclerc is Born"}]...
|
Title: Banana Leclerc by @Scrax99 | Stardance
Dev Title: Banana Leclerc by @Scrax99 | Stardance
Devlogs:
Banana Leclerc is Born
Finished all the boiler-plate code for the bot and am now moving on the main menu for what makes it BANANA LECLERC!!!!
Finally got the first working F1 command done!
Finally finished this wondrous project, and it has a bunch of stuff I wanted to add. I learned so much and am proud with how it came out :)
Ships:
I built a bot that is supposed to appeal to fans of the f1 driver Charles Leclerc. I wanted to learn how to do projects like this and thought that this would be a good learning opportunity. This bot responds to many different brands and has somewhat of a personality of its own....
|
1792975946.8263276
|
1793062346.8263276
|
|
7613
|
Image enhancer by @cristobal | Stardance
|
cristobal
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T00:34:42Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made something I always thought about making that was a type of code that would copy pixels of an image and multiply them to essentially have a “higher resolution image”. This was my first project of coding something original that I made so it was pretty hard to know what to do next and how to implement things, so I did use AI to give me steps and tell me how to fix some problems, still I didn’t use it to write any part of my code. Even though this version of my project is complete, I do plan to make new versions to make it better since in some parts it is pretty confusing. Stil if you show interest in my journey I would appriciate tips of what I cat improve on. (Picture on the left is the original photo of my cat’s eye. Right picture is the same picture after the enhancer)", "repo": "https://github.com/cristobalnov3-blip/Image-enhancer", "demo": ""}]...
|
[{"post_id": 4663, "ts": "2026 [{"post_id": 4663, "ts": "2026-06-08T02:06:21Z", "hours": 1.5122, "text": "I’m working on a type of ‘image enhancer’ but I’m still figuiring it out"}]...
|
Title: Image enhancer by @cristobal | Stardance
D Title: Image enhancer by @cristobal | Stardance
Devlogs:
I’m working on a type of ‘image enhancer’ but I’m still figuiring it out
Ships:
I made something I always thought about making that was a type of code that would copy pixels of an image and multiply them to essentially have a “higher resolution image”. This was my first project of coding something original that I made so it was pretty hard to know what to do next and how to implement things, so I did use AI to give me steps and tell me how to fix some problems, still I didn’t use it to write any part of my code. Even though this version of my project is complete, I do plan to make new versions to make it better since in some parts it is pretty confusing. Stil if you show interest in my journey I would appriciate tips of what I cat improve on. (Picture on the left is the original photo of my cat’s eye. Right picture is the same picture after the enhancer)...
|
1793065938.8761635
|
1793152338.8761635
|
|
7618
|
AI Model by @Neerav | Stardance
|
Neerav
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T17:11:34Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an Ai model for people to be able to complete their daily tasks with less time. Syrox AI can help with school work like math homework and other stuff. The thing that was challenging for me was to decide what type of UI did I want for Syrox AI.", "repo": "https://github.com/Syrox-1x/Syrox-Ai", "demo": "https://syroxai-sidrq8ge.manus.space"}]...
|
[{"post_id": 18466, "ts": "202 [{"post_id": 18466, "ts": "2026-06-29T17:05:52Z", "hours": 0.4992, "text": "Just Updated Syrox Ai to be able to log into an account. Because to be able to save chats people need to be logged into an account."}, {"post_id": 14549, "ts": "2026-06-23T18:22:49Z", "hours": 0.45, "text": "Syrox Ai"}]...
|
Title: AI Model by @Neerav | Stardance
Devlogs:
S Title: AI Model by @Neerav | Stardance
Devlogs:
Syrox Ai
Just Updated Syrox Ai to be able to log into an account. Because to be able to save chats people need to be logged into an account.
Ships:
I made an Ai model for people to be able to complete their daily tasks with less time. Syrox AI can help with school work like math homework and other stuff. The thing that was challenging for me was to decide what type of UI did I want for Syrox AI....
|
1792997669.2772124
|
1793084069.2772124
|
|
7630
|
Kazi's Hackpad (3x3) by @kaziofmeridian | Star Kazi's Hackpad (3x3) by @kaziofmeridian | Stardance...
|
kaziofmeridian
|
1
|
12.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T04:50:07Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "KaziPad What is it? The KaziPad is a 9-key, 3x3 macropad with an OLED screen and a rotary encoder. Features: The buttons are mapped to keyboard shortcuts in 2 separate layers using KMK firmware. The layers are toggled by pressing the rotary encoder, and twisting the rotary encoder adjusts the volume. The OLED screen displays which layer is toggled Challenges: I had challenges every step of the way since this is the first project I’ve ever developed myself. One big challenge I had was with wiring and setting up my PCB. Since it was my first time, I had no idea how the wiring worked, and was very confused by the tangle of webs. Overtime, I began to get over the learning curve and understood how to connect the correct things to each other. I created 4 different versions of my PCB as I wanted to make it as good as possible despite my lack of experience. Another huge challenge was dealing with the firmware. I started out attempting to use KMK firmware, but I couldn’t understand the docs at first. I then attempted to switch over to QMK, and after a long time of not being able to create my own layout, I switched back to KMK. I spent a long time reading and understanding the docs, and now I am at a point where I understand it! Other Info: This project was created as a part of the Hackpad mission which means after shipping, I hope to receive the parts to make it in real life! Since I do not have the parts yet, the demo provided is a video preview of the assembled hackpad. For more details on anything, feel free to comment, or message me on slack, @kaziofmeridian .", "repo": "https://github.com/kaziofmeridian/KaziPad", "demo": ""}]...
|
[{"post_id": 5379, "ts": "2026 [{"post_id": 5379, "ts": "2026-06-09T03:55:19Z", "hours": 0.3017, "text": "—Devlog 5 - Hackpad — My hackpad is officially done! I am naming it The KaziPad . I have just updated the repository , but below is a little sneak peak of its features. I believe it is ready to ship! 3x3 Matrix of keys OLED display that tells you which layer you are on 1 Rotary Encoder to control the volume + toggles keyboard layer KMK firmware"}, {"post_id": 5235, "ts": "2026-06-08T22:55:26Z", "hours": 2.0506, "text": "—Devlog 4 - Hackpad— What I did: I successfully added screw holes into my case with no issues! Then, I attempted to make my firmware with QMK, but I had a lot of trouble configuring the layout, and I switched over to KMK. Below is some of my code. Current Functions Of Firmware: -There are two separate layers on my keyboard, one is a numpad, the other has letters (Both act as placeholders). -The rotary encoder functions as a volume knob, and the button toggles between the 2 separate layers. What’s Next? -I need to finalize my firmware -I should create my repository and gather all requirements -And I am very excited because my project is almost ready to ship, thanks for listening!"}, {"post_id": 4644, "ts": "2026-06-08T01:24:31Z", "hours": 4.8581, "text": "—Devlog 3 -hackpadd— I created a case for my PCB with fusion, and I found out how to add the 3d models of my components onto the PCB. This is V4 of my PCB because I didn’t like the arrangement of my last one, and I made it a lot smaller. Next, I have to make my screw holes and make the firmwareeee. I will update you guys on how that goes soon!"}, {"post_id": 3271, "ts": "2026-06-06T03:43:27Z", "hours": 2.6967, "text": "— Hackpad - Devlog 2 — I finally finished my first PCB design! The wiring isn’t pretty, but I’m just proud I finished it. I had to restart like 3 times."}, {"post_id": 2858, "ts": "2026-06-05T18:29:04Z", "hours": 1.6506, "text": "Hackpad - My First Project Ever Devlog 1 My hackpad is going to include a 9 keys arranged in a 3x3 matrix, one rotary encoder, and an OLED screen. Since my project utilizes 9 keys, I needed to create a matrix to properly organize all of the inputs. Making the matrix took the longest time, because I had to learn how to stop it from becoming one big web. Through making my matrix, I learned how to use net labels in order to better organize my wires which was a great help with everything else. Finally, I roughly arranged all of the components in the PCB editor, and will start making my tracks soon. This is also my first time logging hours, so a lot of my time spent was not actually accounted for. My real amount of hours spent was ~4."}]...
|
Title: Kazi's Hackpad (3x3) by @kaziofmeridian Title: Kazi's Hackpad (3x3) by @kaziofmeridian | Stardance
Devlogs:
Hackpad - My First Project Ever Devlog 1 My hackpad is going to include a 9 keys arranged in a 3x3 matrix, one rotary encoder, and an OLED screen. Since my project utilizes 9 keys, I needed to create a matrix to properly organize all of the inputs. Making the matrix took the longest time, because I had to learn how to stop it from becoming one big web. Through making my matrix, I learned how to use net labels in order to better organize my wires which was a great help with everything else. Finally, I roughly arranged all of the components in the PCB editor, and will start making my tracks soon. This is also my first time logging hours, so a lot of my time spent was not actually accounted for. My real amount of hours spent was ~4.
— Hackpad - Devlog 2 — I finally finished my first PCB design! The wiring isn’t pretty, but I’m just proud I finished it. I had to restart like 3 times.
—Devlog 3 -hackpadd— I created a case for my PCB with fusion, and I found out how to add the 3d models of my components onto the PCB. This is V4 of my PCB because I didn’t like the arrangement of my last one, and I made it a lot smaller. Next, I have to make my screw holes and make the firmwareeee. I will update you guys on how that goes soon!
—Devlog 4 - Hackpad— What I did: I successfully added screw holes into my case with no issues! Then, I attempted to make my firmware with QMK, but I had a lot of trouble configuring the layout, and I switched over to KMK. Below is some of my code. Current Functions Of Firmware: -There are two separate layers on my keyboard, one is a numpad, the other has letters (Both act as placeholders). -The rotary encoder functions as a volume knob, and the button toggles between the 2 separate layers. What’s Next? -I need to finalize my firmware -I should create my repository and gather all requirements -And I am very excited because my project is almost ready to ship, thanks for listening!
—Devlog 5 - Hackpad — My hackpad is officially done! I am naming it The KaziPad . I have just updated the repository , but below is a little sneak peak of its features. I believe it is ready to ship! 3x3 Matrix of keys OLED display that tells you which layer you are on 1 Rotary Encoder to control the volume + toggles keyboard layer KMK firmware
Ships:
KaziPad What is it? The KaziPad is a 9-key, 3x3 macropad with an OLED screen and a rotary encoder. Features: The buttons are mapped to keyboard shortcuts in 2 separate layers using KMK firmware. The layers are toggled by pressing the rotary encoder, and twisting the rotary encoder adjusts the volume. The OLED screen displays which layer is toggled Challenges: I had challenges every step of the way since this is the first project I’ve ever developed myself. One big challenge I had was with wiring and setting up my PCB. Since it was my first time, I had no idea how the wiring worked, and was very confused by the tangle of webs. Overtime, I began to get over the learning curve and understood how to connect the correct things to each other. I created 4 different versions of my PCB as I wanted to make it as good as possible despite my lack of experience. Another huge challenge was dealing with the firmware. I started out attempting to use KMK firmware, but I couldn’t understand the docs at first. I then attempted to switch over to QMK, and after a long time of not being able to create my own layout, I switched back to KMK. I spent a long time reading and understanding the docs, and now I am at a point where I understand it! Other Info: This project was created as a part of the Hackpad mission which means after shipping, I hope to receive the parts to make it in real life! Since I do not have the parts yet, the demo provided is a video preview of the assembled hackpad. For more details on anything, feel free to comment, or message me on slack, @kaziofmeridian ....
|
1792983305.6916456
|
1793069705.6916456
|
|
7631
|
My first slack bot! by @Justin-F | Stardance
|
Justin-F
|
1
|
3.0
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T04:53:34Z", "hours": 3.0, "multiplier": 2.15, "payout": 7, "blessing": "neutral", "text": "What did you make? A 24/7 Slack bot built in Python that responds to custom slash commands like /slck-coin , /slck-dice , /slck-ping , and more. Runs on a nest server using Socket Mode. What was challenging? The guide was in JavaScript so I had to convert everything to Python first. Getting the bot installed into an actual Slack workspace was also way more difficult than expected because I did not know what to do. What are you proud of? After AI explained and taught me the syntax that I needed I mostly did it myself. What should people know to test it? You can just click on my demo link and test it by joining the slckbot channel. You’ll need your own Slack app and workspace. Full setup is in the README — once you add your tokens to .env, just run python slackbot.py, invite the bot to a channel, and try any /slck- command.", "repo": "https://github.com/JF3800/slackbot-project", "demo": "https://hackclub.enterprise.slack.com/archives/C0BAXQB8BUK"}]...
|
[{"post_id": 10424, "ts": "202 [{"post_id": 10424, "ts": "2026-06-17T04:09:12Z", "hours": 0.7136, "text": "#Devlog #2 I actually did this a while ago but I was waiting for the ship function and I also did not have a demo link. I added 2 things: #1: I added slck-motivate #2: I added slck-shrug I also updated /slck-list . I removed /slck-time because it took the local time of the nest server rather than whichever device /slck-time was run on. The code is still in VS code but /slck-time is removed from the commands. I could not post devlogs because I had a bug where hackatime and stardance challenge were not syncing properly but It got fixed."}, {"post_id": 5362, "ts": "2026-06-09T03:10:43Z", "hours": 2.4494, "text": "Finished 5 commands and runs 24/7. Now I just need a demo website. :p"}]...
|
Title: My first slack bot! by @Justin-F | Stardanc Title: My first slack bot! by @Justin-F | Stardance
Devlogs:
Finished 5 commands and runs 24/7. Now I just need a demo website. :p
#Devlog #2 I actually did this a while ago but I was waiting for the ship function and I also did not have a demo link. I added 2 things: #1: I added slck-motivate #2: I added slck-shrug I also updated /slck-list . I removed /slck-time because it took the local time of the nest server rather than whichever device /slck-time was run on. The code is still in VS code but /slck-time is removed from the commands. I could not post devlogs because I had a bug where hackatime and stardance challenge were not syncing properly but It got fixed.
Ships:
What did you make? A 24/7 Slack bot built in Python that responds to custom slash commands like /slck-coin , /slck-dice , /slck-ping , and more. Runs on a nest server using Socket Mode. What was challenging? The guide was in JavaScript so I had to convert everything to Python first. Getting the bot installed into an actual Slack workspace was also way more difficult than expected because I did not know what to do. What are you proud of? After AI explained and taught me the syntax that I needed I mostly did it myself. What should people know to test it? You can just click on my demo link and test it by joining the slckbot channel. You’ll need your own Slack app and workspace. Full setup is in the README — once you add your tokens to .env, just run python slackbot.py, invite the bot to a channel, and try any /slck- command....
|
1792968819.0963104
|
1793055219.0963104
|
|
7675
|
SyncX by @DevomB | Stardance
|
DevomB
|
1
|
4.0
|
48
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T20:23:44Z", "hours": 4.0, "multiplier": 13.5, "payout": 48, "blessing": "neutral", "text": "SyncX is a Chrome extension that captures Google search query text, keeps a local queue, and replays those searches on Bing with pacing and daily limits you control. The hardest part that I had to research a lot of was just trying to figure out how to create a script that would set up AWS for everyone who used it.", "repo": "https://github.com/DevomB/SyncX", "demo": "https://chromewebstore.google.com/detail/syncx/aoemdhkojjipbafpdehcfgfldjogfkka"}]...
|
[{"post_id": 5123, "ts": "2026 [{"post_id": 5123, "ts": "2026-06-08T20:14:05Z", "hours": 0.9044, "text": "Wrapped up and finalized the project. It is done and posted up now. Added some final touches and removed some bloatware. I also added some other code to fix up an auth error. Here is the link to the download: https://chromewebstore.google.com/detail/syncx/aoemdhkojjipbafpdehcfgfldjogfkka"}, {"post_id": 4069, "ts": "2026-06-07T08:15:51Z", "hours": 1.3653, "text": "Recent work removed an obsolete dot UI feature to simplify the interface and reduce visual clutter. The flowTrack and flowNode styles were updated to improve layout consistency and animation smoothness. An unnecessary coconut addition was removed to clean up experimental or unused code paths. ( probably my stupid friend when we were working together lol ) Legal documentation and user agreements were updated and strengthened as part of routine maintenance. The header component was refactored for a leaner implementation and improved accessibility. https://syncx.devomb.com is the site and its all up there."}, {"post_id": 3891, "ts": "2026-06-06T23:59:08Z", "hours": 1.4494, "text": "Since the majority of this project was done before I was verified and could make this project. This Devlog is going to cover everything in this project since I’ve wrapped it up and I’m finished with it. SyncX is a private pnpm/Turbo monorepo for a Chrome Manifest V3 extension that captures Google search queries and replays them on Bing in the user’s browser, with enforced pacing, daily caps, and active-hour windows to mirror searches without manual effort. The repo includes apps/extension (capture, local queue, scheduler, Bing replay, Cognito PKCE auth, and settings UI), apps/web (a Next.js marketing site with docs, privacy, risks, and legal pages), packages/shared (shared types and constants), services/api (a Lambda handler for queue, stats, settings, and user-deletion endpoints), and infra (AWS CDK for API Gateway, DynamoDB, Cognito, optional budget alerts, and a syncx-prod resource group). It supports two modes: Phase A runs entirely in Chrome with local storage and no cloud account, while Phase B lets users self-host on AWS (~$0–5/month) by deploying the stack and pasting API URL, Cognito domain, and client ID into the extension settings."}]...
|
Title: SyncX by @DevomB | Stardance
Devlogs:
Sinc Title: SyncX by @DevomB | Stardance
Devlogs:
Since the majority of this project was done before I was verified and could make this project. This Devlog is going to cover everything in this project since I’ve wrapped it up and I’m finished with it. SyncX is a private pnpm/Turbo monorepo for a Chrome Manifest V3 extension that captures Google search queries and replays them on Bing in the user’s browser, with enforced pacing, daily caps, and active-hour windows to mirror searches without manual effort. The repo includes apps/extension (capture, local queue, scheduler, Bing replay, Cognito PKCE auth, and settings UI), apps/web (a Next.js marketing site with docs, privacy, risks, and legal pages), packages/shared (shared types and constants), services/api (a Lambda handler for queue, stats, settings, and user-deletion endpoints), and infra (AWS CDK for API Gateway, DynamoDB, Cognito, optional budget alerts, and a syncx-prod resource group). It supports two modes: Phase A runs entirely in Chrome with local storage and no cloud account, while Phase B lets users self-host on AWS (~$0–5/month) by deploying the stack and pasting API URL, Cognito domain, and client ID into the extension settings.
Recent work removed an obsolete dot UI feature to simplify the interface and reduce visual clutter. The flowTrack and flowNode styles were updated to improve layout consistency and animation smoothness. An unnecessary coconut addition was removed to clean up experimental or unused code paths. ( probably my stupid friend when we were working together lol ) Legal documentation and user agreements were updated and strengthened as part of routine maintenance. The header component was refactored for a leaner implementation and improved accessibility. https://syncx.devomb.com is the site and its all up there.
Wrapped up and finalized the project. It is done and posted up now. Added some final touches and removed some bloatware. I also added some other code to fix up an auth error. Here is the link to the download: https://chromewebstore.google.com/detail/syncx/aoemdhkojjipbafpdehcfgfldjogfkka
Ships:
SyncX is a Chrome extension that captures Google search query text, keeps a local queue, and replays those searches on Bing with pacing and daily limits you control. The hardest part that I had to research a lot of was just trying to figure out how to create a script that would set up AWS for everyone who used it....
|
1792983188.9946516
|
1793069588.9946516
|
|
7680
|
My awesome macropad! by @codemaster | Stardance
|
codemaster
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-06T11:45:31Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "For this project, I built Hackpad, a custom 3-key media macropad powered by a Seeed Studio XIAO RP2040 microcontroller and running KMK keyboard firmware. The hardware features a custom-routed PCB housed in a compact, 3D-printed enclosure that is securely assembled using durable M3 screws and brass heatset inserts. On the software side, the main challenge was optimizing the code syntax in VS Code and fine-tuning the framework’s Tap Dance module. I am most proud of maximizing efficiency by mapping six full media functions (Volume Up/Down, Mute, Play/Pause, Next, and Previous Track) onto just three physical switches, creating a highly portable, durable device that works automatically on any computer via USB-C.", "repo": "https://github.com/Yourm5m5/Hackpad-for-stardance", "demo": ""}]...
|
[{"post_id": 3437, "ts": "2026 [{"post_id": 3437, "ts": "2026-06-06T11:28:45Z", "hours": 0.3389, "text": "I have finished- been working on this for 3hr"}]...
|
Title: My awesome macropad! by @codemaster | Stard Title: My awesome macropad! by @codemaster | Stardance
Devlogs:
I have finished- been working on this for 3hr
Ships:
For this project, I built Hackpad, a custom 3-key media macropad powered by a Seeed Studio XIAO RP2040 microcontroller and running KMK keyboard firmware. The hardware features a custom-routed PCB housed in a compact, 3D-printed enclosure that is securely assembled using durable M3 screws and brass heatset inserts. On the software side, the main challenge was optimizing the code syntax in VS Code and fine-tuning the framework’s Tap Dance module. I am most proud of maximizing efficiency by mapping six full media functions (Volume Up/Down, Mute, Play/Pause, Next, and Previous Track) onto just three physical switches, creating a highly portable, durable device that works automatically on any computer via USB-C....
|
1792986687.7414236
|
1793073087.7414236
|
|
7684
|
Plutopad by @Eli_Mendez | Stardance
|
Eli_Mendez
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T08:29:11Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Hackpad, which I named the Plutopad. This was very challenging due to the fact that I have never used KiCAD prior to this mission. I have also never worked with building firmware or even trying a “ysws” program like this, so I am going in headfirst with something I enjoy very much, building “things”. My firmware works and is compiliable but it is baseline it can still be configure and the OLED screen doesn’t have any input yet; however, if this is approved I will definitely be taking a crack at this really cool thing that I built. The screenshot is of my QMK firmware finally working after about 2 hours of troubleshooting. It was a wonderful and joyous end to a project.", "repo": "https://github.com/pluto-227/Plutopad", "demo": ""}]...
|
[{"post_id": 7356, "ts": "2026 [{"post_id": 7356, "ts": "2026-06-12T08:17:01Z", "hours": 9.7436, "text": "I have finished my Plutopad and have gathered all my files and spent a very long time trying to compile my firmware to get it right. I was also doing all this in the midst of a possible tornado around me. Anyways, I was able to settle on my PCB and case and am ready to submit this project. This is my very final PCB."}, {"post_id": 6618, "ts": "2026-06-11T03:17:34Z", "hours": 1.4833, "text": "This is my new and improved PCB. I redid my schematic for safe measures and was able to finish both the PCB and schematic in this time span. Now I will move onto making my firmware and try to code it in QMK firmware to get the most out of my macropad. I am not doing the case yet because I might change my mind on the layout and don’t want to keep remaking a case. This is be my fifth iteration of this design and have learned a lot and am planning to learn more."}, {"post_id": 6578, "ts": "2026-06-11T01:41:12Z", "hours": 4.7956, "text": "I am starting all the way over. I had weighed how my workflow was going and it wasn’t going well; therefore I am starting over. I plan on making this version much better and done more efficiently. I am doing this for 3 main reasons: to be more efficient, properly organized, and better set up. This photo was of my last PCB"}, {"post_id": 3746, "ts": "2026-06-06T19:50:42Z", "hours": 0.3444, "text": "I have worked on the Schematic, PCB, and Case up to this point. A total of 23 hours has been put in due to the fact that I am brand new to making electronics and have had to search up how to do a lot (I did not know how to track my time outside of coding before this). I went through a lot of trial and error with schematics and PCBs. I went through 3 iterations of a schematic trying to see how I can optimize the number of pins I’m using while keeping 10 or 12 switches. I tried LEDs but they were causing many errors in the DRC. The LEDs were more hassle than function so i decided to go with my optimized 12 switches, OLED display, and Rotary Encoder with no switch capabilities. Below is my final interation of my PCB that was able to throw no errors."}]...
|
Title: Plutopad by @Eli_Mendez | Stardance
Devlog Title: Plutopad by @Eli_Mendez | Stardance
Devlogs:
I have worked on the Schematic, PCB, and Case up to this point. A total of 23 hours has been put in due to the fact that I am brand new to making electronics and have had to search up how to do a lot (I did not know how to track my time outside of coding before this). I went through a lot of trial and error with schematics and PCBs. I went through 3 iterations of a schematic trying to see how I can optimize the number of pins I’m using while keeping 10 or 12 switches. I tried LEDs but they were causing many errors in the DRC. The LEDs were more hassle than function so i decided to go with my optimized 12 switches, OLED display, and Rotary Encoder with no switch capabilities. Below is my final interation of my PCB that was able to throw no errors.
I am starting all the way over. I had weighed how my workflow was going and it wasn’t going well; therefore I am starting over. I plan on making this version much better and done more efficiently. I am doing this for 3 main reasons: to be more efficient, properly organized, and better set up. This photo was of my last PCB
This is my new and improved PCB. I redid my schematic for safe measures and was able to finish both the PCB and schematic in this time span. Now I will move onto making my firmware and try to code it in QMK firmware to get the most out of my macropad. I am not doing the case yet because I might change my mind on the layout and don’t want to keep remaking a case. This is be my fifth iteration of this design and have learned a lot and am planning to learn more.
I have finished my Plutopad and have gathered all my files and spent a very long time trying to compile my firmware to get it right. I was also doing all this in the midst of a possible tornado around me. Anyways, I was able to settle on my PCB and case and am ready to submit this project. This is my very final PCB.
Ships:
I made a Hackpad, which I named the Plutopad. This was very challenging due to the fact that I have never used KiCAD prior to this mission. I have also never worked with building firmware or even trying a “ysws” program like this, so I am going in headfirst with something I enjoy very much, building “things”. My firmware works and is compiliable but it is baseline it can still be configure and the OLED screen doesn’t have any input yet; however, if this is approved I will definitely be taking a crack at this really cool thing that I built. The screenshot is of my QMK firmware finally working after about 2 hours of troubleshooting. It was a wonderful and joyous end to a project....
|
1792990510.147387
|
1793076910.147387
|
|
7738
|
Space Decrypter Officer by @lee264 | Stardance
|
lee264
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-09T02:05:12Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my first project for Stardance about a silly game idea I had thought of in passing. The hardest thing about this project is definitely the coding as this is my first ever actual project without a teacher or friend to get help. I’m no code wiz so I had to look through YT tutorials and documentation that probably added ~5 hours to the overall project. I’m still pretty happy with the end result though, the terminal-like messages and story is something I’m proud of. After 34 days I can finally ship my project, have a wonderful day/night to anyone reading :).", "repo": "https://github.com/leelawryanto264-afk/SDO", "demo": "https://hackclub.enterprise.slack.com/archives/C0BH50P7XAT"}]...
|
[{"post_id": 25048, "ts": "202 [{"post_id": 25048, "ts": "2026-07-09T00:22:47Z", "hours": 14.56, "text": "My first project is finally finished, hopefully nothing crashes :’). Also completely forgot to post a devlog, whoops"}]...
|
Title: Space Decrypter Officer by @lee264 | Starda Title: Space Decrypter Officer by @lee264 | Stardance
Devlogs:
My first project is finally finished, hopefully nothing crashes :’). Also completely forgot to post a devlog, whoops
Ships:
This is my first project for Stardance about a silly game idea I had thought of in passing. The hardest thing about this project is definitely the coding as this is my first ever actual project without a teacher or friend to get help. I’m no code wiz so I had to look through YT tutorials and documentation that probably added ~5 hours to the overall project. I’m still pretty happy with the end result though, the terminal-like messages and story is something I’m proud of. After 34 days I can finally ship my project, have a wonderful day/night to anyone reading :)....
|
1792968926.5049708
|
1793055326.5049708
|
|
7750
|
Updato by @NellowTCS | Stardance
|
NellowTCS
|
1
|
5.0
|
78
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-06T04:27:18Z", "hours": 5.0, "multiplier": 14.89, "payout": 78, "blessing": "neutral", "text": "Updato is a decentralized update system for web apps. A GitHub Action publishes builds to a CDN branch, a Cloudflare Worker handles version checks, and a client library hot-swaps files in the browser with no reload. It’s on npm as @nellowtcs /updato. It works end to end. Push code, Action builds it, Worker picks it up, client swaps files live. No server, no database. Also there’s a live demo, a docs site, and a real npm package now. It became a real project somewhere along the way. CSS hot-swapping was a whole thing. Ended up using CSSStyleSheet.replaceSync with adoptedStyleSheets to make it work without flashing or breaking CSP. Also npm told me my package name was too similar to “upath” which is just not true but whatever, scoped it and moved on. The live demo ( https://nellowtcs.me/updato/ ) is a clock app that checks for updates from the Worker. You can also install it with npm i @nellowtcs/updato and the docs are at https://nellowtcs.me/updato/docs .", "repo": "https://github.com/NellowTCS/updato", "demo": "https://nellowtcs.me/updato/"}]...
|
[{"post_id": 3282, "ts": "2026 [{"post_id": 3282, "ts": "2026-06-06T04:21:10Z", "hours": 0.6542, "text": "devlog: shipped updato is published. it’s on npm. it has a version number and everything. the publish switched the build from vite to tsdown. vite was fine for dev but tsdown gives you dual esm/cjs output with proper .mjs/.cjs extensions and matching declaration files out of the box. the package exports map has real conditional exports now — separate import and require entries with their own types. it’s the kind of package.json that doesn’t make people file issues. scoped it to @nellowtcs/updato because apparently updato was too close to upath for npm’s similarity check. it is not similar. at all. but scoped names are better practice anyway so whatever, npm wins this round. the release workflow strips private , scripts , and devDependencies from package.json before publish. originally did that with an inline node script, swapped it to a one-liner jq pipe because why run a whole runtime to delete three keys. 1.0.0 → 1.0.1 released 1.0.0. immediately released 1.0.1 because of the name conflict. so it goes. the important thing is npm i @nellowtcs/updato works and the types resolve and the imports are correct. tested it, it’s real. what actually shipped all of it: github action that publishes builds to a cdn branch cloudflare worker that serves version checks from KV client library on npm with hot-swap, two update modes, optional metrics live demo at nellowtcs.me/updato docs site at nellowtcs.me/updato/docs ci pipeline for all of it a readme that actually explains what this thing does what’s left one item on the todo list: custom domain for the worker. that’s a “maybe” and it’s been a “maybe” for a while. it can stay a maybe. closing this started as a dumb idea about pushing updates without a server. it is now a real system with five directories and a package on npm and documentation with a sidebar. i don’t know when it became a real project but it did and now it’s done. first release. final (nah, probably not) devlog."}, {"post_id": 3255, "ts": "2026-06-06T03:05:19Z", "hours": 1.6772, "text": "devlog: docs, workflows, and the finish line this is the “make it real” commit. everything that was on the todo list under “before you can call this a real project” happened in one sitting. docs site built a full docs site using docmd. lives in Docs/ with its own package. seven pages covering everything: home/landing page, quickstart guide, core concepts explainer, and individual reference pages for the client library, github action, worker, hot-swap internals, manifest format, and download metrics. the client library page has full config tables, event references, api docs for every public method, and the UpdateNotification component. the action page documents every input and shows what the cdn branch looks like after a deploy. the worker page covers both endpoints, version comparison logic, caching, and rate limiting. the hot-swap page explains how each asset type gets replaced: scripts via dom replacement with data-hot-file tagging for subsequent updates, css via CSSStyleSheet.replaceSync and adoptedStyleSheets (which is CSP-safe), and images via base64 data uris. used the “sky” theme with system dark mode toggle. search, sitemap plugin, code highlighting, all enabled. github pages deployment new workflow at .github/workflows/static.yml . builds the client library, builds the demo, builds the docs, then assembles them into a single pages-root/ directory. demo goes under /demo/ , docs go at the root. deploys to gh-pages with peaceiris/actions-gh-pages. npm publish workflow .github/workflows/release-npm.yml . triggers on github release publish or manual dispatch with a dry-run option. builds the client library, strips private , scripts , and devDependencies from package.json, copies in the readme and license, then publishes with --provenance . also removed \"private\": true from Build/package.json so npm will actually accept it. security audit workflow daily cron job plus on-push when lockfiles change. runs npm audit --audit-level=high across every package (root, Build, Worker, Action, Demo, Docs). all the audit steps have || true so the workflow reports issues without failing the build, which felt like the right balance for now. separate test workflow split the test job out of ci.yml into its own .github/workflows/test.yml . same matrix across node 20 and 22, runs jest in all three packages. keeps the ci workflow focused on lint and build. todo status checked off docs. what’s left: update the readme with better examples, maybe attach the worker to a custom domain, and publish to npm. the npm workflow is ready, just need to actually pull the trigger."}, {"post_id": 3067, "ts": "2026-06-05T23:24:18Z", "hours": 1.5717, "text": "devlog: the three commits i forgot to write about got in a flow state and forgot to devlog. here’s the catch-up. multi-branch support + notification ui the whole system was hardcoded to a branch called cdn . now you can pass a branch parameter everywhere. the worker accepts it as a query param (defaults to cdn ), the client sends it with check requests, and download urls use the right branch. manifest cache keys in kv include the branch name so different environments don’t collide. the idea is you could have cdn-staging and cdn-production in the same repo and point different app builds at different ones. added branch validation in the worker too since someone’s going to try passing something weird eventually. also built an UpdateNotification class in update-ui.ts . it’s a drop-in banner component that handles the whole flow. you pick top or bottom, set it dismissable or not, and call notification.show(result) when there’s an update. clicking the button downloads and applies. if the download fails it resets. styling is all inline so there’s no css file to import. updated both examples to use it. the example-app.html went from a hand-rolled banner with window.__pendingUpdate to just notification.show(result) . much cleaner. module scripts + download metrics the action now scans html files for <script type=\"module\"> tags and includes a modules array in the manifest. the client passes this through to hot-swap so module scripts get replaced with type=\"module\" set on the new element. the regex for finding them is a little fragile but it works for standard vite/webpack output. also switched the action bundler from @vercel/ncc to esbuild . ncc was fine but esbuild is faster and i was already using it elsewhere. added an opt-in DownloadMetrics class that records timing data per file download (start, end, duration, size, url) in localStorage. pass it into the config and it starts tracking. you can export as json or clear it. useful for debugging slow updates but not the kind of thing you want on by default. tests + ci wrote jest tests for all three packages. action tests mock @actions/core , @actions/github , and @actions/exec . covers input parsing, repo context, package.json version reading, recursive file listing, module script detection, and clone url construction. had to export a bunch of internal functions to make them testable. client tests use jsdom with mocked fetch. covers hot-swap (regular scripts, module scripts, stylesheets, images, unknown types), the metrics class, and the main updato class (version tracking, cache management, update checking, downloads, event callbacks). worker tests cover validation helpers, the full fetch handler (missing params, invalid params, successful checks, unknown endpoints, OPTIONS, method rejection), manifest validation with every field failure case, and the rate limiter with fake timers. ci workflow at .github/workflows/ci.yml . runs on push and pr to main, matrix across node 20 and 22. lints, runs all tests, builds all three packages. todo status checked off: multi-branch, notification ui, module types, metrics, tests, ci. what’s left is docs, a demo, and release automation. the core functionality is done."}, {"post_id": 2861, "ts": "2026-06-05T18:37:02Z", "hours": 0.8061, "text": "devlog: the “just rename it” update (and a bunch of other stuff) the name thing changed name: Updato to name: Updato Action in action.yml. that’s it. that’s the fix. spent hours filing a support ticket, got a polite “no” from github, and the solution was adding one word. sometimes software development is humbling. hot-swap got its own file ripped the hot-swap logic out of updato.ts and gave it a proper home in hot-swap.ts . while i was in there i figured i might as well make it actually good. it now supports images too. png, jpg, gif, svg, webp, ico, bmp, avif. it finds matching <img> , <source> , and favicon <link> elements by basename and swaps their src/href to a base64 data uri. so if your update is just a new logo, no reload needed. also switched the element matching from substring ( src*=\"${file}\" ) to basename comparison, which is way less fragile. before, a file called app.js could’ve accidentally matched webapp.js . now it actually compares the filename part properly. the css swap switched from btoa() to encodeURIComponent() which handles unicode better. small thing but the kind of thing that would’ve been a weird bug later. everything returns a typed HotSwapResult now instead of just a boolean. so the caller knows what got swapped, what type it was, and which file it was for. manifest validation added a real validator in Worker/src/manifest.ts . before, the worker was just casting response.json() as Manifest and hoping for the best with a couple of if-checks. now there’s a validateManifest() function that checks every field properly and returns typed errors. each error tells you which field failed and why. this runs both when fetching fresh manifests from github and when reading cached ones from kv. if a cached manifest is corrupted it just falls through and re-fetches. rate limiting new file: Worker/src/rate-limit.ts . uses cloudflare kv to track requests per ip. 60 requests per 60 second window, which is generous enough for normal usage but should keep anyone from hammering it. uses CF-Connecting-IP for the real client ip, falls back to X-Forwarded-For . returns a proper 429 with a Retry-After header when you hit the limit. the kv entries auto-expire so they don’t pile up forever. I half wanted to make the 429 return silly messages, but I gotta be serious apparently sometimes :/ had to add a kv namespace binding in wrangler.toml for this. the worker was fully stateless before, now it has a little bit of state. felt like a big architectural decision for what’s basically a counter but whatever, it’s the right call. kv caching for manifests while i was adding kv for rate limiting i figured i might as well use it for manifest caching too. previously every /check request was hitting github’s raw content cdn directly. now it caches the manifest in kv with a configurable ttl (defaults to 300 seconds). means fewer github api calls and faster responses for repeat checks. worker got lint + prettier too copied the eslint + prettier setup from Build into Worker. also added projectService and tsconfigRootDir to both eslint configs so typescript-eslint can actually find the tsconfigs. this was one of those “why is eslint yelling at me” rabbit holes. todo cleanup checked off rate limiting and manifest validation. removed the already-completed items that were cluttering the list. it’s getting shorter."}, {"post_id": 2619, "ts": "2026-06-05T07:31:58Z", "hours": 0.3933, "text": "devlog: hot-swap and cleanup two things happened here and they’re very different vibes. hot-swap so previously applyUpdate() was just… reload the page. which works, obviously, but it’s not exactly elegant. if you’re updating a css file there’s no reason to nuke the entire page state. now it actually tries to be smart about it. when you call applyUpdate() , it looks at each file’s extension and attempts to swap it in-place: for .js files, it finds the matching <script> tag by src and replaces it with a new one containing the updated content for .css files, it finds the matching <link> stylesheet and swaps it with a base64 data url version of the new css if none of the files can be hot-swapped (like if there’s no matching dom element, or it’s a file type it doesn’t know about), it falls back to the classic window.location.reload() . so nothing breaks, it just tries the nice path first. the base64 css thing is a little cursed honestly. but it works and avoids needing to host the file anywhere. the browser just reads it inline. i might revisit this later if it causes issues with large stylesheets but for now it’s fine. eslint + prettier added eslint and prettier to the Build package because the code was starting to look inconsistent and it was bothering me. set up a flat config with typescript-eslint, browser globals, the usual. named the prettier script make-pretty because i thought it was funny. and idk, it’s how i do it ig prettier immediately reformatted a bunch of stuff in updato.ts . removed some unnecessary quote wrapping on \"Accept\" , collapsed a few multi-line expressions that didn’t need to be multi-line, cleaned up trailing commas. nothing behavioral, just formatting. also committed the lockfile. should’ve done that earlier but here we are. todo progress checked off hot-swap support and the linting setup. removed the version bump script todo since that was already done in the last round. the list is getting shorter. slowly."}, {"post_id": 2606, "ts": "2026-06-05T06:58:58Z", "hours": 0.3131, "text": "the one big devlog so updato exists now. figured i should write down what actually happened before i forget why i made half these decisions. what even is this updato is a decentralized update system for browser apps. the whole idea is: you push code, your app knows there’s a new version, and it updates itself. no app store, no server infrastructure you have to maintain. just github and a cloudflare worker. it’s three pieces: a github action that takes your build output and pushes it to a cdn branch on your repo. every version gets its own folder, plus there’s always a latest/ copy. it writes a manifest.json with metadata about what’s current. a cloudflare worker that acts as the middleman. your app asks it “hey is there an update?” and it goes and reads your manifest off github, compares versions, and tells the client yes or no. stateless, basically free to run. a js client library that you drop into your app. it talks to the worker, downloads new files if there’s an update, caches them in localStorage, and reloads when you’re ready. two modes because i couldn’t pick one there’s commit mode and version mode. commit mode means every push is a new version and the “version” is just the commit sha. version mode uses semver from your package.json. commit mode is nice for apps where you just want continuous deployment. version mode is for when you want to be more intentional about it. honestly i went back and forth on whether to support both. decided it was easy enough to keep and the action just reads a flag. the action lives in Action/ . typescript, compiled with ncc. it clones your cdn branch into a temp directory (or inits a fresh one if the branch doesn’t exist yet), copies your dist folder into latest/ and versions/{version}/ , writes the manifest, commits, and pushes. the commit messages are kinda nice actually, they show what version replaced what: deploy: abc123 (was def456) . one thing i’m quietly proud of is that it handles the “branch doesn’t exist yet” case gracefully. first run just works. the worker lives in Worker/ . pretty small. two endpoints: /check and /manifest . /check takes a repo and your current version, fetches the manifest from github, does the comparison, and returns whether there’s an update. wrote my own semver parser because i didn’t want to pull in a dependency for what’s basically three number comparisons. it’s probably fine. it validates the repo format with a regex so you can’t pass in weird stuff. set up wrangler.toml with a production and staging env. the client lives in Build/ . this is the part that actually runs in people’s apps. it’s a class called Updato (creative naming, i know). you init it with your repo, mode, and current version. then you can check for updates, download them, and apply them. downloads get cached in localStorage with version tags so stale cache gets cleaned up automatically. built with vite, outputs both esm and umd so you can import it or just drop a script tag. tooling i added after wrote a bump-version.js script that bumps the version across all four package.jsons (root + the three workspace packages), commits, tags, and pushes. one command to do a release, basically. also a little print-cdn-commit.js that tells you what the latest cdn branch commit is, which is useful for debugging. there’s a TODO.md with a bunch of stuff i want to do eventually. hot-swap support, rate limiting in the worker, tests, linting, npm publishing. the usual “i’ll get to it” list. current status it works. the action runs, the worker deploys, the client checks and downloads. trying to publish the action to the github marketplace but the name “Updato” is apparently reserved by a ghost account that doesn’t exist. so that’s cool. working on that."}]...
|
Title: Updato by @NellowTCS | Stardance
Devlogs:
Title: Updato by @NellowTCS | Stardance
Devlogs:
the one big devlog so updato exists now. figured i should write down what actually happened before i forget why i made half these decisions. what even is this updato is a decentralized update system for browser apps. the whole idea is: you push code, your app knows there’s a new version, and it updates itself. no app store, no server infrastructure you have to maintain. just github and a cloudflare worker. it’s three pieces: a github action that takes your build output and pushes it to a cdn branch on your repo. every version gets its own folder, plus there’s always a latest/ copy. it writes a manifest.json with metadata about what’s current. a cloudflare worker that acts as the middleman. your app asks it “hey is there an update?” and it goes and reads your manifest off github, compares versions, and tells the client yes or no. stateless, basically free to run. a js client library that you drop into your app. it talks to the worker, downloads new files if there’s an update, caches them in localStorage, and reloads when you’re ready. two modes because i couldn’t pick one there’s commit mode and version mode. commit mode means every push is a new version and the “version” is just the commit sha. version mode uses semver from your package.json. commit mode is nice for apps where you just want continuous deployment. version mode is for when you want to be more intentional about it. honestly i went back and forth on whether to support both. decided it was easy enough to keep and the action just reads a flag. the action lives in Action/ . typescript, compiled with ncc. it clones your cdn branch into a temp directory (or inits a fresh one if the branch doesn’t exist yet), copies your dist folder into latest/ and versions/{version}/ , writes the manifest, commits, and pushes. the commit messages are kinda nice actually, they show what version replaced what: deploy: abc123 (was def456) . one thing i’m quietly proud of is that it handles the “branch doesn’t exist yet” case gracefully. first run just works. the worker lives in Worker/ . pretty small. two endpoints: /check and /manifest . /check takes a repo and your current version, fetches the manifest from github, does the comparison, and returns whether there’s an update. wrote my own semver parser because i didn’t want to pull in a dependency for what’s basically three number comparisons. it’s probably fine. it validates the repo format with a regex so you can’t pass in weird stuff. set up wrangler.toml with a production and staging env. the client lives in Build/ . this is the part that actually runs in people’s apps. it’s a class called Updato (creative naming, i know). you init it with your repo, mode, and current version. then you can check for updates, download them, and apply them. downloads get cached in localStorage with version tags so stale cache gets cleaned up automatically. built with vite, outputs both esm and umd so you can import it or just drop a script tag. tooling i added after wrote a bump-version.js script that bumps the version across all four package.jsons (root + the three workspace packages), commits, tags, and pushes. one command to do a release, basically. also a little print-cdn-commit.js that tells you what the latest cdn branch commit is, which is useful for debugging. there’s a TODO.md with a bunch of stuff i want to do eventually. hot-swap support, rate limiting in the worker, tests, linting, npm publishing. the usual “i’ll get to it” list. current status it works. the action runs, the worker deploys, the client checks and downloads. trying to publish the action to the github marketplace but the name “Updato” is apparently reserved by a ghost account that doesn’t exist. so that’s cool. working on that.
devlog: hot-swap and cleanup two things happened here and they’re very different vibes. hot-swap so previously applyUpdate() was just… reload the page. which works, obviously, but it’s not exactly elegant. if you’re updating a css file there’s no reason to nuke the entire page state. now it actually tries to be smart about it. when you call applyUpdate() , it looks at each file’s extension and attempts to swap it in-place: for .js files, it finds the matching <script> tag by src and replaces it with a new one containing the updated content for .css files, it finds the matching <link> stylesheet and swaps it with a base64 data url version of the new css if none of the files can be hot-swapped (like if there’s no matching dom element, or it’s a file type it doesn’t know about), it falls back to the classic window.location.reload() . so nothing breaks, it just tries the nice path first. the base64 css thing is a little cursed honestly. but it works and avoids needing to host the file anywhere. the browser just reads it inline. i might revisit this later if it causes issues with large stylesheets but for now it’s fine. eslint + prettier added eslint and prettier to the Build package because the code was starting to look inconsistent and it was bothering me. set up a flat config with typescript-eslint, browser globals, the usual. named the prettier script make-pretty because i thought it was funny. and idk, it’s how i do it ig prettier immediately reformatted a bunch of stuff in updato.ts . removed some unnecessary quote wrapping on "Accept" , collapsed a few multi-line expressions that didn’t need to be multi-line, cleaned up trailing commas. nothing behavioral, just formatting. also committed the lockfile. should’ve done that earlier but here we are. todo progress checked off hot-swap support and the linting setup. removed the version bump script todo since that was already done in the last round. the list is getting shorter. slowly.
devlog: the “just rename it” update (and a bunch of other stuff) the name thing changed name: Updato to name: Updato Action in action.yml. that’s it. that’s the fix. spent hours filing a support ticket, got a polite “no” from github, and the solution was adding one word. sometimes software development is humbling. hot-swap got its own file ripped the hot-swap logic out of updato.ts and gave it a proper home in hot-swap.ts . while i was in there i figured i might as well make it actually good. it now supports images too. png, jpg, gif, svg, webp, ico, bmp, avif. it finds matching <img> , <source> , and favicon <link> elements by basename and swaps their src/href to a base64 data uri. so if your update is just a new logo, no reload needed. also switched the element matching from substring ( src*="${file}" ) to basename comparison, which is way less fragile. before, a file called app.js could’ve accidentally matched webapp.js . now it actually compares the filename part properly. the css swap switched from btoa() to encodeURIComponent() which handles unicode better. small thing but the kind of thing that would’ve been a weird bug later. everything returns a typed HotSwapResult now instead of just a boolean. so the caller knows what got swapped, what type it was, and which file it was for. manifest validation added a real validator in Worker/src/manifest.ts . before, the worker was just casting response.json() as Manifest and hoping for the best with a couple of if-checks. now there’s a validateManifest() function that checks every field properly and returns typed errors. each error tells you which field failed and why. this runs both when fetching fresh manifests from github and when reading cached ones from kv. if a cached manifest is corrupted it just falls through and re-fetches. rate limiting new file: Worker/src/rate-limit.ts . uses cloudflare kv to track requests per ip. 60 requests per 60 second window, which is generous enough for normal usage but should keep anyone from hammering it. uses CF-Connecting-IP for the real client ip, falls back to X-Forwarded-For . returns a proper 429 with a Retry-After header when you hit the limit. the kv entries auto-expire so they don’t pile up forever. I half wanted to make the 429 return silly messages, but I gotta be serious apparently sometimes :/ had to add a kv namespace binding in wrangler.toml for this. the worker was fully stateless before, now it has a little bit of state. felt like a big architectural decision for what’s basically a counter but whatever, it’s the right call. kv caching for manifests while i was adding kv for rate limiting i figured i might as well use it for manifest caching too. previously every /check request was hitting github’s raw content cdn directly. now it caches the manifest in kv with a configurable ttl (defaults to 300 seconds). means fewer github api calls and faster responses for repeat checks. worker got lint + prettier too copied the eslint + prettier setup from Build into Worker. also added projectService and tsconfigRootDir to both eslint configs so typescript-eslint can actually find the tsconfigs. this was one of those “why is eslint yelling at me” rabbit holes. todo cleanup checked off rate limiting and manifest validation. removed the already-completed items that were cluttering the list. it’s getting shorter.
devlog: the three commits i forgot to write about got in a flow state and forgot to devlog. here’s the catch-up. multi-branch support + notification ui the whole system was hardcoded to a branch called cdn . now you can pass a branch parameter everywhere. the worker accepts it as a query param (defaults to cdn ), the client sends it with check requests, and download urls use the right branch. manifest cache keys in kv include the branch name so different environments don’t collide. the idea is you could have cdn-staging and cdn-production in the same repo and point different app builds at different ones. added branch validation in the worker too since someone’s going to try passing something weird eventually. also built an UpdateNotification class in update-ui.ts . it’s a drop-in banner component that handles the whole flow. you pick top or bottom, set it dismissable or not, and call notification.show(result) when there’s an update. clicking the button downloads and applies. if the download fails it resets. styling is all inline so there’s no css file to import. updated both examples to use it. the example-app.html went from a hand-rolled banner with window.__pendingUpdate to just notification.show(result) . much cleaner. module scripts + download metrics the action now scans html files for <script type="module"> tags and includes a modules array in the manifest. the client passes this through to hot-swap so module scripts get replaced with type="module" set on the new element. the regex for finding them is a little fragile but it works for standard vite/webpack output. also switched the action bundler from @vercel/ncc to esbuild . ncc was fine but esbuild is faster and i was already using it elsewhere. added an opt-in DownloadMetrics class that records timing data per file download (start, end, duration, size, url) in localStorage. pass it into the config and it starts tracking. you can export as json or clear it. useful for debugging slow updates but not the kind of thing you want on by default. tests + ci wrote jest tests for all three packages. action tests mock @actions/core , @actions/github , and @actions/exec . covers input parsing, repo context, package.json version reading, recursive file listing, module script detection, and clone url construction. had to export a bunch of internal functions to make them testable. client tests use jsdom with mocked fetch. covers hot-swap (regular scripts, module scripts, stylesheets, images, unknown types), the metrics class, and the main updato class (version tracking, cache management, update checking, downloads, event callbacks). worker tests cover validation helpers, the full fetch handler (missing params, invalid params, successful checks, unknown endpoints, OPTIONS, method rejection), manifest validation with every field failure case, and the rate limiter with fake timers. ci workflow at .github/workflows/ci.yml . runs on push and pr to main, matrix across node 20 and 22. lints, runs all tests, builds all three packages. todo status checked off: multi-branch, notification ui, module types, metrics, tests, ci. what’s left is docs, a demo, and release automation. the core functionality is done.
devlog: docs, workflows, and the finish line this is the “make it real” commit. everything that was on the todo list under “before you can call this a real project” happened in one sitting. docs site built a full docs site using docmd. lives in Docs/ with its own package. seven pages covering everything: home/landing page, quickstart guide, core concepts explainer, and individual reference pages for the client library, github action, worker, hot-swap internals, manifest format, and download metrics. the client library page has full config tables, event references, api docs for every public method, and the UpdateNotification component. the action page documents every input and shows what the cdn branch looks like after a deploy. the worker page covers both endpoints, version comparison logic, caching, and rate limiting. the hot-swap page explains how each asset type gets replaced: scripts via dom replacement with data-hot-file tagging for subsequent updates, css via CSSStyleSheet.replaceSync and adoptedStyleSheets (which is CSP-safe), and images via base64 data uris. used the “sky” theme with system dark mode toggle. search, sitemap plugin, code highlighting, all enabled. github pages deployment new workflow at .github/workflows/static.yml . builds the client library, builds the demo, builds the docs, then assembles them into a single pages-root/ directory. demo goes under /demo/ , docs go at the root. deploys to gh-pages with peaceiris/actions-gh-pages. npm publish workflow .github/workflows/release-npm.yml . triggers on github release publish or manual dispatch with a dry-run option. builds the client library, strips private , scripts , and devDependencies from package.json, copies in the readme and license, then publishes with --provenance . also removed "private": true from Build/package.json so npm will actually accept it. security audit workflow daily cron job plus on-push when lockfiles change. runs npm audit --audit-level=high across every package (root, Build, Worker, Action, Demo, Docs). all the audit steps have || true so the workflow reports issues without failing the build, which felt like the right balance for now. separate test workflow split the test job out of ci.yml into its own .github/workflows/test.yml . same matrix across node 20 and 22, runs jest in all three packages. keeps the ci workflow focused on lint and build. todo status checked off docs. what’s left: update the readme with better examples, maybe attach the worker to a custom domain, and publish to npm. the npm workflow is ready, just need to actually pull the trigger.
devlog: shipped updato is published. it’s on npm. it has a version number and everything. the publish switched the build from vite to tsdown. vite was fine for dev but tsdown gives you dual esm/cjs output with proper .mjs/.cjs extensions and matching declaration files out of the box. the package exports map has real conditional exports now — separate import and require entries with their own types. it’s the kind of package.json that doesn’t make people file issues. scoped it to @nellowtcs/updato because apparently updato was too close to upath for npm’s similarity check. it is not similar. at all. but scoped names are better practice anyway so whatever, npm wins this round. the release workflow strips private , scripts , and devDependencies from package.json before publish. originally did that with an inline node script, swapped it to a one-liner jq pipe because why run a whole runtime to delete three keys. 1.0.0 → 1.0.1 released 1.0.0. immediately released 1.0.1 because of the name conflict. so it goes. the important thing is npm i @nellowtcs/updato works and the types resolve and the imports are correct. tested it, it’s real. what actually shipped all of it: github action that publishes builds to a cdn branch cloudflare worker that serves version checks from KV client library on npm with hot-swap, two update modes, optional metrics live demo at nellowtcs.me/updato docs site at nellowtcs.me/updato/docs ci pipeline for all of it a readme that actually explains what this thing does what’s left one item on the todo list: custom domain for the worker. that’s a “maybe” and it’s been a “maybe” for a while. it can stay a maybe. closing this started as a dumb idea about pushing updates without a server. it is now a real system with five directories and a package on npm and documentation with a sidebar. i don’t know when it became a real project but it did and now it’s done. first release. final (nah, probably not) devlog.
Ships:
Updato is a decentralized update system for web apps. A GitHub Action publishes builds to a CDN branch, a Cloudflare Worker handles version checks, and a client library hot-swaps files in the browser with no reload. It’s on npm as @nellowtcs /updato. It works end to end. Push code, Action builds it, Worker picks it up, client swaps files live. No server, no database. Also there’s a live demo, a docs site, and a real npm package now. It became a real project somewhere along the way. CSS hot-swapping was a whole thing. Ended up using CSSStyleSheet.replaceSync with adoptedStyleSheets to make it work without flashing or breaking CSP. Also npm told me my package name was too similar to “upath” which is just not true but whatever, scoped it and moved on. The live demo ( https://nellowtcs.me/updato/ ) is a clock app that checks for updates from the Worker. You can also install it with npm i @nellowtcs/updato and the docs are at https://nellowtcs.me/updato/docs ....
|
1792983046.3646247
|
1793069446.3646247
|
|
7758
|
the rude slack bot by @shivank | Stardance
|
shivank
|
1
|
16.44
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-05T10:13:26Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Slack, but which can respond to you. You can make your good mood into something different. It’s response. Can be anywhere from funny to annoying. Good luck.", "repo": "https://github.com/ShivankVibes/rude-slack-bot-tempilate", "demo": "https://hackclub.enterprise.slack.com/archives/D0B8KPXM3HP"}]...
|
[{"post_id": 9720, "ts": "2026 [{"post_id": 9720, "ts": "2026-06-16T04:23:58Z", "hours": 15.4383, "text": "Added fall backs in case of the Gemini reply failing and added Easter eggs"}, {"post_id": 2657, "ts": "2026-06-05T10:12:20Z", "hours": 0.3508, "text": "a rude slack bot, how is the poster?"}, {"post_id": 2649, "ts": "2026-06-05T09:45:01Z", "hours": 0.9972, "text": "the “kindest” slack bot on earth"}]...
|
Title: the rude slack bot by @shivank | Stardance
Title: the rude slack bot by @shivank | Stardance
Devlogs:
the “kindest” slack bot on earth
a rude slack bot, how is the poster?
Added fall backs in case of the Gemini reply failing and added Easter eggs
Ships:
I made a Slack, but which can respond to you. You can make your good mood into something different. It’s response. Can be anywhere from funny to annoying. Good luck....
|
1792975802.6669016
|
1793062202.6669016
|