|
57952
|
CodeWare by @tyleruploads | Stardance
|
tyleruploads
|
1
|
51.0
|
1013
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-06T21:03:58Z", "hours": 51.0, "multiplier": 16.45, "payout": 1013, "blessing": "neutral", "text": "I created CodeWare, a WarioWare-style video game where you have to complete various minigames, written in Godot. I originally had it under the WarioWare game mission, but I eventually decided I should detach it from it due to the sheer complexity of this game, which is way above the beginner mission. In the game, players are put through what is currently 12 minigames. Each minigame has a strict timer limit, whether it be losing a life or progressing to the next minigame once it strikes 0. In case you are confused, the way they win a life at the end is if the purpose of the minigame is to survive a certain amount of time against computer-generated obstacles, like arrows or orbs (essentially meteors). The very interesting thing about this game is the two endings: the ending you get when you complete all the minigames with lives to spare, and the one when you lose all of your five lives. These endings, which I will not explain in detail (so it is not spoiled for you!), highlight the eternity of automatically generated code files. The opening scene of the game is the Tyleruploads Mountain Range, which shows many mountains connected via bridges. The suspension for those bridges is the game’s logo turned into a bunch of small links. Metaphysically, the game’s goal is to cross these bridges. Many parts of this project were extremely challenging for me. For one, I had never set foot in Godot at all before embarking on this project. I was also a complete newcomer to any sort of game development. I encountered many errors caused by my being just introduced to GDScript and game development, such as not knowing that scripts continue after changing the scene, the absence of a deferred call causing the game to go completely grey, losing a lot of work in video editing software while making the gameplay trailer video, and many more small and large things. In every ship message for prior Stardance projects, I have said something like “Wow! Before I started, I really didn’t think I could do something this complex. I really just transformed my coding abilities.” But this time, I am not going to repeat that basic fib without any supporting arguments. My previous Stardance projects were nowhere near this length. So, I would like to make a new claim now. That claim is that while I have not become a completely new developer or graphic designer or anything, I have dipped into a new path of development that I will have the choice to either continue to pursue or to reap the benefits of the mindset associated with it as I enter high school. For these reasons, along with the fact that I was able to sit down and write quality code for one project for 51 hours, I am very proud of myself. My viewpoint of “sit down and make a decent project and leave it” has been greatly diminished outside of specific contexts.", "repo": "https://github.com/tyleruploads/code-ware", "demo": "https://tyleruploads.itch.io/codeware"}]...
|
[{"post_id": 77174, "ts": "202 [{"post_id": 77174, "ts": "2026-10-05T22:22:21Z", "hours": 1.2811, "text": "This marks v1.0.0! This is my FINAL devlog for CodeWare (at least the first ship)! It has really been a great project that has significantly pushed what I think about my development capabilities. But I will explain that more in the ship message! The main change made over the time of this devlog was a complete revamp of the README! Here is a summary of the changes made to it: The following shields have been added: Play on GitHub Pages, Made with Godot, GitHub Release (version number), and GitHub Commit Activity The hero image near the top of the README, depicting the title screen, has been replaced with a gameplay video for the game, with a hero of minigame 6 (Unintelligent Arrows) The minigames section has been moved to near the bottom of the README to make the start of the README a better hook. And the minigame descriptions and hero images inside the section have been put inside a spoiler notice, so the game can not be easily spoiled for players. And the hero images in the minigame section have been converted from Markdown tags to HTML tags in order to enforce a specific width."}, {"post_id": 76860, "ts": "2026-10-04T21:10:06Z", "hours": 2.3425, "text": "This will be one of my very last devlogs before I ship CodeWare! I just created the gameplay trailer, which is a huge accomplishment! This is my first time making any sort of video for anything I make in the computer world, and I think it actually turned out very well! The video shows potential players what the game will look like and gives a glimpse of its unexpected win-and-lose endings. I also put the video on the game’s Itch.io page, which will be made public very soon. You can view the video on YouTube here: CodeWare - Official Gameplay Video"}, {"post_id": 75987, "ts": "2026-10-01T21:19:32Z", "hours": 0.7008, "text": "I just created the twelfth mingame of CodeWare, “Catch the Falling Orbs!” In it, you have 45 seconds to catch 35 falling orbs by moving left and right with your keyboard."}, {"post_id": 75387, "ts": "2026-09-29T22:05:18Z", "hours": 1.7511, "text": "In the Newspaper department at my summer sleepaway camp this year, they always said, “If the number is less than 11, spell it out.” CodeWare has officially surpassed this guideline in the number of its minigames. Minigame 11 of CodeWare is titled “Type the Strings,” and players must type 15 five-character strings provided to them in less than one minute. The string is generated from a pool of characters with lookalikes (i.e., Z and 2, S and 5, O and 0, I and l, etc.) removed to ensure it is completely fair for the user. This was definitely one of the easier minigames to code, but it wasn’t the easiest thing ever. I still ran into some issues, like the vertical alignment of a RichTextLabel being a bit too low when dynamically updating its content in GDScript to show a custom notice to the user (I fixed it by changing it to a normal Label, after troubleshooting for way too long)."}, {"post_id": 74691, "ts": "2026-09-28T00:28:50Z", "hours": 3.545, "text": "I just did a lot of asset updating and linting! The part I think would be most interesting to you is obviously the asset updates. I changed the assets in Minigame 1, 3, 4, and 9! I also updated the gallery, accessible in the extras menu, to include new assets I’ve forgotten to put in there for a while now. I’ll just show you how minigame one looks now; no need for a detailed explanation of everything. Now, I have to address the boring part, which took most of the three and a half hours. That would be linting! It’s pretty self-explanatory: I went through and made the scenes and scripts adhere to style guidelines."}, {"post_id": 74561, "ts": "2026-09-27T17:10:27Z", "hours": 2.3617, "text": "I just made the tenth minigame for CodeWare! It is named “RGB Skills.” In the minigame, there are two colors: one generated automatically by the code, and one controlled by manual RGB Sliders. It validates the user’s guess using the GDScript method Vector3.distance_to() . The method uses the 3D Pythagorean theorem to calculate the Euclidean Distance between the RGB values, as if they were plotted in a 3D space. This works because the red value represents the x-axis, the green value represents the y-axis, and the blue value represents the z-axis on a 3D graph. This was very interesting for me to discover, since I only learned the 2D Pythagorean theorem last year (in seventh grade). The game also starts the sliders at the furthest possible points from the target color, which makes the minigame harder. If the player clicks the submit button without making any changes, they will not pass. And yes, I know they could easily invert the colors to find the right one. The only thing is, they probably didn’t read this devlog. So, they’ll have no clue of the fact the sliders were placed at the inversion of the target color."}, {"post_id": 74200, "ts": "2026-09-26T22:13:25Z", "hours": 2.3222, "text": "I just made the ninth minigame for CodeWare, “The Maze!” In the minigame, the user needs to get to the center of the maze in less than 18 seconds! They move a mini tyleruploads texture with arrow keys and WASD to eventually get to the bigger one in the middle! I had a lot of trouble with physics here, hence the 2 hours! And, I’ve never made any sort of maze before, so this is a first!"}, {"post_id": 74111, "ts": "2026-09-26T18:21:01Z", "hours": 1.9775, "text": "I just made version v0.14.0 of CodeWare! In this version, I added the eighth minigame, “Choose the Boxes!” The user has 30 seconds to choose 20 boxes by clicking on the one matching the color of the center box. I also went through and removed unnecessary log statements and unused variables."}, {"post_id": 72912, "ts": "2026-09-24T00:48:33Z", "hours": 2.9286, "text": "I just released version v0.13.0 of CodeWare! In this version, I have completely changed the sound environment of the game! I will explain it with two basic pseudocode (or Python) logic statements! prev_sound = sound in v0.12.0 curr_sound = sound in v0.13.0 print(prev_sound, curr_sound) # False, True What I’m trying to illustrate here is that there was absolutely no sound before, and now there is! There is a background ticking noise playing (forever) through an autoload and sound effects corresponding to in-minigame events. Feel free to test it at https://tyleruploads.itch.io/codeware?secret=CDZUB2MTxYCmNQ70VRagItDLSTg ! Send any feedback in the comments!"}, {"post_id": 71345, "ts": "2026-09-20T17:48:01Z", "hours": 0.7083, "text": "I just made two new assets for CodeWare! They are the players in minigames 4 and 6. Here is a photo of one of them."}, {"post_id": 70807, "ts": "2026-09-19T19:51:11Z", "hours": 0.8956, "text": "After receiving feedback from the Hack Club community, I have made these changes to CodeWare. The icon has been updated to increase contrast and to look better at small resolutions Minigame 6, “Unintelligent Arrows,” has been balanced to be easier for users to complete WASD Movement has been added to all games Support for held jumps has been added to the first minigame, “Orb Collection Platformer” An ambiguity in the README about the objective has been corrected"}, {"post_id": 70237, "ts": "2026-09-18T19:29:20Z", "hours": 0.94, "text": "I just balanced minigame 6, “Unintelligent Arrows,” after feedback from Hack Club members. I made users have more time to react before getting hit by the arrows. I have not released this update yet; once I apply some other suggestions from the community, I will release it as v0.11.0."}, {"post_id": 69877, "ts": "2026-09-17T23:54:31Z", "hours": 2.5408, "text": "I just created the sixth minigame, “Unintelligent Arrows,” in CodeWare! In the minigame, users have to dodge countless arrows that are described as unintelligent purely based on their inability to change paths once shot. If you weren’t already guessing, I am planning on making an intelligent-arrow-themed minigame in the future, possibly inspired by 1948 in some ways. This game is actually getting nice and long, way longer than I thought it would be at the start. When I shared it with people a while ago, it was very short. Now, it’s decently long! Once I add a lot more minigames, I will consider making them go in random order and giving them difficulty tags to determine when they should be shown."}, {"post_id": 69387, "ts": "2026-09-16T23:12:21Z", "hours": 1.0319, "text": "I just completely refactored, everything! I made many new directories in order to organize the entire repository much better! This took an hour because of the debugging and other related changes to the code associated with a complete structural refactor. It definitely was not a calm, easy hour."}, {"post_id": 69337, "ts": "2026-09-16T20:42:37Z", "hours": 2.45, "text": "I just added two minigames to CodeWare! The first minigame I just added, minigame 4, titled “Dodge the Flying Balls,” has users dodge flying balls (referred to as meteors in the code) for 45 seconds. Each hit takes away 10% of the user’s health. It can actually be pretty hard. A good strategy to stay alive is moving from side to side and never stopping, because there are really fast ones that come before you can even react. The second minigame I just added, minigame 5, titled “Click Very Fast,” has the user click on a big circular button in the middle 100 times in less than 20 seconds. I have tested it many times, and it is just the right time (at least for now). You can play the game at https://tyleruploads.github.io/code-ware/"}, {"post_id": 68302, "ts": "2026-09-14T21:48:29Z", "hours": 0.3142, "text": "This is a short one! I just integrated it with the Itch.io Butler API, so it will automatically update its Itch.io game whenever I make a new release! Currently, it is a draft on Itch.io. You can view the draft at https://tyleruploads.itch.io/codeware?secret=CDZUB2MTxYCmNQ70VRagItDLSTg . Sometime before I ship, I will make the Itch.io page public, which may bring in some players."}, {"post_id": 67752, "ts": "2026-09-14T00:02:19Z", "hours": 0.4536, "text": "I just put CodeWare on GitHub pages! You can view it at https://tyleruploads.github.io/code-ware/ ! I also upped the time for a minigame after a web playtest determined the amount of time given was not enough to complete the task at hand."}, {"post_id": 66971, "ts": "2026-09-12T23:32:31Z", "hours": 1.4353, "text": "I just added the third minigame to CodeWare! It is titled “Hit the Circles.” In the minigame, you start with a balance of -15, and each circle you hit, you get +1 balance! It is kindove like Whack-a-Mole (don’t sue me Mattel.) This marks version 0.6.0 of the game!"}, {"post_id": 66187, "ts": "2026-09-11T21:03:31Z", "hours": 1.0183, "text": "I just made some nice changes to CodeWare! I added pause, unpause, and reset functionality. This was in the README as coming soon for a while. I relocated script locations and removed ambiguity from a script named ‘self_timer.gd’ by renaming it ‘minigame_1_timer.gd,’ which makes it not look wrong when next to ‘minigame_2_timer.gd.’ And, I added the version number to the title menu!"}, {"post_id": 65647, "ts": "2026-09-10T22:37:05Z", "hours": 8.2886, "text": "Wow! 8 hours is a lot of time! Here’s what I did! Create all new assets. I made a new icon and background for the title screen and both minigames. The icon features an infinity symbol cut in half but connected with the parts in between them in a bit of a 3D-like arrangement, symbolizing two sides of eternity connected by small paths. The first minigame background and the title scene background contain a mountain range, a sunset, and one or multiple bridges. The second minigame background is two eyes in many perfectly aligned rectangles. Make death scene. Previously, I only had a win screen in the game (a very anticlimactic one at best, in a purposeful way). Now, I added a death scene too! The death scene links with the idea of the two sides of eternity (or infinity) connected by a small path because the user is showed specific text by automatic vertical scrolling, then they click a button to get thrown right back to the first minigame, as if nothing happened. They can do this as many times as they want; the bridges between the two halves of eternity represented by infinity are very strong, the same bridges connecting the mountains. Replace unused settings button with extras. The main menu used to contain a button labeled “Settings,” which would take the user to a blank scene with no way to get back. It has now been replaced with an “Extras” button, which contains an Asset Gallery that allows users to look at the beautiful game assets and obviously, a credits section. Universal back buttons. Now, users can always get back to some point in the game (including the title screen), even if they are in the infinite end scene."}, {"post_id": 63976, "ts": "2026-09-08T02:12:04Z", "hours": 2.1261, "text": "I JUST MADE THE END SCENE! It is very complex. But, I can’t spoil it! Here’s the code. It’s your choice to go line by line and spoil it for yourself."}, {"post_id": 63904, "ts": "2026-09-07T22:50:03Z", "hours": 0.75, "text": "Well, that was very silly. I spent 45 minutes adding automatic cross-compilation via GitHub actions! The main issue was: macOS! I now officially hate macOS. I essentially spent 12 commits trying to fix macOS, and 1 commit removing macOS. The commits mentioning Windows or Linux? They were never the issue. It was only macOS. Heres my commit history for this devlog: Add basic src/export_presets.cfg 1 file changed, 431 insertions(+) Make publishing workflow to compile 1 file changed, 66 insertions(+) Fix Linux export in export_presets.cfg to work with workflow 1 file changed, 2 insertions(+), 2 deletions(-) Set project directory in workflow 1 file changed, 4 insertions(+), 4 deletions(-) Remove export_path for windows in export_presents.cfg to fix CI/CD 1 file changed, 1 insertion(+), 1 deletion(-) Hopefully fixes CI/CD 1 file changed, 6 insertions(+), 9 deletions(-) Make macOS only support x86_64 to fix CI/CD issue 1 file changed, 2 insertions(+), 2 deletions(-) Add bundle identifier for macOS (why does it have to be such a pain?) 1 file changed, 2 insertions(+), 2 deletions(-) The mac strikes back: import ETC2 ASTC compession for macOS 1 file changed, 1 insertion(+) Add initial project import step to CI/CD 1 file changed, 4 insertions(+) Cd into src before initializing godot 2 files changed, 2 insertions(+), 1 deletion(-) Remove cding into src and add export_templates_path 1 file changed, 5 insertions(+), 1 deletion(-) The mac struck back yet again: emancipated 1 file changed, 1 insertion(+), 4 deletions(-) I rebased it to “Add support for every OS; remove support for macOS (it struck back, like starwars)”"}, {"post_id": 63853, "ts": "2026-09-07T20:42:56Z", "hours": 2.5025, "text": "This is going to be my second to last devlog before I ship, assuming everything goes well! In these two and a half hours, I did SO MANY THINGS! The most obvious change has to be how I added the second minigame, the clicker! In the minigame, you have 12 seconds to collect 18 tyleruploads circles! Each circle is randomly placed on the screen, which makes it so you can’t just memorize it! I also added a license to the project. It contains five sections for different types of content. And, I updated the SECURITY.md so it is completed. Another nice thing I added is action and description messages before each minigame. It tells the player what to do, so they aren’t losing any time when it starts! I also fixed the text it shows you when you win, before it takes you to the win screen I am going to make soon. I also revamped the README! It is way better now! Check out the README on GitHub if you want! I also set up and configured GitHub Discussions!"}, {"post_id": 62147, "ts": "2026-09-05T12:25:32Z", "hours": 0.2619, "text": "I just did some play testing, added some comments, and made a basic README! Nothing much!"}, {"post_id": 61866, "ts": "2026-09-05T00:12:04Z", "hours": 6.3597, "text": "I just created the basic blueprint for my very own WarioWare style video game, CodeWare! In CodeWare, you are playing as GitHub, and for the first minigame, you are trying to capture 7 of me (that’s just a nice image I had available—I might consider changing it later). The time constraints are actually pretty balanced, you’ll generally finish right in the nick of time. There is still a lot more remaining. The reason there was so much time in this devlog is because of error correction. This is my first time using Godot—everything’s not meant to be correct the first time around. A lot of the error correction was silly stuff like scaling, timer pixelation, text getting cropped off (without me knowing), and etc. You jump on those little box thingeys to get to the mini-mes in order to collect. In order to get to the one near the big wall barrier, you need to make a big jump from one near it (NOT TO THE RIGHT!!). And, once you go to get the last ones on the very right, there’s no coming out! Hopefully, you got the other ones first!"}]...
|
Title: CodeWare by @tyleruploads | Stardance
Devl Title: CodeWare by @tyleruploads | Stardance
Devlogs:
I just created the basic blueprint for my very own WarioWare style video game, CodeWare! In CodeWare, you are playing as GitHub, and for the first minigame, you are trying to capture 7 of me (that’s just a nice image I had available—I might consider changing it later). The time constraints are actually pretty balanced, you’ll generally finish right in the nick of time. There is still a lot more remaining. The reason there was so much time in this devlog is because of error correction. This is my first time using Godot—everything’s not meant to be correct the first time around. A lot of the error correction was silly stuff like scaling, timer pixelation, text getting cropped off (without me knowing), and etc. You jump on those little box thingeys to get to the mini-mes in order to collect. In order to get to the one near the big wall barrier, you need to make a big jump from one near it (NOT TO THE RIGHT!!). And, once you go to get the last ones on the very right, there’s no coming out! Hopefully, you got the other ones first!
I just did some play testing, added some comments, and made a basic README! Nothing much!
This is going to be my second to last devlog before I ship, assuming everything goes well! In these two and a half hours, I did SO MANY THINGS! The most obvious change has to be how I added the second minigame, the clicker! In the minigame, you have 12 seconds to collect 18 tyleruploads circles! Each circle is randomly placed on the screen, which makes it so you can’t just memorize it! I also added a license to the project. It contains five sections for different types of content. And, I updated the SECURITY.md so it is completed. Another nice thing I added is action and description messages before each minigame. It tells the player what to do, so they aren’t losing any time when it starts! I also fixed the text it shows you when you win, before it takes you to the win screen I am going to make soon. I also revamped the README! It is way better now! Check out the README on GitHub if you want! I also set up and configured GitHub Discussions!
Well, that was very silly. I spent 45 minutes adding automatic cross-compilation via GitHub actions! The main issue was: macOS! I now officially hate macOS. I essentially spent 12 commits trying to fix macOS, and 1 commit removing macOS. The commits mentioning Windows or Linux? They were never the issue. It was only macOS. Heres my commit history for this devlog: Add basic src/export_presets.cfg 1 file changed, 431 insertions(+) Make publishing workflow to compile 1 file changed, 66 insertions(+) Fix Linux export in export_presets.cfg to work with workflow 1 file changed, 2 insertions(+), 2 deletions(-) Set project directory in workflow 1 file changed, 4 insertions(+), 4 deletions(-) Remove export_path for windows in export_presents.cfg to fix CI/CD 1 file changed, 1 insertion(+), 1 deletion(-) Hopefully fixes CI/CD 1 file changed, 6 insertions(+), 9 deletions(-) Make macOS only support x86_64 to fix CI/CD issue 1 file changed, 2 insertions(+), 2 deletions(-) Add bundle identifier for macOS (why does it have to be such a pain?) 1 file changed, 2 insertions(+), 2 deletions(-) The mac strikes back: import ETC2 ASTC compession for macOS 1 file changed, 1 insertion(+) Add initial project import step to CI/CD 1 file changed, 4 insertions(+) Cd into src before initializing godot 2 files changed, 2 insertions(+), 1 deletion(-) Remove cding into src and add export_templates_path 1 file changed, 5 insertions(+), 1 deletion(-) The mac struck back yet again: emancipated 1 file changed, 1 insertion(+), 4 deletions(-) I rebased it to “Add support for every OS; remove support for macOS (it struck back, like starwars)”
I JUST MADE THE END SCENE! It is very complex. But, I can’t spoil it! Here’s the code. It’s your choice to go line by line and spoil it for yourself.
Wow! 8 hours is a lot of time! Here’s what I did! Create all new assets. I made a new icon and background for the title screen and both minigames. The icon features an infinity symbol cut in half but connected with the parts in between them in a bit of a 3D-like arrangement, symbolizing two sides of eternity connected by small paths. The first minigame background and the title scene background contain a mountain range, a sunset, and one or multiple bridges. The second minigame background is two eyes in many perfectly aligned rectangles. Make death scene. Previously, I only had a win screen in the game (a very anticlimactic one at best, in a purposeful way). Now, I added a death scene too! The death scene links with the idea of the two sides of eternity (or infinity) connected by a small path because the user is showed specific text by automatic vertical scrolling, then they click a button to get thrown right back to the first minigame, as if nothing happened. They can do this as many times as they want; the bridges between the two halves of eternity represented by infinity are very strong, the same bridges connecting the mountains. Replace unused settings button with extras. The main menu used to contain a button labeled “Settings,” which would take the user to a blank scene with no way to get back. It has now been replaced with an “Extras” button, which contains an Asset Gallery that allows users to look at the beautiful game assets and obviously, a credits section. Universal back buttons. Now, users can always get back to some point in the game (including the title screen), even if they are in the infinite end scene.
I just made some nice changes to CodeWare! I added pause, unpause, and reset functionality. This was in the README as coming soon for a while. I relocated script locations and removed ambiguity from a script named ‘self_timer.gd’ by renaming it ‘minigame_1_timer.gd,’ which makes it not look wrong when next to ‘minigame_2_timer.gd.’ And, I added the version number to the title menu!
I just added the third minigame to CodeWare! It is titled “Hit the Circles.” In the minigame, you start with a balance of -15, and each circle you hit, you get +1 balance! It is kindove like Whack-a-Mole (don’t sue me Mattel.) This marks version 0.6.0 of the game!
I just put CodeWare on GitHub pages! You can view it at https://tyleruploads.github.io/code-ware/ ! I also upped the time for a minigame after a web playtest determined the amount of time given was not enough to complete the task at hand.
This is a short one! I just integrated it with the Itch.io Butler API, so it will automatically update its Itch.io game whenever I make a new release! Currently, it is a draft on Itch.io. You can view the draft at https://tyleruploads.itch.io/codeware?secret=CDZUB2MTxYCmNQ70VRagItDLSTg . Sometime before I ship, I will make the Itch.io page public, which may bring in some players.
I just added two minigames to CodeWare! The first minigame I just added, minigame 4, titled “Dodge the Flying Balls,” has users dodge flying balls (referred to as meteors in the code) for 45 seconds. Each hit takes away 10% of the user’s health. It can actually be pretty hard. A good strategy to stay alive is moving from side to side and never stopping, because there are really fast ones that come before you can even react. The second minigame I just added, minigame 5, titled “Click Very Fast,” has the user click on a big circular button in the middle 100 times in less than 20 seconds. I have tested it many times, and it is just the right time (at least for now). You can play the game at https://tyleruploads.github.io/code-ware/
I just completely refactored, everything! I made many new directories in order to organize the entire repository much better! This took an hour because of the debugging and other related changes to the code associated with a complete structural refactor. It definitely was not a calm, easy hour.
I just created the sixth minigame, “Unintelligent Arrows,” in CodeWare! In the minigame, users have to dodge countless arrows that are described as unintelligent purely based on their inability to change paths once shot. If you weren’t already guessing, I am planning on making an intelligent-arrow-themed minigame in the future, possibly inspired by 1948 in some ways. This game is actually getting nice and long, way longer than I thought it would be at the start. When I shared it with people a while ago, it was very short. Now, it’s decently long! Once I add a lot more minigames, I will consider making them go in random order and giving them difficulty tags to determine when they should be shown.
I just balanced minigame 6, “Unintelligent Arrows,” after feedback from Hack Club members. I made users have more time to react before getting hit by the arrows. I have not released this update yet; once I apply some other suggestions from the community, I will release it as v0.11.0.
After receiving feedback from the Hack Club community, I have made these changes to CodeWare. The icon has been updated to increase contrast and to look better at small resolutions Minigame 6, “Unintelligent Arrows,” has been balanced to be easier for users to complete WASD Movement has been added to all games Support for held jumps has been added to the first minigame, “Orb Collection Platformer” An ambiguity in the README about the objective has been corrected
I just made two new assets for CodeWare! They are the players in minigames 4 and 6. Here is a photo of one of them.
I just released version v0.13.0 of CodeWare! In this version, I have completely changed the sound environment of the game! I will explain it with two basic pseudocode (or Python) logic statements! prev_sound = sound in v0.12.0 curr_sound = sound in v0.13.0 print(prev_sound, curr_sound) # False, True What I’m trying to illustrate here is that there was absolutely no sound before, and now there is! There is a background ticking noise playing (forever) through an autoload and sound effects corresponding to in-minigame events. Feel free to test it at https://tyleruploads.itch.io/codeware?secret=CDZUB2MTxYCmNQ70VRagItDLSTg ! Send any feedback in the comments!
I just made version v0.14.0 of CodeWare! In this version, I added the eighth minigame, “Choose the Boxes!” The user has 30 seconds to choose 20 boxes by clicking on the one matching the color of the center box. I also went through and removed unnecessary log statements and unused variables.
I just made the ninth minigame for CodeWare, “The Maze!” In the minigame, the user needs to get to the center of the maze in less than 18 seconds! They move a mini tyleruploads texture with arrow keys and WASD to eventually get to the bigger one in the middle! I had a lot of trouble with physics here, hence the 2 hours! And, I’ve never made any sort of maze before, so this is a first!
I just made the tenth minigame for CodeWare! It is named “RGB Skills.” In the minigame, there are two colors: one generated automatically by the code, and one controlled by manual RGB Sliders. It validates the user’s guess using the GDScript method Vector3.distance_to() . The method uses the 3D Pythagorean theorem to calculate the Euclidean Distance between the RGB values, as if they were plotted in a 3D space. This works because the red value represents the x-axis, the green value represents the y-axis, and the blue value represents the z-axis on a 3D graph. This was very interesting for me to discover, since I only learned the 2D Pythagorean theorem last year (in seventh grade). The game also starts the sliders at the furthest possible points from the target color, which makes the minigame harder. If the player clicks the submit button without making any changes, they will not pass. And yes, I know they could easily invert the colors to find the right one. The only thing is, they probably didn’t read this devlog. So, they’ll have no clue of the fact the sliders were placed at the inversion of the target color.
I just did a lot of asset updating and linting! The part I think would be most interesting to you is obviously the asset updates. I changed the assets in Minigame 1, 3, 4, and 9! I also updated the gallery, accessible in the extras menu, to include new assets I’ve forgotten to put in there for a while now. I’ll just show you how minigame one looks now; no need for a detailed explanation of everything. Now, I have to address the boring part, which took most of the three and a half hours. That would be linting! It’s pretty self-explanatory: I went through and made the scenes and scripts adhere to style guidelines.
In the Newspaper department at my summer sleepaway camp this year, they always said, “If the number is less than 11, spell it out.” CodeWare has officially surpassed this guideline in the number of its minigames. Minigame 11 of CodeWare is titled “Type the Strings,” and players must type 15 five-character strings provided to them in less than one minute. The string is generated from a pool of characters with lookalikes (i.e., Z and 2, S and 5, O and 0, I and l, etc.) removed to ensure it is completely fair for the user. This was definitely one of the easier minigames to code, but it wasn’t the easiest thing ever. I still ran into some issues, like the vertical alignment of a RichTextLabel being a bit too low when dynamically updating its content in GDScript to show a custom notice to the user (I fixed it by changing it to a normal Label, after troubleshooting for way too long).
I just created the twelfth mingame of CodeWare, “Catch the Falling Orbs!” In it, you have 45 seconds to catch 35 falling orbs by moving left and right with your keyboard.
This will be one of my very last devlogs before I ship CodeWare! I just created the gameplay trailer, which is a huge accomplishment! This is my first time making any sort of video for anything I make in the computer world, and I think it actually turned out very well! The video shows potential players what the game will look like and gives a glimpse of its unexpected win-and-lose endings. I also put the video on the game’s Itch.io page, which will be made public very soon. You can view the video on YouTube here: CodeWare - Official Gameplay Video
This marks v1.0.0! This is my FINAL devlog for CodeWare (at least the first ship)! It has really been a great project that has significantly pushed what I think about my development capabilities. But I will explain that more in the ship message! The main change made over the time of this devlog was a complete revamp of the README! Here is a summary of the changes made to it: The following shields have been added: Play on GitHub Pages, Made with Godot, GitHub Release (version number), and GitHub Commit Activity The hero image near the top of the README, depicting the title screen, has been replaced with a gameplay video for the game, with a hero of minigame 6 (Unintelligent Arrows) The minigames section has been moved to near the bottom of the README to make the start of the README a better hook. And the minigame descriptions and hero images inside the section have been put inside a spoiler notice, so the game can not be easily spoiled for players. And the hero images in the minigame section have been converted from Markdown tags to HTML tags in order to enforce a specific width.
Ships:
I created CodeWare, a WarioWare-style video game where you have to complete various minigames, written in Godot. I originally had it under the WarioWare game mission, but I eventually decided I should detach it from it due to the sheer complexity of this game, which is way above the beginner mission. In the game, players are put through what is currently 12 minigames. Each minigame has a strict timer limit, whether it be losing a life or progressing to the next minigame once it strikes 0. In case you are confused, the way they win a life at the end is if the purpose of the minigame is to survive a certain amount of time against computer-generated obstacles, like arrows or orbs (essentially meteors). The very interesting thing about this game is the two endings: the ending you get when you complete all the minigames with lives to spare, and the one when you lose all of your five lives. These endings, which I will not explain in detail (so it is not spoiled for you!), highlight the eternity of automatically generated code files. The opening scene of the game is the Tyleruploads Mountain Range, which shows many mountains connected via bridges. The suspension for those bridges is the game’s logo turned into a bunch of small links. Metaphysically, the game’s goal is to cross these bridges. Many parts of this project were extremely challenging for me. For one, I had never set foot in Godot at all before embarking on this project. I was also a complete newcomer to any sort of game development. I encountered many errors caused by my being just introduced to GDScript and game development, such as not knowing that scripts continue after changing the scene, the absence of a deferred call causing the game to go completely grey, losing a lot of work in video editing software while making the gameplay trailer video, and many more small and large things. In every ship message for prior Stardance projects, I have said something like “Wow! Before I started, I really didn’t think I could do something this complex. I really just transformed my coding abilities.” But this time, I am not going to repeat that basic fib without any supporting arguments. My previous Stardance projects were nowhere near this length. So, I would like to make a new claim now. That claim is that while I have not become a completely new developer or graphic designer or anything, I have dipped into a new path of development that I will have the choice to either continue to pursue or to reap the benefits of the mindset associated with it as I enter high school. For these reasons, along with the fact that I was able to sit down and write quality code for one project for 51 hours, I am very proud of myself. My viewpoint of “sit down and make a decent project and leave it” has been greatly diminished outside of specific contexts....
|
1793005052.8004754
|
1793091452.8004754
|
|
29083
|
The Infinite Book by @domst13 | Stardance
|
domst13
|
1
|
18.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T21:13:16Z", "hours": 18.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made the infinite book, an e-reader that’s housed inside of an old hollowed out fake book. It has basic e-reader functions, such as loading books from a micro SD card and being able to scroll through them. I had a lot of challenges throughout this project, seeing as it was my first C++ project and maybe biting off a little more than I could chew. I was able to overcome them, however, and now it’s complete. In actuality, I think my total time spent was probably 21-22 hours, because I didn’t lapse a lot of the physical build/assembly process. This was a really fun project, and I learned so many things about hardware as well as C++.", "repo": "https://github.com/dominicstange13/The-Infinite-Book", "demo": ""}]...
|
[{"post_id": 74635, "ts": "202 [{"post_id": 74635, "ts": "2026-09-27T20:28:29Z", "hours": 2.0444, "text": "It’s finished! I’m back guys, I know it’s been like 2 months and I apologize, I really procrastinated on finishing this project. So… where do I begin? I finished wiring the components. For the buttons I designed and printed a panel to house them all. The voltage divider circuit that outputs the battery voltage also got moved inside of the button panel, before the whole thing was sealed off with hot glue. Using a dremel, I hollowed out little pockets of the fake book to make the screen fit and to add a hole to charge. Everything fits snugly inside of the case. The battery is behind the screen, the microcontroller is propped up on a custom 3d printed piece so the FPC cable of the screen isn’t getting bent violently. The microcontroller, buttons, and battery are all held in by velcro, while the screen is held in simply by a tight fit and the micro SD card reader is attached by mere wires so it can move freely and be easily accessed. All this together means that the entire electronic system can be ripped out, which is super helpful in case of future changes. On the software side of things, I didn’t have much to add. The screen now hibernates after five minutes of inactivity to preserve battery life. The book storage system isn’t exactly where I want it to be, but I can’t really work on it because my micro SD card reader died :(. This also means I can’t load books onto it yet, but once I can it will be 100% operational! That’s really all there is to say, see you guys at the ship!"}, {"post_id": 24139, "ts": "2026-07-07T14:43:22Z", "hours": 5.9025, "text": "Guys I have some unfortunate news. I worked for a super long time yesterday but it just isn’t going to be done in time. It’s so close to completion but I’m leaving today the infinite book simply won’t be ready in time. Sorry guys. I’ll be back in three n a half weeks and ill finish the project then. this is some bad news but its okay. the project will eventually get finished."}, {"post_id": 23333, "ts": "2026-07-06T06:59:30Z", "hours": 3.7914, "text": "Hey guys sorry for it being a couple days since the last devlog, I kinda forgot yesterday so this one is a combination of yesterday and today. So yesterday I didn’t do much except I wired the SD card reader with a breadboard and got that started. I had to battle with it a lot for it to work as intended and that battle is far from over as I am still working on the file loading system. Today I worked on fixing up my code for a while and finally got the SD card reader to what I would call a reasonable point, then I fixed an issue I was having with the opening of files off of the card. I’m still not completely sure what the fix was that made it start working all of a sudden, but my two main theories are that A) I was opening the file too early before the card reader could fully initialize or B) The breadboard wiring was just too unreliable to give a steady connection. Either way I started opening the file when it was actually needed instead of on startup and replaced the chunky breadboard wiring with soldered wires. One of the two things fixed the issue for what seems like permanently. I just hope I won’t have to revisit that part of the project later because I’m on a serious time crunch right now (this thing has to be done by Tuesday or else I am absolutely fried because I’m going on a 3 and a half week trip and my parents won’t let me bring my phone for some reason meaning if I don’t get my infinite book working in time it’s over for me). Finally I also got both navigation buttons working as well as the reading light and light switch. All of those things are currently breadboard wired instead of soldered but that’ll get fixed when the code is looking a bit more solid. In terms of inputs I’ll still need a main power switch to keep the battery from draining as well as a home/select button. Theoretically after all that is working I can assemble and decorate this thing and the project will be done but unfortunately that’s easier said than done especially if I only have tomorrow to work but let’s all just pray for the best. See you guys tomorrow, hopefully for the last devlog of this project!"}, {"post_id": 21948, "ts": "2026-07-04T04:39:54Z", "hours": 2.4461, "text": "Today I’m gonna be honest I wasn’t able to get much done since the whole time I was basically just fixing stuff I was able to actually figure out a way to do partial resets which is friggin aura I’m starting work on the SD card reader so yeah see you tomorrow"}, {"post_id": 21336, "ts": "2026-07-03T06:59:22Z", "hours": 1.8586, "text": "Today I fixed the LiPo battery readings by using a LiPo flow chart to match the curved depletion of LiPo batteries. When I finished I checked with a multimeter and the predicted voltages were basically spot-on, matching the multimeter exactly once I added a calibration step to the math to account for the difference. I also found out some bad news, which is that my e-paper display is incompatible with partial refreshes (updating the pixels of the display in the part you are changing specifically rather than the entire display) in the library I am using, and I have not been able to find a replacement library so I am assuming it is just entirely not possible. This does suck but I think the project will be okay and I will still be able to make a good final product. That’s about all for today, I was gonna work more but unfortunately I was busy, my goals for tomorrow are going to be working on making more UI besides the battery, dealing with the no partial refresh issue, and (hopefully) acquiring an SD card and starting to figure out how I’m gonna load text onto the screen. See you guys tomorrow!"}, {"post_id": 20571, "ts": "2026-07-02T05:57:18Z", "hours": 1.0972, "text": "Today I created a system that can detect the battery percentage of the battery, then found out LiPo batteries deplete on a curve so I’m gonna have to rework it so it is actually accurate 😭 On a better note I learned more about the Arduino IDE and was extremely happy when my voltage divider circuit actually worked (I know it’s simple but still I was proud) Tomorrow I aim to fix the battery issue and hopefully find an SD card so I can start making the text display system work See you guys tomorrow! P.S. I didn’t have time to get a picture of the current contraption so here’s a picture of me soldering on pin header from my Lapse recording"}, {"post_id": 19734, "ts": "2026-07-01T03:55:14Z", "hours": 0.5772, "text": "I began coding but I couldn’t progress any further without soldering which my parents won’t let me do until tomorrow (for some reason?) so yeah that’s all for today"}]...
|
Title: The Infinite Book by @domst13 | Stardance
Title: The Infinite Book by @domst13 | Stardance
Devlogs:
I began coding but I couldn’t progress any further without soldering which my parents won’t let me do until tomorrow (for some reason?) so yeah that’s all for today
Today I created a system that can detect the battery percentage of the battery, then found out LiPo batteries deplete on a curve so I’m gonna have to rework it so it is actually accurate 😭 On a better note I learned more about the Arduino IDE and was extremely happy when my voltage divider circuit actually worked (I know it’s simple but still I was proud) Tomorrow I aim to fix the battery issue and hopefully find an SD card so I can start making the text display system work See you guys tomorrow! P.S. I didn’t have time to get a picture of the current contraption so here’s a picture of me soldering on pin header from my Lapse recording
Today I fixed the LiPo battery readings by using a LiPo flow chart to match the curved depletion of LiPo batteries. When I finished I checked with a multimeter and the predicted voltages were basically spot-on, matching the multimeter exactly once I added a calibration step to the math to account for the difference. I also found out some bad news, which is that my e-paper display is incompatible with partial refreshes (updating the pixels of the display in the part you are changing specifically rather than the entire display) in the library I am using, and I have not been able to find a replacement library so I am assuming it is just entirely not possible. This does suck but I think the project will be okay and I will still be able to make a good final product. That’s about all for today, I was gonna work more but unfortunately I was busy, my goals for tomorrow are going to be working on making more UI besides the battery, dealing with the no partial refresh issue, and (hopefully) acquiring an SD card and starting to figure out how I’m gonna load text onto the screen. See you guys tomorrow!
Today I’m gonna be honest I wasn’t able to get much done since the whole time I was basically just fixing stuff I was able to actually figure out a way to do partial resets which is friggin aura I’m starting work on the SD card reader so yeah see you tomorrow
Hey guys sorry for it being a couple days since the last devlog, I kinda forgot yesterday so this one is a combination of yesterday and today. So yesterday I didn’t do much except I wired the SD card reader with a breadboard and got that started. I had to battle with it a lot for it to work as intended and that battle is far from over as I am still working on the file loading system. Today I worked on fixing up my code for a while and finally got the SD card reader to what I would call a reasonable point, then I fixed an issue I was having with the opening of files off of the card. I’m still not completely sure what the fix was that made it start working all of a sudden, but my two main theories are that A) I was opening the file too early before the card reader could fully initialize or B) The breadboard wiring was just too unreliable to give a steady connection. Either way I started opening the file when it was actually needed instead of on startup and replaced the chunky breadboard wiring with soldered wires. One of the two things fixed the issue for what seems like permanently. I just hope I won’t have to revisit that part of the project later because I’m on a serious time crunch right now (this thing has to be done by Tuesday or else I am absolutely fried because I’m going on a 3 and a half week trip and my parents won’t let me bring my phone for some reason meaning if I don’t get my infinite book working in time it’s over for me). Finally I also got both navigation buttons working as well as the reading light and light switch. All of those things are currently breadboard wired instead of soldered but that’ll get fixed when the code is looking a bit more solid. In terms of inputs I’ll still need a main power switch to keep the battery from draining as well as a home/select button. Theoretically after all that is working I can assemble and decorate this thing and the project will be done but unfortunately that’s easier said than done especially if I only have tomorrow to work but let’s all just pray for the best. See you guys tomorrow, hopefully for the last devlog of this project!
Guys I have some unfortunate news. I worked for a super long time yesterday but it just isn’t going to be done in time. It’s so close to completion but I’m leaving today the infinite book simply won’t be ready in time. Sorry guys. I’ll be back in three n a half weeks and ill finish the project then. this is some bad news but its okay. the project will eventually get finished.
It’s finished! I’m back guys, I know it’s been like 2 months and I apologize, I really procrastinated on finishing this project. So… where do I begin? I finished wiring the components. For the buttons I designed and printed a panel to house them all. The voltage divider circuit that outputs the battery voltage also got moved inside of the button panel, before the whole thing was sealed off with hot glue. Using a dremel, I hollowed out little pockets of the fake book to make the screen fit and to add a hole to charge. Everything fits snugly inside of the case. The battery is behind the screen, the microcontroller is propped up on a custom 3d printed piece so the FPC cable of the screen isn’t getting bent violently. The microcontroller, buttons, and battery are all held in by velcro, while the screen is held in simply by a tight fit and the micro SD card reader is attached by mere wires so it can move freely and be easily accessed. All this together means that the entire electronic system can be ripped out, which is super helpful in case of future changes. On the software side of things, I didn’t have much to add. The screen now hibernates after five minutes of inactivity to preserve battery life. The book storage system isn’t exactly where I want it to be, but I can’t really work on it because my micro SD card reader died :(. This also means I can’t load books onto it yet, but once I can it will be 100% operational! That’s really all there is to say, see you guys at the ship!
Ships:
I made the infinite book, an e-reader that’s housed inside of an old hollowed out fake book. It has basic e-reader functions, such as loading books from a micro SD card and being able to scroll through them. I had a lot of challenges throughout this project, seeing as it was my first C++ project and maybe biting off a little more than I could chew. I was able to overcome them, however, and now it’s complete. In actuality, I think my total time spent was probably 21-22 hours, because I didn’t lapse a lot of the physical build/assembly process. This was a really fun project, and I learned so many things about hardware as well as C++....
|
1793005051.672297
|
1793091451.672297
|
|
70368
|
Satellite Tracker Pointer by @ArjunKanu | Stardanc Satellite Tracker Pointer by @ArjunKanu | Stardance...
|
ArjunKanu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Satellite Tracker Pointer by @ArjunKanu | S Title: Satellite Tracker Pointer by @ArjunKanu | Stardance...
|
1793005050.8318028
|
1793869050.8318028
|
|
70367
|
Rithul Keyboard by @Rithul | Stardance
|
Rithul
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Rithul Keyboard by @Rithul | Stardance
|
1793005049.9725606
|
1793609849.9725606
|
|
57936
|
My-site by @Dimeji | Stardance
|
Dimeji
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T18:25:57Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A personal website about me. Giving a preview of my past projects and a link to my github repository. Also contains a contact me page.", "repo": "https://github.com/Dimeji0/My-website", "demo": "https://dimeji0.github.io/My-website/"}]...
|
[{"post_id": 68193, "ts": "202 [{"post_id": 68193, "ts": "2026-09-14T18:00:15Z", "hours": 0.2586, "text": "Finally deployed the website had a bit of an issue cuz it was in a folder and I had to bring it out to the main branch. Simply copied the files though so its all the same inside the website data folder"}, {"post_id": 67680, "ts": "2026-09-13T20:54:34Z", "hours": 0.7825, "text": "So i added a contact me page, used a bum email obviously. The rest of the websites text uses the same white font colour for the most part, but not sure it suits it the best would love suggestions on what to change it to."}, {"post_id": 66854, "ts": "2026-09-12T19:39:56Z", "hours": 1.9181, "text": "Ok so I created the basic layout, and using a screenshot of my earlier code edited and blurred. I know I need to change the colour of the text to make it more clear, and I think I wanna add a contact me page at the bottom or something."}, {"post_id": 65033, "ts": "2026-09-09T20:47:07Z", "hours": 1.4419, "text": "I’ve got something very rough right now. Gone through the guide so I know the basics I’m gonna probably add a few more sections and a few bells and whistles probably"}]...
|
Title: My-site by @Dimeji | Stardance
Devlogs:
I’ Title: My-site by @Dimeji | Stardance
Devlogs:
I’ve got something very rough right now. Gone through the guide so I know the basics I’m gonna probably add a few more sections and a few bells and whistles probably
Ok so I created the basic layout, and using a screenshot of my earlier code edited and blurred. I know I need to change the colour of the text to make it more clear, and I think I wanna add a contact me page at the bottom or something.
So i added a contact me page, used a bum email obviously. The rest of the websites text uses the same white font colour for the most part, but not sure it suits it the best would love suggestions on what to change it to.
Finally deployed the website had a bit of an issue cuz it was in a folder and I had to bring it out to the main branch. Simply copied the files though so its all the same inside the website data folder
Ships:
A personal website about me. Giving a preview of my past projects and a link to my github repository. Also contains a contact me page....
|
1793005048.8753772
|
1793091448.8753772
|
|
70366
|
'An Inspector Calls' Quote API / Website b 'An Inspector Calls' Quote API / Website by @JacobNavaratne | Stardance...
|
JacobNavaratne
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 'An Inspector Calls' Quote API / We Title: 'An Inspector Calls' Quote API / Website by @JacobNavaratne | Stardance...
|
1793005048.0475392
|
1793869048.0475392
|
|
57915
|
Hot Potato Catch by @NJstechnigames | Stardance
|
NJstechnigames
|
1
|
7.73
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T19:14:43Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I shall declare this project Finished! Also the password to the devmode is “RaspberryPi1234” (dont use this to cheat)", "repo": "https://github.com/njstechnigames-afk/Hot-Potato-Catch-v1", "demo": "https://njs-technigames.itch.io/the-hot-potato-catch-game"}]...
|
[{"post_id": 72545, "ts": "202 [{"post_id": 72545, "ts": "2026-09-23T05:36:02Z", "hours": 1.0194, "text": "NEW UPDATE: I have redone the textures for the buttons for mobile. As well as that, I’ve added a pause system."}, {"post_id": 71871, "ts": "2026-09-21T17:55:01Z", "hours": 0.7075, "text": "NEW UPDATE!!! the game can now be played on a mobile phone by enabling the mobile phone mode in the settings menu :)"}, {"post_id": 71401, "ts": "2026-09-20T19:12:00Z", "hours": 1.7492, "text": "Added a few new features like a dev mode, (Although i will reveal the password after i ship it :))"}, {"post_id": 69768, "ts": "2026-09-17T19:10:31Z", "hours": 1.165, "text": "finally finished the minigames. time for the lose screen."}, {"post_id": 69710, "ts": "2026-09-17T16:54:24Z", "hours": 2.4069, "text": "i am currently working on the first minigame mechanics."}, {"post_id": 61062, "ts": "2026-09-03T19:38:05Z", "hours": 0.2703, "text": "Created menu screen. And github crashed so the respiratory isn’t linked :("}]...
|
Title: Hot Potato Catch by @NJstechnigames | Stard Title: Hot Potato Catch by @NJstechnigames | Stardance
Devlogs:
Created menu screen. And github crashed so the respiratory isn’t linked :(
i am currently working on the first minigame mechanics.
finally finished the minigames. time for the lose screen.
Added a few new features like a dev mode, (Although i will reveal the password after i ship it :))
NEW UPDATE!!! the game can now be played on a mobile phone by enabling the mobile phone mode in the settings menu :)
NEW UPDATE: I have redone the textures for the buttons for mobile. As well as that, I’ve added a pause system.
Ships:
I shall declare this project Finished! Also the password to the devmode is “RaspberryPi1234” (dont use this to cheat)...
|
1793005046.9169238
|
1793091446.9169238
|
|
70365
|
mac-right-click-cop-and-paste by @LPcomix123 | Sta mac-right-click-cop-and-paste by @LPcomix123 | Stardance...
|
LPcomix123
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mac-right-click-cop-and-paste by @LPcomix12 Title: mac-right-click-cop-and-paste by @LPcomix123 | Stardance...
|
1793005046.0734317
|
1793609846.0734317
|
|
30697
|
WorkParcel by @arpitaanuna | Stardance
|
arpitaanuna
|
1
|
10.0
|
180
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T14:53:46Z", "hours": 10.0, "multiplier": 18.0, "payout": 180, "blessing": "neutral", "text": "Shipping WorkParcel! After spending a lot of time designing, coding, testing and fixing things, I am finally shipping WorkParcel! WorkParcel is a Windows productivity app that helps you save everything connected to a particular project or task in one place. Whenever I work on something, I usually have multiple apps, files, folders and useful browser links open. After closing everything, finding and reopening the same setup again becomes really annoying. That is the problem I wanted WorkParcel to solve. With WorkParcel, you can create a parcel, select the apps and windows you are using, add files and folders, save useful web links, and keep everything connected to that work together. When you return later, you can open the parcel and choose which saved items you want to launch again. How it works Create a parcel and give it a name. Select the currently open apps and windows connected to your work. Add any files, folders or web links you need. Save the parcel without moving or copying your actual files. Use Pack Away to request a normal close for the supported windows you selected. Use Open Parcel whenever you want to reopen your saved setup. Creating a parcel does not immediately close everything. Packing Away is a separate action, so the user always controls when the selected setup should be closed. Other features I added WorkParcel also has a to-do list system. Tasks can be connected to a particular parcel, making it easier to remember what needs to be done when returning to that work. The Today page brings these tasks together in one place. Parcels can now be archived when they are no longer actively needed. They remain safely stored in the Archive and can be restored later. Individual items can also be edited or removed from a parcel. Removing a file or folder only removes its saved WorkParcel record—the actual item on the computer is never deleted. If a saved file or folder gets moved, WorkParcel can show that it is unavailable and allow the user to relink it to its new location. Other details in readme. Browser links Web links can be added by pasting one HTTP or HTTPS URL per line. WorkParcel saves these links and opens them in the default Windows browser. If a complete browser window is selected as an open app, Pack Away may close that entire selected window. WorkParcel does not claim to restore browser history, tab groups, page contents or exact window positions. Built with -C# .NET 10 WinUI 3 Windows App SDK SQLite Win32 APIs WorkParcel is now available as a public beta for Windows 10 and Windows 11!! This project went through several different ideas and UI changes, but I eventually kept its main purpose simple: Save the work. Pack it away. Open it when you return. WorkParcel v0.2.0 Beta 3 is officially shipped! And i hope everyone willll loveeeee itt!! cuz i love it tooo and am def gonna use this alot :D", "repo": "https://github.com/arpitaa31/WorkParcel", "demo": "https://github.com/arpitaa31/WorkParcel/releases/tag/v0.2.0-beta.3"}]...
|
[{"post_id": 65394, "ts": "202 [{"post_id": 65394, "ts": "2026-09-10T14:41:57Z", "hours": 2.7092, "text": "Final Devlog - WorkParcel is done! and i am using it now! After spending a lot of time designing, building, testing and fixing WorkParcel, the main version of the app is finally ready! WorkParcel started from a simple problem I kept noticing. Whenever I worked on a project, I had multiple apps, files, folders and useful links open. If I closed everything and returned later, I had to manually find and reopen the whole setup again. That is exactly what WorkParcel is made for. A user can now create a parcel for a task and add the apps, open windows, files, folders and web links connected to it. Creating the parcel keeps the current setup open. Later, the user can use Pack Away to close selected supported application windows and Open Parcel to reopen the saved items. I also added a to-do list feature. Tasks can now be connected to a particular parcel, so the user can remember what needs to be done when returning to that project. These tasks are also available through the Today page, making it easier to see and manage important work. Parcel archiving is working now as well. Item management has also been completed and fixed. Users can remove a particular app, file, folder or link from a parcel, and it disappears from the interface immediately. This only removes the saved WorkParcel record—the original file or folder on the computer is never deleted. Files and folders can also be checked for availability and relinked if their location changes. Web links are saved as normal URLs and open in the default Windows browser. The app does not require any Chrome or Edge extension and does not claim to capture or close individual browser tabs. All parcel information is stored locally using SQLite, so the saved setup remains available after closing and reopening WorkParcel. I also added archive and restore, search, local backups, light and dark themes, and a downloadable Windows installer. WorkParcel is basically a place where you can pack away the digital setup connected to a task and return to it later without searching for everything again. Like, as soon as i completed makin this, I have started usin it! like the besttttt thing i have ever madee."}, {"post_id": 55748, "ts": "2026-08-27T18:42:14Z", "hours": 3.0675, "text": "Devlog 3 — WorkParcel Is Properly Working! After completing the UI, I finally worked on making the main WorkParcel system actually functional. Users can now create a parcel and easily select everything connected to their work setup. WorkParcel can show the apps and windows currently open on the computer, and the user can choose only the particular ones they want to save. Files can be selected using the Windows file picker, and multiple files can be added at once. Complete folders can also be selected, along with useful links, applications and notes. Everything is organised into separate categories with checkboxes, so users remain in control of exactly what gets included. Before packing the parcel, WorkParcel shows a review of the complete selection too!!!!! Once confirmed, all the selected items are packed together and saved locally. The parcel remains available even after WorkParcel or the computer is restarted. When the user returns, they can open the parcel, review everything saved inside it and choose which items they want to reopen. Files open through their regular applications, folders open in File Explorer, links open in the default browser and supported apps can launch again. The Pack Away option also lets users update the parcel whenever their setup changes. New items can be added, old ones can be removed, and the latest version of the workspace can be saved for the next time. Removing something from WorkParcel never deletes the original file or folder from the computer. So WorkParcel has now moved beyond being only a UI prototype—the main system properly works. Apps, files, folders, links and notes can all be selected easily, packed into one parcel and reopened whenever that complete setup is needed again. Now, cuz finally it works, i just need to do some testing and also like I am thinking to add another feature like a exact window layout restoration, so that i can open the whole setup as it is! like if my vs code was on the left side and chrome tab on the right, it would open the same way! Now i just need to figure out how i will make that happen…. lets see!!"}, {"post_id": 53888, "ts": "2026-08-24T16:18:11Z", "hours": 1.4825, "text": "Devlog 2 — WorkParcel UI Complete! Hii! So i am a bit sick, so couldn’t work much today, but I completed working on the UI of WorkParcel and gave it a clean, dark look instead of making it feel like another productivity app. I also organised the whole app properly and added different tabs to the navbar — Parcels, Today, Archive and Settings. The overview of the app The main Parcels page makes it easy to view saved setups, search through them and choose whether to open or pack them away (so that its easy to navigate thru). I also designed the Create New Parcel popup , parcel details screen and the Capture Current Setup flow, where users will be able to select specific apps, windows, browser tabs, files, folders, links and notes they want to save inside a parcel. The Today page has a simple to-do list, while Archive keeps older parcels separate from the main workspace. Mainly completed the visual design and navigation . Next, I’ll connect everything to real local storage so parcels and to-do items stay saved even after restarting the app. Also, I wanna make a few more changes in the UI to make it look a bit more well structured. Soo, stay tuned! :)"}, {"post_id": 52963, "ts": "2026-08-23T10:45:39Z", "hours": 2.7164, "text": "Devlog 1 — Starting WorkParcel I spent some time brainstorming a new project idea and thought about an issue that I, and probably a lot of other devs, face regularly. While workin on a project, we usually have a bunch of specific files, folders, browser tabs, notes, VS Code windows and other apps open. Once we close everything and return later, we have to manually find and reopen the entire setup again. That’s where the idea for WorkParcel came from. What it lets you do WorkParcel will let users create a “parcel” for a task and add everything connected to it. Later, they’ll be able to click Open Parcel and quickly reopen that complete workspace. For the first part, I set up the GitHub repo, connected it to VS Code and initialised the project using C#, .NET 10 and WinUI 3. There isn’t much to visually show yet, but the complete foundation is ready now. Next, I’ll start designing the actual WorkParcel UI. I am so excited to complete making this project, cuz I’d def would want to use this, as it will def be very helpful."}]...
|
Title: WorkParcel by @arpitaanuna | Stardance
Dev Title: WorkParcel by @arpitaanuna | Stardance
Devlogs:
Devlog 1 — Starting WorkParcel I spent some time brainstorming a new project idea and thought about an issue that I, and probably a lot of other devs, face regularly. While workin on a project, we usually have a bunch of specific files, folders, browser tabs, notes, VS Code windows and other apps open. Once we close everything and return later, we have to manually find and reopen the entire setup again. That’s where the idea for WorkParcel came from. What it lets you do WorkParcel will let users create a “parcel” for a task and add everything connected to it. Later, they’ll be able to click Open Parcel and quickly reopen that complete workspace. For the first part, I set up the GitHub repo, connected it to VS Code and initialised the project using C#, .NET 10 and WinUI 3. There isn’t much to visually show yet, but the complete foundation is ready now. Next, I’ll start designing the actual WorkParcel UI. I am so excited to complete making this project, cuz I’d def would want to use this, as it will def be very helpful.
Devlog 2 — WorkParcel UI Complete! Hii! So i am a bit sick, so couldn’t work much today, but I completed working on the UI of WorkParcel and gave it a clean, dark look instead of making it feel like another productivity app. I also organised the whole app properly and added different tabs to the navbar — Parcels, Today, Archive and Settings. The overview of the app The main Parcels page makes it easy to view saved setups, search through them and choose whether to open or pack them away (so that its easy to navigate thru). I also designed the Create New Parcel popup , parcel details screen and the Capture Current Setup flow, where users will be able to select specific apps, windows, browser tabs, files, folders, links and notes they want to save inside a parcel. The Today page has a simple to-do list, while Archive keeps older parcels separate from the main workspace. Mainly completed the visual design and navigation . Next, I’ll connect everything to real local storage so parcels and to-do items stay saved even after restarting the app. Also, I wanna make a few more changes in the UI to make it look a bit more well structured. Soo, stay tuned! :)
Devlog 3 — WorkParcel Is Properly Working! After completing the UI, I finally worked on making the main WorkParcel system actually functional. Users can now create a parcel and easily select everything connected to their work setup. WorkParcel can show the apps and windows currently open on the computer, and the user can choose only the particular ones they want to save. Files can be selected using the Windows file picker, and multiple files can be added at once. Complete folders can also be selected, along with useful links, applications and notes. Everything is organised into separate categories with checkboxes, so users remain in control of exactly what gets included. Before packing the parcel, WorkParcel shows a review of the complete selection too!!!!! Once confirmed, all the selected items are packed together and saved locally. The parcel remains available even after WorkParcel or the computer is restarted. When the user returns, they can open the parcel, review everything saved inside it and choose which items they want to reopen. Files open through their regular applications, folders open in File Explorer, links open in the default browser and supported apps can launch again. The Pack Away option also lets users update the parcel whenever their setup changes. New items can be added, old ones can be removed, and the latest version of the workspace can be saved for the next time. Removing something from WorkParcel never deletes the original file or folder from the computer. So WorkParcel has now moved beyond being only a UI prototype—the main system properly works. Apps, files, folders, links and notes can all be selected easily, packed into one parcel and reopened whenever that complete setup is needed again. Now, cuz finally it works, i just need to do some testing and also like I am thinking to add another feature like a exact window layout restoration, so that i can open the whole setup as it is! like if my vs code was on the left side and chrome tab on the right, it would open the same way! Now i just need to figure out how i will make that happen…. lets see!!
Final Devlog - WorkParcel is done! and i am using it now! After spending a lot of time designing, building, testing and fixing WorkParcel, the main version of the app is finally ready! WorkParcel started from a simple problem I kept noticing. Whenever I worked on a project, I had multiple apps, files, folders and useful links open. If I closed everything and returned later, I had to manually find and reopen the whole setup again. That is exactly what WorkParcel is made for. A user can now create a parcel for a task and add the apps, open windows, files, folders and web links connected to it. Creating the parcel keeps the current setup open. Later, the user can use Pack Away to close selected supported application windows and Open Parcel to reopen the saved items. I also added a to-do list feature. Tasks can now be connected to a particular parcel, so the user can remember what needs to be done when returning to that project. These tasks are also available through the Today page, making it easier to see and manage important work. Parcel archiving is working now as well. Item management has also been completed and fixed. Users can remove a particular app, file, folder or link from a parcel, and it disappears from the interface immediately. This only removes the saved WorkParcel record—the original file or folder on the computer is never deleted. Files and folders can also be checked for availability and relinked if their location changes. Web links are saved as normal URLs and open in the default Windows browser. The app does not require any Chrome or Edge extension and does not claim to capture or close individual browser tabs. All parcel information is stored locally using SQLite, so the saved setup remains available after closing and reopening WorkParcel. I also added archive and restore, search, local backups, light and dark themes, and a downloadable Windows installer. WorkParcel is basically a place where you can pack away the digital setup connected to a task and return to it later without searching for everything again. Like, as soon as i completed makin this, I have started usin it! like the besttttt thing i have ever madee.
Ships:
Shipping WorkParcel! After spending a lot of time designing, coding, testing and fixing things, I am finally shipping WorkParcel! WorkParcel is a Windows productivity app that helps you save everything connected to a particular project or task in one place. Whenever I work on something, I usually have multiple apps, files, folders and useful browser links open. After closing everything, finding and reopening the same setup again becomes really annoying. That is the problem I wanted WorkParcel to solve. With WorkParcel, you can create a parcel, select the apps and windows you are using, add files and folders, save useful web links, and keep everything connected to that work together. When you return later, you can open the parcel and choose which saved items you want to launch again. How it works Create a parcel and give it a name. Select the currently open apps and windows connected to your work. Add any files, folders or web links you need. Save the parcel without moving or copying your actual files. Use Pack Away to request a normal close for the supported windows you selected. Use Open Parcel whenever you want to reopen your saved setup. Creating a parcel does not immediately close everything. Packing Away is a separate action, so the user always controls when the selected setup should be closed. Other features I added WorkParcel also has a to-do list system. Tasks can be connected to a particular parcel, making it easier to remember what needs to be done when returning to that work. The Today page brings these tasks together in one place. Parcels can now be archived when they are no longer actively needed. They remain safely stored in the Archive and can be restored later. Individual items can also be edited or removed from a parcel. Removing a file or folder only removes its saved WorkParcel record—the actual item on the computer is never deleted. If a saved file or folder gets moved, WorkParcel can show that it is unavailable and allow the user to relink it to its new location. Other details in readme. Browser links Web links can be added by pasting one HTTP or HTTPS URL per line. WorkParcel saves these links and opens them in the default Windows browser. If a complete browser window is selected as an open app, Pack Away may close that entire selected window. WorkParcel does not claim to restore browser history, tab groups, page contents or exact window positions. Built with -C# .NET 10 WinUI 3 Windows App SDK SQLite Win32 APIs WorkParcel is now available as a public beta for Windows 10 and Windows 11!! This project went through several different ideas and UI changes, but I eventually kept its main purpose simple: Save the work. Pack it away. Open it when you return. WorkParcel v0.2.0 Beta 3 is officially shipped! And i hope everyone willll loveeeee itt!! cuz i love it tooo and am def gonna use this alot :D...
|
1793005044.9197092
|
1793091444.9197092
|
|
70364
|
My awesome macropad! by @rohan26x | Stardance
|
rohan26x
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @rohan26x | Stardan Title: My awesome macropad! by @rohan26x | Stardance...
|
1793005044.062142
|
1793609844.062142
|
|
70363
|
Maru Blare by @deadbeef404 | Stardance
|
deadbeef404
|
0
|
0.73
|
0
|
[]
|
[{"post_id": 80713, "ts": "202 [{"post_id": 80713, "ts": "2026-10-18T16:19:16Z", "hours": 0.7267, "text": "I completed the schematic AND PCB!!!!"}]...
|
Title: Maru Blare by @deadbeef404 | Stardance
Dev Title: Maru Blare by @deadbeef404 | Stardance
Devlogs:
I completed the schematic AND PCB!!!!...
|
1793005043.1986527
|
1793609843.1986527
|
|
70362
|
My first slack bot! by @Cowboy | Stardance
|
Cowboy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Cowboy | Stardance
|
1793005042.3082614
|
1793609842.3082614
|
|
30832
|
Drone Sim V2 by @NamanS | Stardance
|
NamanS
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-11T22:26:48Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? I built a quadrotor simulator in MATLAB. The drone starts at the origin and flies through four gates, and the simulator checks whether it actually passed through each one. It’s a 12-state model: position, velocity, roll/pitch/yaw, and spin rates, with torque-driven attitude control instead of a point that can push in any direction. The flight path is made of cubic polynomials between waypoints, and each leg’s timing comes from the distance between gates and a target speed of 2 m/s. I also built an interactive 3D viewer with play/pause, a timeline slider, and several camera angles, including a chase camera (which is my favourite). Gates turn yellow if the drone passes through them and red if it misses. What was challenging? This was my first time working with vectors, matrices, and MATLAB entirely, so a lot of it was learning as I went. The hardest bug was in the attitude controller. The drone would spiral in a tightening orbit around a waypoint, and adding more damping made it worse. The real problem was that the attitude loop wasn’t reacting fast enough to keep up with the position loop. I also had a mix-up where my error vector and spin-rate vector were stacked in different orders, so the controller was fixing the wrong axis. What are you proud of? I built it up in stages and tested each piece by hand before moving on, from a 1D hover to full torque-driven rotation. Other than that I’m just proud of getting a finished project. What should people know to test it? You can watch the flight on the demo site: https://nam2302.github.io/Drone-Simulation-2/ To run it yourself, you need MATLAB with UAV Toolbox. Download the repo, open it in MATLAB, and run main.m. It simulates the flight, prints a gate pass report, and opens the interactive viewer. Try editing the waypoints at the top of main.m, or change the gains (Kp, Kd, Kr, Kw) and see how the flight changes. The inertia values are placeholders, and the gains are hand-tuned, so some waypoint layouts may miss gates.", "repo": "https://github.com/Nam2302/Drone-Simulation-2", "demo": "https://nam2302.github.io/Drone-Simulation-2/"}]...
|
[{"post_id": 51838, "ts": "202 [{"post_id": 51838, "ts": "2026-08-21T18:15:51Z", "hours": 1.2639, "text": "Devlog #5 I moved from fixed-duration legs to distance-based dynamic timing, replacing the flat 5-second-per-leg assumption from Devlog #4 with per-leg durations computed from waypoint spacing and a target cruise speed. I added a speed constant (2 m/s) and used it to compute t_segment as an array instead of a scalar. Each leg’s duration is now distance / speed between its start and end waypoints, so longer legs take proportionally longer instead of every leg getting the same fixed window. I also updated the interior-waypoint velocity estimate to divide by the sum of the adjacent leg durations (t_segment(i-1) + t_segment(i)) instead of 2 * t_segment, since that shortcut only made sense when every leg was the same length. I dropped mass to 0.5 kg to better match a real small-quadrotor class, and lowered Kp/Kd as a starting point since neither the old gains nor the old fixed timing apply anymore. Bugs I didn’t hit any major bugs during this section. Where it stands now Leg duration now reflects actual waypoint spacing instead of an arbitrary constant, which should reduce the unnatural sameness of a drone crawling across a short hop and sprinting across a long one in the same 5 seconds. Next up Re-tune Kp/Kd/Kr/Kw against the new mass and dynamic timing before drawing conclusions from the plots. I will also look into MATLAB’s UAV Toolbox with a built-in quadrotor animation/scene viewer that can consume my state trajectory directly."}, {"post_id": 50450, "ts": "2026-08-19T16:46:28Z", "hours": 2.0558, "text": "Devlog #4 I moved from simple point-to-point waypoint chasing to smooth polynomial trajectory generation between waypoints, replacing the threshold-based switching from Devlog #3 with time-based tracking of a continuously moving target. New machinery I built cubicTrajectory.m, which solves a 4x4 system of equations for the coefficients of a cubic polynomial connecting a start point to an end point over a fixed duration, with velocity constrained to zero at both ends of each leg. I also built evalCubic.m, which evaluates that polynomial’s position and velocity at any given time. I tested both standalone before touching the main dynamics. I stored all the coefficients in one array, coeffs_all, indexed by [coefficient, axis, leg], and built a loop that chains legs together so each leg starts exactly where the previous one ended. Bugs The very first version of the leg/local-time lookup accidentally dropped global time from the local-time calculation entirely, leaving the “current time within this leg” frozen at a constant for the whole leg instead of counting up. This meant the drone’s target wasn’t moving during a leg at all, it only jumped once per leg, which produced a single sharp overshoot spike instead of a tracked path. The simulation’s total time span hadn’t been updated to match the total trajectory duration, cutting the run short by a full leg. Where it stands now With both fixed, the drone tracks a moving position and velocity target through all four waypoints instead of chasing a static point. Spin rate and attitude plots show a clean repeating pattern, a spike at each leg transition that damps out before the next one, rather than instability or runaway spiraling. Next up Because every leg currently forces velocity to zero at both ends, the drone still fully stops at every intermediate waypoint before accelerating into the next leg, which is what’s producing the repeating spikes rather than a truly smooth flight. Next is allowing interior waypoints to have nonzero passthrough velocity (estimated from neighboring waypoints), plus adding acceleration feedforward into the force calculation so the controller anticipates the trajectory instead of only reacting to error. After that, the plan is still to move toward true minimum-snap trajectories."}, {"post_id": 36824, "ts": "2026-07-29T03:57:38Z", "hours": 1.2503, "text": "Devlog #3 I replaced the attitude lag from Devlog #2 with real rotational dynamics such as torque, inertia, and actual angular acceleration. Previously, I was assuming that attitude eventually catches up. New states and new physics The state vector went from 9 to 12: added p, q, r, the drone’s spin rate around its own x, y, and z axes. These are the rotational equivalent of vx, vy, vz, just measuring how fast orientation is changing instead of how fast position is changing. I added an inertia matrix, a diagonal 3x3 of made-up placeholder numbers representing how hard it is to spin the drone around each axis, similar to mass. The output is torque instead of thrust, and it feeds into torque divided by inertia to produce angular acceleration. Bugs The desired-attitude error vector and the spin-rate vector were stacked in different orders (theta/phi/psi vs. p/q/r, which is roll/pitch/yaw), so the controller was correcting the wrong axis against the wrong spin rate. The drone would approach a waypoint and then spiral into a slowly tightening orbit around it instead of settling, and in one attempt, diverged outward entirely. It reproduced the same spiral with a single fixed target and no waypoint switching at all. I found that the actual fix wasn’t more damping. Increasing the damping gain alone made it worse, not better. The real issue was that the attitude loop needed to react faster overall to keep pace with how aggressively the position loop was demanding tilt changes. Increasing the correction gain substantially fixed it for now. Where it stands now With gains rebalanced, the drone flies a full waypoint sequence with real torque-driven attitude dynamics. Spin rates spike on each maneuver and cleanly damp back to zero. One nice side effect of finally having real dynamics is that the path through a waypoint now visibly curves rather than shooting straight there, because aggressive tilting to accelerate sideways steals from the vertical thrust component. Next up Everything from here is trajectory generation such as replacing simple point-to-point waypoint chasing with differential-flatness-based polynomial paths. The journey has been difficult so far, especially as this is my first time interacting with vectors and matrices (3b1b’s linear algebra series is the only thing helping me out). Nevertheless, I am persevered to get a finished project."}, {"post_id": 36225, "ts": "2026-07-28T05:05:44Z", "hours": 0.8258, "text": "Devlog #2 I added real orientation states (φ, θ, ψ) and made thrust act along a single body axis instead of the free-vector cheat I’d been using. This is the point where the sim actually starts being a quadrotor. Building the rotation matrix Before touching the dynamics at all, I built a rotation matrix that converts “straight up, from the drone’s own perspective” into “which way that is, in world coordinates.” A quadrotor only ever pushes along its own up-direction, so the only way it moves sideways is by tilting, which redirects that one push. I built the matrix as three separate small rotations (yaw, roll, pitch) multiplied together, one for each axis, in a fixed order. I tested it with a small function, bodyZAxis(phi, theta, psi), against three hand-checks: Level (phi=theta=psi=0) → straight up, unchanged. Small roll → a small tilt in y, x untouched. Small pitch → a small tilt in x, y untouched. All three passed, which confirmed the rotation math was doing what it was supposed to before wiring it into anything else. Wiring it into droneDynamics The state vector went from 6 to 9: position, velocity, and now phi/theta/psi. The control loop has split into: Outer loop (same PID idea as before) computes a desired force vector, F_des, from position/velocity error plus a gravity feedforward term. That desired force gets converted into a desired tilt angle, using a small-angle approximation (the sideways component of a tilted thrust vector is roughly thrust * angle, solved backwards for angle given how much sideways force we want). Clamped to ±0.5 rad so a big position error can’t force a nonsensical tilt. The actual attitude states lag toward that desired tilt with a simple first-order lag (same idea as the motor lag in my old Python project, just applied to orientation instead of thrust). Actual thrust direction is computed from the real (possibly still-lagging) attitude, not the desired one. Bugs, in the order I found them Sign error on the gravity feedforward in F_des, which had gravity pulling the “cancel gravity” term the wrong way. Sign error on the final acceleration line, where I used the wrong sign on gravity there too, which sent the drone climbing to hundreds of meters instead of hovering. A big position error was asking for tilts of multiple radians (past 90°), which is physically meaningless and was part of what caused the runaway climb. Fixed with the clamp mentioned above. Where it stands now With the signs fixed and the tilt clamped, the drone tracks through the same waypoint list as before, but now via real (if simplified) attitude dynamics. I can see roll and pitch spike up during each leg of the trip and settle back down as it arrives at a waypoint, instead of the instant, direction-agnostic thrust from the old model. Next up This 9-state model is still leaning on a simplified attitude lag instead of real rotational physics, with no torques, no moment of inertia, no angular velocity states. The next real step is adding those (a 12-state model), replacing the lag with actual torque-driven rotation. After that, there is differential flatness and real trajectory generation, which is the actual point of this whole project"}, {"post_id": 31494, "ts": "2026-07-19T22:15:02Z", "hours": 1.0189, "text": "Devlog #1 I’ve built a drone sim before, such as a Python project with Plotly animations, PD control, motor lag, drag, the works. It looked good, but it had a problem where the “drone” was really just a point that could apply force in any direction, instantly. Real quadrotors can’t do that, because they only push one way (straight up from their own frame) and have to physically rotate to redirect that push. I’m now pushing myself to build a research-style quadrotor simulator in MATLAB. The plan: Start with a 9-state model: position, velocity, and orientation (roll/pitch/yaw). Verify a hover with a basic PID controller first. Later, move to trajectory planning using differential flatness (generating smooth polynomial paths and computing the forces needed to fly them) Eventually stress-test trajectories by speeding them up / slowing them down and watching what that does to the required forces. In this devlog, I covered: Milestone 1: 1D hover Before touching 3D, I built the simplest possible version, a single point that can only move up and down, controlled by: thrust = mass gravity + Kp error - Kd*velocity Using MATLAB’s ode45 to integrate [z; vz] forward in time. I learned what an ODE solver does. Milestone 2: 3D Next step: extend to a full 3D position [x,y,z,vx,vy,vz], but still letting the controller output force in any direction. This is the same “free vector” simplification my old Python sim used, kept on purpose this time as an isolated stepping stone. The goal was to prove the PID math generalizes to 3D before adding the complexity of real attitude dynamics on top. In my first test, the drone was pointed at a single fixed target. It gave a perfectly straight line, and it took me a second to realize that wasn’t a bug: since x, y, and z all use identical gains and start at rest, they move in lockstep, always in the same ratio to the target. Milestone 3: chasing waypoints I added a list of waypoints instead of one static target, with the controller switching to the next point once it gets within a 0.5 m of the current one. This needed a persistent variable inside the dynamics function to track which waypoint index it’s on, since ode45 calls that function many times per step and nothing about waypoint progress lives in the physical state vector itself. This gave path that actually bends at each waypoint instead of a straight shot. The corners are sharp however, instead of being smooth. Next up I’m going to be adding adding real orientation states (φ, θ, ψ) and constraining thrust to act along a single body axis, the way an actual quadrotor works. That’s the point where this stops being a point-mass simulation and starts being a quadrotor simulation."}]...
|
Title: Drone Sim V2 by @NamanS | Stardance
Devlog Title: Drone Sim V2 by @NamanS | Stardance
Devlogs:
Devlog #1 I’ve built a drone sim before, such as a Python project with Plotly animations, PD control, motor lag, drag, the works. It looked good, but it had a problem where the “drone” was really just a point that could apply force in any direction, instantly. Real quadrotors can’t do that, because they only push one way (straight up from their own frame) and have to physically rotate to redirect that push. I’m now pushing myself to build a research-style quadrotor simulator in MATLAB. The plan: Start with a 9-state model: position, velocity, and orientation (roll/pitch/yaw). Verify a hover with a basic PID controller first. Later, move to trajectory planning using differential flatness (generating smooth polynomial paths and computing the forces needed to fly them) Eventually stress-test trajectories by speeding them up / slowing them down and watching what that does to the required forces. In this devlog, I covered: Milestone 1: 1D hover Before touching 3D, I built the simplest possible version, a single point that can only move up and down, controlled by: thrust = mass gravity + Kp error - Kd*velocity Using MATLAB’s ode45 to integrate [z; vz] forward in time. I learned what an ODE solver does. Milestone 2: 3D Next step: extend to a full 3D position [x,y,z,vx,vy,vz], but still letting the controller output force in any direction. This is the same “free vector” simplification my old Python sim used, kept on purpose this time as an isolated stepping stone. The goal was to prove the PID math generalizes to 3D before adding the complexity of real attitude dynamics on top. In my first test, the drone was pointed at a single fixed target. It gave a perfectly straight line, and it took me a second to realize that wasn’t a bug: since x, y, and z all use identical gains and start at rest, they move in lockstep, always in the same ratio to the target. Milestone 3: chasing waypoints I added a list of waypoints instead of one static target, with the controller switching to the next point once it gets within a 0.5 m of the current one. This needed a persistent variable inside the dynamics function to track which waypoint index it’s on, since ode45 calls that function many times per step and nothing about waypoint progress lives in the physical state vector itself. This gave path that actually bends at each waypoint instead of a straight shot. The corners are sharp however, instead of being smooth. Next up I’m going to be adding adding real orientation states (φ, θ, ψ) and constraining thrust to act along a single body axis, the way an actual quadrotor works. That’s the point where this stops being a point-mass simulation and starts being a quadrotor simulation.
Devlog #2 I added real orientation states (φ, θ, ψ) and made thrust act along a single body axis instead of the free-vector cheat I’d been using. This is the point where the sim actually starts being a quadrotor. Building the rotation matrix Before touching the dynamics at all, I built a rotation matrix that converts “straight up, from the drone’s own perspective” into “which way that is, in world coordinates.” A quadrotor only ever pushes along its own up-direction, so the only way it moves sideways is by tilting, which redirects that one push. I built the matrix as three separate small rotations (yaw, roll, pitch) multiplied together, one for each axis, in a fixed order. I tested it with a small function, bodyZAxis(phi, theta, psi), against three hand-checks: Level (phi=theta=psi=0) → straight up, unchanged. Small roll → a small tilt in y, x untouched. Small pitch → a small tilt in x, y untouched. All three passed, which confirmed the rotation math was doing what it was supposed to before wiring it into anything else. Wiring it into droneDynamics The state vector went from 6 to 9: position, velocity, and now phi/theta/psi. The control loop has split into: Outer loop (same PID idea as before) computes a desired force vector, F_des, from position/velocity error plus a gravity feedforward term. That desired force gets converted into a desired tilt angle, using a small-angle approximation (the sideways component of a tilted thrust vector is roughly thrust * angle, solved backwards for angle given how much sideways force we want). Clamped to ±0.5 rad so a big position error can’t force a nonsensical tilt. The actual attitude states lag toward that desired tilt with a simple first-order lag (same idea as the motor lag in my old Python project, just applied to orientation instead of thrust). Actual thrust direction is computed from the real (possibly still-lagging) attitude, not the desired one. Bugs, in the order I found them Sign error on the gravity feedforward in F_des, which had gravity pulling the “cancel gravity” term the wrong way. Sign error on the final acceleration line, where I used the wrong sign on gravity there too, which sent the drone climbing to hundreds of meters instead of hovering. A big position error was asking for tilts of multiple radians (past 90°), which is physically meaningless and was part of what caused the runaway climb. Fixed with the clamp mentioned above. Where it stands now With the signs fixed and the tilt clamped, the drone tracks through the same waypoint list as before, but now via real (if simplified) attitude dynamics. I can see roll and pitch spike up during each leg of the trip and settle back down as it arrives at a waypoint, instead of the instant, direction-agnostic thrust from the old model. Next up This 9-state model is still leaning on a simplified attitude lag instead of real rotational physics, with no torques, no moment of inertia, no angular velocity states. The next real step is adding those (a 12-state model), replacing the lag with actual torque-driven rotation. After that, there is differential flatness and real trajectory generation, which is the actual point of this whole project
Devlog #3 I replaced the attitude lag from Devlog #2 with real rotational dynamics such as torque, inertia, and actual angular acceleration. Previously, I was assuming that attitude eventually catches up. New states and new physics The state vector went from 9 to 12: added p, q, r, the drone’s spin rate around its own x, y, and z axes. These are the rotational equivalent of vx, vy, vz, just measuring how fast orientation is changing instead of how fast position is changing. I added an inertia matrix, a diagonal 3x3 of made-up placeholder numbers representing how hard it is to spin the drone around each axis, similar to mass. The output is torque instead of thrust, and it feeds into torque divided by inertia to produce angular acceleration. Bugs The desired-attitude error vector and the spin-rate vector were stacked in different orders (theta/phi/psi vs. p/q/r, which is roll/pitch/yaw), so the controller was correcting the wrong axis against the wrong spin rate. The drone would approach a waypoint and then spiral into a slowly tightening orbit around it instead of settling, and in one attempt, diverged outward entirely. It reproduced the same spiral with a single fixed target and no waypoint switching at all. I found that the actual fix wasn’t more damping. Increasing the damping gain alone made it worse, not better. The real issue was that the attitude loop needed to react faster overall to keep pace with how aggressively the position loop was demanding tilt changes. Increasing the correction gain substantially fixed it for now. Where it stands now With gains rebalanced, the drone flies a full waypoint sequence with real torque-driven attitude dynamics. Spin rates spike on each maneuver and cleanly damp back to zero. One nice side effect of finally having real dynamics is that the path through a waypoint now visibly curves rather than shooting straight there, because aggressive tilting to accelerate sideways steals from the vertical thrust component. Next up Everything from here is trajectory generation such as replacing simple point-to-point waypoint chasing with differential-flatness-based polynomial paths. The journey has been difficult so far, especially as this is my first time interacting with vectors and matrices (3b1b’s linear algebra series is the only thing helping me out). Nevertheless, I am persevered to get a finished project.
Devlog #4 I moved from simple point-to-point waypoint chasing to smooth polynomial trajectory generation between waypoints, replacing the threshold-based switching from Devlog #3 with time-based tracking of a continuously moving target. New machinery I built cubicTrajectory.m, which solves a 4x4 system of equations for the coefficients of a cubic polynomial connecting a start point to an end point over a fixed duration, with velocity constrained to zero at both ends of each leg. I also built evalCubic.m, which evaluates that polynomial’s position and velocity at any given time. I tested both standalone before touching the main dynamics. I stored all the coefficients in one array, coeffs_all, indexed by [coefficient, axis, leg], and built a loop that chains legs together so each leg starts exactly where the previous one ended. Bugs The very first version of the leg/local-time lookup accidentally dropped global time from the local-time calculation entirely, leaving the “current time within this leg” frozen at a constant for the whole leg instead of counting up. This meant the drone’s target wasn’t moving during a leg at all, it only jumped once per leg, which produced a single sharp overshoot spike instead of a tracked path. The simulation’s total time span hadn’t been updated to match the total trajectory duration, cutting the run short by a full leg. Where it stands now With both fixed, the drone tracks a moving position and velocity target through all four waypoints instead of chasing a static point. Spin rate and attitude plots show a clean repeating pattern, a spike at each leg transition that damps out before the next one, rather than instability or runaway spiraling. Next up Because every leg currently forces velocity to zero at both ends, the drone still fully stops at every intermediate waypoint before accelerating into the next leg, which is what’s producing the repeating spikes rather than a truly smooth flight. Next is allowing interior waypoints to have nonzero passthrough velocity (estimated from neighboring waypoints), plus adding acceleration feedforward into the force calculation so the controller anticipates the trajectory instead of only reacting to error. After that, the plan is still to move toward true minimum-snap trajectories.
Devlog #5 I moved from fixed-duration legs to distance-based dynamic timing, replacing the flat 5-second-per-leg assumption from Devlog #4 with per-leg durations computed from waypoint spacing and a target cruise speed. I added a speed constant (2 m/s) and used it to compute t_segment as an array instead of a scalar. Each leg’s duration is now distance / speed between its start and end waypoints, so longer legs take proportionally longer instead of every leg getting the same fixed window. I also updated the interior-waypoint velocity estimate to divide by the sum of the adjacent leg durations (t_segment(i-1) + t_segment(i)) instead of 2 * t_segment, since that shortcut only made sense when every leg was the same length. I dropped mass to 0.5 kg to better match a real small-quadrotor class, and lowered Kp/Kd as a starting point since neither the old gains nor the old fixed timing apply anymore. Bugs I didn’t hit any major bugs during this section. Where it stands now Leg duration now reflects actual waypoint spacing instead of an arbitrary constant, which should reduce the unnatural sameness of a drone crawling across a short hop and sprinting across a long one in the same 5 seconds. Next up Re-tune Kp/Kd/Kr/Kw against the new mass and dynamic timing before drawing conclusions from the plots. I will also look into MATLAB’s UAV Toolbox with a built-in quadrotor animation/scene viewer that can consume my state trajectory directly.
Ships:
What did you make? I built a quadrotor simulator in MATLAB. The drone starts at the origin and flies through four gates, and the simulator checks whether it actually passed through each one. It’s a 12-state model: position, velocity, roll/pitch/yaw, and spin rates, with torque-driven attitude control instead of a point that can push in any direction. The flight path is made of cubic polynomials between waypoints, and each leg’s timing comes from the distance between gates and a target speed of 2 m/s. I also built an interactive 3D viewer with play/pause, a timeline slider, and several camera angles, including a chase camera (which is my favourite). Gates turn yellow if the drone passes through them and red if it misses. What was challenging? This was my first time working with vectors, matrices, and MATLAB entirely, so a lot of it was learning as I went. The hardest bug was in the attitude controller. The drone would spiral in a tightening orbit around a waypoint, and adding more damping made it worse. The real problem was that the attitude loop wasn’t reacting fast enough to keep up with the position loop. I also had a mix-up where my error vector and spin-rate vector were stacked in different orders, so the controller was fixing the wrong axis. What are you proud of? I built it up in stages and tested each piece by hand before moving on, from a 1D hover to full torque-driven rotation. Other than that I’m just proud of getting a finished project. What should people know to test it? You can watch the flight on the demo site: https://nam2302.github.io/Drone-Simulation-2/ To run it yourself, you need MATLAB with UAV Toolbox. Download the repo, open it in MATLAB, and run main.m. It simulates the flight, prints a gate pass report, and opens the interactive viewer. Try editing the waypoints at the top of main.m, or change the gains (Kp, Kd, Kr, Kw) and see how the flight changes. The inertia values are placeholders, and the gains are hand-tuned, so some waypoint layouts may miss gates....
|
1793005041.1879585
|
1793091441.1879585
|
|
70359
|
WarioWare Game by @naveedumairuddin | Stardance
|
naveedumairuddin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @naveedumairuddin | Stard Title: WarioWare Game by @naveedumairuddin | Stardance...
|
1793005040.344164
|
1793609840.344164
|
|
70358
|
BLARE by @manojmkumar303-byte | Stardance
|
manojmkumar303-byte
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: BLARE by @manojmkumar303-byte | Stardance
|
1793005039.515369
|
1793609839.515369
|
|
70357
|
My awesome website :o by @MJhaii | Stardance
|
MJhaii
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome website :o by @MJhaii | Stardanc Title: My awesome website :o by @MJhaii | Stardance...
|
1793005038.6587958
|
1793609838.6587958
|
|
70356
|
a interactive dev robot by @anumodhdevpg | Stardan a interactive dev robot by @anumodhdevpg | Stardance...
|
anumodhdevpg
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: a interactive dev robot by @anumodhdevpg | Title: a interactive dev robot by @anumodhdevpg | Stardance...
|
1793005037.811719
|
1793609837.811719
|
|
70355
|
a interactive dev robot by @anumodhdevpg | Stardan a interactive dev robot by @anumodhdevpg | Stardance...
|
anumodhdevpg
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: a interactive dev robot by @anumodhdevpg | Title: a interactive dev robot by @anumodhdevpg | Stardance...
|
1793005035.419291
|
1793609835.419291
|
|
70354
|
My awesome macropad! by @Nahar | Stardance
|
Nahar
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Nahar | Stardance
|
1793005034.5539653
|
1793609834.5539653
|
|
70353
|
cool site by @kingkev | Stardance
|
kingkev
|
0
|
3.08
|
0
|
[]
|
[{"post_id": 81640, "ts": "202 [{"post_id": 81640, "ts": "2026-10-21T21:04:20Z", "hours": 0.9808, "text": "now you can draw smt as wellll!!!!!!!!!!!!!! yeyyyyyyy and ofc PURPLE 🐞"}, {"post_id": 81337, "ts": "2026-10-20T21:41:23Z", "hours": 0.3936, "text": "yeyyy. now the music actually playss! click on the blinkie and a song from the artist will start playing!!!!!!!!!!!!!! (gotta work on the design tho) :P"}, {"post_id": 81095, "ts": "2026-10-19T20:58:14Z", "hours": 0.6506, "text": "heyyyy!!!!!!!!! OFC music is ESSENTIAL. so here we are. im making an audioplayer for this new site thingy here :D yey!!!"}, {"post_id": 80814, "ts": "2026-10-18T21:24:33Z", "hours": 1.0525, "text": "new siteeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"}]...
|
Title: cool site by @kingkev | Stardance
Devlogs: Title: cool site by @kingkev | Stardance
Devlogs:
new siteeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
heyyyy!!!!!!!!! OFC music is ESSENTIAL. so here we are. im making an audioplayer for this new site thingy here :D yey!!!
yeyyy. now the music actually playss! click on the blinkie and a song from the artist will start playing!!!!!!!!!!!!!! (gotta work on the design tho) :P
now you can draw smt as wellll!!!!!!!!!!!!!! yeyyyyyyy and ofc PURPLE 🐞...
|
1793005033.6189246
|
1793609833.6189246
|
|
69862
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793005032.7826436
|
1793869032.7826436
|
|
20495
|
Hangman by @thanEay | Stardance
|
thanEay
|
1
|
17.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T20:49:03Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Ready to ship my project! Try it at https://hangman.epin.to This is my hangman project. I put a lot of time into this project, written in Python. While it may look simple, there is a lot of nuance and thought put into it. For example, you can guess single letters, guess entire words, choose a random word to guess, or enter one yourself for a friend to guess. I have been learning Python for a few months and decided that a project like this had just enough complexity that I would learn but not enough that I would give up. Although this project has been completed for months, I procrastinated shipping it until now. I hope that you like it!", "repo": "https://github.com/thanEay/hackclub-hangman", "demo": "https://hangman.epin.to"}]...
|
[{"post_id": 16461, "ts": "202 [{"post_id": 16461, "ts": "2026-06-26T19:59:09Z", "hours": 2.4122, "text": "After much work, it is time to ship my project! Updated demo at hangman.epin.to . This project has taught me a lot about making working projects in Python. I only started learning Python at the beginning of this year, and this is the largest coding project that I have completed so far. It may not seem like a lot, but I put many hours into this code. Much of that time was fun, spent coding the main flow of the code. But eventually, the last few hours of this project went into debugging, trying to catch edge cases, and improved user messaging. So what have I worked on since my last devlog? Mostly implementing a way to disable the counter to play just for fun with infinite guesses. It is accessed by putting an exclamation mark before the mode input (like !m for manual or !r for random). Because no counter is going up, no hangman is displayed. I also changed some player messaging to make things clearer. When a correct letter is guessed, the 1-based location(s) in the word is printed rather than the 0-based indexes that Python uses for its lists. Finally, ‘!’ by itself is rejected as a guess. If it is input, the user will get a message saying that ‘!’ alone is not an acceptable input."}, {"post_id": 15443, "ts": "2026-06-25T03:07:41Z", "hours": 4.1822, "text": "Live demo hosted on Nest at hangman.epin.to . I made lots of progress, as you can probably tell with the amount of time it took. I added functionality for guessing entire words, which took about half of my four logged hours. Also, when the word is guessed correctly, the sprite changes to the man falling off of the gallows and saying ‘thanks’. To guess entire words, you put an exclamation mark at the beginning of your answer. Otherwise, only single letters are accepted. For example, to guess ‘stardance’ all at once rather than one letter at a time, you would enter ‘!stardance’. If a word guess is incorrect, the counter for tries left goes down one, just like it would for guessing an incorrect letter. I also updated some of the user prompts to make them more clear, as well as printing out all already guessed answers (letters and words) after any letter input (correct or incorrect) or incorrect word guesses so that the player can better guess correct words/letters. The reason that this project, despite its apparent simplicity is taking so long is the little features. For example, I added different messages based on different conditions (Have letters and/or words been guessed? If only one has, change the already guessed printed message to match.) TODO: Add the ability to turn off the counter so that the game can be played without a guess limit."}, {"post_id": 13768, "ts": "2026-06-22T15:52:50Z", "hours": 2.8817, "text": "Sprites added. Sprites are saved as a list of multi-line strings in ascii_sprites.py. As the name implies, the sprites are completely ascii and printable to the terminal. Additionally, now if the word has spaces, the printed characters will contain a space in the given spot. For example, ‘hack club’ will be ____ ____ instead of nine unbroken underscores. Letters that have been guessed already are printed out when an incorrect answer is chosen. I might change it to always tell you regardless of an incorrect answer to make it easier to guess. TODO: I need to add the ability to guess an entire word. I would also like to add a sprite change if the player guesses correctly. Maybe the guy would be released from the gallows or something."}, {"post_id": 11730, "ts": "2026-06-19T03:14:35Z", "hours": 1.6522, "text": "Working prototype completed! At this point, all text-related functionality is present. You can enter characters that show up more than once in a word, and it won’t throw errors. I spent the better part of a half hour trying to find out why most times I would enter a letter, it would say that there were none of that letter in the word. This was clearly a bug, as it happened even when entering a letter for a manually chosen word (showing that I wasn’t just an abysmal letter guesser). It turned out that the lack of two characters caused my problem. In my check_letter() function, it creates different letter location lists depending on whether there is one or more instances of that letter in the word. The code is like this. def check_letter(word: str, letter: str) -> list: if isinstance(letter, str) and len(letter) == 1: locations = [] if word.count(letter) == 1: locations = [word.find(letter)] elif word.count(letter) > 1: # BUG found here! elif was an if statement for index, character in enumerate(word): if character == letter: locations.append(index) else: locations = [-1] return locations # If letter is not in the word, will result in index of -1 The comment that starts with ‘BUG’ shows where the problem originated from. Any word with a single instance of a letter returned [-1] because if word.count(letter) > 1 would always override an intended single element list. Now, I need to add hangman sprites that will progress as you choose correct or incorrect answers, probably using ASCII characters."}, {"post_id": 11272, "ts": "2026-06-18T13:07:08Z", "hours": 2.6856, "text": "Last day of school, and even more coding! I have a mostly working prototype that can be seen below. There is no hangman sprite yet, but most of the functionality is here. Main.py has been expanded greatly. Now you can choose the game mode and enter characters. It also displays blank, unknown characters as ‘_’ and shows known characters as their letters, printing again after every input. A major bug that remains is that if a word has two identical letters (like ‘a’ in Stardance), only one can be input and uncovered. This is due to code that was meant to prevent people from doing the same wrong answer twice, but it also prevents entering the same right answer twice. This is the culprit code. In the looping code (counter does not go up in the current version, it is mostly a placeholder): while counter < 10: user_input = input(\"Enter another letter: \") if user_input.strip().lower() in already_guessed: print(\"You already guessed that letter.\") continue # Goes to next loop In the ask_for_letter() function, only a single instance of a letter is uncovered, even if the letter appears more than once. index = check_letter(word, letter) if index != -1: already_guessed.append(letter) message = f\"{letter} is in the word at index {index}.\" uncovered_indicies.append(index) return index, message check_letter() only returns a single index, which then only uncovers a single letter in the word. I need to fix this by giving the functions the ability to take and return multiple indexes. The image below shows an example of the current code. The word is ‘cryptic’, but the last ‘c’ cannot be selected. Assuming the word doesn’t have two of the same letter, when the word is guessed the following message is printed: You guessed the word: {secret_word}. Congratulations! 🎉"}, {"post_id": 10869, "ts": "2026-06-17T20:30:12Z", "hours": 1.5619, "text": "It is the second to last day of school, and that means a lot of free time to code! I worked on more functions that I will use, and I added docstrings for everything. I have an ask_for_letter() function that will do the heavy lifting for the hangman logic to keep a clean main.py. So far in main.py, I have logic to choose the word. I will expand main.py, but most of the logic will be kept in functions."}, {"post_id": 10414, "ts": "2026-06-17T03:21:09Z", "hours": 1.2764, "text": "I got a great start to this project. I wrote some functions that I will need to call in main.py, specifically one to ask the user for manual or random word choice, one to check the location of a letter in a word, and to choose a random word. I am trying to follow some best practices for Python, like functions in a separate file, docstrings, return type annotations, and descriptive errors. Next, I will finish up some of the major functions and start on main.py."}]...
|
Title: Hangman by @thanEay | Stardance
Devlogs:
I Title: Hangman by @thanEay | Stardance
Devlogs:
I got a great start to this project. I wrote some functions that I will need to call in main.py, specifically one to ask the user for manual or random word choice, one to check the location of a letter in a word, and to choose a random word. I am trying to follow some best practices for Python, like functions in a separate file, docstrings, return type annotations, and descriptive errors. Next, I will finish up some of the major functions and start on main.py.
It is the second to last day of school, and that means a lot of free time to code! I worked on more functions that I will use, and I added docstrings for everything. I have an ask_for_letter() function that will do the heavy lifting for the hangman logic to keep a clean main.py. So far in main.py, I have logic to choose the word. I will expand main.py, but most of the logic will be kept in functions.
Last day of school, and even more coding! I have a mostly working prototype that can be seen below. There is no hangman sprite yet, but most of the functionality is here. Main.py has been expanded greatly. Now you can choose the game mode and enter characters. It also displays blank, unknown characters as ‘_’ and shows known characters as their letters, printing again after every input. A major bug that remains is that if a word has two identical letters (like ‘a’ in Stardance), only one can be input and uncovered. This is due to code that was meant to prevent people from doing the same wrong answer twice, but it also prevents entering the same right answer twice. This is the culprit code. In the looping code (counter does not go up in the current version, it is mostly a placeholder): while counter < 10: user_input = input("Enter another letter: ") if user_input.strip().lower() in already_guessed: print("You already guessed that letter.") continue # Goes to next loop In the ask_for_letter() function, only a single instance of a letter is uncovered, even if the letter appears more than once. index = check_letter(word, letter) if index != -1: already_guessed.append(letter) message = f"{letter} is in the word at index {index}." uncovered_indicies.append(index) return index, message check_letter() only returns a single index, which then only uncovers a single letter in the word. I need to fix this by giving the functions the ability to take and return multiple indexes. The image below shows an example of the current code. The word is ‘cryptic’, but the last ‘c’ cannot be selected. Assuming the word doesn’t have two of the same letter, when the word is guessed the following message is printed: You guessed the word: {secret_word}. Congratulations! 🎉
Working prototype completed! At this point, all text-related functionality is present. You can enter characters that show up more than once in a word, and it won’t throw errors. I spent the better part of a half hour trying to find out why most times I would enter a letter, it would say that there were none of that letter in the word. This was clearly a bug, as it happened even when entering a letter for a manually chosen word (showing that I wasn’t just an abysmal letter guesser). It turned out that the lack of two characters caused my problem. In my check_letter() function, it creates different letter location lists depending on whether there is one or more instances of that letter in the word. The code is like this. def check_letter(word: str, letter: str) -> list: if isinstance(letter, str) and len(letter) == 1: locations = [] if word.count(letter) == 1: locations = [word.find(letter)] elif word.count(letter) > 1: # BUG found here! elif was an if statement for index, character in enumerate(word): if character == letter: locations.append(index) else: locations = [-1] return locations # If letter is not in the word, will result in index of -1 The comment that starts with ‘BUG’ shows where the problem originated from. Any word with a single instance of a letter returned [-1] because if word.count(letter) > 1 would always override an intended single element list. Now, I need to add hangman sprites that will progress as you choose correct or incorrect answers, probably using ASCII characters.
Sprites added. Sprites are saved as a list of multi-line strings in ascii_sprites.py. As the name implies, the sprites are completely ascii and printable to the terminal. Additionally, now if the word has spaces, the printed characters will contain a space in the given spot. For example, ‘hack club’ will be ____ ____ instead of nine unbroken underscores. Letters that have been guessed already are printed out when an incorrect answer is chosen. I might change it to always tell you regardless of an incorrect answer to make it easier to guess. TODO: I need to add the ability to guess an entire word. I would also like to add a sprite change if the player guesses correctly. Maybe the guy would be released from the gallows or something.
Live demo hosted on Nest at hangman.epin.to . I made lots of progress, as you can probably tell with the amount of time it took. I added functionality for guessing entire words, which took about half of my four logged hours. Also, when the word is guessed correctly, the sprite changes to the man falling off of the gallows and saying ‘thanks’. To guess entire words, you put an exclamation mark at the beginning of your answer. Otherwise, only single letters are accepted. For example, to guess ‘stardance’ all at once rather than one letter at a time, you would enter ‘!stardance’. If a word guess is incorrect, the counter for tries left goes down one, just like it would for guessing an incorrect letter. I also updated some of the user prompts to make them more clear, as well as printing out all already guessed answers (letters and words) after any letter input (correct or incorrect) or incorrect word guesses so that the player can better guess correct words/letters. The reason that this project, despite its apparent simplicity is taking so long is the little features. For example, I added different messages based on different conditions (Have letters and/or words been guessed? If only one has, change the already guessed printed message to match.) TODO: Add the ability to turn off the counter so that the game can be played without a guess limit.
After much work, it is time to ship my project! Updated demo at hangman.epin.to . This project has taught me a lot about making working projects in Python. I only started learning Python at the beginning of this year, and this is the largest coding project that I have completed so far. It may not seem like a lot, but I put many hours into this code. Much of that time was fun, spent coding the main flow of the code. But eventually, the last few hours of this project went into debugging, trying to catch edge cases, and improved user messaging. So what have I worked on since my last devlog? Mostly implementing a way to disable the counter to play just for fun with infinite guesses. It is accessed by putting an exclamation mark before the mode input (like !m for manual or !r for random). Because no counter is going up, no hangman is displayed. I also changed some player messaging to make things clearer. When a correct letter is guessed, the 1-based location(s) in the word is printed rather than the 0-based indexes that Python uses for its lists. Finally, ‘!’ by itself is rejected as a guess. If it is input, the user will get a message saying that ‘!’ alone is not an acceptable input.
Ships:
Ready to ship my project! Try it at https://hangman.epin.to This is my hangman project. I put a lot of time into this project, written in Python. While it may look simple, there is a lot of nuance and thought put into it. For example, you can guess single letters, guess entire words, choose a random word to guess, or enter one yourself for a friend to guess. I have been learning Python for a few months and decided that a project like this had just enough complexity that I would learn but not enough that I would give up. Although this project has been completed for months, I procrastinated shipping it until now. I hope that you like it!...
|
1793005031.6492102
|
1793091431.6492102
|
|
36007
|
virtual scale by @anchith | Stardance
|
anchith
|
1
|
19.0
|
166
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-21T10:25:25Z", "hours": 19.0, "multiplier": 8.61, "payout": 166, "blessing": "neutral", "text": "virtual-scale I made a simple Java tool for visualizing real world measurements on your screen. In the project, you can draw lines and view their real world measurements in various units. You can also import images, and then define a known measurement to accurately measure other parts of the image. The project has a ScaleLibrary tool in the backend, that has all the conversion and measurement tools. Creating this was an interesting but also challenging experience and I got to learn about displays, DPI, and more. I made the entire project in Java, with no external dependencies or libraries.", "repo": "https://github.com/koino2/virtual-scale", "demo": "https://github.com/koino2/virtual-scale/releases/tag/release"}]...
|
[{"post_id": 71694, "ts": "202 [{"post_id": 71694, "ts": "2026-09-21T10:15:36Z", "hours": 0.8969, "text": "shipping time! I did some final last minute changes to polish everything up, like fixing a grid bug, making a unit parser thing for measurements, and a bunch more. Then I built it into a jar and now I’m going to ship!"}, {"post_id": 71616, "ts": "2026-09-21T05:17:08Z", "hours": 7.4208, "text": "GUIs and other stuff The main thing that I did in these 7 hours was making a graphical interface for the app. I first designed the UI in the Netbeans Form Editor because it’s really easy to make it in there, then I exported all the code generated by that and then spent a lot of time wiring everything up and making the GUI stuff actually do something. It has a bunch of new features and settings like: Snapping Line colour Units Zoom Image stuff which took very long to implement because it needed a lot of backend stuff I also briefly overwrote a bunch of code and accidentally deleted the source folder but I managed to retrieve everything from the recycle bin I then made another GUI for the initialization screen - where you choose the calibration method (manual or reported) in a similar way. Did a lot of backend work as well, like changing how the image system calibrates stuff. Also I made a nice readme and I’m going to ship soon!"}, {"post_id": 69122, "ts": "2026-09-16T12:53:35Z", "hours": 2.4922, "text": "more improvements I added a file selection screen to choose which image to view. There is also a nice grid background now which took way too long woa you can put emojis now? I also made a bunch of other small QoL improvements too, and this is how it looks now! (not much of a visual difference compared to before )"}, {"post_id": 66074, "ts": "2026-09-11T17:17:54Z", "hours": 4.9775, "text": "Image measurement! I implemented another system where you can import an image, then draw a line and say how long that line is. Then the whole image stuff will be scaled proportional to that and then you can measure it and stuff! I also added a bunch of other small things like improving the scale library backend, adding camera controls, etc. It’s kind of barebones rn and this took way too long anyway, I’m going to add some menus/interfaces to tie everything together and some other QoL next ig. Here’s a picture of a maze where I selected the big horizontal line and defined it as 170mm, and there’s some measurements on it."}, {"post_id": 60158, "ts": "2026-09-02T10:50:28Z", "hours": 1.9089, "text": "Measure stuff I implemented some basic drawing tools with swing and now you can click and draw lines with real measurements displayed. Also there are some snapping features and other QoL stuff."}, {"post_id": 55594, "ts": "2026-08-27T15:28:11Z", "hours": 1.6364, "text": "virtual-scale I’m making a virtual scale! When modelling or designing stuff, it’s very easy to lose a sense of how big a measurement actually is. I constantly find myself grabbing a ruler just to visualize a distance. So I’m making a little virtual ruler that displays real-world measurements directly on your screen. It uses your screen’s dots-per-inch count (basically how many pixels are in an inch of the screen) to show accurate distances. Today, I worked on the actual scale library/backend of the app and worked on the scale calibration, unit conversion and scale systems."}]...
|
Title: virtual scale by @anchith | Stardance
Devl Title: virtual scale by @anchith | Stardance
Devlogs:
virtual-scale I’m making a virtual scale! When modelling or designing stuff, it’s very easy to lose a sense of how big a measurement actually is. I constantly find myself grabbing a ruler just to visualize a distance. So I’m making a little virtual ruler that displays real-world measurements directly on your screen. It uses your screen’s dots-per-inch count (basically how many pixels are in an inch of the screen) to show accurate distances. Today, I worked on the actual scale library/backend of the app and worked on the scale calibration, unit conversion and scale systems.
Measure stuff I implemented some basic drawing tools with swing and now you can click and draw lines with real measurements displayed. Also there are some snapping features and other QoL stuff.
Image measurement! I implemented another system where you can import an image, then draw a line and say how long that line is. Then the whole image stuff will be scaled proportional to that and then you can measure it and stuff! I also added a bunch of other small things like improving the scale library backend, adding camera controls, etc. It’s kind of barebones rn and this took way too long anyway, I’m going to add some menus/interfaces to tie everything together and some other QoL next ig. Here’s a picture of a maze where I selected the big horizontal line and defined it as 170mm, and there’s some measurements on it.
more improvements I added a file selection screen to choose which image to view. There is also a nice grid background now which took way too long woa you can put emojis now? I also made a bunch of other small QoL improvements too, and this is how it looks now! (not much of a visual difference compared to before )
GUIs and other stuff The main thing that I did in these 7 hours was making a graphical interface for the app. I first designed the UI in the Netbeans Form Editor because it’s really easy to make it in there, then I exported all the code generated by that and then spent a lot of time wiring everything up and making the GUI stuff actually do something. It has a bunch of new features and settings like: Snapping Line colour Units Zoom Image stuff which took very long to implement because it needed a lot of backend stuff I also briefly overwrote a bunch of code and accidentally deleted the source folder but I managed to retrieve everything from the recycle bin I then made another GUI for the initialization screen - where you choose the calibration method (manual or reported) in a similar way. Did a lot of backend work as well, like changing how the image system calibrates stuff. Also I made a nice readme and I’m going to ship soon!
shipping time! I did some final last minute changes to polish everything up, like fixing a grid bug, making a unit parser thing for measurements, and a bunch more. Then I built it into a jar and now I’m going to ship!
Ships:
virtual-scale I made a simple Java tool for visualizing real world measurements on your screen. In the project, you can draw lines and view their real world measurements in various units. You can also import images, and then define a known measurement to accurately measure other parts of the image. The project has a ScaleLibrary tool in the backend, that has all the conversion and measurement tools. Creating this was an interesting but also challenging experience and I got to learn about displays, DPI, and more. I made the entire project in Java, with no external dependencies or libraries....
|
1793005030.492505
|
1793091430.492505
|
|
57890
|
Entering dimension by @Irongolem | Stardance
|
Irongolem
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T07:26:47Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "hey guys so i made this website based on a puzzle ,i mean this website has a puzzle in it self ,visitors have to find a 1.show which is quite popular (hint: it is a conspiracy drama),2. a game which is very creative ,3. a comic book (hint: it is written by belgian writer ) this is my first project and i was unfamiliar with the terms and applications but gradually got adapted i took a little help from ai to understand some terms ,,,so thats it", "repo": "https://github.com/Irongolem222/Entering-dimension", "demo": "https://irongolem222.github.io/Entering-dimension/"}]...
|
[{"post_id": 61440, "ts": "202 [{"post_id": 61440, "ts": "2026-09-04T11:06:42Z", "hours": 1.0622, "text": "I created a website that interesting puzzle it is actually very easy to solve in which we have to guess 1 show ,1 game ,1 comic book in order to do that we can get the hints that are present on the site inn form of text or image … Best of luck"}]...
|
Title: Entering dimension by @Irongolem | Stardanc Title: Entering dimension by @Irongolem | Stardance
Devlogs:
I created a website that interesting puzzle it is actually very easy to solve in which we have to guess 1 show ,1 game ,1 comic book in order to do that we can get the hints that are present on the site inn form of text or image … Best of luck
Ships:
hey guys so i made this website based on a puzzle ,i mean this website has a puzzle in it self ,visitors have to find a 1.show which is quite popular (hint: it is a conspiracy drama),2. a game which is very creative ,3. a comic book (hint: it is written by belgian writer ) this is my first project and i was unfamiliar with the terms and applications but gradually got adapted i took a little help from ai to understand some terms ,,,so thats it...
|
1793005029.0227587
|
1793091429.0227587
|
|
57889
|
CGPA calculator by @vinayakbhargav | Stardance
|
vinayakbhargav
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T17:17:06Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "CGPA Calculator A simple and easy-to-use CGPA calculator made for students to calculate their CGPA using subject credits, grade points, and marks. About the Project This project helps students calculate their CGPA without doing the calculations manually. The calculator takes the required details for each subject and calculates the final CGPA based on the entered values. Features Enter subject credits Enter grade points Enter marks Convert marks into grade points Calculate CGPA Simple and clean interface Easy to use for students Works directly in the browser", "repo": "https://github.com/vinayakbhargav834-dotcom/CGPA-calculator-new", "demo": "https://vinayakbhargav834-dotcom.github.io/CGPA-calculator-new/"}]...
|
[{"post_id": 66388, "ts": "202 [{"post_id": 66388, "ts": "2026-09-12T06:11:03Z", "hours": 1.3447, "text": "70% work complete app.js is ready almost.."}, {"post_id": 62377, "ts": "2026-09-05T18:21:49Z", "hours": 0.5953, "text": "working on css …"}, {"post_id": 61982, "ts": "2026-09-05T05:47:51Z", "hours": 0.5714, "text": "starts a new project, the College CGPA calculator…"}, {"post_id": 60952, "ts": "2026-09-03T17:11:08Z", "hours": 0.3619, "text": "Today I worked on the basic structure of my CGPA calculator. I created the main layout with fields for credits, grade points, and marks for five subjects. I also added Calculate and Reset buttons and sections to display the CGPA and percentage."}]...
|
Title: CGPA calculator by @vinayakbhargav | Starda Title: CGPA calculator by @vinayakbhargav | Stardance
Devlogs:
Today I worked on the basic structure of my CGPA calculator. I created the main layout with fields for credits, grade points, and marks for five subjects. I also added Calculate and Reset buttons and sections to display the CGPA and percentage.
starts a new project, the College CGPA calculator…
working on css …
70% work complete app.js is ready almost..
Ships:
CGPA Calculator A simple and easy-to-use CGPA calculator made for students to calculate their CGPA using subject credits, grade points, and marks. About the Project This project helps students calculate their CGPA without doing the calculations manually. The calculator takes the required details for each subject and calculates the final CGPA based on the entered values. Features Enter subject credits Enter grade points Enter marks Convert marks into grade points Calculate CGPA Simple and clean interface Easy to use for students Works directly in the browser...
|
1793005028.118863
|
1793091428.118863
|
|
38932
|
trout by @nosrep | Stardance
|
nosrep
|
1
|
85.0
|
1696
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T06:51:47Z", "hours": 85.0, "multiplier": 16.67, "payout": 1696, "blessing": "neutral", "text": "welcome to trout v2! the goal of this period was to upgrade trout v1 to finally become the strongest chess engine written in haskell (it’s a cool title, ok). i believe it is done, and trout now beats the previous #1, barbarossa. writing a chess engine in haskell is hard and annoying and probably a not good use of my time, but i am stubborn and not very bright so here we are. writing a chess engine is also very annoying in general, involving thousands of hours of cpu time to test changes. everyone say thank you to my poor i7 10700k together with the +300elo (!!!) strength improvement over v1, i also corrected the engine’s time management (no more timing out in chess GUIs) and cleaned up the web interface. to play the engine, you have three options: the demo link: this has the web interface for trout. it’s the original engine compiled down to WASM with a nice ui on top. lichess bot: you can find the lichess bot link at the bottom of the demo website, @TroutBot . it’s running on an oracle free tier server and can only play two games simultaneously; if challenging it hangs, it’s probably playing 2 already. locally: if you want troutbot at peak performance, you can download a chess GUI like En Croissant or Arena, and configure the trout binary (on github releases) in the GUI. trout speaks the standard UCI protocol.", "repo": "https://github.com/Osrepnay/trout", "demo": "https://osrepnay.github.io/trout-web"}]...
|
[{"post_id": 67147, "ts": "202 [{"post_id": 67147, "ts": "2026-09-13T06:34:52Z", "hours": 1.16, "text": "I did some more frontend work! i made the chessground rank/file responsive: for some reason, the default ones are positioned by pixel offsets and break pretty quickly on smaller screens. some light css max fixes this recolored everything: stock chessground theme is kinda lame made the time slider exponential: I wanted to give a larger time range (previous is 100ms-1000ms), but everything past 1s on the high end makes it really unwieldy to set the time on the low end, where people usually play. i made it exponential, i can expand the top end (3000ms now) without the slider feeling weird. it’s easier to show than explain"}, {"post_id": 65064, "ts": "2026-09-09T22:19:08Z", "hours": 4.8239, "text": "managed to update the website to the new version. It was much easier than I expected, considering the amount of changes I’ve made. new version is better (besides just being stronger) in that I factored the iterative deepening code out, which means the website can have sensible time settings now instead of the stupid “max time per depth” thing it had before. I also implemented IIR (internal iterative reductions). I’ve tried it like 10 times before, but this specific version worked for some reason. +28 elo! engine is now safely better than barbarossa."}, {"post_id": 64248, "ts": "2026-09-08T14:43:59Z", "hours": 0.6486, "text": "2.0 release has been tagged! i set up a dockerfile to make static linux binaries and created a windows github action to make the windows binaries. I also finished the test against the last version of the engine:"}, {"post_id": 63549, "ts": "2026-09-07T13:53:00Z", "hours": 4.9844, "text": "it is done….. i think trout is the strongest haskell engine now (i made the passed pawn bonus tunable per-rank, which added around 20 elo. re-tested some other search stuff but they all kinda sucked) i think i’m going to work on polishing the frontend now, tag a 2.0 release soon."}, {"post_id": 62696, "ts": "2026-09-06T05:49:18Z", "hours": 8.5936, "text": "i’ve been doing some tuner work, it’s not great the old tuner was pretty bad. very janky, repeated code, very hard to read, and sloooowwww…. i optimized it by precomputing the factors for each position so it’s just a bunch of multiplications to get the score. upside: order of magnitude speed improvement. downside: 20+ gb memory…. other problem is that the new tuner’s results are not great. they aren’t horribly bad like some other tests, but the gains aren’t as big as i was expecting. this might be a data quality issue? i might write proper datagen code at some point instead of just relying on the output of SPRT tests. I did get a nice 7 elo from removing floating point ops in eval, so that’s nice i guess. i can smell the goal already. Soon (i would attach a picture of the 20gb but i’m kinda running a sprt right now… maybe next time)"}, {"post_id": 60920, "ts": "2026-09-03T16:06:58Z", "hours": 9.0614, "text": "big gap! some stuff came up and i don’t fully remember what i’ve done since the last devlog. git log tells me i did some minor logic fixes and added SEE pruning in pvs (32 elo), which prunes nodes based on their static exchange evaluation. i do remember that the current version of the engine can beat barbarossa at LTC now. STC it still loses (i.e. my engine scales better… glass half full), but I am now working on eval tuning to hopefully bump the elo up some more. i am now working on this through ssh. negative: lag. positive: there is almost nothing running on my computer aside from the language server. should make testing easier and more predictable"}, {"post_id": 43577, "ts": "2026-08-08T22:09:51Z", "hours": 8.8139, "text": "i’m now within 100 elo of my target, but it’s still not looking great. it seems i have hit another wall. there’s this copypasta around chess programming circles with a rough order of search features to implement, and i’ve tried 3 in a row, none doing much. since last time, i’ve just added two things that have gained elo: history decay tweak (10 elo): after searching a position, decay history by 50% instead of 80%, helps retain memory from previous searches check extensions (23 elo): extend a search by 1 more move if in check. it’s very simple. i’ve since tried IIR (internal iterative reductions), SEE pruning in PVS (more moveloop pruning), and continuation history (like the history heuristic, but More™️). only continuation history has kinda done something, but only when comparing against a version that’s just as slow; when comparing against the original, it’s much closer because for some reason continuation history slows down the search by almost 10% (??????). The main slow-down-er seems to be indexing the continuation history array, which is absolutely baffling to me. i’ve even tried to start reading the GHC Core again, until i remembered why it was so painful last time."}, {"post_id": 41607, "ts": "2026-08-05T22:20:00Z", "hours": 8.6608, "text": "a lot of changes in this batch, but not all of them were for strength. here’s a quick runthrough of the elo-affecting changes: add improving heuristic to rfp (prune more nodes while improving) add staticEval >= beta guard to nmp (restrict the usage of null move pruning to moves that already seem good from static eval) futility pruning (very similar to reverse futility pruning - removes quiet moves when static eval is pretty far below alpha) tempo bonus (side to move gets a bonus to eval for having tempo) add quiescence search results to transposition table (i had this in the old version but i guess i forgot to port it over until now) soft time bounds in search (instead of searching for as long as possible and nuking the search thread mid-search, stop iterative deepening if it looks like the next node will take too long) to fix this, i moved the timing-out logic inside the search function, which is what most engines do. I didn’t do this earlier because 1. it’s marginally harder and 2. it would require making the search functions IO instead of ST. ST is escapable, so it’s more pure, so this was kinda a bummer to do, but i didn’t see any way to get around this. here’s a graph i made while i was looking at aspiration windows more. it shows the average centipawn change between successive depths of search. the current aspiration window implementation assumes that depth and avg cp change is inversely related, but it doesn’t look like this is true. (what is the hump doing??) I tried a couple of aspiration window implementations that don’t make this assumption but didn’t get anything huge. I’ll probably replace it at some point."}, {"post_id": 39895, "ts": "2026-08-03T05:39:33Z", "hours": 5.7494, "text": "the engine is finally in the strongest state it’s ever been! (i think) for those who have not been obsessively following this project, the search part of the engine has gone through two rewrites now. i kept hitting walls where i really shouldn’t have; improvements that should have been huge gains did a lot less than expected. i did the rewrites in an attempt to find a potential bug that would kill future attempts at improvements, but i never really found anything significant. i never really got the engine to it’s pre-rewrites strength until now. read it and weep (~17 elo gain) -------------------------------------------------- Results of trout-exe-max vs trout-exe-asp-tweak (8+0.08, NULL, 16.000000MB, UHO_Lichess_4852_v1.epd): Elo: -16.96 +/- 14.18, nElo: -22.54 +/- 18.80 LOS: 0.94 %, DrawRatio: 33.99 %, PairsRatio: 0.82 Games: 1312, Wins: 380, Losses: 444, Draws: 488, Points: 624.0 (47.56 %) Ptnml(0-2): [63, 175, 223, 153, 42], WL/DD Ratio: 1.79 LLR: -2.98 (-101.3%) (-2.94, 2.94) [0.00, 10.00] -------------------------------------------------- it’s still not super great because elo improvements are coming slooowww and we’re still only 17 elo up with many more features than before. it’s still nice, though. implemented since last devlog: “improving” heuristic (13 elo): a position is said to be “improving” if the static evaluation now is higher than the one from a move ago. we can use this to tweak some parameters in the search, like when to cut off for LMP, which is what i did. need more testing for the other features. lmr limit (16 elo): my LMR implementation was slightly bugged and would reduce too many moves; normally the first couple are spared, but i had every move except the first reduced. negative captures below quiet moves (13 elo): for some reason, i had captures that were deemed negative by SEE (bad captures, basically - trading a queen for a pawn would be one) sorted above all quiet moves. i moved them to the bottom of move sorting. redo aspiration windows (36 elo): i redid the implementation for aspiration windows slightly. it should be smarter about bounds now. that makes around 100 elo for aspiration windows cumulatively now, which is kinda crazy here’s a picture of htop when i was running the engines against each othe for elo testing. i thought it was kinda funny"}, {"post_id": 38604, "ts": "2026-08-01T02:40:06Z", "hours": 8.2208, "text": "oh no, 8 hours i need to devlog more holy moly from last devlog, i kinda found a solution to the fail-soft problem? Most engine’s LMR implementations will re-search twice if the previous search went over alpha (lower bound). The first search has reduced depth AND a null-window around alpha (search window of 1 centipawn; searches faster, but can only tell the direction of the true search result); if this is over alpha, it’ll re-search with full depth; if this is again over alpha, it’ll re-search with full depth and full bounds. My engine was skipping the middle step and jumping from reduced depth + null window -> full depth + full bounds. Apparently this is an accepted method and it was working fine compared to the other version, EXCEPT once I switched to fail-soft on beta. in other news, I added: aspiration windows (75 elo): the initial search is normally unbounded, but aspiration windows try to clamp the search around a “guess” based on the previous depth of iterative deepening, and widen if it fails high or low. it did almost nothing before, and randomly became really good. don’t ask me why. razoring (22 elo): prunes a node if quiescence search says it’s too far below alpha. I already had it in a previous version and brought it over to the search rewrite. pretty simple, smallish elo boost. late move pruning (39 elo): prunes the latter part of move list; moves are sorted by how good they’re predicted to be, so latter moves are usually pretty garbage fixes (23 elo): small logic changes to LMR and LMP. don’t know how they didn’t lose more elo, the LMR bug was kinda bad. separate PV tracking: the PV (principal variation, the best moves for each player as calculated by the engine) was previously tracked by the transposition table, but that meant i didn’t have a lot of flexibility with the replacement strategy for the table, lest it wipe an important PV entry. tracking it separately lets me fiddle with the replacement strategy more, although I haven’t actually found one better than what I have now here’s a graph generated from a google sheet with 100k rows (!?). it’s a histogram of every time a move was marked as “currently the best”, indexed by entry. ideally, it’d be all 0, meaning the best move was searched first every time, meaning there was basically no wasted effort."}, {"post_id": 37391, "ts": "2026-07-30T02:23:34Z", "hours": 6.5078, "text": "6.5 hours? oh man i was right, nmp only gained like 30 elo, gained much much more before. i tried to hunt down anything weird but i had to leave it at that. i also implemented pruning in quiescence search, so the engine only searches moves that have a positive static exchange evaluation (essentially, the result of all trades on a particular square). i also accidentally found out my engine was doing fail-hard on beta cutoffs instead of fail-soft! in a fail-soft framework, the search is allowed to return outside of the bounds set by the alpha and beta parameters (it’s hard to explain succinctly here and i don’t want to keep doing it, search up alpha-beta search if you’re interested). thus, alpha and beta are soft bounds. this means each search returns more information about the move score. i successfully did fail-soft on the alpha (lower bound) side, but not on the beta side due to what i can only assume is a coding mistake. the problem is, when switching to fail-soft on beta, the engine lost like 30 elo! i bisected the change to the LMR (late move reductions) patch, but still have no idea why LMR doesn’t play nice with fail-soft beta. i’m kinda at the end of my rope here, i might just have to eat the elo loss…"}, {"post_id": 36088, "ts": "2026-07-27T23:22:04Z", "hours": 5.5464, "text": "I finally got RFP to gain! but it might not be as good as it seems… ive been struggling to get rfp, a pretty basic improvement, to actually do anything, and redid everything search step-by-step to make sure i didn’t do anything wrong. so far, i’ve added back SEE move ordering, butterfly heuristic, PVS, transposition table move ordering, and RFP. however, i don’t think this actually fixes my problem; the code is largely the same aside from some parameter changes, so my theory is that rfp is only working now because i added everything back in a different order, and now i might struggle with adding back different features that aren’t gaining anymore. i’m currently testing null move pruning (based on the null move observation: doing something is basically always better than doing nothing), and it’s not doing as much as it used to… disturbing"}, {"post_id": 35484, "ts": "2026-07-26T23:08:41Z", "hours": 1.4153, "text": "ive nuked it…. i kept fighting rfp and talking with other people about this. apparently, rfp is one of the easiest gainers (something that gains elo/strength), and usually gains a lot, but again, nothing. i ran an overnight test of like 5000 games and the rfp version manages to LOSE 8 elo, where other people have gained 80. i’m gonna try to restart search again, but basically fully. i don’t know if this will actually do anything, but i don’t see many other choices…"}, {"post_id": 34984, "ts": "2026-07-26T03:58:38Z", "hours": 6.8525, "text": "i’ve reentered the nightmare when i last left off this project in ~september, I basically hit a wall with optimizations. I had a crapload of pruning and whatnot, but the elo of the engine didn’t really reflect it. I then did a search rewrite but got stuck on RFP (reverse futility pruning), which is supposed to gain a lot of strength but did basically nothing for me. brief (??) aside: reverse futility pruning, in simple terms, checks if the static evaluation (evaluation without searching moves) is above beta (if a move scores above beta, it’s “too good,” and the opponent won’t allow that position to happen in the first place) by some margin. if it is, it’ll return without searching any moves, because it’s not likely that the player can lose that much material/positional advantage in whatever depth is left to search. anyway, i’m still stuck on this. I’ve re-reimplemented half the search to recheck its correctness, because correctness issues can sometimes stuff new optimizations, but it seems to be all good. RFP still doesn’t do jack. i don’t really know where to go from here. I could just ignore it, but the fact that RFP doesn’t do anything (for reference, another engine dev i talked to got like 80 elo out of RFP, which is insane) is a troubling sign and might mean something else is wrong."}, {"post_id": 34363, "ts": "2026-07-25T00:30:18Z", "hours": 3.7367, "text": "hello! trout again. i’m gonna try to get this to #1 haskell engine, but it’s been such a pain… after summer of making I did some more work on this, but hit a wall where all my changes either did nothing or gained like 10elo (which is not enough for the hundreds i need). I tried rewriting part of search but hit a wall again with the same problem, on features that should have made improvements! i’ve been fighting with the search some more trying to get reverse futility pruning to do something meaningful. in someone else’s engine, it gained i think 80+ elo in total (!!!), which is bonkers compared to the 20 or something i get on a good day. it’s not a good day, so RFP actually manages to lose elo here. i might have to rewrite search again. i don’t know how much of this is just wrong. (here’s the commented out old search)"}]...
|
Title: trout by @nosrep | Stardance
Devlogs:
hell Title: trout by @nosrep | Stardance
Devlogs:
hello! trout again. i’m gonna try to get this to #1 haskell engine, but it’s been such a pain… after summer of making I did some more work on this, but hit a wall where all my changes either did nothing or gained like 10elo (which is not enough for the hundreds i need). I tried rewriting part of search but hit a wall again with the same problem, on features that should have made improvements! i’ve been fighting with the search some more trying to get reverse futility pruning to do something meaningful. in someone else’s engine, it gained i think 80+ elo in total (!!!), which is bonkers compared to the 20 or something i get on a good day. it’s not a good day, so RFP actually manages to lose elo here. i might have to rewrite search again. i don’t know how much of this is just wrong. (here’s the commented out old search)
i’ve reentered the nightmare when i last left off this project in ~september, I basically hit a wall with optimizations. I had a crapload of pruning and whatnot, but the elo of the engine didn’t really reflect it. I then did a search rewrite but got stuck on RFP (reverse futility pruning), which is supposed to gain a lot of strength but did basically nothing for me. brief (??) aside: reverse futility pruning, in simple terms, checks if the static evaluation (evaluation without searching moves) is above beta (if a move scores above beta, it’s “too good,” and the opponent won’t allow that position to happen in the first place) by some margin. if it is, it’ll return without searching any moves, because it’s not likely that the player can lose that much material/positional advantage in whatever depth is left to search. anyway, i’m still stuck on this. I’ve re-reimplemented half the search to recheck its correctness, because correctness issues can sometimes stuff new optimizations, but it seems to be all good. RFP still doesn’t do jack. i don’t really know where to go from here. I could just ignore it, but the fact that RFP doesn’t do anything (for reference, another engine dev i talked to got like 80 elo out of RFP, which is insane) is a troubling sign and might mean something else is wrong.
ive nuked it…. i kept fighting rfp and talking with other people about this. apparently, rfp is one of the easiest gainers (something that gains elo/strength), and usually gains a lot, but again, nothing. i ran an overnight test of like 5000 games and the rfp version manages to LOSE 8 elo, where other people have gained 80. i’m gonna try to restart search again, but basically fully. i don’t know if this will actually do anything, but i don’t see many other choices…
I finally got RFP to gain! but it might not be as good as it seems… ive been struggling to get rfp, a pretty basic improvement, to actually do anything, and redid everything search step-by-step to make sure i didn’t do anything wrong. so far, i’ve added back SEE move ordering, butterfly heuristic, PVS, transposition table move ordering, and RFP. however, i don’t think this actually fixes my problem; the code is largely the same aside from some parameter changes, so my theory is that rfp is only working now because i added everything back in a different order, and now i might struggle with adding back different features that aren’t gaining anymore. i’m currently testing null move pruning (based on the null move observation: doing something is basically always better than doing nothing), and it’s not doing as much as it used to… disturbing
6.5 hours? oh man i was right, nmp only gained like 30 elo, gained much much more before. i tried to hunt down anything weird but i had to leave it at that. i also implemented pruning in quiescence search, so the engine only searches moves that have a positive static exchange evaluation (essentially, the result of all trades on a particular square). i also accidentally found out my engine was doing fail-hard on beta cutoffs instead of fail-soft! in a fail-soft framework, the search is allowed to return outside of the bounds set by the alpha and beta parameters (it’s hard to explain succinctly here and i don’t want to keep doing it, search up alpha-beta search if you’re interested). thus, alpha and beta are soft bounds. this means each search returns more information about the move score. i successfully did fail-soft on the alpha (lower bound) side, but not on the beta side due to what i can only assume is a coding mistake. the problem is, when switching to fail-soft on beta, the engine lost like 30 elo! i bisected the change to the LMR (late move reductions) patch, but still have no idea why LMR doesn’t play nice with fail-soft beta. i’m kinda at the end of my rope here, i might just have to eat the elo loss…
oh no, 8 hours i need to devlog more holy moly from last devlog, i kinda found a solution to the fail-soft problem? Most engine’s LMR implementations will re-search twice if the previous search went over alpha (lower bound). The first search has reduced depth AND a null-window around alpha (search window of 1 centipawn; searches faster, but can only tell the direction of the true search result); if this is over alpha, it’ll re-search with full depth; if this is again over alpha, it’ll re-search with full depth and full bounds. My engine was skipping the middle step and jumping from reduced depth + null window -> full depth + full bounds. Apparently this is an accepted method and it was working fine compared to the other version, EXCEPT once I switched to fail-soft on beta. in other news, I added: aspiration windows (75 elo): the initial search is normally unbounded, but aspiration windows try to clamp the search around a “guess” based on the previous depth of iterative deepening, and widen if it fails high or low. it did almost nothing before, and randomly became really good. don’t ask me why. razoring (22 elo): prunes a node if quiescence search says it’s too far below alpha. I already had it in a previous version and brought it over to the search rewrite. pretty simple, smallish elo boost. late move pruning (39 elo): prunes the latter part of move list; moves are sorted by how good they’re predicted to be, so latter moves are usually pretty garbage fixes (23 elo): small logic changes to LMR and LMP. don’t know how they didn’t lose more elo, the LMR bug was kinda bad. separate PV tracking: the PV (principal variation, the best moves for each player as calculated by the engine) was previously tracked by the transposition table, but that meant i didn’t have a lot of flexibility with the replacement strategy for the table, lest it wipe an important PV entry. tracking it separately lets me fiddle with the replacement strategy more, although I haven’t actually found one better than what I have now here’s a graph generated from a google sheet with 100k rows (!?). it’s a histogram of every time a move was marked as “currently the best”, indexed by entry. ideally, it’d be all 0, meaning the best move was searched first every time, meaning there was basically no wasted effort.
the engine is finally in the strongest state it’s ever been! (i think) for those who have not been obsessively following this project, the search part of the engine has gone through two rewrites now. i kept hitting walls where i really shouldn’t have; improvements that should have been huge gains did a lot less than expected. i did the rewrites in an attempt to find a potential bug that would kill future attempts at improvements, but i never really found anything significant. i never really got the engine to it’s pre-rewrites strength until now. read it and weep (~17 elo gain) -------------------------------------------------- Results of trout-exe-max vs trout-exe-asp-tweak (8+0.08, NULL, 16.000000MB, UHO_Lichess_4852_v1.epd): Elo: -16.96 +/- 14.18, nElo: -22.54 +/- 18.80 LOS: 0.94 %, DrawRatio: 33.99 %, PairsRatio: 0.82 Games: 1312, Wins: 380, Losses: 444, Draws: 488, Points: 624.0 (47.56 %) Ptnml(0-2): [63, 175, 223, 153, 42], WL/DD Ratio: 1.79 LLR: -2.98 (-101.3%) (-2.94, 2.94) [0.00, 10.00] -------------------------------------------------- it’s still not super great because elo improvements are coming slooowww and we’re still only 17 elo up with many more features than before. it’s still nice, though. implemented since last devlog: “improving” heuristic (13 elo): a position is said to be “improving” if the static evaluation now is higher than the one from a move ago. we can use this to tweak some parameters in the search, like when to cut off for LMP, which is what i did. need more testing for the other features. lmr limit (16 elo): my LMR implementation was slightly bugged and would reduce too many moves; normally the first couple are spared, but i had every move except the first reduced. negative captures below quiet moves (13 elo): for some reason, i had captures that were deemed negative by SEE (bad captures, basically - trading a queen for a pawn would be one) sorted above all quiet moves. i moved them to the bottom of move sorting. redo aspiration windows (36 elo): i redid the implementation for aspiration windows slightly. it should be smarter about bounds now. that makes around 100 elo for aspiration windows cumulatively now, which is kinda crazy here’s a picture of htop when i was running the engines against each othe for elo testing. i thought it was kinda funny
a lot of changes in this batch, but not all of them were for strength. here’s a quick runthrough of the elo-affecting changes: add improving heuristic to rfp (prune more nodes while improving) add staticEval >= beta guard to nmp (restrict the usage of null move pruning to moves that already seem good from static eval) futility pruning (very similar to reverse futility pruning - removes quiet moves when static eval is pretty far below alpha) tempo bonus (side to move gets a bonus to eval for having tempo) add quiescence search results to transposition table (i had this in the old version but i guess i forgot to port it over until now) soft time bounds in search (instead of searching for as long as possible and nuking the search thread mid-search, stop iterative deepening if it looks like the next node will take too long) to fix this, i moved the timing-out logic inside the search function, which is what most engines do. I didn’t do this earlier because 1. it’s marginally harder and 2. it would require making the search functions IO instead of ST. ST is escapable, so it’s more pure, so this was kinda a bummer to do, but i didn’t see any way to get around this. here’s a graph i made while i was looking at aspiration windows more. it shows the average centipawn change between successive depths of search. the current aspiration window implementation assumes that depth and avg cp change is inversely related, but it doesn’t look like this is true. (what is the hump doing??) I tried a couple of aspiration window implementations that don’t make this assumption but didn’t get anything huge. I’ll probably replace it at some point.
i’m now within 100 elo of my target, but it’s still not looking great. it seems i have hit another wall. there’s this copypasta around chess programming circles with a rough order of search features to implement, and i’ve tried 3 in a row, none doing much. since last time, i’ve just added two things that have gained elo: history decay tweak (10 elo): after searching a position, decay history by 50% instead of 80%, helps retain memory from previous searches check extensions (23 elo): extend a search by 1 more move if in check. it’s very simple. i’ve since tried IIR (internal iterative reductions), SEE pruning in PVS (more moveloop pruning), and continuation history (like the history heuristic, but More™️). only continuation history has kinda done something, but only when comparing against a version that’s just as slow; when comparing against the original, it’s much closer because for some reason continuation history slows down the search by almost 10% (??????). The main slow-down-er seems to be indexing the continuation history array, which is absolutely baffling to me. i’ve even tried to start reading the GHC Core again, until i remembered why it was so painful last time.
big gap! some stuff came up and i don’t fully remember what i’ve done since the last devlog. git log tells me i did some minor logic fixes and added SEE pruning in pvs (32 elo), which prunes nodes based on their static exchange evaluation. i do remember that the current version of the engine can beat barbarossa at LTC now. STC it still loses (i.e. my engine scales better… glass half full), but I am now working on eval tuning to hopefully bump the elo up some more. i am now working on this through ssh. negative: lag. positive: there is almost nothing running on my computer aside from the language server. should make testing easier and more predictable
i’ve been doing some tuner work, it’s not great the old tuner was pretty bad. very janky, repeated code, very hard to read, and sloooowwww…. i optimized it by precomputing the factors for each position so it’s just a bunch of multiplications to get the score. upside: order of magnitude speed improvement. downside: 20+ gb memory…. other problem is that the new tuner’s results are not great. they aren’t horribly bad like some other tests, but the gains aren’t as big as i was expecting. this might be a data quality issue? i might write proper datagen code at some point instead of just relying on the output of SPRT tests. I did get a nice 7 elo from removing floating point ops in eval, so that’s nice i guess. i can smell the goal already. Soon (i would attach a picture of the 20gb but i’m kinda running a sprt right now… maybe next time)
it is done….. i think trout is the strongest haskell engine now (i made the passed pawn bonus tunable per-rank, which added around 20 elo. re-tested some other search stuff but they all kinda sucked) i think i’m going to work on polishing the frontend now, tag a 2.0 release soon.
2.0 release has been tagged! i set up a dockerfile to make static linux binaries and created a windows github action to make the windows binaries. I also finished the test against the last version of the engine:
managed to update the website to the new version. It was much easier than I expected, considering the amount of changes I’ve made. new version is better (besides just being stronger) in that I factored the iterative deepening code out, which means the website can have sensible time settings now instead of the stupid “max time per depth” thing it had before. I also implemented IIR (internal iterative reductions). I’ve tried it like 10 times before, but this specific version worked for some reason. +28 elo! engine is now safely better than barbarossa.
I did some more frontend work! i made the chessground rank/file responsive: for some reason, the default ones are positioned by pixel offsets and break pretty quickly on smaller screens. some light css max fixes this recolored everything: stock chessground theme is kinda lame made the time slider exponential: I wanted to give a larger time range (previous is 100ms-1000ms), but everything past 1s on the high end makes it really unwieldy to set the time on the low end, where people usually play. i made it exponential, i can expand the top end (3000ms now) without the slider feeling weird. it’s easier to show than explain
Ships:
welcome to trout v2! the goal of this period was to upgrade trout v1 to finally become the strongest chess engine written in haskell (it’s a cool title, ok). i believe it is done, and trout now beats the previous #1, barbarossa. writing a chess engine in haskell is hard and annoying and probably a not good use of my time, but i am stubborn and not very bright so here we are. writing a chess engine is also very annoying in general, involving thousands of hours of cpu time to test changes. everyone say thank you to my poor i7 10700k together with the +300elo (!!!) strength improvement over v1, i also corrected the engine’s time management (no more timing out in chess GUIs) and cleaned up the web interface. to play the engine, you have three options: the demo link: this has the web interface for trout. it’s the original engine compiled down to WASM with a nice ui on top. lichess bot: you can find the lichess bot link at the bottom of the demo website, @TroutBot . it’s running on an oracle free tier server and can only play two games simultaneously; if challenging it hangs, it’s probably playing 2 already. locally: if you want troutbot at peak performance, you can download a chess GUI like En Croissant or Arena, and configure the trout binary (on github releases) in the GUI. trout speaks the standard UCI protocol....
|
1793005026.9363291
|
1793091426.9363291
|
|
57835
|
GEngine OS by @govindrkumar | Stardance
|
govindrkumar
|
1
|
13.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T11:59:34Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "GEngine OS A webOS simulating an OS in browser. It has been created under stardance WebOS 1 mission . Tech stack used: HTML CSS Javascript Overview Features supports multiple window has start menu and a taskbar supports dragging of window Apps My Projects contains my repos Music can play audio files Sticky Notes write your notes Look Inspired by Windows 10, Uwuntu, Ubuntu….. My journey Learnt Javascript (list, array, arrow function, how to make a window draggable) Learnt z-index and grid display in CSS first site without Flask or Django. Future I will go for web os2 mission after this. I am trying to position this web os as replacament for my personal portfolio site . I will also create a 2D game engine in this after learning Canvas in future properly. I will learn CSS animations after this ship. Contribution Contribution to this repo are welcome through PR!! License This is listed under BSD 3-Clause License . One Last thing Thanks for reading!! Created by Govind….", "repo": "https://github.com/govindrkumar/GEngine", "demo": "https://gengineos.vercel.app/"}]...
|
[{"post_id": 67316, "ts": "202 [{"post_id": 67316, "ts": "2026-09-13T11:57:18Z", "hours": 0.3258, "text": "Devlog-11; Wrote README.md"}, {"post_id": 67296, "ts": "2026-09-13T11:29:48Z", "hours": 1.7989, "text": "Devlog-10; Hi. Today, I finished adding the playlist system to music app. Now, all the keys work. Then, I moved to My project app where I listed my notable repos. Here’s how it looks."}, {"post_id": 66515, "ts": "2026-09-12T11:05:52Z", "hours": 1.2536, "text": "Devlog-9; I have added property to get bigger when songs are added in playlist in my music app."}, {"post_id": 66361, "ts": "2026-09-12T04:50:10Z", "hours": 1.8717, "text": "Devlog-8; Hey Guys! Today, I worked on adding play, pause, increase speed in my music app in GEngine OS. It was tedious work adding each part manually into file and checking if it functions or not. I have added gif image change when song is played, stopped or normal. I will upload video of it’s working tomorrow or day after tomorrow after playlist system starts functioning properly. Currently, I am tired now."}, {"post_id": 65929, "ts": "2026-09-11T12:18:16Z", "hours": 0.8056, "text": "Devlog - 7 working on adding play, pause and forward button."}, {"post_id": 65755, "ts": "2026-09-11T03:20:18Z", "hours": 1.1836, "text": "Devlog-6; Refactored my code, created usable function."}, {"post_id": 63403, "ts": "2026-09-07T07:03:10Z", "hours": 0.6556, "text": "Devlog-5; Today, I added multiple copy function in javascript and started working on settings div."}, {"post_id": 61842, "ts": "2026-09-04T23:26:33Z", "hours": 1.2825, "text": "#Devlog-4; I add property of draggability and close function in my web os."}, {"post_id": 61268, "ts": "2026-09-04T03:47:28Z", "hours": 0.7081, "text": "Devlog-3; So, I created start menu behavior in my GEngine OS."}, {"post_id": 61151, "ts": "2026-09-03T22:27:42Z", "hours": 2.1094, "text": "Devlog-2; Today was fun, chose my OS default wallpaper, designed taskbar and partial start menu."}, {"post_id": 60902, "ts": "2026-09-03T15:40:04Z", "hours": 0.6883, "text": "Devlog-1; I have no idea about JS. I am going to start learning JS by making a game engine from scratch. But, for that I will first create an OS."}]...
|
Title: GEngine OS by @govindrkumar | Stardance
De Title: GEngine OS by @govindrkumar | Stardance
Devlogs:
Devlog-1; I have no idea about JS. I am going to start learning JS by making a game engine from scratch. But, for that I will first create an OS.
Devlog-2; Today was fun, chose my OS default wallpaper, designed taskbar and partial start menu.
Devlog-3; So, I created start menu behavior in my GEngine OS.
#Devlog-4; I add property of draggability and close function in my web os.
Devlog-5; Today, I added multiple copy function in javascript and started working on settings div.
Devlog-6; Refactored my code, created usable function.
Devlog - 7 working on adding play, pause and forward button.
Devlog-8; Hey Guys! Today, I worked on adding play, pause, increase speed in my music app in GEngine OS. It was tedious work adding each part manually into file and checking if it functions or not. I have added gif image change when song is played, stopped or normal. I will upload video of it’s working tomorrow or day after tomorrow after playlist system starts functioning properly. Currently, I am tired now.
Devlog-9; I have added property to get bigger when songs are added in playlist in my music app.
Devlog-10; Hi. Today, I finished adding the playlist system to music app. Now, all the keys work. Then, I moved to My project app where I listed my notable repos. Here’s how it looks.
Devlog-11; Wrote README.md
Ships:
GEngine OS A webOS simulating an OS in browser. It has been created under stardance WebOS 1 mission . Tech stack used: HTML CSS Javascript Overview Features supports multiple window has start menu and a taskbar supports dragging of window Apps My Projects contains my repos Music can play audio files Sticky Notes write your notes Look Inspired by Windows 10, Uwuntu, Ubuntu….. My journey Learnt Javascript (list, array, arrow function, how to make a window draggable) Learnt z-index and grid display in CSS first site without Flask or Django. Future I will go for web os2 mission after this. I am trying to position this web os as replacament for my personal portfolio site . I will also create a 2D game engine in this after learning Canvas in future properly. I will learn CSS animations after this ship. Contribution Contribution to this repo are welcome through PR!! License This is listed under BSD 3-Clause License . One Last thing Thanks for reading!! Created by Govind…....
|
1793005025.7768528
|
1793091425.7768528
|
|
57820
|
What's Fresh? by @nokira | Stardance
|
nokira
|
1
|
10.0
|
129
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-21T13:29:07Z", "hours": 10.0, "multiplier": 12.43, "payout": 129, "blessing": "neutral", "text": "Having to decide what to eat it’s always hard, that’s why What’s Fresh? exixsts! Plan your weekly meals ahead of time and stop wasting moments of your life. Just select all the meals for the week or day! Want to select what you are going to eat today? Just select your meals in the home page. Want to plan the whole week? Just select the weekly planner on the menu and choose meals for each day! You can search for various meals and use the filters to include only what you’re feeling like eating so don’t feel stressed about knowing what you want to eat :) All of the selected meals are saved locally and each day the daily planner will sync with the meals planned for the week. Overall, I would say that the project was kind of complicated to make. It wasn’t about the code, but more about finding time to make it. I planned on making this right before school started thinking I could make something polished and include all of the features I thought of, but instead, I got submerged with school work so unfortunately, I won’t be able to polish everything.", "repo": "https://github.com/n0kira/MealPlanner", "demo": "https://n0kira.github.io/MealPlanner/"}]...
|
[{"post_id": 71749, "ts": "202 [{"post_id": 71749, "ts": "2026-09-21T13:24:28Z", "hours": 0.9989, "text": "Devlog #7 Done? Hey everyone!! Yesterday I managed to finish the last details of the website. Unfortunately I realized that implementing all the features I planned at the beginning would take much more time compared to what I have with all the School work I have to do. So more polishing on the research for meals and the grocery list aren’t in the app. It’s sad but I really don’t have much time this week and the next one so I can’t make it before the end of the month… But anyways, I am still happy of what I made, so today I am shipping :) Thanks everyone for the support!!"}, {"post_id": 69238, "ts": "2026-09-16T17:15:23Z", "hours": 2.7472, "text": "Devlog #6 Saving Heyyy!! After a Week I finally managed to work for some more time on this project. In the previous days I didn’t post any devlogs but I did work on it for really short amount of times, and with today I managed to implement the saving and synchronized the daily planner with the weekly one. So now if you fill out the week, each day you will see the selected dishes on the “Today” page. I hope in the upcoming days I’ll get some more time like today so I can work more on this!! Thank you guys for reading :) Have a great day"}, {"post_id": 64772, "ts": "2026-09-09T12:57:04Z", "hours": 0.5828, "text": "Devlog #5 Slow progression Hey guys! Unfortunately, I’ve been really busy with school since it started, so I can’t work as much as before. Today all I could do is being able to select the meals, and I also fixed the filters not showing up. Right now, I am mostly focusing on the JavaScript rather than the CSS, but I will work on it too once I finish with the important parts. Byeee thanks for reading!"}, {"post_id": 63583, "ts": "2026-09-07T14:38:07Z", "hours": 0.9917, "text": "Devlog #4 Nothing works Hi guys! Sooo today I tried adding the filters for the search, but it doesn’t really work. I don’t know why, but all the filters do not show. I will look into this tomorrow since today I don’t have any time for it… Hopefully I will get it working quickly so I can start working some more on the styling. That’s everything for today, thanks for reading!! Byee"}, {"post_id": 62870, "ts": "2026-09-06T12:19:34Z", "hours": 0.8247, "text": "Devlog #3 API is working Hey guys! Today I worked a bit more with the API and I think I now fully understand how it works. Now when clicking Lunch and Dinner, the results will have many different dishes ranging from Seafood to Chicken meals. Ignore the style for now because that’s just to test everything. Also, I am planning to add a filter where you can select categories manually so you can filter meals based on your preferences and if you can’t find anything appealing in the starting page, you can always use the search bar, which now isn’t really working but I’ll do it sooner or later :) Thank you, guys, as always for reading Have a great day!!"}, {"post_id": 62136, "ts": "2026-09-05T12:04:38Z", "hours": 1.5342, "text": "Devlog #2 Work in progress Hello everyone! Today I explored TheMealDB which I will use to fetch all meals. Right now, I started experimenting with it, so what you see will be gone in the next devlogs. So right now, I just have it working on the Breakfast button, because it’s the easiest one since TheMealDB has a category breakfast and I can simply request it like that. For Lunch and Dinner there are no dedicated categories, and I will implement a menu where you can choose different kind of meals, like Pasta, Chicken, Seafood and so on, and will fetch the meals based on the choices. That’s everything for today. In the upcoming days I will be slower in posting devlogs and writing code because school is starting… so I won’t have as much free time as I did until now. Bye!! Thanks for reading"}, {"post_id": 60876, "ts": "2026-09-03T14:59:48Z", "hours": 2.6878, "text": "Devlog #1 What’s Fresh? Hii guys! So today I randomly woke up thinking about something to complete the Frictionless mission, and so I thought about doing a Meal Planner application. You basically can: Plan what you’re going to eat today, you can do this in the morning, this way you won’t have to worry about it in the morning Plan your whole week! You can select meals for each day of the week. So if you select noodles for lunch on Monday, if you check the app on Monday morning, you will already see on the “Today’s Meals” page what you had planned before. I think that could be useful for some people, or at least me, because I never plan my meals and end up last minute having to decide Also, one feature I think I’ll add, is to take all the ingredients needed for the meals you chose and generate a grocery list, so you won’t have to manually check each single one and waste time doing it yourself. I attached a picture of what I did now, I’m not too sure about the colors, I love the green and cream (if that’s cream) color but let me know about it! I am willing to change the palette. Bye guys! Have a great day :)"}]...
|
Title: What's Fresh? by @nokira | Stardance
D Title: What's Fresh? by @nokira | Stardance
Devlogs:
Devlog #1 What’s Fresh? Hii guys! So today I randomly woke up thinking about something to complete the Frictionless mission, and so I thought about doing a Meal Planner application. You basically can: Plan what you’re going to eat today, you can do this in the morning, this way you won’t have to worry about it in the morning Plan your whole week! You can select meals for each day of the week. So if you select noodles for lunch on Monday, if you check the app on Monday morning, you will already see on the “Today’s Meals” page what you had planned before. I think that could be useful for some people, or at least me, because I never plan my meals and end up last minute having to decide Also, one feature I think I’ll add, is to take all the ingredients needed for the meals you chose and generate a grocery list, so you won’t have to manually check each single one and waste time doing it yourself. I attached a picture of what I did now, I’m not too sure about the colors, I love the green and cream (if that’s cream) color but let me know about it! I am willing to change the palette. Bye guys! Have a great day :)
Devlog #2 Work in progress Hello everyone! Today I explored TheMealDB which I will use to fetch all meals. Right now, I started experimenting with it, so what you see will be gone in the next devlogs. So right now, I just have it working on the Breakfast button, because it’s the easiest one since TheMealDB has a category breakfast and I can simply request it like that. For Lunch and Dinner there are no dedicated categories, and I will implement a menu where you can choose different kind of meals, like Pasta, Chicken, Seafood and so on, and will fetch the meals based on the choices. That’s everything for today. In the upcoming days I will be slower in posting devlogs and writing code because school is starting… so I won’t have as much free time as I did until now. Bye!! Thanks for reading
Devlog #3 API is working Hey guys! Today I worked a bit more with the API and I think I now fully understand how it works. Now when clicking Lunch and Dinner, the results will have many different dishes ranging from Seafood to Chicken meals. Ignore the style for now because that’s just to test everything. Also, I am planning to add a filter where you can select categories manually so you can filter meals based on your preferences and if you can’t find anything appealing in the starting page, you can always use the search bar, which now isn’t really working but I’ll do it sooner or later :) Thank you, guys, as always for reading Have a great day!!
Devlog #4 Nothing works Hi guys! Sooo today I tried adding the filters for the search, but it doesn’t really work. I don’t know why, but all the filters do not show. I will look into this tomorrow since today I don’t have any time for it… Hopefully I will get it working quickly so I can start working some more on the styling. That’s everything for today, thanks for reading!! Byee
Devlog #5 Slow progression Hey guys! Unfortunately, I’ve been really busy with school since it started, so I can’t work as much as before. Today all I could do is being able to select the meals, and I also fixed the filters not showing up. Right now, I am mostly focusing on the JavaScript rather than the CSS, but I will work on it too once I finish with the important parts. Byeee thanks for reading!
Devlog #6 Saving Heyyy!! After a Week I finally managed to work for some more time on this project. In the previous days I didn’t post any devlogs but I did work on it for really short amount of times, and with today I managed to implement the saving and synchronized the daily planner with the weekly one. So now if you fill out the week, each day you will see the selected dishes on the “Today” page. I hope in the upcoming days I’ll get some more time like today so I can work more on this!! Thank you guys for reading :) Have a great day
Devlog #7 Done? Hey everyone!! Yesterday I managed to finish the last details of the website. Unfortunately I realized that implementing all the features I planned at the beginning would take much more time compared to what I have with all the School work I have to do. So more polishing on the research for meals and the grocery list aren’t in the app. It’s sad but I really don’t have much time this week and the next one so I can’t make it before the end of the month… But anyways, I am still happy of what I made, so today I am shipping :) Thanks everyone for the support!!
Ships:
Having to decide what to eat it’s always hard, that’s why What’s Fresh? exixsts! Plan your weekly meals ahead of time and stop wasting moments of your life. Just select all the meals for the week or day! Want to select what you are going to eat today? Just select your meals in the home page. Want to plan the whole week? Just select the weekly planner on the menu and choose meals for each day! You can search for various meals and use the filters to include only what you’re feeling like eating so don’t feel stressed about knowing what you want to eat :) All of the selected meals are saved locally and each day the daily planner will sync with the meals planned for the week. Overall, I would say that the project was kind of complicated to make. It wasn’t about the code, but more about finding time to make it. I planned on making this right before school started thinking I could make something polished and include all of the features I thought of, but instead, I got submerged with school work so unfortunately, I won’t be able to polish everything....
|
1793005024.6256773
|
1793091424.6256773
|
|
57816
|
Into the Woods by @mink | Stardance
|
mink
|
1
|
3.34
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T12:28:00Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A platformer game.", "repo": "https://github.com/one-mink/into_the_woods", "demo": "https://one-mink.itch.io/into-the-woods"}]...
|
[{"post_id": 82607, "ts": "202 [{"post_id": 82607, "ts": "2026-10-25T12:23:09Z", "hours": 0.3397, "text": "i added cpu particles to the mushrooms and the trader"}, {"post_id": 64979, "ts": "2026-09-09T18:58:38Z", "hours": 1.0325, "text": "I added CPU particles to the rocket to make it look more cool. They appear one the rocket has started"}, {"post_id": 63588, "ts": "2026-09-07T14:46:15Z", "hours": 0.5536, "text": "Added smother movement, also put the ui on the Canvas Layer, Reajusted the hitboxes and fixed a bug (Before that the Count of hearts and fuel was saved so after a game over screen they didn’t get reseted."}, {"post_id": 62796, "ts": "2026-09-06T09:53:38Z", "hours": 0.9797, "text": "I added a font to make the game look more nice. Also added labels for the fuel tank, fuel and mushrooms as well as for the hearts. I also changed the ability from pausing a dog with a stick to make it disappear with one."}, {"post_id": 60843, "ts": "2026-09-03T13:55:01Z", "hours": 0.7578, "text": "I continued working on a game I started in Milkyway. I adjusted some of the platforms cause you got stuck in some places. I also added a start and game over screen. Then I also fixed the bug, that prevented the rocket from starting. There was also another bug in the trader(that trades mushrooms into fuel) that i fixed here."}]...
|
Title: Into the Woods by @mink | Stardance
Devlog Title: Into the Woods by @mink | Stardance
Devlogs:
I continued working on a game I started in Milkyway. I adjusted some of the platforms cause you got stuck in some places. I also added a start and game over screen. Then I also fixed the bug, that prevented the rocket from starting. There was also another bug in the trader(that trades mushrooms into fuel) that i fixed here.
I added a font to make the game look more nice. Also added labels for the fuel tank, fuel and mushrooms as well as for the hearts. I also changed the ability from pausing a dog with a stick to make it disappear with one.
Added smother movement, also put the ui on the Canvas Layer, Reajusted the hitboxes and fixed a bug (Before that the Count of hearts and fuel was saved so after a game over screen they didn’t get reseted.
I added CPU particles to the rocket to make it look more cool. They appear one the rocket has started
i added cpu particles to the mushrooms and the trader
Ships:
A platformer game....
|
1793005023.5078979
|
1793091423.5078979
|
|
57811
|
PersonalSite by @Pirajin | Stardance
|
Pirajin
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-04T16:45:42Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hey guys, it was my first time building a website… And seeing that my first website is mine it feels amazing… Actually i saw some videos on making your own website from scratch and got it working in the first time and i was so happy and edited somethings in between… So check my website… And an important part to mention, since I used Github to deploy this to the public i made an fake version of the website fully on html which I didn’t document, because it should not be counted in the original website… I’m sorry friends pls see the screenshot, it’s the original website… The difference is just the profile phot and some mis-allignments in the fake one, every others are just the same… So pls try it and Rate my Project… Your rating means a lot!…", "repo": "https://github.com/pirajin28/Personal-Website", "demo": "https://pirajin28.github.io/Personal-Website/INDEX!.html"}]...
|
[{"post_id": 76195, "ts": "202 [{"post_id": 76195, "ts": "2026-10-02T17:10:29Z", "hours": 0.6225, "text": "Finally completed my Personal Site… Thanks to ChatGPT, it helped me learn how to build website from scratch…. Sorry i couldn’t document me learning it…"}, {"post_id": 73155, "ts": "2026-09-24T14:32:18Z", "hours": 0.3697, "text": "Today i completed the css code also. It is the official v1. And I will be creating the v2 soon. Stay tuned."}, {"post_id": 60982, "ts": "2026-09-03T17:43:44Z", "hours": 0.7942, "text": "#Devlog 1 - This is the first time creating a website. I’m currently working on making my personal website which is completely about me… Today I worked for an hour around this, used HTML to create it, got some errors but still managed to solve them and created a prototype, PROTOTYPE 1… Stay tuned to know how I’m going to develop it further!"}]...
|
Title: PersonalSite by @Pirajin | Stardance
Devlo Title: PersonalSite by @Pirajin | Stardance
Devlogs:
#Devlog 1 - This is the first time creating a website. I’m currently working on making my personal website which is completely about me… Today I worked for an hour around this, used HTML to create it, got some errors but still managed to solve them and created a prototype, PROTOTYPE 1… Stay tuned to know how I’m going to develop it further!
Today i completed the css code also. It is the official v1. And I will be creating the v2 soon. Stay tuned.
Finally completed my Personal Site… Thanks to ChatGPT, it helped me learn how to build website from scratch…. Sorry i couldn’t document me learning it…
Ships:
Hey guys, it was my first time building a website… And seeing that my first website is mine it feels amazing… Actually i saw some videos on making your own website from scratch and got it working in the first time and i was so happy and edited somethings in between… So check my website… And an important part to mention, since I used Github to deploy this to the public i made an fake version of the website fully on html which I didn’t document, because it should not be counted in the original website… I’m sorry friends pls see the screenshot, it’s the original website… The difference is just the profile phot and some mis-allignments in the fake one, every others are just the same… So pls try it and Rate my Project… Your rating means a lot!…...
|
1793005022.3292341
|
1793091422.3292341
|
|
57805
|
Macro pad from scratch by @Abis-Aman | Stardance
|
Abis-Aman
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T14:06:59Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So i made a macropad fully from scartch like from switch to case the only think that is not custom is the esp82 and the reason that it is not builded in ki cad or somthing like that is dues me not havimg a pc at first i was stuck on the switch design then i looked online and got some i deas and moddified it to be more simple the second problem was after the upload the esp wont connect to modem but with some thing i fixed it like not fixing it i found that the problem was parental control on wifi so qith some little talk which tuke me 3 days i finally soaped my mother to allow the macropad the main problem of mine is me not having that much support form my family and if u gusys wanna know more read my read me file qjich is not also that great 😁😁", "repo": "https://github.com/AbisAman-Dev/Macro-pad-from-scratch", "demo": ""}]...
|
[{"post_id": 64337, "ts": "202 [{"post_id": 64337, "ts": "2026-09-08T17:13:46Z", "hours": 0.2833, "text": "**Dev log 16: ** so guys iam happy to announce that i habe findished my macropad from scratch project and afyer this post i will ship it. And thtnks for all for supporting me from the fist devlog i realy appreciate that"}, {"post_id": 64262, "ts": "2026-09-08T15:10:41Z", "hours": 0.4, "text": "Dev log 15 : So iam happy to announce to you guys that the building of macropad is finished even though not fully covere on top the top cover wont fit as it will remove the movement of switches now i need to make github page and read me.and one more thing do you guys know like what ishould add in my github repo for this project"}, {"post_id": 64246, "ts": "2026-09-08T14:40:40Z", "hours": 0.5, "text": "**Dev log 14: iam still building the case and it looked kind of sick"}, {"post_id": 64224, "ts": "2026-09-08T14:04:55Z", "hours": 0.3375, "text": "Dev log 13: so this is just me trying to build the case😁😁"}, {"post_id": 64184, "ts": "2026-09-08T12:33:47Z", "hours": 0.4483, "text": "So after many cutting and wiring the part of connection and electronics is over now only the frame build is left"}, {"post_id": 63516, "ts": "2026-09-07T12:47:47Z", "hours": 0.3, "text": "S now the base is done the only part left is the cover or to finish the case and the coding on esp"}, {"post_id": 63048, "ts": "2026-09-06T16:54:31Z", "hours": 0.3167, "text": "Dev log 10 : so i finished the first four switcjes and due to mma calling me for food iam stoppig here"}, {"post_id": 63032, "ts": "2026-09-06T16:31:55Z", "hours": 0.5833, "text": "Dev log-9 : so i started doig the base o the micro pad and it realy workd as i expected"}, {"post_id": 63001, "ts": "2026-09-06T15:54:07Z", "hours": 0.6167, "text": "Dev log -8 : so to clarify the reason why iam doing dev log very quickly or with little gap is that the phone can be taken at any time ad iam scared that the time would not sync so that why"}, {"post_id": 62954, "ts": "2026-09-06T14:51:16Z", "hours": 0.4, "text": "Dev log -7 started building the swithes full with function in the post space i dont know why but cant click enter"}, {"post_id": 62903, "ts": "2026-09-06T13:11:06Z", "hours": 0.6, "text": "Dev log-6 Done the electrinical and mechanical parts of a switch and it really worked iam really happy 😁"}, {"post_id": 62880, "ts": "2026-09-06T12:31:36Z", "hours": 0.45, "text": "Dev log-5 Finished all the switches Only frame"}, {"post_id": 62856, "ts": "2026-09-06T11:57:02Z", "hours": 0.4, "text": "Dev log-4 2 new switche frames"}, {"post_id": 62739, "ts": "2026-09-06T07:51:12Z", "hours": 0.3864, "text": "Dev log-3 Just made the switch deaign good"}, {"post_id": 62164, "ts": "2026-09-05T12:54:09Z", "hours": 0.6008, "text": "Dev log -2 So there a big problem and iam very sad about that the thing is i started recording 2 and a half hours ago but the 2 hours hadnt been shot i dont know why buy when i checked after 2 hours the thing was still zero min yeah in that time i had deawn a diagram of the switch and designed it the right set is the one first one i built in the 2 hoirs which had not been shot and the left set is the one that i made after it it took 34mintunes and the above devlog in that the time i clicked was miscricked to another project named my awsome macropad due to its same kind of name now that thing has a four minute vs code which i had done with codespace setup time so that a thing too and if anyof u gays have any suggestions on simplifying the switch model give a comment i reads it every time"}, {"post_id": 60839, "ts": "2026-09-03T13:47:59Z", "hours": 0.5897, "text": "Dev log - 1 So I started designing the macro pad on paper it real became a good better than I expected"}]...
|
Title: Macro pad from scratch by @Abis-Aman | Star Title: Macro pad from scratch by @Abis-Aman | Stardance
Devlogs:
Dev log - 1 So I started designing the macro pad on paper it real became a good better than I expected
Dev log -2 So there a big problem and iam very sad about that the thing is i started recording 2 and a half hours ago but the 2 hours hadnt been shot i dont know why buy when i checked after 2 hours the thing was still zero min yeah in that time i had deawn a diagram of the switch and designed it the right set is the one first one i built in the 2 hoirs which had not been shot and the left set is the one that i made after it it took 34mintunes and the above devlog in that the time i clicked was miscricked to another project named my awsome macropad due to its same kind of name now that thing has a four minute vs code which i had done with codespace setup time so that a thing too and if anyof u gays have any suggestions on simplifying the switch model give a comment i reads it every time
Dev log-3 Just made the switch deaign good
Dev log-4 2 new switche frames
Dev log-5 Finished all the switches Only frame
Dev log-6 Done the electrinical and mechanical parts of a switch and it really worked iam really happy 😁
Dev log -7 started building the swithes full with function in the post space i dont know why but cant click enter
Dev log -8 : so to clarify the reason why iam doing dev log very quickly or with little gap is that the phone can be taken at any time ad iam scared that the time would not sync so that why
Dev log-9 : so i started doig the base o the micro pad and it realy workd as i expected
Dev log 10 : so i finished the first four switcjes and due to mma calling me for food iam stoppig here
S now the base is done the only part left is the cover or to finish the case and the coding on esp
So after many cutting and wiring the part of connection and electronics is over now only the frame build is left
Dev log 13: so this is just me trying to build the case😁😁
**Dev log 14: iam still building the case and it looked kind of sick
Dev log 15 : So iam happy to announce to you guys that the building of macropad is finished even though not fully covere on top the top cover wont fit as it will remove the movement of switches now i need to make github page and read me.and one more thing do you guys know like what ishould add in my github repo for this project
**Dev log 16: ** so guys iam happy to announce that i habe findished my macropad from scratch project and afyer this post i will ship it. And thtnks for all for supporting me from the fist devlog i realy appreciate that
Ships:
So i made a macropad fully from scartch like from switch to case the only think that is not custom is the esp82 and the reason that it is not builded in ki cad or somthing like that is dues me not havimg a pc at first i was stuck on the switch design then i looked online and got some i deas and moddified it to be more simple the second problem was after the upload the esp wont connect to modem but with some thing i fixed it like not fixing it i found that the problem was parental control on wifi so qith some little talk which tuke me 3 days i finally soaped my mother to allow the macropad the main problem of mine is me not having that much support form my family and if u gusys wanna know more read my read me file qjich is not also that great 😁😁...
|
1793005021.1086633
|
1793091421.1086633
|
|
57800
|
AEGIS by @aron_roger | Stardance
|
aron_roger
|
2
|
71.0
|
795
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T19:55:05Z", "hours": 21.0, "multiplier": 14.56, "payout": 301, "blessing": "neutral", "text": "A NFC tag tracker app, it is on the web right now, for designing and prototyping purpose, although I have written much greater detail in my previous ship, this is just a contiuation to my last ship. So, from the previous feedback, I have fixed few thing worked more on the representation and then also added a instruction page to the routes. I want to say I am happy with where I have reached as said in my previous dev-log, I have decided to get this project a halt, due to other responsibilities and priorities. I wanted to do more than that, but I am glad with whatever I learned along the way, it was all fun. As of now it is still not a native application rather a web hosted testing prototype, you can use the graphs and toggle option to change option, and yeah for now i haven’t yet added different user option, although I started with it. I might be signing off after this, would try to comeback but till then, may everyone do well in anything they do, I would still like to receive feedback, and yeah Ik I have sm things in mind to do and add, but yet again sadly it is kinda hard for me as of now.", "repo": "https://github.com/aron-roger/aegis", "demo": "https://aronnn.pythonanywhere.com/hydration"}, {"ship_num": 2, "ts": "2026-09-19T09:57:04Z", "hours": 50.0, "multiplier": 9.92, "payout": 494, "blessing": "neutral", "text": "AEGIS General intro I made a NFC tracker application, even though it is on the web rn, I have deployed it to pythonanywhere for use, currently. Story-Time: I might be a strange guy but I like to track my habits and count everything, and I surely have done tracking across both digitally and manually on my journal. That is when I knew about NFC stickers where a person showcased how he is using it to track his stuff, and i thought it to be so cool if i can do it too, so I began searching… later, here I am. Challenges I tried my best to make this as best i can, ngl I kinda tripped, and hit so many walls, at some point I was about to give up, but nah, I was more determined to complete it. I watched few HTML videos and CSS workaround, as i learned them through this project too, I learned a lot of stuff, I do not regret it, And the java-script was so hard to learn with my studies and in this short amount of time, that i must day i used AI to get me through it. Happy? Yeah I am so happy, with all I could do I wish i could do more, but as ever I’m not giving up. I am so happy about it, also when i discussed it with my cousin and he was like he wanted to track his water intake, it was hard for him. And i instantly knew, I can do it and I might can help him too. NOTE: I uses a NFC sticker on the objects, for example; water bottle, where the user can scan it whenever he can log his intake, and I have shared the link to where the person can use it, I am sorry not everyone can get a sticker, but I can make sure if they do have it it is most best UX for them. Otherwise, I have added an approach to to manually log the intake, Since, it is suppose to be an app and i haven’t yet made it an app, so i deployed it on pythonanywhere you can try out manual logging into my db. but as soon as the project is completed i will produce it such way the users have their local db to store their intake which is when a mobile app comes in. This a WIP PROJECT and I have so many things in mind to add, as I progress, lets hope I can do it, I believe i can do more pages faster as I have whole workflow in my head. Thank you for reading it this farrrr, arigato gozaimasu.", "repo": "https://github.com/aron-roger/aegis", "demo": "https://aronnn.pythonanywhere.com/hydration"}]...
|
[{"post_id": 75273, "ts": "202 [{"post_id": 75273, "ts": "2026-09-29T16:39:51Z", "hours": 4.0106, "text": "This might be my last dev-log I hate to admit but my study have been over-whelming. I am in 12th grade and catching up with my studies + preparing for a screening test olympiads. It is like juggling them but can’t do anything, I must eliminate something to keep up with everything else. Not gonna lie, it has been so much fun and learning during my time in Star-dance. I would miss this. I wanted to complete aegis-project but I still seem to have a long way to go especially learning dart or xml to host my app. Actually there might a bit more longer way because i haven’t really picked up on java-script either. I am kinda sad because I can not put in my everything, but I am happy with whatever I have learnt, plus all the new people I have met and then also able to tell more people about it. For this dev-log I’d like to showcase my whole app and designs Ive been working on. I have tried learning a lil bit of schema, but unable to give my whole time towards it also, I have also sent my code to ai to help me too. Things I have done instruction route is done for now re-newed the db for new schema (which i would not use after this decision) tweaked some design for my all routes and html which I have attached ss to it."}, {"post_id": 74088, "ts": "2026-09-26T17:15:09Z", "hours": 7.4475, "text": "#YOPP! I tried re-designing my home page and here is hat Ive come up with I used this pale-yellow green. I don’t know if i would change it or keep it. Any-ways here is what Ive been up to and what I did I have read the reasons that came through with the shipment results, and few reviewers claimed that they can’t understand they way it works, which for what i would like to apologize for I should’ve made an instruction screen, or smth more prominent of the usage of my system. I am glad they have pointed it out! So, I have tried making a Home-screen and a simple instruction screen. It was fun and quick process, although few designing got me time tinkering. Here is a overview to what I have done, I used lapse to record my Figma designing hours and then, later tried implementing it inside my code. although there have been so many inconsistencies that I had to use ai to help me, but Im glas with what im at. Then, also I have changed date selector bar which was again fun, because this time there was less friction than before, I’m kinda disappointed that I couldn’t manipulate JS on my own. Aside naturally, everything worked well, now I would like to complete it soon, because my other responsibilities have been hiking. BTW, I am tweaking myself I am kinda super glad with my hydration and sleep routes they are peaking, I would like to highlight them at next dev post, keep getting posted, I am sure you guys would like it"}, {"post_id": 72246, "ts": "2026-09-22T15:00:37Z", "hours": 8.0583, "text": "YO - I’m back I have posted my app to what I designed and where I am rn, first picture is my figma design, second is my where I am… I’ve been wanting to add those animated giphy, let me know how you guys do it. I tweaked my route kinda completed it, I’m kinda happy with this, some of the things are repetitive but so far here is what i did: re-made my date selector bar changed the background for sleep tracker theme sleep button toggle, it was kinda hard to learn DOM manipulation, so I let ai do it (will learn it) set-up routes in the backend, kinda fun to tweak it and used ai to help me clear my mess Honestly, I think must showcase my result properly, it is not a web but an app, soon converting it to a whole app, as im finished with logic routes. NFC is working, soon uploading it on Github. You can send me your reviews as you like my app to be, I would be happy to view them and react to them."}, {"post_id": 70771, "ts": "2026-09-19T18:52:19Z", "hours": 1.18, "text": "IRONY So, I have been flagged, to be using ai styled design, which is sad truly because, I myself had came up with the layout, in figma, and then later i tweaked the design in dark theme, because i probably my eyes hurt working with bright screen lol. light theme I was hoping to use this design, later, for customizing theme option in settings. Apparently, I am switching back to it, after some tweaks, I will be able to push it on github Clarification Also, I want to tell that I wanted to make an app out of it, and all i did rn is just made it on a web, so i got a long way to go, I was am soon using flutter for my application and deployment. I believe i wont be flagged next because yeah, It is my design, i wonder if it is that good or that much slop."}, {"post_id": 70461, "ts": "2026-09-19T07:31:03Z", "hours": 4.5711, "text": "FINALLY, I THINK MY HYDRATION PAGE IS DONE. Changes; First of all I have graphss, like it is working the one day graph is supposed to be a cumulative graph and its working well. fixed few bugs i was facing when i was testing it, i still cannot test 1w and 1 month graph due to limited logs, It was a long way, honestly, i have put my design i made on figma in the later image, and the first one is what Im at rn. If you scroll through my other dev logs you might stumble upon my whole design phase. However, I am glad with what I got to, it is just as expected, I am ship this as a WIP project, please I really put my heart at it, learning and idealizing, I really appreciate your rating and help, Thanks for reading it this farr, really thank you. I will add more details, when i will ship this."}, {"post_id": 69699, "ts": "2026-09-17T16:36:31Z", "hours": 6.0686, "text": "HYDRATION TRACKER TLDR; deployed it on pythonanywhere removed variable input created tables for history I’ve re- the whole hydration.html, due to the reasons my javascript wasn’t performing well with variable input. so now i backed off from it and start to complete the basics. Deployed my project on pythonanywhere so now i can officially use the sticker when i go outside too, please acknowledy this my first time making a dedicated project and i have learned a lot of stuff, yet i try to keep on improving ##Future plans… making graphsss (tuff) ig, i always liked visual representation. sleep.html but diff cards mihi med tracker (custom medication) Will work on better dev posts."}, {"post_id": 67561, "ts": "2026-09-13T18:15:53Z", "hours": 8.3778, "text": "It was supposed to be a mobile app but it looks cool anyways, YEPP i worked on backend, again and yet got to this new screen with new cardsss. NOW user can adjust the amount logs, there is bug i found while testing but then i got message that i must dev post soon, anyways les goo, i would like to know and hear more suggestion on anything about my project."}, {"post_id": 66661, "ts": "2026-09-12T14:55:37Z", "hours": 8.1722, "text": "Worked on Backend and front end both, i cant decide which theme to choose, that blue one or white one, Anyways, backend for hydration route is all set i might not need to tweak it anymore or i must say much. front end, im honestly enjoying all of this, i learnt a lot…"}, {"post_id": 65883, "ts": "2026-09-11T10:07:28Z", "hours": 3.1342, "text": "Worked on the back-end, css html too. i took few courses from html to get started with it, next im refining my page to make it look more like my figma design and also im re-building backend py code. Till, i receive my stickers, ordered from a store, imma work on on making front end better and re doing my py files for a formal structure."}, {"post_id": 64210, "ts": "2026-09-08T13:21:21Z", "hours": 3.7906, "text": "Honestly for now im done with the design all thing sive made myself everything took lotta time to get to this point and it is only design, i will tweak more like get home page and more tacker with more features soon, maybe add badges and its tab, There is still a lot to do. (sorry for poor quality video i still cant figure out how to use obs screen rec.) SO, IM DONE FOR NOW WITH DESIGNING, I am starting at backend code using flutter i have shared the files to test my backend and it is going good fo rnow next we adding pages and its logic. It is all new im learning midway. I would like if you can suggest me any idea for tracker although i might add a medicine tracker and brush at night tracker because i believe there are many people who do not brush at night too, correct me and share your review, thankss."}, {"post_id": 62356, "ts": "2026-09-05T18:00:09Z", "hours": 7.4225, "text": "Today, I have made more buttons and started at both hydration and sleep tracker page. From last time, I have been more consistent with so many things. Next, I am adding graphs to the system, so finally start at code. And would probably post a preview to the design. For those who don’t know, im building nfc tracker system for day to day life and for now i am only integrating 2 trackers for now."}, {"post_id": 61705, "ts": "2026-09-04T19:02:13Z", "hours": 8.2783, "text": "OK, it was my first time using figma, started my design (ui) for my app: Aegis. There a lot more to go…"}]...
|
Title: AEGIS by @aron_roger | Stardance
Devlogs:
Title: AEGIS by @aron_roger | Stardance
Devlogs:
OK, it was my first time using figma, started my design (ui) for my app: Aegis. There a lot more to go…
Today, I have made more buttons and started at both hydration and sleep tracker page. From last time, I have been more consistent with so many things. Next, I am adding graphs to the system, so finally start at code. And would probably post a preview to the design. For those who don’t know, im building nfc tracker system for day to day life and for now i am only integrating 2 trackers for now.
Honestly for now im done with the design all thing sive made myself everything took lotta time to get to this point and it is only design, i will tweak more like get home page and more tacker with more features soon, maybe add badges and its tab, There is still a lot to do. (sorry for poor quality video i still cant figure out how to use obs screen rec.) SO, IM DONE FOR NOW WITH DESIGNING, I am starting at backend code using flutter i have shared the files to test my backend and it is going good fo rnow next we adding pages and its logic. It is all new im learning midway. I would like if you can suggest me any idea for tracker although i might add a medicine tracker and brush at night tracker because i believe there are many people who do not brush at night too, correct me and share your review, thankss.
Worked on the back-end, css html too. i took few courses from html to get started with it, next im refining my page to make it look more like my figma design and also im re-building backend py code. Till, i receive my stickers, ordered from a store, imma work on on making front end better and re doing my py files for a formal structure.
Worked on Backend and front end both, i cant decide which theme to choose, that blue one or white one, Anyways, backend for hydration route is all set i might not need to tweak it anymore or i must say much. front end, im honestly enjoying all of this, i learnt a lot…
It was supposed to be a mobile app but it looks cool anyways, YEPP i worked on backend, again and yet got to this new screen with new cardsss. NOW user can adjust the amount logs, there is bug i found while testing but then i got message that i must dev post soon, anyways les goo, i would like to know and hear more suggestion on anything about my project.
HYDRATION TRACKER TLDR; deployed it on pythonanywhere removed variable input created tables for history I’ve re- the whole hydration.html, due to the reasons my javascript wasn’t performing well with variable input. so now i backed off from it and start to complete the basics. Deployed my project on pythonanywhere so now i can officially use the sticker when i go outside too, please acknowledy this my first time making a dedicated project and i have learned a lot of stuff, yet i try to keep on improving ##Future plans… making graphsss (tuff) ig, i always liked visual representation. sleep.html but diff cards mihi med tracker (custom medication) Will work on better dev posts.
FINALLY, I THINK MY HYDRATION PAGE IS DONE. Changes; First of all I have graphss, like it is working the one day graph is supposed to be a cumulative graph and its working well. fixed few bugs i was facing when i was testing it, i still cannot test 1w and 1 month graph due to limited logs, It was a long way, honestly, i have put my design i made on figma in the later image, and the first one is what Im at rn. If you scroll through my other dev logs you might stumble upon my whole design phase. However, I am glad with what I got to, it is just as expected, I am ship this as a WIP project, please I really put my heart at it, learning and idealizing, I really appreciate your rating and help, Thanks for reading it this farr, really thank you. I will add more details, when i will ship this.
IRONY So, I have been flagged, to be using ai styled design, which is sad truly because, I myself had came up with the layout, in figma, and then later i tweaked the design in dark theme, because i probably my eyes hurt working with bright screen lol. light theme I was hoping to use this design, later, for customizing theme option in settings. Apparently, I am switching back to it, after some tweaks, I will be able to push it on github Clarification Also, I want to tell that I wanted to make an app out of it, and all i did rn is just made it on a web, so i got a long way to go, I was am soon using flutter for my application and deployment. I believe i wont be flagged next because yeah, It is my design, i wonder if it is that good or that much slop.
YO - I’m back I have posted my app to what I designed and where I am rn, first picture is my figma design, second is my where I am… I’ve been wanting to add those animated giphy, let me know how you guys do it. I tweaked my route kinda completed it, I’m kinda happy with this, some of the things are repetitive but so far here is what i did: re-made my date selector bar changed the background for sleep tracker theme sleep button toggle, it was kinda hard to learn DOM manipulation, so I let ai do it (will learn it) set-up routes in the backend, kinda fun to tweak it and used ai to help me clear my mess Honestly, I think must showcase my result properly, it is not a web but an app, soon converting it to a whole app, as im finished with logic routes. NFC is working, soon uploading it on Github. You can send me your reviews as you like my app to be, I would be happy to view them and react to them.
#YOPP! I tried re-designing my home page and here is hat Ive come up with I used this pale-yellow green. I don’t know if i would change it or keep it. Any-ways here is what Ive been up to and what I did I have read the reasons that came through with the shipment results, and few reviewers claimed that they can’t understand they way it works, which for what i would like to apologize for I should’ve made an instruction screen, or smth more prominent of the usage of my system. I am glad they have pointed it out! So, I have tried making a Home-screen and a simple instruction screen. It was fun and quick process, although few designing got me time tinkering. Here is a overview to what I have done, I used lapse to record my Figma designing hours and then, later tried implementing it inside my code. although there have been so many inconsistencies that I had to use ai to help me, but Im glas with what im at. Then, also I have changed date selector bar which was again fun, because this time there was less friction than before, I’m kinda disappointed that I couldn’t manipulate JS on my own. Aside naturally, everything worked well, now I would like to complete it soon, because my other responsibilities have been hiking. BTW, I am tweaking myself I am kinda super glad with my hydration and sleep routes they are peaking, I would like to highlight them at next dev post, keep getting posted, I am sure you guys would like it
This might be my last dev-log I hate to admit but my study have been over-whelming. I am in 12th grade and catching up with my studies + preparing for a screening test olympiads. It is like juggling them but can’t do anything, I must eliminate something to keep up with everything else. Not gonna lie, it has been so much fun and learning during my time in Star-dance. I would miss this. I wanted to complete aegis-project but I still seem to have a long way to go especially learning dart or xml to host my app. Actually there might a bit more longer way because i haven’t really picked up on java-script either. I am kinda sad because I can not put in my everything, but I am happy with whatever I have learnt, plus all the new people I have met and then also able to tell more people about it. For this dev-log I’d like to showcase my whole app and designs Ive been working on. I have tried learning a lil bit of schema, but unable to give my whole time towards it also, I have also sent my code to ai to help me too. Things I have done instruction route is done for now re-newed the db for new schema (which i would not use after this decision) tweaked some design for my all routes and html which I have attached ss to it.
Ships:
AEGIS General intro I made a NFC tracker application, even though it is on the web rn, I have deployed it to pythonanywhere for use, currently. Story-Time: I might be a strange guy but I like to track my habits and count everything, and I surely have done tracking across both digitally and manually on my journal. That is when I knew about NFC stickers where a person showcased how he is using it to track his stuff, and i thought it to be so cool if i can do it too, so I began searching… later, here I am. Challenges I tried my best to make this as best i can, ngl I kinda tripped, and hit so many walls, at some point I was about to give up, but nah, I was more determined to complete it. I watched few HTML videos and CSS workaround, as i learned them through this project too, I learned a lot of stuff, I do not regret it, And the java-script was so hard to learn with my studies and in this short amount of time, that i must day i used AI to get me through it. Happy? Yeah I am so happy, with all I could do I wish i could do more, but as ever I’m not giving up. I am so happy about it, also when i discussed it with my cousin and he was like he wanted to track his water intake, it was hard for him. And i instantly knew, I can do it and I might can help him too. NOTE: I uses a NFC sticker on the objects, for example; water bottle, where the user can scan it whenever he can log his intake, and I have shared the link to where the person can use it, I am sorry not everyone can get a sticker, but I can make sure if they do have it it is most best UX for them. Otherwise, I have added an approach to to manually log the intake, Since, it is suppose to be an app and i haven’t yet made it an app, so i deployed it on pythonanywhere you can try out manual logging into my db. but as soon as the project is completed i will produce it such way the users have their local db to store their intake which is when a mobile app comes in. This a WIP PROJECT and I have so many things in mind to add, as I progress, lets hope I can do it, I believe i can do more pages faster as I have whole workflow in my head. Thank you for reading it this farrrr, arigato gozaimasu.
A NFC tag tracker app, it is on the web right now, for designing and prototyping purpose, although I have written much greater detail in my previous ship, this is just a contiuation to my last ship. So, from the previous feedback, I have fixed few thing worked more on the representation and then also added a instruction page to the routes. I want to say I am happy with where I have reached as said in my previous dev-log, I have decided to get this project a halt, due to other responsibilities and priorities. I wanted to do more than that, but I am glad with whatever I learned along the way, it was all fun. As of now it is still not a native application rather a web hosted testing prototype, you can use the graphs and toggle option to change option, and yeah for now i haven’t yet added different user option, although I started with it. I might be signing off after this, would try to comeback but till then, may everyone do well in anything they do, I would still like to receive feedback, and yeah Ik I have sm things in mind to do and add, but yet again sadly it is kinda hard for me as of now....
|
1793005019.9099567
|
1793091419.9099567
|
|
52846
|
Electronic Calculator by @IndexJson | Stardance
|
IndexJson
|
1
|
6.0
|
14
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T11:56:56Z", "hours": 6.0, "multiplier": 2.32, "payout": 14, "blessing": "neutral", "text": "I made an electronic calculator. That is a tool for hobbyists that want to make cool project and don’t want to deal with a lot of math. This project makes it simple since it bundles the most used equations into 1 program. I wrote it in C++ with Dear ImGui and GLFW. As rendering backend I chose OpenGL. It supports Linux.", "repo": "https://github.com/IndexAsm/ElectronicCalculator", "demo": "https://github.com/IndexAsm/ElectronicCalculator/releases/tag/v1.0"}]...
|
[{"post_id": 66499, "ts": "202 [{"post_id": 66499, "ts": "2026-09-12T10:33:55Z", "hours": 1.01, "text": "Devlog #05 Overview Voltage divider is now finished! Features For this calculator I decided to add combo boxes to select resistance units. It is quite useful sometimes. And everything else is the exact same as Ohm’s law. You fill all the required fields and it calculates as expected."}, {"post_id": 53957, "ts": "2026-08-24T17:45:27Z", "hours": 0.6994, "text": "Devlog #04 Overview I added a menu and fully finished Ohm’s law calculator. Menu From the menu you can now select what calculator you want to use. For now there aren’t too many options but there will be more in the future. Ohm’s Law Calculator This section is now fully finished! You have to select what to calculate, input all remaining parameters and click Calculate."}, {"post_id": 53697, "ts": "2026-08-24T11:28:05Z", "hours": 1.4592, "text": "Devlog #03 Overview So Ohm’s Law calculator is finished! You can select what to calculate and it will do just that. Language support As you can see everything is translated and has no impact on performance. Further plans I still have to add a few calculators. I was thinking about: Voltage divider Capacitor filter for bridge rectifier Transmission lines"}, {"post_id": 53035, "ts": "2026-08-23T12:57:51Z", "hours": 2.0119, "text": "Devlog #02 Overview I finished language manager. Adding translations is now quite easy. Just add a file and that’s it. Languages can be changed at runtime but it still has a few problem. New Font With addition of a new font all characters are displayed correctly. It now supports latin + cyrylic and of couse greek. And whatever else is in the font by default. Ohm’s Law Calculator Ohm’s law section is starting to take shape. Maintenance Also I refactored a lot of code, cleaned up big files, moved code into function and different files."}, {"post_id": 52398, "ts": "2026-08-22T14:54:48Z", "hours": 0.9042, "text": "Devlog #01 Overview I started working on a calculator that would help hobbyist with their electronic projects. Whenever I am designing a project, I use online calculator for many things: Ohm’s Law, Voltage Divider, Transmission Line. These are just the most common. With this project I intend to make it simpler by combining all of these calculators into one. Language & GUI Library I decided to write the project in C++, because it’s my favorite language. As for the GUI Library I went with Dear ImGui with glfw and opengl3. Language support This project is meant to be multilingual, so I decided to make this system first. Languages are stored as text files with .lang extension. Language Manager load text form this file and stores it in a map. This way adding new languages is very simple. Here you can see a quick demo showing that ImGui is working."}]...
|
Title: Electronic Calculator by @IndexJson | Stard Title: Electronic Calculator by @IndexJson | Stardance
Devlogs:
Devlog #01 Overview I started working on a calculator that would help hobbyist with their electronic projects. Whenever I am designing a project, I use online calculator for many things: Ohm’s Law, Voltage Divider, Transmission Line. These are just the most common. With this project I intend to make it simpler by combining all of these calculators into one. Language & GUI Library I decided to write the project in C++, because it’s my favorite language. As for the GUI Library I went with Dear ImGui with glfw and opengl3. Language support This project is meant to be multilingual, so I decided to make this system first. Languages are stored as text files with .lang extension. Language Manager load text form this file and stores it in a map. This way adding new languages is very simple. Here you can see a quick demo showing that ImGui is working.
Devlog #02 Overview I finished language manager. Adding translations is now quite easy. Just add a file and that’s it. Languages can be changed at runtime but it still has a few problem. New Font With addition of a new font all characters are displayed correctly. It now supports latin + cyrylic and of couse greek. And whatever else is in the font by default. Ohm’s Law Calculator Ohm’s law section is starting to take shape. Maintenance Also I refactored a lot of code, cleaned up big files, moved code into function and different files.
Devlog #03 Overview So Ohm’s Law calculator is finished! You can select what to calculate and it will do just that. Language support As you can see everything is translated and has no impact on performance. Further plans I still have to add a few calculators. I was thinking about: Voltage divider Capacitor filter for bridge rectifier Transmission lines
Devlog #04 Overview I added a menu and fully finished Ohm’s law calculator. Menu From the menu you can now select what calculator you want to use. For now there aren’t too many options but there will be more in the future. Ohm’s Law Calculator This section is now fully finished! You have to select what to calculate, input all remaining parameters and click Calculate.
Devlog #05 Overview Voltage divider is now finished! Features For this calculator I decided to add combo boxes to select resistance units. It is quite useful sometimes. And everything else is the exact same as Ohm’s law. You fill all the required fields and it calculates as expected.
Ships:
I made an electronic calculator. That is a tool for hobbyists that want to make cool project and don’t want to deal with a lot of math. This project makes it simple since it bundles the most used equations into 1 program. I wrote it in C++ with Dear ImGui and GLFW. As rendering backend I chose OpenGL. It supports Linux....
|
1793005018.785309
|
1793091418.785309
|
|
52810
|
Tabby Tab by @Kinza | Stardance
|
Kinza
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-16T16:46:01Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Simple, Modern, and Amazing Minimal Tab! Features Search for whatever you want. You can change color of background not needed to download a pic for color. You can also set a wallpaper or GIF. There also time and date in the corner!", "repo": "https://github.com/KinzaSyedHussain/Tabby-Tab", "demo": "https://tabby-tab.vercel.app/"}]...
|
[{"post_id": 69225, "ts": "202 [{"post_id": 69225, "ts": "2026-09-16T16:43:43Z", "hours": 3.6028, "text": "Simple, Modern, and Amazing Minimal Tab! Changes that I have made! Enhance the shortcuts buttons with pic. Add delete and adding shortcuts. I also change Time and date location. Features ✨ You can change color of background not needed to download a pic for color. You can also set a wallpaper or GIF."}, {"post_id": 66025, "ts": "2026-09-11T15:50:58Z", "hours": 1.7039, "text": "Woohooo! Just added some amazing things! I add the app name on the top of the search box I change the location of time and in date in left side. I add shortcuts of some most use website."}, {"post_id": 62815, "ts": "2026-09-06T10:36:36Z", "hours": 2.4831, "text": "Make minimal tab! with the background change options."}]...
|
Title: Tabby Tab by @Kinza | Stardance
Devlogs:
M Title: Tabby Tab by @Kinza | Stardance
Devlogs:
Make minimal tab! with the background change options.
Woohooo! Just added some amazing things! I add the app name on the top of the search box I change the location of time and in date in left side. I add shortcuts of some most use website.
Simple, Modern, and Amazing Minimal Tab! Changes that I have made! Enhance the shortcuts buttons with pic. Add delete and adding shortcuts. I also change Time and date location. Features ✨ You can change color of background not needed to download a pic for color. You can also set a wallpaper or GIF.
Ships:
Simple, Modern, and Amazing Minimal Tab! Features Search for whatever you want. You can change color of background not needed to download a pic for color. You can also set a wallpaper or GIF. There also time and date in the corner!...
|
1793005017.6594894
|
1793091417.6594894
|
|
9616
|
revo by @ratmuds | Stardance
|
ratmuds
|
1
|
134.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-21T01:26:40Z", "hours": 134.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I wanted to make a robot arm that punched above it’s weight. The price is pretty similar to smaller robot arms on Amazon that may not include cameras, which would need to be purchased seperately. The way this is achieved by using cheap servos, servos that are 100% NOT made for this purpose, and adding most of the functionality of a smart servo back by using a TON of PCBs. It was a lot of soldering. I just wanted to make something that had more features for less money :) This project was SUPER difficult for me, and pushed my limits a bit. The amount of tolerences especially for the stupid custom motor case and magnet and PCBs and the crazy mainboard and generally having everything play well together took so long, I had many days where I quit frustrated. I’m very happy about how it turned out though, even seeing the lots of shortcomings it has.", "repo": "https://github.com/ratmuds/revo", "demo": ""}]...
|
[{"post_id": 71545, "ts": "202 [{"post_id": 71545, "ts": "2026-09-21T01:17:14Z", "hours": 1.7336, "text": "Finish Project Up :) I wrote a ton in the repository im tired :( https://github.com/ratmuds/revo"}, {"post_id": 71258, "ts": "2026-09-20T15:14:42Z", "hours": 3.1572, "text": "Setup VR and Gripper, Robot Rapidly Disassembles my robot arm is broken I setup VR and fixed some more IK when I go into VR and try playing around, it instantly flies out and throws itself off the table and breaks into pieces. This is going to be fun to fix."}, {"post_id": 70809, "ts": "2026-09-19T19:55:52Z", "hours": 3.8861, "text": "Integration Hell I’ve just been like trying to get this stupid project to work. Screws keep falling out, the IK keeps failing, things are hitting each other and wires are being strained I’m in integration hell. Everything works fine on its own, but combining everything is horrible. I’ve been reassembling and trying to fix this stupid thing for so long. Anyway I’ve went through a few more revisions of some CAD and some more refinements and the gripper and camera is now mounted but this is just incredibly incredibly annoying :(((("}, {"post_id": 69881, "ts": "2026-09-18T00:05:17Z", "hours": 3.8311, "text": "Fixed Broken Magnet, Redoing all IK joint data and offsets, Stereo depth test An encoder magnet broke off, so I had to disassemble and reassemble the top half of the arm to get to the encoder magnet and glue it back on. I also started properly punching in the IK joint data, before it was mostly just random data but now almost all of the data is mostly correct, and I’m waiting for a print to complete that will flip a motor to finally get the IK simulation matching with real life and have the IK endpoint be tracked at the tip of the gripper. It was a lot of trial and error and measurements. I also started experimenting with adding depth estimation. Eventually this could add collision avoidance IK pathfinding, which would be really cool but it’s just a pointcloud in the render right now. But the robot arm is slowly coming together finally! I’ll be able to grab something soon I think."}, {"post_id": 68903, "ts": "2026-09-16T00:31:34Z", "hours": 2.8461, "text": "Assembled Full Arm (not all motors active yet for safety) and Basic Interpolation for Control I assembled the new full arm assembly minus the end effector and didn’t plug in the first two motors as they have the highest chance of doing something really bad. I also made some general changes to the code and also added a flag to some motors to interpolate their movement slowly to not explode the robot arm while controlling it."}, {"post_id": 68352, "ts": "2026-09-15T00:17:44Z", "hours": 2.5044, "text": "Significantly Better Motor Control and Gripper CAD The motor code was getting a bit messy, so I rewrote it. I separated the motor code from the main control code which cleaned it up a bit. LADRC I’m using LADRC now. It’s kind of like PID, but advanced. I took the implementation from online. I feed it the motor current, encoder value, and the target and it goes. The algorithm or whatever somehow calculates the velocity of the motor and how much “effort” it’s using and then gives an effort to put to the motor. It somehow cancels out like disturbances like gravity, backlash, the general physics, etc. As you can see, the motor control is so so so much better than before. It cleanly decelerates. It handles load and dynamically increases effort. Before there was some oscillation because it just couldn’t figure out how to get to the target, this one is just so much better and so hands off. There’s basically like no calibration as it does it over time :)))"}, {"post_id": 67779, "ts": "2026-09-14T00:57:25Z", "hours": 1.4489, "text": "Assembled last 4 DoF for Integrated Test I assembled the MG996R servos in a test piece that will represent the full regular arm segment to test if everything worked. With some fiddling it worked. As you can see there’s more transparent pieces. The pieces that connect the previous joint are transparent to show the Neopixel below it a lot better as before the LED was almost completely occluded. The bright green LEDs power status ones are too bright but I can cover them later."}, {"post_id": 67735, "ts": "2026-09-13T23:20:04Z", "hours": 6.6769, "text": "Dashboard Revamp WIP, Tons of CAD changes, Code Updates, Tolerances I’ve just been refining everything and it’s just going really slowly. Many problems. Magnets shorting out stuff. Magnet too far and not being detected. Wires breaking. I’ve also redesigned the dashboard UI to hopefully look better. I’m still working on it, hopefully it will look more polished later. The dashboard It shows a load speedometer type thing, with the load (max current from a motor out of 500mA) and the temp on the right (for now just dummy value) The motors have cool little animations now too and look less cluttered. I’ve just been working on it a lot. Just everything in general tbh."}, {"post_id": 65061, "ts": "2026-09-09T22:13:56Z", "hours": 5.7644, "text": "Debugging and Fixing Is Killing Me and the Mainboard Exploded :( I have spent SO many hours trying to get this to work. It’s so annoying. This isn’t near how many hours I spent, I’ve been too frustrated to log it. The case is incredibly annoying. Getting the initial case works fine. Doing all of this stuff makes it complicated and break and jam up. The RS485 busses just randomly stop working. The servo output is wiggly and not stable. A PCB header snapped and I didn’t have replacements so I had to bodge solder it back on. The mainboard voltage regulator literally exploded. It was a cheap part but yeah that literally just broke stuff. Fixes to everything. CAD. Firmware. bruh"}, {"post_id": 60577, "ts": "2026-09-03T00:49:54Z", "hours": 6.7731, "text": "MG996Rs Finally Working The servos finally work. I don’t even think this amount of hours logged is equal to how long this took, because I just got tired of it. I think I printed like 20 new revisions of the case and servo mount. It was just so so annoying. While the general case worked, getting a reliable magnet output shaft was impossible. From tolerances, to my own errors to binding to hot glue getting everywhere, or superglue binding random gears, or my getting my fingers stuck to the actual case from superglue (was not fun and hurt) The case finally works. And the prototype code somewhat works too. It basically rotates until the sensor hits zero, it resets the “ticks”. A tick is a raw output from the AS5600. Because this magnet shaft spins faster than the output shaft, like 10x faster, the MCU needs to poll the sensor super quickly, which also needed some optimizations to clear the blocking bus communication wait that would let the magnet skip multiple full turns. The sensor doesn’t internally count turns so we just need to count manually and detect when it jumps from 4096-0 or the other way around. It then spins around until the sensor is hit AGAIN to calculate tick to degrees, assuming the sensor was zeroed before, and then the current ticks would equal 360 degrees. Another problem was the servo needs a PWM signal to move. The threshold from stop to go is pretty garbage on these cheap servos, leading it to spin quite fast already when at the lowest PWM value. Instead when far from the value it increases the PWM signal, closer it brings to minimum and starts linearly flickering the PWM signal from 0 to the speed, with the closer it is the more ratio of time stopped to inch it closer to the target. It actually surprisingly works. It’s very fragile though, any skipped reads, from potentially slow bus transfers would completely throw it off, so all the code running locally on the weak 8 bit MCU needs to be extremely lightweight. Yeah this was super super painful. I’ve been sitting here redoing superglue and code for hours."}, {"post_id": 58979, "ts": "2026-08-31T15:36:35Z", "hours": 3.4036, "text": "Servo Code I did some slight refining to the servo case again, making the tolerances tighter to keep the gears from wobbling. It’s still sort of loose, so I need to just keep trying over and over again. I’m also still writing the servo code. It’s already much more organized than before. I’m also learning Vim keybinds and stuff to try and code faster. The RS485 bus communication works now, and it’s just sending dummy telemetry data back right now. It can also control the servo fine. I’ve just been doing like the lower level architecting I guess, or not really I’m not sure. Before everything was crammed into a single file and now there’s actually header files and multiple source files and it’s actually somewhat readable. I had an issue with LED control for a second but that’s fixed now :)"}, {"post_id": 58467, "ts": "2026-08-30T21:44:37Z", "hours": 2.4922, "text": "V2 Servo Case Working; Servo Code Revamp WIP After around 10 more revisions, the new servo case is fully working with the magnetic extender. The V2 is significantly better designed and higher efficiency than the last, more guess and check result. I’ve also started to rewrite the servo code. Right now, its really messy and just kind of snowballed over time as I’ve slapped on patches and features to a fundamentally weak base. I’m in the progress of writing that now, hopefully it will be done soon. It will also include the new auto calibration and encoder usage and PID (and potentially advanced auto tuned curve to combat motor acceleration overshoot and backlash)"}, {"post_id": 57778, "ts": "2026-08-30T02:16:49Z", "hours": 3.8514, "text": "Working on IK System & Resoldered Joints Again Bruh so my robot arm after finally being assembled by the way exceeded it’s limits and tore its wires out. I had to take apart the mainboard assembly again, which just is SO TEDIOUS. I just dumped solder and hot glue again and fixed a short caused from another wire being sheared off. Also I’m working on the IK system, but it’s not really going well right now. I need to add offsets and config to each of the motors to get them to work correctly. The motors hooked up right now started crashing into my table sadly. Hopefully it will work soon. I also continued working on the servo case. I still haven’t added the code to calibrate and get closed loop control on the MG996R servos. The DS5180 encoders should be easier though."}, {"post_id": 57272, "ts": "2026-08-29T11:42:11Z", "hours": 3.1006, "text": "Reprinted Arm Segments; Added Segment Cover; Servo Mount Working; Working on Web UI I reprinted the arm segments, hopefully for one of the last times, I’ve went through so much filament already. It now allows the mainboard to be neatly packed inside, hiding most of it while still allowing wires to come out. Due to the design of the mainboard, the wires do have to stick out the front like that sadly. To avoid crushing wires, the servo mount has been expanded to allow more clearance for wires and general electronics. The servo mount works now with a new design. I remeasured and adjusted the sketches and added proper hole sizes and a little chamfer to allow the insert to slot in before using a soldering iron to melt it in to help align much better than before. The web UI now shows a representation of the arm. It’s not tuned yet, so the angles are wrong but I’ll fix it soon. I had to move everything from Fusion to Onshape to create the assemblies, and then use a Python library to convert the Onshape assembly into a URDF file that can be rendered with the correct joints inside ThreeJS. Next, I’ll be adding IK and general arm control."}, {"post_id": 56800, "ts": "2026-08-28T18:32:28Z", "hours": 3.1978, "text": "Heatset Inserts Working; Fixing Faulty Motor Power Connections; Internal Fan Power Connectors I verified that the servo cover works, and it’s much much better than the last version. The tolerances are much better this time, leading to less stress on the gears. The same amount of turning uses around 100mA compared to 300mA before, almost reaching it’s limit without any load. Some motor power connectors disconnected, so I found it with a multimeter and added hot glue to some connectors to secure them. I soldered the fan power things inside the PCB, but realized that the JST connectors I’m using are different from the fans. I might have to make a sort of adapter or something by crimping more wires. And the heatset inserts finally work after some tweaking, before the inserts would get misaligned when put in, now with a aligning lip thing it can be slotted in and melted in more accurately."}, {"post_id": 56316, "ts": "2026-08-28T01:34:32Z", "hours": 4.6306, "text": "New Mainboard Cover, Wiring, Bearing Revamp, Heatset Inserts, Servo Cover I added space for the mainboard segment, now it has clearance to actually fit, I redid the cover for this segment, and now it can allow the wires to come out The servo mount now has heatset inserts, because the previous screw in print kept slipping out, but this time the screws just would not go into the inserts through the mount for some reason? The screws went in normally, but with the tolerances, when multiple screws go in they just fight and push against the edge of the insert instead of going in. The MG996R servo housing now has been redesigned, based off of picture references and calipers to attempt to be more accurate than the last one to try and reduce the amount of bad tolerances affecting the gears and making them misaligned, reducing torque output. And just general wiring and CAD work."}, {"post_id": 55294, "ts": "2026-08-27T01:14:32Z", "hours": 2.9064, "text": "Assembled Basic Arm Parts and Packaged Main Board Assembly; Reprogrammed servo MCUs & worked on web UI I redid some soldering on the mainboard PCB, secured connections, and secured everything with tape for now. I’ll likely have to reprint the first arm segment to fit everything in flush because as you can see there are wires and things bulging out of the segment itself right now. I also redesigned the CAD to include heat set inserts. I did programming and a bunch of bug testing and fixing too. An hour of time was lost because Lapse errored out :((((( very sad about that :( I also had an issue with data corruption on the RS485 bus but that is fixed now, and it works like it should."}, {"post_id": 54840, "ts": "2026-08-26T00:29:08Z", "hours": 4.3236, "text": "Mainboard Stack Redo & Firmware Updates and Test Web UI I had to take the electronics out, and redo some of the wiring. The screw terminals are pretty cheap and suck, which makes it incredibly annoying to use as it’s impossible to fit these thicker AWG wires in and they sometimes slide out of the terminals. When I’m done I’m probably going to hot glue the wires. The incredibly fragile flexible extension jumpers for data transfer between the stack is also super fragile, and especially doesn’t grip. Sometimes the data wires just slip out. I took apart the arm, as during testing the motor stripped some screws. I’ve ordered some heat set inserts to prevent that from happening again, which will require me to reprint all the arm segments again. I also added a simple web UI for moving the joints. There is an empty ThreeJS sidebar and the right has some graphs (real data) from the mainboard sensors. The smaller MG996R servos haven’t been mounted yet due to a power delivery issue from the mainboard but hopefully that will be fixed soon."}, {"post_id": 28657, "ts": "2026-07-15T01:25:27Z", "hours": 4.0167, "text": "Test assembly and fitting of robot arm I am mostly done with the core functionality of the mainboard, so i packed everything together and double checked eerything works including power Then I started assembling most of the servos The smaller servo casing doesn’t fit very well, and the transparent window doesn’t fit either But the magnetic cover for the arm segments works great :) It was a lot of fitting, screwing, testing with multimeter, etc"}, {"post_id": 28409, "ts": "2026-07-14T17:26:49Z", "hours": 5.1303, "text": "Finalizing hardware I crimped and soldered almost the remaining wires, I’ve made some last redesigns to the arm CAD and I’m now fitting everything into the new prints and assembling. I’ve also had a ton of trouble with my servo PCBs lately, but I found out a lot of the issue was my programmer is actually fried somehow, so I’m now using an old RPi Pico to act as a UPDI adapter so PlatformIO can now successfully program the ATtinys much better now. A lot of the CAD was slightly tweaked so that everything fits better"}, {"post_id": 26853, "ts": "2026-07-11T21:36:43Z", "hours": 1.175, "text": "Servo firmware almost done The servo firmware now (with the mainboard) sends validation data back and forth so both the servo and mainboard can verify that the data was sent successfully and can ignore corrupted packets because my wiring can be flaky sometimes The firmware now sends real data again and is much more robust, with a proper stateful LED that shows useful information, like offline, online and driving motor, homing, error (fast flashing of LED as red), and the error state is also triggered in the case of corrupted packets (I tried it and it works :)) I’m also still printing out the pieces to assemble the arm. I actually have more hours working on it, I just forgot to log :((((((("}, {"post_id": 26218, "ts": "2026-07-10T21:40:32Z", "hours": 8.1217, "text": "Rewrote all firmware; Fixing Servo Cover and a ton of other CAD; Almost fried everything For the CAD, it doesn’t look like much changed, but I’ve basically redesigned a bunch of things and fixed tolerances and now it should move really smoothly. With the bearings added, everything moves incredibly smoothly now Especially the servo cover was annoying. I needed to attach a magnet to the shaft which was really annoying. I haven’t logged that well, I’ve done more like 15 hours of work instead of just 5 but whatever Most of those hours was the painful debugging. RS-485 busses, JSON not communcating with the PC, dropped connections, corrupted data, disconnected jumpers, FTDI programmer becoming flaky for some reason It’s just been pain :((( Now the PC (screenshot) recieves all the data and sends all the data You can see a lot (not all) of the telemetry being received. Ignore the volts though my math is wrong. Realtime connecting now works smoothly, as you can see the other RS485 servos are offline."}, {"post_id": 24091, "ts": "2026-07-07T13:11:08Z", "hours": 5.9586, "text": "Bidirectional Communication To PC/RPi 5 with LeRobot & More CAD changes I setup a basic class for my robot in LeRobot (which was a little confusing) and then I also got communication between the Pico and my PC working. Originally I have SPI pins exposed on my mainboard PCB to connect to the RPi 5’s GPIO pins, but for some reason after lots of debugging, even running it at super low speeds it just would not work. So I switched to just using serial over USB, and using the SerialTransfer library to send data more reliably. The script on the PC now can send target joint angles, and receive a lot of data back, like if the joint is online, temp, current, angle, homing sensor, home status, LED, firmware version, voltage, etc I also iterated on the CAD for everything, and it should be done soon. It’s just a bunch of tolerance fixes to make everything fit at this point and some new things like mounts for encoders and DC buck modules and fixing the CAD for the custom MG996R case."}, {"post_id": 23468, "ts": "2026-07-06T13:46:37Z", "hours": 1.9767, "text": "Mainboard and other CAD I got the mainboard to stack on top of each other with a weird jumper and two piece jumper holder and some screws setup which required some revisions and trying to get everything to fit. I’ve squeezed one of the DC buck modules into between the mainboard, and the second arm segment will hold the two remaining DC buck modules. The bottom mainboard PCB also has 2 smaller buck modules. There’s a lot of things going on with the voltages in this project due to the servos peak current draw being so large. I also refined the arm segment CAD by some reprints and made the DS5180 servo fit better. I’ve also made one of the buck module mounts for the second arm segment to fit more cleanly."}, {"post_id": 22393, "ts": "2026-07-04T21:03:02Z", "hours": 4.3272, "text": "Servo Control Working, More CAD and 3D Printing I got the mainboard to be able to control the servo on the servo PCBs. I also tested a bunch of the functions, like the magnetic sensor, neopixel LED, etc The communication now sends the PCB ID, and the target speed and the servo PCB echos it back and moves the servo. I also worked on the CAD (and refined) for the mainboard connector that will make connecting the two mainboards not a total pain. I also soldered the connectors on the mainboard PCBs for them to connect to each other."}, {"post_id": 21568, "ts": "2026-07-03T16:23:00Z", "hours": 0.4833, "text": "Servo PCB Daisy Chaining Working I plugged in the JST VH and JST 1.25mm wires into the PCBs, and they seem to work! I adjusted the message struct to hold a desired PCB sort of address or ID. When the MCU detects that the ID matches the PCB (by using the solder jumpers at the bottom of each PCB to program the PCB ID), only then it lights up the LED and replies to the main board. The mainboard now loops through IDs and sends a message and waits for a response. I’m very very happy this worked without any really big problems."}, {"post_id": 21540, "ts": "2026-07-03T15:45:12Z", "hours": 3.4667, "text": "Crimped JST VH wires, Connected JST 1.25mm wires, Soldered more PCB connectors Crimping JST VH wires is a ton easier than JST 1.25mm, and after a bunch of failed attempts still, I got some okay crimps that work finally. It took me a long time because I didn’t know that I had to rotate the wire for the hook on the terminal to go into the housing hole, and then also that the box shape part on the terminal actually has to stick out of the crimper or the crimper will crush the whole terminal into bits"}, {"post_id": 21185, "ts": "2026-07-03T00:14:50Z", "hours": 4.7722, "text": "Finished Soldering all Smaller PCBs & Got RS-485 communication working from main board to servo PCBs First, I finished soldering the PCBs. I added the connectors for power and the small data connectors. I also finished the servo expansion boards that hold the magnetic encoder and sensor. I also finished soldering the joint encoder PCBs that will track shoulder and elbow lift servo positions. I also got the bus communication to work. It was really really painful and I was really scared it wouldn’t work. First, the PCBs wouldn’t communicate at all. But eventually, I realized that it was because I wasn’t supplying 3.3V to the main board. This is when I realized that I haven’t adjusted the buck converters on the main board to supply the correct voltage, so I was about to unsolder the buck converter when I realized that I could just set the power supply to 5V (which the ICs on the mainboard can handle luckily), and then adjust the voltage down to 3.3V. But after a really long time of debugging, it still wasn’t working. The connection would sometimes work but was really flaky. Eventually, I soldered on the RPi Pico 2 onto the board completely and then found out the reason, it was because the ATtiny3216 was set to clock at a slow speed that would mess with the communication. I made them use the SerialTransfer library to send data more reliably and it now can communicate properly :)"}, {"post_id": 20354, "ts": "2026-07-01T22:40:54Z", "hours": 5.5597, "text": "Done Soldering Most PCBs, Crimped JST wires kind of I’m pretty much done soldering, I just have like 3 more tiny PCBs and I should be done. The big main board PCBs are pretty much done, I just need to make some botched tall headers since the clearance of regular headers are too small, and the servo PCBs are almost done, with just some connectors left to solder. Soldering JST 1.25mm wires ARE THE WORST EVER THING TO EVER EXIST I spent 2 hours crimping terminals on multiple wires and its so so so annoying. I can barely hold the terminal itself and they are so easy to bend. I couldn’t afford the real tool to crimp them, so I have cheap crimpers that are the wrong size and can’t technically crimp these. If crimping the metal things wasn’t bad enough, inserting the terminals into the housing was even worse. The housing would bend, or I would accidentally somehow insert it where it shorts the pin next to it??? Also while soldering a JST 1.25mm connector on a PCB, I ripped the pads clean off the PCB. I guess that one just will be missing the daisy chain feature because it only has one connector for data now and all the components and MCU are already soldered on, which really sucks. The rest of the servo PCB (4 in total for now) went fine though, and I’m getting faster at it."}, {"post_id": 18843, "ts": "2026-06-30T01:27:03Z", "hours": 4.7572, "text": "Worked on firmware & CAD & Soldered Second PCB I got the PCB and ATtiny3216 to power a servo. I soldered on the remaining components on it, like the custom LED (which just turns on when the motor is spinning for now) and the 100uF capacitor and also the RS485 bus IC. I also changed the CAD of the arm to use a bearing and changed the servo horn to fit inside of the bearing. I’ve ordered right angle headers and the bearing and metal servo horn already. I also added some transparent parts to the arm design to make it look more interesting hopefully. I also am almost done soldering the second servo PCB. Now that I have all the parts ready and I actually got better at soldering ICs I can do it faster now."}, {"post_id": 17022, "ts": "2026-06-27T17:00:47Z", "hours": 4.0433, "text": "Finally got ATtiny3216 on PCB Working This took so so long. Basically, I spent hours trying to get it to work. First, the 3.3V rail wasn’t getting power and the LED wasn’t lighting so I had to resolder the voltage regulator and then both green LEDs lit up, meaning everything was working. Then I got my FTDI programmer, and plugged it into my PCB. Because I have a FTDI programmer and the ATtiny3216 has a UPDI programming interface, there is a resistor on the board to combine the two pins into one. Even just getting megaTinyCore installed in Arduino IDE was a pain. The website that hosted the package info was down again, with an expired certificate. Apparently, this happens very often with it but I found an alternative mirror. Then I tried flashing code, and it didn’t work. Then I realized that the board type I was using was the Optiboot version, and I couldn’t find the non Optiboot version so I had to flash Optiboot onto the MCU. I did not realize that doing this would cause problems later on. I also had to switch the programmer from the one that programs Arduinos to the UPDI programmer. But I STILL couldn’t get any GPIO to work. I just tried things for hours. I switched to PlatformIO. I tried switching from C to Arduino in PlatformIO. I tried unplugging the programmer because I saw some voltage leaking from it. I tried emptying the caps and trying again. I probed every single pin to see if I wrote the wrong pin. Then after all of that, when I switched to non Optiboot (having to find online that I have to downgrade megaTinyCore), and flashing that, it works. I think it was because flashing a bootloader burns some fuses to expect a bootloader, but when I flash my code it actually overwrites the bootloader code because I don’t have access to the TX and RX pins typically used to flash when Optiboot is installed, and that just caused the code to not run."}, {"post_id": 14058, "ts": "2026-06-23T01:15:22Z", "hours": 2.3747, "text": "Soldered Smaller PCBs, Ordered Missing Parts, Continued CAD work I soldered most of the small PCBs, but now I need to order the parts I missed from the first order I placed. I’m also running out of 0.1uF caps, which sucks. I added a spot and holes for a fan on the camera mount and also some arm segment CAD improvements and back plating to hold the metal rods in. I printed out a test and it works fine. As for the PCBs, I’m still waiting for a few parts."}, {"post_id": 13444, "ts": "2026-06-22T00:49:23Z", "hours": 2.6311, "text": "Continued Soldering PCB (Diodes/LEDs, power circuitry, etc) and worked on arm CAD. For the PCB, after some time, I got the power switching circuit to output power. It’s a collection of things that I hope will make it safer, with a some diodes and a fuse, some MOSFETs, so the main MCU can command to send power, and also another stage that requires the E-STOP to not be pressed to actually be able to send power through with two MOSFETs (one main power, another switch the main MOSFET). I added a fan to the global shutter main wrist camera since it gets hot, and added a new “head” to the arm segment CAD (the heads are swappable depending on what you need to print) for the smaller motor for the last DOFs in the arm. It fits my custom daisy chaining two part PCB hat for the MG996R to give it current, temp, power sensing, and daisy chaining power and data via a RS485 bus with an onboard MCU to provide communication and control. I added some holes for airflow for this PCB. I also added some screw holes to actually connect the halves of the arm together."}, {"post_id": 12830, "ts": "2026-06-21T00:22:41Z", "hours": 1.6036, "text": "Continued Soldering and Working on CAD I snapped some headers and soldered on some more ICs on the PCBs. I did also mess up and ordered a wrong footprint for a part, so now I have to delay that too. It’s so tiny I can barely see the pins. I also worked on the CAD, where I designed the stereo camera holder, added a spot for the RPi 5 to go on top, and maybe a display. I also made a V2 of my grabber since the old one didn’t work well. It also seems that Stardance isn’t syncing my time properly, and it’s missing a few hours so that’s annoying :("}, {"post_id": 12281, "ts": "2026-06-20T01:43:23Z", "hours": 5.3406, "text": "I soldered some parts on the PCB, and worked on the CAD files some more I did realize that I forgot some parts, so I ordered them on DigiKey. I’ll continue soldering the rest tomorrow. One of the parts was the LDO, which I only found out because I soldered the parts and realized that the voltage being put on the 3.3V rail is 5V My project needs both versions of the same LDO and I only bought the 5V one I also bought the wrong resistors. I’ve ordered them and they should arrive in a week or so. My design of stacking the PCBs and then adding the buck modules in the middle might be very challenging, and I might need to stack multiple headers on top of each other to fit the modules inside. Hopefully it will still fit inside my arm segment and not short anything. There also needs to be sufficient airflow, which is def a challenge"}, {"post_id": 10584, "ts": "2026-06-17T12:06:26Z", "hours": 1.8508, "text": "Added Bottom Reinforcements with holes for magnets and wiring Added Fans and airflow holes And just fixed and refined the CAD, like adding spots for magnetic attached front and back plates and more"}]...
|
Title: revo by @ratmuds | Stardance
Devlogs:
Adde Title: revo by @ratmuds | Stardance
Devlogs:
Added Bottom Reinforcements with holes for magnets and wiring Added Fans and airflow holes And just fixed and refined the CAD, like adding spots for magnetic attached front and back plates and more
I soldered some parts on the PCB, and worked on the CAD files some more I did realize that I forgot some parts, so I ordered them on DigiKey. I’ll continue soldering the rest tomorrow. One of the parts was the LDO, which I only found out because I soldered the parts and realized that the voltage being put on the 3.3V rail is 5V My project needs both versions of the same LDO and I only bought the 5V one I also bought the wrong resistors. I’ve ordered them and they should arrive in a week or so. My design of stacking the PCBs and then adding the buck modules in the middle might be very challenging, and I might need to stack multiple headers on top of each other to fit the modules inside. Hopefully it will still fit inside my arm segment and not short anything. There also needs to be sufficient airflow, which is def a challenge
Continued Soldering and Working on CAD I snapped some headers and soldered on some more ICs on the PCBs. I did also mess up and ordered a wrong footprint for a part, so now I have to delay that too. It’s so tiny I can barely see the pins. I also worked on the CAD, where I designed the stereo camera holder, added a spot for the RPi 5 to go on top, and maybe a display. I also made a V2 of my grabber since the old one didn’t work well. It also seems that Stardance isn’t syncing my time properly, and it’s missing a few hours so that’s annoying :(
Continued Soldering PCB (Diodes/LEDs, power circuitry, etc) and worked on arm CAD. For the PCB, after some time, I got the power switching circuit to output power. It’s a collection of things that I hope will make it safer, with a some diodes and a fuse, some MOSFETs, so the main MCU can command to send power, and also another stage that requires the E-STOP to not be pressed to actually be able to send power through with two MOSFETs (one main power, another switch the main MOSFET). I added a fan to the global shutter main wrist camera since it gets hot, and added a new “head” to the arm segment CAD (the heads are swappable depending on what you need to print) for the smaller motor for the last DOFs in the arm. It fits my custom daisy chaining two part PCB hat for the MG996R to give it current, temp, power sensing, and daisy chaining power and data via a RS485 bus with an onboard MCU to provide communication and control. I added some holes for airflow for this PCB. I also added some screw holes to actually connect the halves of the arm together.
Soldered Smaller PCBs, Ordered Missing Parts, Continued CAD work I soldered most of the small PCBs, but now I need to order the parts I missed from the first order I placed. I’m also running out of 0.1uF caps, which sucks. I added a spot and holes for a fan on the camera mount and also some arm segment CAD improvements and back plating to hold the metal rods in. I printed out a test and it works fine. As for the PCBs, I’m still waiting for a few parts.
Finally got ATtiny3216 on PCB Working This took so so long. Basically, I spent hours trying to get it to work. First, the 3.3V rail wasn’t getting power and the LED wasn’t lighting so I had to resolder the voltage regulator and then both green LEDs lit up, meaning everything was working. Then I got my FTDI programmer, and plugged it into my PCB. Because I have a FTDI programmer and the ATtiny3216 has a UPDI programming interface, there is a resistor on the board to combine the two pins into one. Even just getting megaTinyCore installed in Arduino IDE was a pain. The website that hosted the package info was down again, with an expired certificate. Apparently, this happens very often with it but I found an alternative mirror. Then I tried flashing code, and it didn’t work. Then I realized that the board type I was using was the Optiboot version, and I couldn’t find the non Optiboot version so I had to flash Optiboot onto the MCU. I did not realize that doing this would cause problems later on. I also had to switch the programmer from the one that programs Arduinos to the UPDI programmer. But I STILL couldn’t get any GPIO to work. I just tried things for hours. I switched to PlatformIO. I tried switching from C to Arduino in PlatformIO. I tried unplugging the programmer because I saw some voltage leaking from it. I tried emptying the caps and trying again. I probed every single pin to see if I wrote the wrong pin. Then after all of that, when I switched to non Optiboot (having to find online that I have to downgrade megaTinyCore), and flashing that, it works. I think it was because flashing a bootloader burns some fuses to expect a bootloader, but when I flash my code it actually overwrites the bootloader code because I don’t have access to the TX and RX pins typically used to flash when Optiboot is installed, and that just caused the code to not run.
Worked on firmware & CAD & Soldered Second PCB I got the PCB and ATtiny3216 to power a servo. I soldered on the remaining components on it, like the custom LED (which just turns on when the motor is spinning for now) and the 100uF capacitor and also the RS485 bus IC. I also changed the CAD of the arm to use a bearing and changed the servo horn to fit inside of the bearing. I’ve ordered right angle headers and the bearing and metal servo horn already. I also added some transparent parts to the arm design to make it look more interesting hopefully. I also am almost done soldering the second servo PCB. Now that I have all the parts ready and I actually got better at soldering ICs I can do it faster now.
Done Soldering Most PCBs, Crimped JST wires kind of I’m pretty much done soldering, I just have like 3 more tiny PCBs and I should be done. The big main board PCBs are pretty much done, I just need to make some botched tall headers since the clearance of regular headers are too small, and the servo PCBs are almost done, with just some connectors left to solder. Soldering JST 1.25mm wires ARE THE WORST EVER THING TO EVER EXIST I spent 2 hours crimping terminals on multiple wires and its so so so annoying. I can barely hold the terminal itself and they are so easy to bend. I couldn’t afford the real tool to crimp them, so I have cheap crimpers that are the wrong size and can’t technically crimp these. If crimping the metal things wasn’t bad enough, inserting the terminals into the housing was even worse. The housing would bend, or I would accidentally somehow insert it where it shorts the pin next to it??? Also while soldering a JST 1.25mm connector on a PCB, I ripped the pads clean off the PCB. I guess that one just will be missing the daisy chain feature because it only has one connector for data now and all the components and MCU are already soldered on, which really sucks. The rest of the servo PCB (4 in total for now) went fine though, and I’m getting faster at it.
Finished Soldering all Smaller PCBs & Got RS-485 communication working from main board to servo PCBs First, I finished soldering the PCBs. I added the connectors for power and the small data connectors. I also finished the servo expansion boards that hold the magnetic encoder and sensor. I also finished soldering the joint encoder PCBs that will track shoulder and elbow lift servo positions. I also got the bus communication to work. It was really really painful and I was really scared it wouldn’t work. First, the PCBs wouldn’t communicate at all. But eventually, I realized that it was because I wasn’t supplying 3.3V to the main board. This is when I realized that I haven’t adjusted the buck converters on the main board to supply the correct voltage, so I was about to unsolder the buck converter when I realized that I could just set the power supply to 5V (which the ICs on the mainboard can handle luckily), and then adjust the voltage down to 3.3V. But after a really long time of debugging, it still wasn’t working. The connection would sometimes work but was really flaky. Eventually, I soldered on the RPi Pico 2 onto the board completely and then found out the reason, it was because the ATtiny3216 was set to clock at a slow speed that would mess with the communication. I made them use the SerialTransfer library to send data more reliably and it now can communicate properly :)
Crimped JST VH wires, Connected JST 1.25mm wires, Soldered more PCB connectors Crimping JST VH wires is a ton easier than JST 1.25mm, and after a bunch of failed attempts still, I got some okay crimps that work finally. It took me a long time because I didn’t know that I had to rotate the wire for the hook on the terminal to go into the housing hole, and then also that the box shape part on the terminal actually has to stick out of the crimper or the crimper will crush the whole terminal into bits
Servo PCB Daisy Chaining Working I plugged in the JST VH and JST 1.25mm wires into the PCBs, and they seem to work! I adjusted the message struct to hold a desired PCB sort of address or ID. When the MCU detects that the ID matches the PCB (by using the solder jumpers at the bottom of each PCB to program the PCB ID), only then it lights up the LED and replies to the main board. The mainboard now loops through IDs and sends a message and waits for a response. I’m very very happy this worked without any really big problems.
Servo Control Working, More CAD and 3D Printing I got the mainboard to be able to control the servo on the servo PCBs. I also tested a bunch of the functions, like the magnetic sensor, neopixel LED, etc The communication now sends the PCB ID, and the target speed and the servo PCB echos it back and moves the servo. I also worked on the CAD (and refined) for the mainboard connector that will make connecting the two mainboards not a total pain. I also soldered the connectors on the mainboard PCBs for them to connect to each other.
Mainboard and other CAD I got the mainboard to stack on top of each other with a weird jumper and two piece jumper holder and some screws setup which required some revisions and trying to get everything to fit. I’ve squeezed one of the DC buck modules into between the mainboard, and the second arm segment will hold the two remaining DC buck modules. The bottom mainboard PCB also has 2 smaller buck modules. There’s a lot of things going on with the voltages in this project due to the servos peak current draw being so large. I also refined the arm segment CAD by some reprints and made the DS5180 servo fit better. I’ve also made one of the buck module mounts for the second arm segment to fit more cleanly.
Bidirectional Communication To PC/RPi 5 with LeRobot & More CAD changes I setup a basic class for my robot in LeRobot (which was a little confusing) and then I also got communication between the Pico and my PC working. Originally I have SPI pins exposed on my mainboard PCB to connect to the RPi 5’s GPIO pins, but for some reason after lots of debugging, even running it at super low speeds it just would not work. So I switched to just using serial over USB, and using the SerialTransfer library to send data more reliably. The script on the PC now can send target joint angles, and receive a lot of data back, like if the joint is online, temp, current, angle, homing sensor, home status, LED, firmware version, voltage, etc I also iterated on the CAD for everything, and it should be done soon. It’s just a bunch of tolerance fixes to make everything fit at this point and some new things like mounts for encoders and DC buck modules and fixing the CAD for the custom MG996R case.
Rewrote all firmware; Fixing Servo Cover and a ton of other CAD; Almost fried everything For the CAD, it doesn’t look like much changed, but I’ve basically redesigned a bunch of things and fixed tolerances and now it should move really smoothly. With the bearings added, everything moves incredibly smoothly now Especially the servo cover was annoying. I needed to attach a magnet to the shaft which was really annoying. I haven’t logged that well, I’ve done more like 15 hours of work instead of just 5 but whatever Most of those hours was the painful debugging. RS-485 busses, JSON not communcating with the PC, dropped connections, corrupted data, disconnected jumpers, FTDI programmer becoming flaky for some reason It’s just been pain :((( Now the PC (screenshot) recieves all the data and sends all the data You can see a lot (not all) of the telemetry being received. Ignore the volts though my math is wrong. Realtime connecting now works smoothly, as you can see the other RS485 servos are offline.
Servo firmware almost done The servo firmware now (with the mainboard) sends validation data back and forth so both the servo and mainboard can verify that the data was sent successfully and can ignore corrupted packets because my wiring can be flaky sometimes The firmware now sends real data again and is much more robust, with a proper stateful LED that shows useful information, like offline, online and driving motor, homing, error (fast flashing of LED as red), and the error state is also triggered in the case of corrupted packets (I tried it and it works :)) I’m also still printing out the pieces to assemble the arm. I actually have more hours working on it, I just forgot to log :(((((((
Finalizing hardware I crimped and soldered almost the remaining wires, I’ve made some last redesigns to the arm CAD and I’m now fitting everything into the new prints and assembling. I’ve also had a ton of trouble with my servo PCBs lately, but I found out a lot of the issue was my programmer is actually fried somehow, so I’m now using an old RPi Pico to act as a UPDI adapter so PlatformIO can now successfully program the ATtinys much better now. A lot of the CAD was slightly tweaked so that everything fits better
Test assembly and fitting of robot arm I am mostly done with the core functionality of the mainboard, so i packed everything together and double checked eerything works including power Then I started assembling most of the servos The smaller servo casing doesn’t fit very well, and the transparent window doesn’t fit either But the magnetic cover for the arm segments works great :) It was a lot of fitting, screwing, testing with multimeter, etc
Mainboard Stack Redo & Firmware Updates and Test Web UI I had to take the electronics out, and redo some of the wiring. The screw terminals are pretty cheap and suck, which makes it incredibly annoying to use as it’s impossible to fit these thicker AWG wires in and they sometimes slide out of the terminals. When I’m done I’m probably going to hot glue the wires. The incredibly fragile flexible extension jumpers for data transfer between the stack is also super fragile, and especially doesn’t grip. Sometimes the data wires just slip out. I took apart the arm, as during testing the motor stripped some screws. I’ve ordered some heat set inserts to prevent that from happening again, which will require me to reprint all the arm segments again. I also added a simple web UI for moving the joints. There is an empty ThreeJS sidebar and the right has some graphs (real data) from the mainboard sensors. The smaller MG996R servos haven’t been mounted yet due to a power delivery issue from the mainboard but hopefully that will be fixed soon.
Assembled Basic Arm Parts and Packaged Main Board Assembly; Reprogrammed servo MCUs & worked on web UI I redid some soldering on the mainboard PCB, secured connections, and secured everything with tape for now. I’ll likely have to reprint the first arm segment to fit everything in flush because as you can see there are wires and things bulging out of the segment itself right now. I also redesigned the CAD to include heat set inserts. I did programming and a bunch of bug testing and fixing too. An hour of time was lost because Lapse errored out :((((( very sad about that :( I also had an issue with data corruption on the RS485 bus but that is fixed now, and it works like it should.
New Mainboard Cover, Wiring, Bearing Revamp, Heatset Inserts, Servo Cover I added space for the mainboard segment, now it has clearance to actually fit, I redid the cover for this segment, and now it can allow the wires to come out The servo mount now has heatset inserts, because the previous screw in print kept slipping out, but this time the screws just would not go into the inserts through the mount for some reason? The screws went in normally, but with the tolerances, when multiple screws go in they just fight and push against the edge of the insert instead of going in. The MG996R servo housing now has been redesigned, based off of picture references and calipers to attempt to be more accurate than the last one to try and reduce the amount of bad tolerances affecting the gears and making them misaligned, reducing torque output. And just general wiring and CAD work.
Heatset Inserts Working; Fixing Faulty Motor Power Connections; Internal Fan Power Connectors I verified that the servo cover works, and it’s much much better than the last version. The tolerances are much better this time, leading to less stress on the gears. The same amount of turning uses around 100mA compared to 300mA before, almost reaching it’s limit without any load. Some motor power connectors disconnected, so I found it with a multimeter and added hot glue to some connectors to secure them. I soldered the fan power things inside the PCB, but realized that the JST connectors I’m using are different from the fans. I might have to make a sort of adapter or something by crimping more wires. And the heatset inserts finally work after some tweaking, before the inserts would get misaligned when put in, now with a aligning lip thing it can be slotted in and melted in more accurately.
Reprinted Arm Segments; Added Segment Cover; Servo Mount Working; Working on Web UI I reprinted the arm segments, hopefully for one of the last times, I’ve went through so much filament already. It now allows the mainboard to be neatly packed inside, hiding most of it while still allowing wires to come out. Due to the design of the mainboard, the wires do have to stick out the front like that sadly. To avoid crushing wires, the servo mount has been expanded to allow more clearance for wires and general electronics. The servo mount works now with a new design. I remeasured and adjusted the sketches and added proper hole sizes and a little chamfer to allow the insert to slot in before using a soldering iron to melt it in to help align much better than before. The web UI now shows a representation of the arm. It’s not tuned yet, so the angles are wrong but I’ll fix it soon. I had to move everything from Fusion to Onshape to create the assemblies, and then use a Python library to convert the Onshape assembly into a URDF file that can be rendered with the correct joints inside ThreeJS. Next, I’ll be adding IK and general arm control.
Working on IK System & Resoldered Joints Again Bruh so my robot arm after finally being assembled by the way exceeded it’s limits and tore its wires out. I had to take apart the mainboard assembly again, which just is SO TEDIOUS. I just dumped solder and hot glue again and fixed a short caused from another wire being sheared off. Also I’m working on the IK system, but it’s not really going well right now. I need to add offsets and config to each of the motors to get them to work correctly. The motors hooked up right now started crashing into my table sadly. Hopefully it will work soon. I also continued working on the servo case. I still haven’t added the code to calibrate and get closed loop control on the MG996R servos. The DS5180 encoders should be easier though.
V2 Servo Case Working; Servo Code Revamp WIP After around 10 more revisions, the new servo case is fully working with the magnetic extender. The V2 is significantly better designed and higher efficiency than the last, more guess and check result. I’ve also started to rewrite the servo code. Right now, its really messy and just kind of snowballed over time as I’ve slapped on patches and features to a fundamentally weak base. I’m in the progress of writing that now, hopefully it will be done soon. It will also include the new auto calibration and encoder usage and PID (and potentially advanced auto tuned curve to combat motor acceleration overshoot and backlash)
Servo Code I did some slight refining to the servo case again, making the tolerances tighter to keep the gears from wobbling. It’s still sort of loose, so I need to just keep trying over and over again. I’m also still writing the servo code. It’s already much more organized than before. I’m also learning Vim keybinds and stuff to try and code faster. The RS485 bus communication works now, and it’s just sending dummy telemetry data back right now. It can also control the servo fine. I’ve just been doing like the lower level architecting I guess, or not really I’m not sure. Before everything was crammed into a single file and now there’s actually header files and multiple source files and it’s actually somewhat readable. I had an issue with LED control for a second but that’s fixed now :)
MG996Rs Finally Working The servos finally work. I don’t even think this amount of hours logged is equal to how long this took, because I just got tired of it. I think I printed like 20 new revisions of the case and servo mount. It was just so so annoying. While the general case worked, getting a reliable magnet output shaft was impossible. From tolerances, to my own errors to binding to hot glue getting everywhere, or superglue binding random gears, or my getting my fingers stuck to the actual case from superglue (was not fun and hurt) The case finally works. And the prototype code somewhat works too. It basically rotates until the sensor hits zero, it resets the “ticks”. A tick is a raw output from the AS5600. Because this magnet shaft spins faster than the output shaft, like 10x faster, the MCU needs to poll the sensor super quickly, which also needed some optimizations to clear the blocking bus communication wait that would let the magnet skip multiple full turns. The sensor doesn’t internally count turns so we just need to count manually and detect when it jumps from 4096-0 or the other way around. It then spins around until the sensor is hit AGAIN to calculate tick to degrees, assuming the sensor was zeroed before, and then the current ticks would equal 360 degrees. Another problem was the servo needs a PWM signal to move. The threshold from stop to go is pretty garbage on these cheap servos, leading it to spin quite fast already when at the lowest PWM value. Instead when far from the value it increases the PWM signal, closer it brings to minimum and starts linearly flickering the PWM signal from 0 to the speed, with the closer it is the more ratio of time stopped to inch it closer to the target. It actually surprisingly works. It’s very fragile though, any skipped reads, from potentially slow bus transfers would completely throw it off, so all the code running locally on the weak 8 bit MCU needs to be extremely lightweight. Yeah this was super super painful. I’ve been sitting here redoing superglue and code for hours.
Debugging and Fixing Is Killing Me and the Mainboard Exploded :( I have spent SO many hours trying to get this to work. It’s so annoying. This isn’t near how many hours I spent, I’ve been too frustrated to log it. The case is incredibly annoying. Getting the initial case works fine. Doing all of this stuff makes it complicated and break and jam up. The RS485 busses just randomly stop working. The servo output is wiggly and not stable. A PCB header snapped and I didn’t have replacements so I had to bodge solder it back on. The mainboard voltage regulator literally exploded. It was a cheap part but yeah that literally just broke stuff. Fixes to everything. CAD. Firmware. bruh
Dashboard Revamp WIP, Tons of CAD changes, Code Updates, Tolerances I’ve just been refining everything and it’s just going really slowly. Many problems. Magnets shorting out stuff. Magnet too far and not being detected. Wires breaking. I’ve also redesigned the dashboard UI to hopefully look better. I’m still working on it, hopefully it will look more polished later. The dashboard It shows a load speedometer type thing, with the load (max current from a motor out of 500mA) and the temp on the right (for now just dummy value) The motors have cool little animations now too and look less cluttered. I’ve just been working on it a lot. Just everything in general tbh.
Assembled last 4 DoF for Integrated Test I assembled the MG996R servos in a test piece that will represent the full regular arm segment to test if everything worked. With some fiddling it worked. As you can see there’s more transparent pieces. The pieces that connect the previous joint are transparent to show the Neopixel below it a lot better as before the LED was almost completely occluded. The bright green LEDs power status ones are too bright but I can cover them later.
Significantly Better Motor Control and Gripper CAD The motor code was getting a bit messy, so I rewrote it. I separated the motor code from the main control code which cleaned it up a bit. LADRC I’m using LADRC now. It’s kind of like PID, but advanced. I took the implementation from online. I feed it the motor current, encoder value, and the target and it goes. The algorithm or whatever somehow calculates the velocity of the motor and how much “effort” it’s using and then gives an effort to put to the motor. It somehow cancels out like disturbances like gravity, backlash, the general physics, etc. As you can see, the motor control is so so so much better than before. It cleanly decelerates. It handles load and dynamically increases effort. Before there was some oscillation because it just couldn’t figure out how to get to the target, this one is just so much better and so hands off. There’s basically like no calibration as it does it over time :)))
Assembled Full Arm (not all motors active yet for safety) and Basic Interpolation for Control I assembled the new full arm assembly minus the end effector and didn’t plug in the first two motors as they have the highest chance of doing something really bad. I also made some general changes to the code and also added a flag to some motors to interpolate their movement slowly to not explode the robot arm while controlling it.
Fixed Broken Magnet, Redoing all IK joint data and offsets, Stereo depth test An encoder magnet broke off, so I had to disassemble and reassemble the top half of the arm to get to the encoder magnet and glue it back on. I also started properly punching in the IK joint data, before it was mostly just random data but now almost all of the data is mostly correct, and I’m waiting for a print to complete that will flip a motor to finally get the IK simulation matching with real life and have the IK endpoint be tracked at the tip of the gripper. It was a lot of trial and error and measurements. I also started experimenting with adding depth estimation. Eventually this could add collision avoidance IK pathfinding, which would be really cool but it’s just a pointcloud in the render right now. But the robot arm is slowly coming together finally! I’ll be able to grab something soon I think.
Integration Hell I’ve just been like trying to get this stupid project to work. Screws keep falling out, the IK keeps failing, things are hitting each other and wires are being strained I’m in integration hell. Everything works fine on its own, but combining everything is horrible. I’ve been reassembling and trying to fix this stupid thing for so long. Anyway I’ve went through a few more revisions of some CAD and some more refinements and the gripper and camera is now mounted but this is just incredibly incredibly annoying :((((
Setup VR and Gripper, Robot Rapidly Disassembles my robot arm is broken I setup VR and fixed some more IK when I go into VR and try playing around, it instantly flies out and throws itself off the table and breaks into pieces. This is going to be fun to fix.
Finish Project Up :) I wrote a ton in the repository im tired :( https://github.com/ratmuds/revo
Ships:
I wanted to make a robot arm that punched above it’s weight. The price is pretty similar to smaller robot arms on Amazon that may not include cameras, which would need to be purchased seperately. The way this is achieved by using cheap servos, servos that are 100% NOT made for this purpose, and adding most of the functionality of a smart servo back by using a TON of PCBs. It was a lot of soldering. I just wanted to make something that had more features for less money :) This project was SUPER difficult for me, and pushed my limits a bit. The amount of tolerences especially for the stupid custom motor case and magnet and PCBs and the crazy mainboard and generally having everything play well together took so long, I had many days where I quit frustrated. I’m very happy about how it turned out though, even seeing the lots of shortcomings it has....
|
1793005016.299186
|
1793091416.299186
|
|
9756
|
tinystudio by @ratmuds | Stardance
|
ratmuds
|
1
|
109.8
|
2123
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T02:08:29Z", "hours": 108.0, "multiplier": 19.71, "payout": 2123, "blessing": "neutral", "text": "I made a game engine that I tried to make the UI look nice and feel accessible. I wanted to design it around what I liked about other game engines like Roblox Studio and Godot, and try and make it as easy as possible to make prototypes of games quickly. The decision to not let any 3D imports was intentional to keep the engine style of more retro, as you can see by the rendering style. Instead, you can fuse and subtract shapes together with CSG. The flow editor state machines fully work, and was inspired by Playmaker. The scripting system is a little bit janky sometimes but it somewhat works. The scripting system has a basic scheduler and profiler similar to Roblox’s Luau scheduler but without the complexity of CPU budget. The engine uses a custom ECS that uses Svelte Runes to provide reactivity to the engine sidebars and editor. There is also a basic UI system, and physics. There are three demo projects to try out too.", "repo": "https://github.com/ratmuds/tinystudio", "demo": "https://tinystudio.ratmud.studio/"}]...
|
[{"post_id": 69622, "ts": "202 [{"post_id": 69622, "ts": "2026-09-17T13:08:36Z", "hours": 1.7972, "text": "Redid UI styling to feel more blocky I rewrote the UI to look less bubbly I guess, now it looks more like lego and stuff and more space for work instead of tons of padding"}, {"post_id": 67806, "ts": "2026-09-14T01:58:45Z", "hours": 5.0589, "text": "Finalized Project I added a projects manager and generally just cleaned up the repository. Then created three basic demos, like a basic moon landing game, a very basic parkour game, and a physics sandbox. And finished the README"}, {"post_id": 48210, "ts": "2026-08-16T14:44:47Z", "hours": 4.7264, "text": "Scope Leaking Bug Fixed, Mouse Input, Scripting Improvements, ECS & Events Scripting Improvements and Fixes, Cameras There was an issue where I used a single variable to hold the last used scope before and forgot to change it to support multiple scripts. That is fixed now and scopes aren’t mixed weirdly anymore. There is now mouse functions and events Events can be called like part.physics:on(\"touched\") instead of part:on(\"Physics.touched\") for clarity Cameras are added, game wide function to change active camera, and camera system that updates the camera things bidirectionally supporting multiple camera types."}, {"post_id": 46256, "ts": "2026-08-13T11:31:38Z", "hours": 5.1194, "text": "Script Scheduling Engine Revamp The entire scripting engine has been redone. It was a lot of cascading changes again, with now each “Scope” having it’s own scheduler. A “scope” is a single logic component that gets attached to entities. How it works now The scheduler handles the Lua engine stuff. It wraps the main script around into a coroutine automatically now, and extracts the coroutine into a thread. It then creates a scheduler job object, pending into the queue. The scheduler then gets stepped, and initializes the jobs into the main queue and steps them. By stepping them, it resumes the coroutine until the script either ends or manually pauses the coroutine itself (usually done with a predefined “wait” function). I think this is very similar to how Roblox handles it’s script scheduler, although Roblox’s is of course much more complicated. Handling the events and callbacks was much more difficult though. Each of those ALSO need it’s own thread to run to access coroutine related functions and to access data (otherwise very weird errors will happen, like calling code over a boundary or something). This all gets added as a scheduler job, and that allows us to record telemetry data. Eventually, threads can be assigned a “budget”, where they can be stalled if they consume more than the allotted time or even do things like infinite loop detection, etc. There was just generally tedious work that was annoying."}, {"post_id": 45759, "ts": "2026-08-12T13:35:44Z", "hours": 5.3428, "text": "Added CSG Operations I added CSG operations, using the Manifold library. It makes it a bit simpler, making watertight meshes and giving back the geometry for me to make a custom mesh in ThreeJS. The reason it took so long was because I had to add cascading changes to a lot of the data structures to support this custom geometry. I also added a little loading thing at the bottom right for CSG operations. As of right now Union and Subtract are supported. Materials are not preserved as of right now, due to the simplistic way I’m handling materials but when I finish building out the materials system I basically just need to get the triangle references out of Manifold and relink them to the correct materials."}, {"post_id": 40725, "ts": "2026-08-04T13:16:47Z", "hours": 5.4036, "text": "Engine Events System & Starting Significant Scheduler Engine Revamp So I made the events system. It works by a class on the JavaScript (engine) layer, and is attached to all entities. There are a couple of functions: on: fires on event once: fires on event only once off: clears event callback clear: clears all callbacks Other entities are allowed to access another entitys events, being able to listen or even emit. A game architecture could work like having “manager” entities at the top level of the game which hold different events. For example, an “InventoryManager” entity could have an event for when an item is picked up, it itself can listen to it, as well as any other things that may find it useful. I’ve also cleaned up the code, and now there is a “game” reference. Eventually, it will have access to more things but as of right now you can access an “inputManager” which holds functions and events for user inputs. It works by attaching a metatable to it and exposing global hidden functions to call to my JavaScript engine code. But a huge problem showed up, the way I was running scripts. Before I thought just a simple coroutine running with a timeout for delays was just fine, but I was super wrong. If a callback from an event is fired and the function wants to do something, like call an external function or wait, it completely breaks. Why? I didn’t know and it took me a lot of time to find out. It’s because the callbacks aren’t a coroutine too. This is when I realized why something like Roblox has a full blown scheduler. So I’ve been planning and starting on the scheduler engine. It has to handle a lot of stuff, including managing when scripts run, including WHEN they want to run (next frame, in 3 seconds, etc) and track if they are causing issues by keeping track of their budget. Everything will need to be in a coroutine coordinated by the scheduler. Including callbacks from events too. It’s going to be pretty complicated I think, requiring a rewrite of the entire scripting system. I also just encountered a lot of bugs. And I fixed the errors from Wasmoon including the entire JS stacktrace for no reason too."}, {"post_id": 39522, "ts": "2026-08-02T15:10:03Z", "hours": 4.0047, "text": "Scripting System Affecting the Game Scripts now can change parts. There are getEntityById and getEntityByName functions now, and a bunch of metatables and stuff to get it working. Now you can query for an entity, and then modify it’s component data with metatables. For example to access or set the position of a part, you can do part.transform.position . The transform finds the transform component and position finds the data entry of position inside the component. This is all done on runtime, with component queries happening dynamically so no manual programming for new components is required. This may affect performance a little bit though. There is a custom Vector3 object now too. Error messages are also now a little less vague but still pretty confusing. I don’t know how to solve that."}, {"post_id": 38632, "ts": "2026-08-01T04:02:22Z", "hours": 6.7036, "text": "Logic & Scripting Prototype Working this was so difficult basically a TON of things needed to be changed for this to work. i had to rework the entire scripting system. i had to also think about how the system is going to work the system i landed on, basically is you can create nodes in the state machine editor, and attach scripts on those states. instead of scripts, im calling the whole package of state machine + scripts a “Logic”. i havent reflected the name everywhere else yet though, and that is probably going to take a really long time as its a major architectural shift that i didn’t plan for beforehand. i made custom nodes in the editor as you can see, a start, end and the script node. there is now a nice dropdown to select the script (a searchbar will be added later) and you can create new scripts. i fixed the code editor to actually load/save code properly. i had to redo how it saved data, so i could communicate the scripts, nodes, connections, etc all to the ScriptingSystem, which starts off at the “Start” node and steps the state once, going into the first node. This part of the code is an absolute MESS. i had a ton of bugs to fix, including state and Svelte firing state over and over again for some reason, Lua issues, dealing with coroutines, dealing with external functions which would change the state and exit the code, etc To add the script, there is now a “Add component” button which you can select the script and select the logic. The state machine handles direct to end, looping nodes, multiple handles, infinite loops going into other nodes, etc. At the end of the video, you can see that i created two states and the second state had two outputs, and the path is a 50/50 random decided by the Lua code to loop back into the first state or exit. Overall, this was really tiring and I’m glad it’s done. The amount of time thinking and debugging isn’t included in the time tracked so yeah :("}, {"post_id": 36862, "ts": "2026-07-29T06:06:34Z", "hours": 2.8403, "text": "Scripting System I added Svelte Flow and the Monaco editor Basically, I think that the system will work mainly off of state machines. Each state will have an attached script. The scripts can decide when to change states. For example, the scripting for a bee in a game could have states for wandering, eating, etc and the scripts handle only it’s own state which could make the code a little cleaner. I also tried making the script editor to look really good. I spent a bunch of time trying to add LSPs and intellisense/autocomplete and syntax and formatting but honestly I give up for now."}, {"post_id": 36780, "ts": "2026-07-29T01:39:01Z", "hours": 3.6069, "text": "Fixed Constraints Getting constraints working was super annoying. Basically, there is a problem where the engine is built around models, and you can spawn in multiple models. When models are spawned in, the parts inside are cloned including their IDs to not lose reference, but this comes with the huge issue as in the backend, the engine actually flattens this structure for more efficient processing of entities, meaning that there will be multiple entities sharing IDs, which is really bad. But creating new IDs is also a huge problem because when we reference it, the ID is not final and changes all the time on load. So instead it does <model_id>:<entity_id>, for targeting. The constraint creator lets you select two points (snapping will be added in the future) and it creates a constraint. This is later processed by the PhysicsSystem detecting the ConstraintComponent. Later there will be debug viewer for constraints. Anyway it was just a lot of annoying work."}, {"post_id": 36178, "ts": "2026-07-28T03:01:00Z", "hours": 1.4972, "text": "Opening Tabs Working There is now a flow for opening and creating tabs, now new tabs can be created and new models in the same way. Opening a tab that is already open just switches to it."}, {"post_id": 35581, "ts": "2026-07-27T03:36:46Z", "hours": 5.8286, "text": "Runtime working This took so long There was just so many things that just weren’t working well together. Especially the data loading code. I initially just made the code use and modify the gameData directly, meaning that if I stop and play again the game would not reset and would probably completely break. But cloning is so difficult. Since the gameData is pretty complicated with nested classes and data, simply JSON.stringify and parse, and even structuredClone didn’t work. I had to use a function to manually copy a lot of things which was really annoying. Another thing that was weird was that parts would only have physics if it was dictated by the parent model, which wasn’t what I wanted. Now there is a function to flatten models, since I want them to kind of just be fancy folders at the end of the day anyway. There was just generally a lot of rework to get everything working, with systems and components working now with a setup phase, and a general frame tick function for systems to process. I also had to add dirty flags to all ComponentDataEntries so other components actually notice changes by OTHER components which was so annoying :(("}, {"post_id": 32943, "ts": "2026-07-22T12:52:14Z", "hours": 3.2719, "text": "Model Thumbnails, Better Highlighting, Reactivity, Sidebar, etc The models now have a place to store a thumbnail, and on save, it autogenerates a new thumbnail. It creates a new ThreeJS scene in the background and adds all the entities to it. For now it only cares about the Transform component, so that’s why all the parts don’t have the correct colors. The face highlighting also is fixed to use ThreeJS’s Line2 so an adjustable line thickness can be used. The face edge highlights are now thicker and a lot easier to see. Reactivity is now fixed, so dragging an object in the editor updates the UI, and the other way around. In the video, you can also see the “–” when multiple objects were selected. It means they have unique values, but they can still be all updated. The system works by storing all seen components in a JS map, and then only filtering for components that appear in ALL of the selected parts. I might change that functionality later but it works for now. I also added the sidebar to the model workspace. I also did work on the ECS system and just engine code in general."}, {"post_id": 32397, "ts": "2026-07-21T15:37:04Z", "hours": 3.5475, "text": "Fixed ECS Data Storage and UI Displays ECS Data I got the UI to display the data for the ECS components. I had some weird bugs, also I messed up earlier on the code to store the data entries for the components (stores things like data type and stuff) and then now it displays on the sidebar. For now I temporarily disabled the code to handle multiple different objects that could have differing component values or different components altogether, because it was causing a bunch of problems cuz the code is not great :("}, {"post_id": 31028, "ts": "2026-07-19T02:40:47Z", "hours": 4.5597, "text": "Started Data and ECS Code I started working on the ECS system, and now the parts spawned are “entities” and they have “components” like a mesh, a transform, and a physics component. The components are queried and cached by the game engine and passed to the “systems” that actually do work with the component data of the entity. I also dealt with a stupid tab bug :((( And generally other engine code."}, {"post_id": 15172, "ts": "2026-06-24T17:28:53Z", "hours": 3.5117, "text": "Worked on Model tab and Working on Refactoring Backend & Renderer Component There’s now a model tab, also I made some more animations and things to make the app more fun to use. I’m also in the process of rebuilding the data types and completely redoing the reusable Renderer component since it was an absolute disaster before."}, {"post_id": 14600, "ts": "2026-06-23T19:23:32Z", "hours": 6.5047, "text": "Completely Revamped UI and Working On Refactoring Entire Engine I really tried making the UI look a lot nicer than the generic UI it was before, and I think it looks pretty nice. I might need to simplify some stuff, but I spent a long time trying to make the UI more welcoming and easy to use and for the UI to seem more playful in a way I guess, than the more mono font boring gray it was last time. I also have started on completely refactoring the engine. The previous data stores and data types were too limiting and I made some bad decisions early on so starting from scratch is kind of necessary"}, {"post_id": 11366, "ts": "2026-06-18T16:29:57Z", "hours": 1.5181, "text": "Added constraints, which took a while because the way I store objects just isn’t sustainable I’m going to redo the entire architechure of this app, mostly the backend because it’s just such a mess. I’ve been piling on features and the technical debt and poor early decisions are catching up to me and it’s making development slower so I’m going to start refactoring a lot of stuff. This should mean everything will be less buggy and make it faster for me to develop new features Now that I know how the app will be I can make smarter decisions"}, {"post_id": 10184, "ts": "2026-06-16T20:00:27Z", "hours": 4.2217, "text": "Reworked script system for better and easier scripting and added some basic part modification functions Basically, before you would need to type something like find(“stud”):setVelocity({10, 10, 10}) or something like that, but with metatables Metatables are kind of weird, but they basically let me return a special object from the find() function, and modify that object to override functions and add new ones. For example, you can override the metatable of custom Vector3 objects to handle addition, so you can do v1 + v2 instead of addVectors(v1, v2) and it’s a lot cleaner and straightforward. This means injecting a bunch of Lua code to set these metatables, and exposing global functions from JS to handle the metatable calls. I also added some event handling (very basic for now) but you can see in the video the part moving from me using WASD You can also see a ton of errors, and I’m trying to fix those right now. I really don’t know why they are here"}, {"post_id": 8431, "ts": "2026-06-14T00:48:37Z", "hours": 3.4253, "text": "Part sidebar shows parent/child relationships now (also had to change backend) I also got save data to serialize, but loading seems to break the other components that rely on the state I also added the cool little part add thing. I changed the font of the app too and stuff. I tried different search things but this one from shadcn-svelte seemed to work the best. I also picked the Lyra theme from shadcn-svelte"}, {"post_id": 8181, "ts": "2026-06-13T17:01:57Z", "hours": 6.7944, "text": "It’s been a while, I kind of forgot to log in the middle I reimplemented parts of the backend to support play testing and handling the state of the current game, keeping track of parts and bodies and scripts Added physics engine (Rapier), requiring keeping track of colliders and physics bodies. Right now only convex meshes for performance meaning concave colliders might be a little broken for now so I plan to add something like VHACD or a more modern alternative to split up complicated meshes into smaller convex and simplified colliders. Added Wasmoon (Lua interpreter) and CodeMirror 6 (code editor component) and some old language parser for Lua to be supported properly, this was also a challenge because Wasmoon just wants to run all the code in one go, so instead there has to be a coroutine setup where the code returns back out temporarily (with a custom wait function that utilized the coroutine function) where then my code ticks every frame to tick the code (while loop) again and also adds the delay if applicable The renderer also needed a few tweaks to get this to work properly Also something kind of weird was I couldn’t get the playTest state to update and propagate throughout the application (thats why the top bar button doesn’t work for now) and honestly I have no idea why and I spent a lot of time debugging it"}, {"post_id": 7159, "ts": "2026-06-11T23:12:48Z", "hours": 0.8367, "text": "Can now apply textures to objects with a new Texture Studio tab :) It’s still really buggy and doesn’t work on CSG objects. It also ignores the coplanar face detection I have right now for simplicity so it only works on ThreeJS primitive face groups as of right now."}, {"post_id": 6571, "ts": "2026-06-11T01:16:28Z", "hours": 2.0747, "text": "I added the framework of a UV atlas editor, and also the painting studio for the texture editor I’m working on the texture system. I’m still working on UVs. It’s honestly really complicated, I have no idea so far how to make it intuitive for users. Auto unwrapping it would not give easy to use results because most assets in this engine are going to be simple. Showing all the vertices on a single atlas also would be very overwhelming. I’m trying to figure something out. It could be determined on a face by face basis, but some faces could be super super weird due to imported meshes or weird CSG operations, which would lead to a mess of a UV unwrap I’m also going to make an editor to assemble the texture atlases by stitching together the individual smaller textures."}, {"post_id": 5862, "ts": "2026-06-09T20:15:37Z", "hours": 2.4597, "text": "Finally got the world studio to work properly, it was because I didn’t assign an ID to the spawned objects And I added the premade things in the scene also be added to the store"}, {"post_id": 5285, "ts": "2026-06-09T00:22:45Z", "hours": 1.6897, "text": "I finally got model saving to sort of work. This required revamping the backend stores to support multiple tabs, and updating the sidebar to actually use the correct tab state data."}, {"post_id": 5199, "ts": "2026-06-08T21:54:17Z", "hours": 0.5725, "text": "Moved 3D rendering code to be shared between both studios via creating a component that applies the shading and stuff and exposing the scene for the individual studios to add objects And added an isolation mode that allows the user to focus a single object or group of objects (whatever the user is selecting) and pressing i to toggle. Useful for like creating constraints and stuff more easily"}, {"post_id": 4853, "ts": "2026-06-08T11:54:31Z", "hours": 0.6908, "text": "Transform controls (now can switch to rotate and scale) And basic undo/redo system that basically just takes the ThreeJS properties and saves it and reapplies it back on undo And delete"}, {"post_id": 4609, "ts": "2026-06-07T23:55:10Z", "hours": 1.5267, "text": "Face selection (took so long) and with face selection I added constraint creation system that just creates a constraint in the center of the faces selected I had to add another face renderer, and then also refactor the stores and how I stored data to get this to work and to keep track of faces selected and stuff which took a long time"}, {"post_id": 4556, "ts": "2026-06-07T22:02:26Z", "hours": 1.1836, "text": "The CSG works really well now. Union operations now maintain materials by keeping track of the mesh IDs and then reassigning the materials afterwards manually. Also some clean up and general improvement"}, {"post_id": 4504, "ts": "2026-06-07T20:51:13Z", "hours": 0.3275, "text": "I’ve fixed the face selection code to check the dot product of the faces to make sure they are actually coplanar. I also added some cleanup functions to perform after the CSG operations to clean up geometry to make it more usable"}, {"post_id": 4494, "ts": "2026-06-07T20:31:36Z", "hours": 1.1086, "text": "Face detection and highlighting working This was pretty complicated because 3D objects are made up of triangles, but the user probably does NOT want to select triangles, but the faces themselves. So basically, I got the face the raycast hit, and then looped through all the triangles of the mesh they are hovering and got the vertex indices and got their positions and turned that into a normal and compared it with the other faces and decided if the normals were close enough"}, {"post_id": 4361, "ts": "2026-06-07T17:35:23Z", "hours": 1.2006, "text": "Added retro shader that quantizes the colors to look more like a limited color space Fixed CSG errors and fixed gizmo disappearing over and over again Added another render pass and raycast to add outline to hovered objects"}, {"post_id": 4305, "ts": "2026-06-07T15:51:36Z", "hours": 0.5503, "text": "I switched the CSG library to Manifold3D and it’s better but the meshes are a bit weird. Hopefully I’ll figure it out later. Also for some reason selection of these meshes and their transform gizmos are really difficult and buggy so I have to fix that. Also I know that there are errors I’m going to fix that now"}, {"post_id": 4280, "ts": "2026-06-07T15:18:31Z", "hours": 1.0586, "text": "CSG is being very annoying. I’m using three-bvh-csg but it’s not really what I need I think. There’s some subtraction artifacts, and most importantly, materials are not preserved I think I’m going to switch to a different library because this one isn’t really working great for me but it is pretty nice and simple"}, {"post_id": 4244, "ts": "2026-06-07T14:14:51Z", "hours": 0.9067, "text": "Added multi part select. Trying to debug why CSG operations not working I honestly don’t know what’s wrong because I followed the example code from the library but it’s not working :("}, {"post_id": 4189, "ts": "2026-06-07T12:39:07Z", "hours": 0.9372, "text": "The sidebars are now synced, but I still need to make them sync correctly to the current tab. Right now they sync exclusively to the model studio. The raycasting & selection of parts work now and I fixed the tabs to not unload and reload on each tab switch which caused data sync issues and lag and instead all tabs stay loaded."}, {"post_id": 4157, "ts": "2026-06-07T11:23:44Z", "hours": 0.7944, "text": "I made the part selected have an outline and made the gizmo work, but currently I can’t select other parts for some reason and I’ve just been debugging that"}, {"post_id": 3649, "ts": "2026-06-06T17:48:15Z", "hours": 1.8894, "text": "I started work on the “World Studio” and “Model Studio” of this game engine/fantasy console. The model studio is where you create the models that you drag into the world studio. I’ve added a gizmo and a way to place the parts and also made a more stylized rendering thing to make it feel more retro in a way."}, {"post_id": 3482, "ts": "2026-06-06T13:13:24Z", "hours": 0.41, "text": "I started the project and installed SvelteKit and added ThreeJS"}]...
|
Title: tinystudio by @ratmuds | Stardance
Devlogs Title: tinystudio by @ratmuds | Stardance
Devlogs:
I started the project and installed SvelteKit and added ThreeJS
I started work on the “World Studio” and “Model Studio” of this game engine/fantasy console. The model studio is where you create the models that you drag into the world studio. I’ve added a gizmo and a way to place the parts and also made a more stylized rendering thing to make it feel more retro in a way.
I made the part selected have an outline and made the gizmo work, but currently I can’t select other parts for some reason and I’ve just been debugging that
The sidebars are now synced, but I still need to make them sync correctly to the current tab. Right now they sync exclusively to the model studio. The raycasting & selection of parts work now and I fixed the tabs to not unload and reload on each tab switch which caused data sync issues and lag and instead all tabs stay loaded.
Added multi part select. Trying to debug why CSG operations not working I honestly don’t know what’s wrong because I followed the example code from the library but it’s not working :(
CSG is being very annoying. I’m using three-bvh-csg but it’s not really what I need I think. There’s some subtraction artifacts, and most importantly, materials are not preserved I think I’m going to switch to a different library because this one isn’t really working great for me but it is pretty nice and simple
I switched the CSG library to Manifold3D and it’s better but the meshes are a bit weird. Hopefully I’ll figure it out later. Also for some reason selection of these meshes and their transform gizmos are really difficult and buggy so I have to fix that. Also I know that there are errors I’m going to fix that now
Added retro shader that quantizes the colors to look more like a limited color space Fixed CSG errors and fixed gizmo disappearing over and over again Added another render pass and raycast to add outline to hovered objects
Face detection and highlighting working This was pretty complicated because 3D objects are made up of triangles, but the user probably does NOT want to select triangles, but the faces themselves. So basically, I got the face the raycast hit, and then looped through all the triangles of the mesh they are hovering and got the vertex indices and got their positions and turned that into a normal and compared it with the other faces and decided if the normals were close enough
I’ve fixed the face selection code to check the dot product of the faces to make sure they are actually coplanar. I also added some cleanup functions to perform after the CSG operations to clean up geometry to make it more usable
The CSG works really well now. Union operations now maintain materials by keeping track of the mesh IDs and then reassigning the materials afterwards manually. Also some clean up and general improvement
Face selection (took so long) and with face selection I added constraint creation system that just creates a constraint in the center of the faces selected I had to add another face renderer, and then also refactor the stores and how I stored data to get this to work and to keep track of faces selected and stuff which took a long time
Transform controls (now can switch to rotate and scale) And basic undo/redo system that basically just takes the ThreeJS properties and saves it and reapplies it back on undo And delete
Moved 3D rendering code to be shared between both studios via creating a component that applies the shading and stuff and exposing the scene for the individual studios to add objects And added an isolation mode that allows the user to focus a single object or group of objects (whatever the user is selecting) and pressing i to toggle. Useful for like creating constraints and stuff more easily
I finally got model saving to sort of work. This required revamping the backend stores to support multiple tabs, and updating the sidebar to actually use the correct tab state data.
Finally got the world studio to work properly, it was because I didn’t assign an ID to the spawned objects And I added the premade things in the scene also be added to the store
I added the framework of a UV atlas editor, and also the painting studio for the texture editor I’m working on the texture system. I’m still working on UVs. It’s honestly really complicated, I have no idea so far how to make it intuitive for users. Auto unwrapping it would not give easy to use results because most assets in this engine are going to be simple. Showing all the vertices on a single atlas also would be very overwhelming. I’m trying to figure something out. It could be determined on a face by face basis, but some faces could be super super weird due to imported meshes or weird CSG operations, which would lead to a mess of a UV unwrap I’m also going to make an editor to assemble the texture atlases by stitching together the individual smaller textures.
Can now apply textures to objects with a new Texture Studio tab :) It’s still really buggy and doesn’t work on CSG objects. It also ignores the coplanar face detection I have right now for simplicity so it only works on ThreeJS primitive face groups as of right now.
It’s been a while, I kind of forgot to log in the middle I reimplemented parts of the backend to support play testing and handling the state of the current game, keeping track of parts and bodies and scripts Added physics engine (Rapier), requiring keeping track of colliders and physics bodies. Right now only convex meshes for performance meaning concave colliders might be a little broken for now so I plan to add something like VHACD or a more modern alternative to split up complicated meshes into smaller convex and simplified colliders. Added Wasmoon (Lua interpreter) and CodeMirror 6 (code editor component) and some old language parser for Lua to be supported properly, this was also a challenge because Wasmoon just wants to run all the code in one go, so instead there has to be a coroutine setup where the code returns back out temporarily (with a custom wait function that utilized the coroutine function) where then my code ticks every frame to tick the code (while loop) again and also adds the delay if applicable The renderer also needed a few tweaks to get this to work properly Also something kind of weird was I couldn’t get the playTest state to update and propagate throughout the application (thats why the top bar button doesn’t work for now) and honestly I have no idea why and I spent a lot of time debugging it
Part sidebar shows parent/child relationships now (also had to change backend) I also got save data to serialize, but loading seems to break the other components that rely on the state I also added the cool little part add thing. I changed the font of the app too and stuff. I tried different search things but this one from shadcn-svelte seemed to work the best. I also picked the Lyra theme from shadcn-svelte
Reworked script system for better and easier scripting and added some basic part modification functions Basically, before you would need to type something like find(“stud”):setVelocity({10, 10, 10}) or something like that, but with metatables Metatables are kind of weird, but they basically let me return a special object from the find() function, and modify that object to override functions and add new ones. For example, you can override the metatable of custom Vector3 objects to handle addition, so you can do v1 + v2 instead of addVectors(v1, v2) and it’s a lot cleaner and straightforward. This means injecting a bunch of Lua code to set these metatables, and exposing global functions from JS to handle the metatable calls. I also added some event handling (very basic for now) but you can see in the video the part moving from me using WASD You can also see a ton of errors, and I’m trying to fix those right now. I really don’t know why they are here
Added constraints, which took a while because the way I store objects just isn’t sustainable I’m going to redo the entire architechure of this app, mostly the backend because it’s just such a mess. I’ve been piling on features and the technical debt and poor early decisions are catching up to me and it’s making development slower so I’m going to start refactoring a lot of stuff. This should mean everything will be less buggy and make it faster for me to develop new features Now that I know how the app will be I can make smarter decisions
Completely Revamped UI and Working On Refactoring Entire Engine I really tried making the UI look a lot nicer than the generic UI it was before, and I think it looks pretty nice. I might need to simplify some stuff, but I spent a long time trying to make the UI more welcoming and easy to use and for the UI to seem more playful in a way I guess, than the more mono font boring gray it was last time. I also have started on completely refactoring the engine. The previous data stores and data types were too limiting and I made some bad decisions early on so starting from scratch is kind of necessary
Worked on Model tab and Working on Refactoring Backend & Renderer Component There’s now a model tab, also I made some more animations and things to make the app more fun to use. I’m also in the process of rebuilding the data types and completely redoing the reusable Renderer component since it was an absolute disaster before.
Started Data and ECS Code I started working on the ECS system, and now the parts spawned are “entities” and they have “components” like a mesh, a transform, and a physics component. The components are queried and cached by the game engine and passed to the “systems” that actually do work with the component data of the entity. I also dealt with a stupid tab bug :((( And generally other engine code.
Fixed ECS Data Storage and UI Displays ECS Data I got the UI to display the data for the ECS components. I had some weird bugs, also I messed up earlier on the code to store the data entries for the components (stores things like data type and stuff) and then now it displays on the sidebar. For now I temporarily disabled the code to handle multiple different objects that could have differing component values or different components altogether, because it was causing a bunch of problems cuz the code is not great :(
Model Thumbnails, Better Highlighting, Reactivity, Sidebar, etc The models now have a place to store a thumbnail, and on save, it autogenerates a new thumbnail. It creates a new ThreeJS scene in the background and adds all the entities to it. For now it only cares about the Transform component, so that’s why all the parts don’t have the correct colors. The face highlighting also is fixed to use ThreeJS’s Line2 so an adjustable line thickness can be used. The face edge highlights are now thicker and a lot easier to see. Reactivity is now fixed, so dragging an object in the editor updates the UI, and the other way around. In the video, you can also see the “–” when multiple objects were selected. It means they have unique values, but they can still be all updated. The system works by storing all seen components in a JS map, and then only filtering for components that appear in ALL of the selected parts. I might change that functionality later but it works for now. I also added the sidebar to the model workspace. I also did work on the ECS system and just engine code in general.
Runtime working This took so long There was just so many things that just weren’t working well together. Especially the data loading code. I initially just made the code use and modify the gameData directly, meaning that if I stop and play again the game would not reset and would probably completely break. But cloning is so difficult. Since the gameData is pretty complicated with nested classes and data, simply JSON.stringify and parse, and even structuredClone didn’t work. I had to use a function to manually copy a lot of things which was really annoying. Another thing that was weird was that parts would only have physics if it was dictated by the parent model, which wasn’t what I wanted. Now there is a function to flatten models, since I want them to kind of just be fancy folders at the end of the day anyway. There was just generally a lot of rework to get everything working, with systems and components working now with a setup phase, and a general frame tick function for systems to process. I also had to add dirty flags to all ComponentDataEntries so other components actually notice changes by OTHER components which was so annoying :((
Opening Tabs Working There is now a flow for opening and creating tabs, now new tabs can be created and new models in the same way. Opening a tab that is already open just switches to it.
Fixed Constraints Getting constraints working was super annoying. Basically, there is a problem where the engine is built around models, and you can spawn in multiple models. When models are spawned in, the parts inside are cloned including their IDs to not lose reference, but this comes with the huge issue as in the backend, the engine actually flattens this structure for more efficient processing of entities, meaning that there will be multiple entities sharing IDs, which is really bad. But creating new IDs is also a huge problem because when we reference it, the ID is not final and changes all the time on load. So instead it does <model_id>:<entity_id>, for targeting. The constraint creator lets you select two points (snapping will be added in the future) and it creates a constraint. This is later processed by the PhysicsSystem detecting the ConstraintComponent. Later there will be debug viewer for constraints. Anyway it was just a lot of annoying work.
Scripting System I added Svelte Flow and the Monaco editor Basically, I think that the system will work mainly off of state machines. Each state will have an attached script. The scripts can decide when to change states. For example, the scripting for a bee in a game could have states for wandering, eating, etc and the scripts handle only it’s own state which could make the code a little cleaner. I also tried making the script editor to look really good. I spent a bunch of time trying to add LSPs and intellisense/autocomplete and syntax and formatting but honestly I give up for now.
Logic & Scripting Prototype Working this was so difficult basically a TON of things needed to be changed for this to work. i had to rework the entire scripting system. i had to also think about how the system is going to work the system i landed on, basically is you can create nodes in the state machine editor, and attach scripts on those states. instead of scripts, im calling the whole package of state machine + scripts a “Logic”. i havent reflected the name everywhere else yet though, and that is probably going to take a really long time as its a major architectural shift that i didn’t plan for beforehand. i made custom nodes in the editor as you can see, a start, end and the script node. there is now a nice dropdown to select the script (a searchbar will be added later) and you can create new scripts. i fixed the code editor to actually load/save code properly. i had to redo how it saved data, so i could communicate the scripts, nodes, connections, etc all to the ScriptingSystem, which starts off at the “Start” node and steps the state once, going into the first node. This part of the code is an absolute MESS. i had a ton of bugs to fix, including state and Svelte firing state over and over again for some reason, Lua issues, dealing with coroutines, dealing with external functions which would change the state and exit the code, etc To add the script, there is now a “Add component” button which you can select the script and select the logic. The state machine handles direct to end, looping nodes, multiple handles, infinite loops going into other nodes, etc. At the end of the video, you can see that i created two states and the second state had two outputs, and the path is a 50/50 random decided by the Lua code to loop back into the first state or exit. Overall, this was really tiring and I’m glad it’s done. The amount of time thinking and debugging isn’t included in the time tracked so yeah :(
Scripting System Affecting the Game Scripts now can change parts. There are getEntityById and getEntityByName functions now, and a bunch of metatables and stuff to get it working. Now you can query for an entity, and then modify it’s component data with metatables. For example to access or set the position of a part, you can do part.transform.position . The transform finds the transform component and position finds the data entry of position inside the component. This is all done on runtime, with component queries happening dynamically so no manual programming for new components is required. This may affect performance a little bit though. There is a custom Vector3 object now too. Error messages are also now a little less vague but still pretty confusing. I don’t know how to solve that.
Engine Events System & Starting Significant Scheduler Engine Revamp So I made the events system. It works by a class on the JavaScript (engine) layer, and is attached to all entities. There are a couple of functions: on: fires on event once: fires on event only once off: clears event callback clear: clears all callbacks Other entities are allowed to access another entitys events, being able to listen or even emit. A game architecture could work like having “manager” entities at the top level of the game which hold different events. For example, an “InventoryManager” entity could have an event for when an item is picked up, it itself can listen to it, as well as any other things that may find it useful. I’ve also cleaned up the code, and now there is a “game” reference. Eventually, it will have access to more things but as of right now you can access an “inputManager” which holds functions and events for user inputs. It works by attaching a metatable to it and exposing global hidden functions to call to my JavaScript engine code. But a huge problem showed up, the way I was running scripts. Before I thought just a simple coroutine running with a timeout for delays was just fine, but I was super wrong. If a callback from an event is fired and the function wants to do something, like call an external function or wait, it completely breaks. Why? I didn’t know and it took me a lot of time to find out. It’s because the callbacks aren’t a coroutine too. This is when I realized why something like Roblox has a full blown scheduler. So I’ve been planning and starting on the scheduler engine. It has to handle a lot of stuff, including managing when scripts run, including WHEN they want to run (next frame, in 3 seconds, etc) and track if they are causing issues by keeping track of their budget. Everything will need to be in a coroutine coordinated by the scheduler. Including callbacks from events too. It’s going to be pretty complicated I think, requiring a rewrite of the entire scripting system. I also just encountered a lot of bugs. And I fixed the errors from Wasmoon including the entire JS stacktrace for no reason too.
Added CSG Operations I added CSG operations, using the Manifold library. It makes it a bit simpler, making watertight meshes and giving back the geometry for me to make a custom mesh in ThreeJS. The reason it took so long was because I had to add cascading changes to a lot of the data structures to support this custom geometry. I also added a little loading thing at the bottom right for CSG operations. As of right now Union and Subtract are supported. Materials are not preserved as of right now, due to the simplistic way I’m handling materials but when I finish building out the materials system I basically just need to get the triangle references out of Manifold and relink them to the correct materials.
Script Scheduling Engine Revamp The entire scripting engine has been redone. It was a lot of cascading changes again, with now each “Scope” having it’s own scheduler. A “scope” is a single logic component that gets attached to entities. How it works now The scheduler handles the Lua engine stuff. It wraps the main script around into a coroutine automatically now, and extracts the coroutine into a thread. It then creates a scheduler job object, pending into the queue. The scheduler then gets stepped, and initializes the jobs into the main queue and steps them. By stepping them, it resumes the coroutine until the script either ends or manually pauses the coroutine itself (usually done with a predefined “wait” function). I think this is very similar to how Roblox handles it’s script scheduler, although Roblox’s is of course much more complicated. Handling the events and callbacks was much more difficult though. Each of those ALSO need it’s own thread to run to access coroutine related functions and to access data (otherwise very weird errors will happen, like calling code over a boundary or something). This all gets added as a scheduler job, and that allows us to record telemetry data. Eventually, threads can be assigned a “budget”, where they can be stalled if they consume more than the allotted time or even do things like infinite loop detection, etc. There was just generally tedious work that was annoying.
Scope Leaking Bug Fixed, Mouse Input, Scripting Improvements, ECS & Events Scripting Improvements and Fixes, Cameras There was an issue where I used a single variable to hold the last used scope before and forgot to change it to support multiple scripts. That is fixed now and scopes aren’t mixed weirdly anymore. There is now mouse functions and events Events can be called like part.physics:on("touched") instead of part:on("Physics.touched") for clarity Cameras are added, game wide function to change active camera, and camera system that updates the camera things bidirectionally supporting multiple camera types.
Finalized Project I added a projects manager and generally just cleaned up the repository. Then created three basic demos, like a basic moon landing game, a very basic parkour game, and a physics sandbox. And finished the README
Redid UI styling to feel more blocky I rewrote the UI to look less bubbly I guess, now it looks more like lego and stuff and more space for work instead of tons of padding
Ships:
I made a game engine that I tried to make the UI look nice and feel accessible. I wanted to design it around what I liked about other game engines like Roblox Studio and Godot, and try and make it as easy as possible to make prototypes of games quickly. The decision to not let any 3D imports was intentional to keep the engine style of more retro, as you can see by the rendering style. Instead, you can fuse and subtract shapes together with CSG. The flow editor state machines fully work, and was inspired by Playmaker. The scripting system is a little bit janky sometimes but it somewhat works. The scripting system has a basic scheduler and profiler similar to Roblox’s Luau scheduler but without the complexity of CPU budget. The engine uses a custom ECS that uses Svelte Runes to provide reactivity to the engine sidebars and editor. There is also a basic UI system, and physics. There are three demo projects to try out too....
|
1793005014.9037464
|
1793091414.9037464
|
|
33322
|
My own keyboard! by @J1NX3D | Stardance
|
J1NX3D
|
1
|
23.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T20:37:50Z", "hours": 23.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a keyboard to learn pcb making skills. The most challenging part was the firmware which I ended up using an open source program for the keyboard. This was fun to learn since I refinded my onshape skills and made my first pcb!!", "repo": "https://github.com/robogirl11/Custom-keyboard-", "demo": ""}]...
|
[{"post_id": 73112, "ts": "202 [{"post_id": 73112, "ts": "2026-09-24T12:38:42Z", "hours": 3.6833, "text": "I tried learning the firmware but it was confusing so I took a break for a while thats why this is so late"}, {"post_id": 40229, "ts": "2026-08-03T17:06:57Z", "hours": 6.6775, "text": "Finished the case for the keyboard and now have to figure out how to do the cutouts for stabilizers and how to make the keyboard unique."}, {"post_id": 38441, "ts": "2026-07-31T20:11:47Z", "hours": 5.7008, "text": "I started and finished working on the final draft of the pcb. Since this is part of my first project on Kicad I wanted everything perfect which lead me to start over a lot. But after this I feel that this will be my final attempt since it has everything I want. Next I will be uploading to onshape so I can build the case. I also have to update my progress on github and upload everything."}, {"post_id": 29840, "ts": "2026-07-16T23:59:10Z", "hours": 0.5833, "text": "Started the onshape!!"}, {"post_id": 28465, "ts": "2026-07-14T18:33:57Z", "hours": 1.5167, "text": "I worked on and finished the pcb board. Since I was new to the program it took a while for me to finish and I hade a lot of problems like wiring wrong but in the end IT WORKED!!!"}, {"post_id": 28111, "ts": "2026-07-14T05:30:48Z", "hours": 8.7675, "text": "For my keyboard I started going over what I wanted in a keyboard. I decided against extra number buttons and started designing the pcb. Using kicad I went over the wiring and connections and since this was my first time working on kicad I did have to use the guide and look up some things. Also did have to restart a lot but so far it is worth it."}]...
|
Title: My own keyboard! by @J1NX3D | Stardance
De Title: My own keyboard! by @J1NX3D | Stardance
Devlogs:
For my keyboard I started going over what I wanted in a keyboard. I decided against extra number buttons and started designing the pcb. Using kicad I went over the wiring and connections and since this was my first time working on kicad I did have to use the guide and look up some things. Also did have to restart a lot but so far it is worth it.
I worked on and finished the pcb board. Since I was new to the program it took a while for me to finish and I hade a lot of problems like wiring wrong but in the end IT WORKED!!!
Started the onshape!!
I started and finished working on the final draft of the pcb. Since this is part of my first project on Kicad I wanted everything perfect which lead me to start over a lot. But after this I feel that this will be my final attempt since it has everything I want. Next I will be uploading to onshape so I can build the case. I also have to update my progress on github and upload everything.
Finished the case for the keyboard and now have to figure out how to do the cutouts for stabilizers and how to make the keyboard unique.
I tried learning the firmware but it was confusing so I took a break for a while thats why this is so late
Ships:
I made a keyboard to learn pcb making skills. The most challenging part was the firmware which I ended up using an open source program for the keyboard. This was fun to learn since I refinded my onshape skills and made my first pcb!!...
|
1793005013.7530878
|
1793091413.7530878
|
|
39643
|
Lunaric AI by @Tanixsh | Stardance
|
Tanixsh
|
2
|
34.0
|
305
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T05:51:01Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made an AI study companion with different modes to interact with the user in a better way and the hardest part was to make it respond faster than before, during my updates.", "repo": "https://github.com/Tanixsh/Lunaric-AI", "demo": "https://lunaricai.web.app"}, {"ship_num": 2, "ts": "2026-09-14T11:32:03Z", "hours": 31.0, "multiplier": 9.95, "payout": 305, "blessing": "neutral", "text": "I built Lunaric AI, an AI student companion which acts as an operational mentor and is greatly helpful for Olympiad preparation. I built and designed the AI using python language and designed the UI through Flutter. The hardest part was getting everything to work together, especially connecting the backend to the frontend. I’m most proud of the thing that it went from an idea to a working app with Chat, Study, Olympiad and Analyze modes. People should know they can actually test it themselves through the project link and try the different modes.", "repo": "https://github.com/Tanixsh/Lunaric-AI", "demo": "https://lunaricai.web.app"}]...
|
[{"post_id": 82903, "ts": "202 [{"post_id": 82903, "ts": "2026-10-26T05:48:48Z", "hours": 3.0078, "text": "I have been trying to update my AI and now have made it response faster, answers more accurately and worked on it’s authentication"}, {"post_id": 68006, "ts": "2026-09-14T11:20:11Z", "hours": 0.7792, "text": "DEVLOG 11: I’m here with a great news, LUNARIC is fully complete and will now be shipped. The journey helped me a lot and encouraged me to go beyond my limits and try new things and hope to explore this field more. Although it was not really straight forward and I feel the toughest part of the project was connecting the backend and frontend which not only took time but was truly difficult. I’ll be trying to ship my project and this is probably my last DEVLOG."}, {"post_id": 67348, "ts": "2026-09-13T12:55:18Z", "hours": 5.1967, "text": "DEVLOG 10: So guys, I’ve been lately working on redefining and polishing Lunaric’s UI and have been trying to fix bugs and glitches. I believe the AI shall shortly be shipped and it had been a great journey working on this project a lot. Hope y’all enjoy the AI."}, {"post_id": 64100, "ts": "2026-09-08T09:06:48Z", "hours": 2.7331, "text": "DEVLOG 9: I’ve deployed Lunaric publicly which is now available for all. If anyone wishes to pre-test my AI, please go https://lunaricai.web.app/ and kindly give me feedbacks accordingly. Your participation will be highly appreciated."}, {"post_id": 62295, "ts": "2026-09-05T16:28:25Z", "hours": 3.3317, "text": "DEVLOG 8: LUNARIC AI is now completed with it’s final mode - ANALYZE MODE. Lunaric can now access the user’s photos and camera based on user’s will allowing the student to upload image and get cleared with doubts with complete solution. Building the ANALYZE mode was toughest of the four as the host was continuously conflicting with the backend. Now I am going to design and polish the UI and customize some features and am also going to add a voice to text feature."}, {"post_id": 60934, "ts": "2026-09-03T16:38:56Z", "hours": 1.3733, "text": "DEVLOG 7: I’ve finally completed with my STUDY mode although i faced difficulty assigning for the TOPICS section in the subject it worked out. Now I am going to work on the last mode of LUNARIC - ANALYZE."}, {"post_id": 57997, "ts": "2026-08-30T10:20:16Z", "hours": 4.465, "text": "DEVLOG 6: I am finally done with polishing and uploading my README and tried to cover all major features and overview in a nutshell while completing the Study mode for my AI. If you guys want too take a look at my README please go to my repository on GITHUB."}, {"post_id": 55686, "ts": "2026-08-27T17:30:03Z", "hours": 1.5478, "text": "DEVLOG 5: This is my first step towards transforming Lunaric from a normal AI chatbot to an operational mentor. I’ve almost completed my work with Olympiad mode on Lunaric AI where students can generate problems just by choosing their requirements and even check if their answers are correct. Next I’ll be working towards building the STUDY mode."}, {"post_id": 54361, "ts": "2026-08-25T10:00:06Z", "hours": 3.2881, "text": "DEVLOG 4: i have finally connected the app with it’s backend and it is working completely fine. Flutter is now communicating with the Python backend and real AI responses are working inside the app."}, {"post_id": 53006, "ts": "2026-08-23T12:04:39Z", "hours": 3.4675, "text": "DEVLOG 3: The “FIRST UI PROTOTYPE” for LUNARIC AI is here. The UI is still an early prototype, but the main app structure is starting to take shape. Next, I’m working on connecting the UI to Lunaric’s actual AI capabilities."}, {"post_id": 52367, "ts": "2026-08-22T14:09:40Z", "hours": 2.8686, "text": "DEVLOG 2: FINALLY!!!! promotional website For LUNARIC OFFICIAL almost complete, I got to learn and make a 3D interactive website that too for my AI promotion."}, {"post_id": 47926, "ts": "2026-08-16T06:09:30Z", "hours": 1.6067, "text": "DEVLOG 1: The credentials and structure for my project have been assigned. Lunaric AI has started to reply by understanding user’s input and now has access to real-time information although the Real-time connection was hectic it is finally set to sail…."}]...
|
Title: Lunaric AI by @Tanixsh | Stardance
Devlogs Title: Lunaric AI by @Tanixsh | Stardance
Devlogs:
DEVLOG 1: The credentials and structure for my project have been assigned. Lunaric AI has started to reply by understanding user’s input and now has access to real-time information although the Real-time connection was hectic it is finally set to sail….
DEVLOG 2: FINALLY!!!! promotional website For LUNARIC OFFICIAL almost complete, I got to learn and make a 3D interactive website that too for my AI promotion.
DEVLOG 3: The “FIRST UI PROTOTYPE” for LUNARIC AI is here. The UI is still an early prototype, but the main app structure is starting to take shape. Next, I’m working on connecting the UI to Lunaric’s actual AI capabilities.
DEVLOG 4: i have finally connected the app with it’s backend and it is working completely fine. Flutter is now communicating with the Python backend and real AI responses are working inside the app.
DEVLOG 5: This is my first step towards transforming Lunaric from a normal AI chatbot to an operational mentor. I’ve almost completed my work with Olympiad mode on Lunaric AI where students can generate problems just by choosing their requirements and even check if their answers are correct. Next I’ll be working towards building the STUDY mode.
DEVLOG 6: I am finally done with polishing and uploading my README and tried to cover all major features and overview in a nutshell while completing the Study mode for my AI. If you guys want too take a look at my README please go to my repository on GITHUB.
DEVLOG 7: I’ve finally completed with my STUDY mode although i faced difficulty assigning for the TOPICS section in the subject it worked out. Now I am going to work on the last mode of LUNARIC - ANALYZE.
DEVLOG 8: LUNARIC AI is now completed with it’s final mode - ANALYZE MODE. Lunaric can now access the user’s photos and camera based on user’s will allowing the student to upload image and get cleared with doubts with complete solution. Building the ANALYZE mode was toughest of the four as the host was continuously conflicting with the backend. Now I am going to design and polish the UI and customize some features and am also going to add a voice to text feature.
DEVLOG 9: I’ve deployed Lunaric publicly which is now available for all. If anyone wishes to pre-test my AI, please go https://lunaricai.web.app/ and kindly give me feedbacks accordingly. Your participation will be highly appreciated.
DEVLOG 10: So guys, I’ve been lately working on redefining and polishing Lunaric’s UI and have been trying to fix bugs and glitches. I believe the AI shall shortly be shipped and it had been a great journey working on this project a lot. Hope y’all enjoy the AI.
DEVLOG 11: I’m here with a great news, LUNARIC is fully complete and will now be shipped. The journey helped me a lot and encouraged me to go beyond my limits and try new things and hope to explore this field more. Although it was not really straight forward and I feel the toughest part of the project was connecting the backend and frontend which not only took time but was truly difficult. I’ll be trying to ship my project and this is probably my last DEVLOG.
I have been trying to update my AI and now have made it response faster, answers more accurately and worked on it’s authentication
Ships:
I built Lunaric AI, an AI student companion which acts as an operational mentor and is greatly helpful for Olympiad preparation. I built and designed the AI using python language and designed the UI through Flutter. The hardest part was getting everything to work together, especially connecting the backend to the frontend. I’m most proud of the thing that it went from an idea to a working app with Chat, Study, Olympiad and Analyze modes. People should know they can actually test it themselves through the project link and try the different modes.
I have made an AI study companion with different modes to interact with the user in a better way and the hardest part was to make it respond faster than before, during my updates....
|
1793005012.5447187
|
1793091412.5447187
|
|
52704
|
Noomo by @skue | Stardance
|
skue
|
1
|
27.05
|
469
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T22:24:00Z", "hours": 24.0, "multiplier": 19.73, "payout": 469, "blessing": "neutral", "text": "Presenting Noomo ! Noomo is a game about guessing words generated by an LLM You just input a sentence, then you guess the words that the LLM generated. And how does it work ? The backend : The backend is a cool Python FastAPI server running a model through Transformers ! It generates the 100 top probabilities, deletes the ones that are not usable in the game (non-latin things, duplicates…) and sends the number of words requested ! The frontend : The frontend is a nice NextJS app that will kindly ask the backend the words for the sentence you inputed and will force you to guess words until you die (or when you guessed all the words). Then, if you didn’t die before the end, it will store the stats into the sessionStorage and show them nicely to you as a trophy. But why is it so cooool ? Well, first, it runs on Hackclub Nest ! Which means “only” 2gb of RAM, and 2 cores of CPU. But how ? Well, it’s just using a smoll model, Qwen 2.5 0.5B, which makes it take 600M of RAM on idle . (and no, i did nooot nuked my server 3 times, that was absolutely noooot me…) Second, I learned everything while working on the project ! I knew how to code in Python, but nothing about ML. So uuum I needed to learn from kinda scratch (ngl, it’s not thaaaat hard for the thing I made). I also knew a bit of Javascript, but NextJS is… Something else ? This was pretty hard, and why the heck can’t I change a variable in my useEffect ? All of this means more bugs ! Yayyyyyyyyyyyyy !!! You hyped me, where can I try ? And how ? You can just go to noomo.dino.icu ! Enter your sentence, click enter (or the kool button), and then play ! Ah and yes, to play, you just need to input your word and press enter. And hope it was correct. Alright I’m out, good luck !", "repo": "https://github.com/skueee/noomo", "demo": "https://noomo.dino.icu/"}]...
|
[{"post_id": 69152, "ts": "202 [{"post_id": 69152, "ts": "2026-09-16T14:18:15Z", "hours": 3.0542, "text": "Devlog 6 - Yayyyy thanks reviewers Thanks for the reviews ! I’m already starting to try to improve all I can improve ! This is a small update, but here is the changelog ! I fixed the loading screen (because it was not appearing) I created a ROADMAP for the v2 (check it out at https://github.com/skueee/noomo/blob/main/V2ROADMAP.md ) I changed a bit the layout I added daily challenges ! Because hum I originally wanted them but for the first ship I didn’t implemented it so hum they are here now (kinda) If you have any suggestion, comment or contact me on Slack ! These changes aren’t deployed yet, but it will be coming in the next few days"}, {"post_id": 67696, "ts": "2026-09-13T21:44:18Z", "hours": 6.6597, "text": "Devlog 5 - FINNAAAAL ONE !!!! Yipeee I almost finished everything ! I added clues, refined the generation system, and hosted on Vercel (I also got a lot of bugs, but without bugs you cant make a good project). I alsooo learned to make responsive things, and it looks okay if you dont try it on a very smol phone (I hope so, at least). Now I just do some testiiing and it’s time to ship Try the website out at noomo.dino.icu"}, {"post_id": 66667, "ts": "2026-09-12T15:07:23Z", "hours": 7.2394, "text": "Devlog 4 !!!! I almost finished everything for the game ! I made most of the website. There is now a Game page (like, the most important thing of the whole project) and a Win page ! I also learned a lot about TS and HTML while making this (because this is kinda my first website). It’s almost ready, I just need to do some adjustments to the layout of the website, rebalance the game and fix some generation bugs"}, {"post_id": 65027, "ts": "2026-09-09T20:37:06Z", "hours": 4.8931, "text": "DEVLOG 3 ! I did a looot of things. The backy backend : I configured my Nest server (and I broke it 3 times) ! Now, it should work, but sorry to the Nest team for this :(. I also got some problems with the dockerimage (like, 19gb for a single image ?). I improved the AI too ! It will now lean towards longer words, to make it easier to guess, and will exclude non-latin characters (sorry japanese people, but I had to). I also learned sql (ngl i feel like a dumbass for not understanding this) and made a db ! It will store most popular sentences and maybe daily challenges ? The frontennnnd : Huuummm I didn’t do much but there is a header on top now ig"}, {"post_id": 62133, "ts": "2026-09-05T12:00:07Z", "hours": 3.3086, "text": "[DEVLOG 2] I made the main page ! The buttons dont do anything now, but it’s my first time using HTML… I also done some fixes on the API and I got a Nest server ! Already tested it a bit and it should work if I only host the api on it. Anyway there is still a lot of work to do"}, {"post_id": 60504, "ts": "2026-09-02T21:44:52Z", "hours": 1.6756, "text": "[DEVLOG #1] I’m building Noomo, a game about predicting what an LLM could say. You input a simple sentence, then you need to tell the most “logical” words, generated by a really small llm (currently, Qwen2.5-0.5B). For now, I got a small API backend that can be called to generate the predictions, and it’s running on my machine. I still need to finetune the model so that the game is more interesting, then I need to develop the frontend and host all of that !"}]...
|
Title: Noomo by @skue | Stardance
Devlogs:
[DEVLO Title: Noomo by @skue | Stardance
Devlogs:
[DEVLOG #1] I’m building Noomo, a game about predicting what an LLM could say. You input a simple sentence, then you need to tell the most “logical” words, generated by a really small llm (currently, Qwen2.5-0.5B). For now, I got a small API backend that can be called to generate the predictions, and it’s running on my machine. I still need to finetune the model so that the game is more interesting, then I need to develop the frontend and host all of that !
[DEVLOG 2] I made the main page ! The buttons dont do anything now, but it’s my first time using HTML… I also done some fixes on the API and I got a Nest server ! Already tested it a bit and it should work if I only host the api on it. Anyway there is still a lot of work to do
DEVLOG 3 ! I did a looot of things. The backy backend : I configured my Nest server (and I broke it 3 times) ! Now, it should work, but sorry to the Nest team for this :(. I also got some problems with the dockerimage (like, 19gb for a single image ?). I improved the AI too ! It will now lean towards longer words, to make it easier to guess, and will exclude non-latin characters (sorry japanese people, but I had to). I also learned sql (ngl i feel like a dumbass for not understanding this) and made a db ! It will store most popular sentences and maybe daily challenges ? The frontennnnd : Huuummm I didn’t do much but there is a header on top now ig
Devlog 4 !!!! I almost finished everything for the game ! I made most of the website. There is now a Game page (like, the most important thing of the whole project) and a Win page ! I also learned a lot about TS and HTML while making this (because this is kinda my first website). It’s almost ready, I just need to do some adjustments to the layout of the website, rebalance the game and fix some generation bugs
Devlog 5 - FINNAAAAL ONE !!!! Yipeee I almost finished everything ! I added clues, refined the generation system, and hosted on Vercel (I also got a lot of bugs, but without bugs you cant make a good project). I alsooo learned to make responsive things, and it looks okay if you dont try it on a very smol phone (I hope so, at least). Now I just do some testiiing and it’s time to ship Try the website out at noomo.dino.icu
Devlog 6 - Yayyyy thanks reviewers Thanks for the reviews ! I’m already starting to try to improve all I can improve ! This is a small update, but here is the changelog ! I fixed the loading screen (because it was not appearing) I created a ROADMAP for the v2 (check it out at https://github.com/skueee/noomo/blob/main/V2ROADMAP.md ) I changed a bit the layout I added daily challenges ! Because hum I originally wanted them but for the first ship I didn’t implemented it so hum they are here now (kinda) If you have any suggestion, comment or contact me on Slack ! These changes aren’t deployed yet, but it will be coming in the next few days
Ships:
Presenting Noomo ! Noomo is a game about guessing words generated by an LLM You just input a sentence, then you guess the words that the LLM generated. And how does it work ? The backend : The backend is a cool Python FastAPI server running a model through Transformers ! It generates the 100 top probabilities, deletes the ones that are not usable in the game (non-latin things, duplicates…) and sends the number of words requested ! The frontend : The frontend is a nice NextJS app that will kindly ask the backend the words for the sentence you inputed and will force you to guess words until you die (or when you guessed all the words). Then, if you didn’t die before the end, it will store the stats into the sessionStorage and show them nicely to you as a trophy. But why is it so cooool ? Well, first, it runs on Hackclub Nest ! Which means “only” 2gb of RAM, and 2 cores of CPU. But how ? Well, it’s just using a smoll model, Qwen 2.5 0.5B, which makes it take 600M of RAM on idle . (and no, i did nooot nuked my server 3 times, that was absolutely noooot me…) Second, I learned everything while working on the project ! I knew how to code in Python, but nothing about ML. So uuum I needed to learn from kinda scratch (ngl, it’s not thaaaat hard for the thing I made). I also knew a bit of Javascript, but NextJS is… Something else ? This was pretty hard, and why the heck can’t I change a variable in my useEffect ? All of this means more bugs ! Yayyyyyyyyyyyyy !!! You hyped me, where can I try ? And how ? You can just go to noomo.dino.icu ! Enter your sentence, click enter (or the kool button), and then play ! Ah and yes, to play, you just need to input your word and press enter. And hope it was correct. Alright I’m out, good luck !...
|
1793005011.4199927
|
1793091411.4199927
|
|
57727
|
Time waster by @JAME | Stardance
|
JAME
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T10:26:24Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a silly little python game! Throughout the process I learnt so much more about python and I’m so much more confident now. Enjoy!", "repo": "https://github.com/OneJame/time-waster", "demo": "https://github.com/OneJame/time-waster/releases/tag/v1"}]...
|
[{"post_id": 76103, "ts": "202 [{"post_id": 76103, "ts": "2026-10-02T10:12:21Z", "hours": 1.6097, "text": "I finished it! After hours of work on this silly little game idea, I finally have it at a state I’m happy to ship it in. There is five different sections so far, each taking an obnoxiously long time to figure out. I did a lot of text styling for this, I learnt a lot about python!"}, {"post_id": 69402, "ts": "2026-09-16T23:57:34Z", "hours": 1.5128, "text": "Some Styling! I’ve mainly been working on styling text for my time wasting python script. I’m still not sure how much I like it but I’ll keep working on it for now."}, {"post_id": 62804, "ts": "2026-09-06T10:10:39Z", "hours": 0.5869, "text": "Some charecter development / lore?? Yeah, I can’t think of anything else to add so i’m currently adding more of a story to the program. I should be bug fixing, but bug fixing sucks."}, {"post_id": 60677, "ts": "2026-09-03T06:09:12Z", "hours": 1.4417, "text": "Moved to stardance! I’ve been working on this simple python program for quite a while, mainly just to practice different parts of python. I think it’s actually pretty fun to play though so I decided to start fully developing it. It currently has a random number roller, fake loading screens, a CAPTCHA and math. Today I finished the finish the lyrics section, its completely random and is pretty much just a 50% chance you get it right. I’m not sure if I love it though so I might change it later on. :)"}]...
|
Title: Time waster by @JAME | Stardance
Devlogs:
Title: Time waster by @JAME | Stardance
Devlogs:
Moved to stardance! I’ve been working on this simple python program for quite a while, mainly just to practice different parts of python. I think it’s actually pretty fun to play though so I decided to start fully developing it. It currently has a random number roller, fake loading screens, a CAPTCHA and math. Today I finished the finish the lyrics section, its completely random and is pretty much just a 50% chance you get it right. I’m not sure if I love it though so I might change it later on. :)
Some charecter development / lore?? Yeah, I can’t think of anything else to add so i’m currently adding more of a story to the program. I should be bug fixing, but bug fixing sucks.
Some Styling! I’ve mainly been working on styling text for my time wasting python script. I’m still not sure how much I like it but I’ll keep working on it for now.
I finished it! After hours of work on this silly little game idea, I finally have it at a state I’m happy to ship it in. There is five different sections so far, each taking an obnoxiously long time to figure out. I did a lot of text styling for this, I learnt a lot about python!
Ships:
I made a silly little python game! Throughout the process I learnt so much more about python and I’m so much more confident now. Enjoy!...
|
1793005010.4815464
|
1793091410.4815464
|
|
57713
|
Leaderboard for CyberMatch by @Tennis-Legend | Sta Leaderboard for CyberMatch by @Tennis-Legend | Stardance...
|
Tennis-Legend
|
1
|
7.28
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-16T08:00:35Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a leaderboard system for CyberMatch using HTML, CSS, Python and Flask. The project allows users to submit their details and time, then view the results on a separate leaderboard page that can be sorted in different ways. Along the way I added a dedicated leaderboard layout, a dark theme, hover effects, responsive design for phones and laptops, and links between the original page and the leaderboard page. One of the bigger challenges was getting the sorting system to work properly. At one point names with capital letters would sort differently to names with lowercase letters, which caused some entries to appear in the wrong order. I also had to make sure users could only enter appropriate values into each field so that invalid data wouldn’t affect the leaderboard. After making a few backend changes, the sorting became much more reliable and the input fields behaved as expected. I’m most proud of how the leaderboard ended up looking. The dark theme, green accents and rank highlighting make it feel much better than a plain table. When hovering over an entry, the row changes to a grey background and the text colour changes depending on position, with gold for first, silver for second, bronze for third and green for everyone else. To see the project, click the “Try project” button or go to https://cybermatch.onrender.com/leaderboard . To test it out, try adding a few entries with different names and times, then use the sorting options to make sure everything updates correctly. It is also worth testing on both a laptop and a phone, as the layout was adjusted to work properly on different screen sizes.", "repo": "https://github.com/tennis-legend1/Scoreboard-Sample-Project", "demo": "https://tennislegend.pythonanywhere.com/leaderboard"}]...
|
[{"post_id": 71468, "ts": "202 [{"post_id": 71468, "ts": "2026-09-20T21:45:15Z", "hours": 0.2842, "text": "Just wanted to address some feedback a shipwright gave me: some of the buttons not working on the site is an INTENTIONAL choice. Let me explain: me and two other friends made an original site where we ‘advertised’ our games as one bundle, but I have only included the pages that I made entirely myself. So the only two pages that should load is the Leaderboard page ( https://tennislegend.pythonanywhere.com/leaderboard ) and the Original i guess ‘general’ CyberMatch page ( https://tennislegend.pythonanywhere.cm/cybermatch ). I decided to keep the buttons, and make them seem like clickable by having the cursor change to a pointer, yet lead nowhere, as you can see in an examples pictured below. Every other functionality like entering a value in the leaderboard, the Easter Eggs (like the cat), etc, should work perfectly."}, {"post_id": 69032, "ts": "2026-09-16T07:54:06Z", "hours": 3.0478, "text": "Since exams picked up, I got the chance to add to this throughout the last few weeks, but didn’t get a chance to write a devlog as consistently as I wanted to, so I have decided to make one big one with each devlog that I would’ve liked to make below: Devlog 3 - 9/9/2026 I mainly worked on the CSS for the Leaderboard page. I gave it a dark theme, added a box around the table and added hover effects for each entry. When hovering over a row, the background changes from black to grey, and the text becomes gold for first place, silver for second, bronze for third and green for all other positions. One thing I had to watch out for was making sure the silver text was still easy to read against the grey background. I also made sure that the new styling didn’t interfere with any of the styling on the Original page. Devlog 4 - 10/9/2026 to 14/9/2026 I finished off most of the Leaderboard page. I added a background, more borders and boxes, and adjusted the styling so it matched the Original page more closely. I also improved the sorting system by stopping users from entering numbers into the name fields and letters into the time field. Another thing I fixed was the sorting of names, because capital letters were being sorted differently to lowercase ones, which meant names were sometimes appearing in the wrong order. After adjusting the backend code, names would sort properly regardless of how they were entered. I also added a link to the Leaderboard page from the Original page, removed old links that were no longer used, and made sure both pages displayed properly on phones as well as laptops."}, {"post_id": 64485, "ts": "2026-09-08T22:15:42Z", "hours": 3.175, "text": "Took me ages to combine the CSS into one file without any errors, but I finally did it :) [took like 1 1/2 hrs btw 😭] Oh, I added a sort function to it, as seen below in the image, and when you hover over an entry it changes the background colour to a bit more grey. Also the leaderboard is finally a table! :)"}, {"post_id": 61189, "ts": "2026-09-04T00:14:55Z", "hours": 1.0667, "text": "I started the Leaderboard’s back- and front-end, with the footer from my Original page added to the Leaderboard page. I also added a first and last name function, with placeholder text in the boxes too. Looking a bit dull right now, but will improve soon enough!"}]...
|
Title: Leaderboard for CyberMatch by @Tennis-Legen Title: Leaderboard for CyberMatch by @Tennis-Legend | Stardance
Devlogs:
I started the Leaderboard’s back- and front-end, with the footer from my Original page added to the Leaderboard page. I also added a first and last name function, with placeholder text in the boxes too. Looking a bit dull right now, but will improve soon enough!
Took me ages to combine the CSS into one file without any errors, but I finally did it :) [took like 1 1/2 hrs btw 😭] Oh, I added a sort function to it, as seen below in the image, and when you hover over an entry it changes the background colour to a bit more grey. Also the leaderboard is finally a table! :)
Since exams picked up, I got the chance to add to this throughout the last few weeks, but didn’t get a chance to write a devlog as consistently as I wanted to, so I have decided to make one big one with each devlog that I would’ve liked to make below: Devlog 3 - 9/9/2026 I mainly worked on the CSS for the Leaderboard page. I gave it a dark theme, added a box around the table and added hover effects for each entry. When hovering over a row, the background changes from black to grey, and the text becomes gold for first place, silver for second, bronze for third and green for all other positions. One thing I had to watch out for was making sure the silver text was still easy to read against the grey background. I also made sure that the new styling didn’t interfere with any of the styling on the Original page. Devlog 4 - 10/9/2026 to 14/9/2026 I finished off most of the Leaderboard page. I added a background, more borders and boxes, and adjusted the styling so it matched the Original page more closely. I also improved the sorting system by stopping users from entering numbers into the name fields and letters into the time field. Another thing I fixed was the sorting of names, because capital letters were being sorted differently to lowercase ones, which meant names were sometimes appearing in the wrong order. After adjusting the backend code, names would sort properly regardless of how they were entered. I also added a link to the Leaderboard page from the Original page, removed old links that were no longer used, and made sure both pages displayed properly on phones as well as laptops.
Just wanted to address some feedback a shipwright gave me: some of the buttons not working on the site is an INTENTIONAL choice. Let me explain: me and two other friends made an original site where we ‘advertised’ our games as one bundle, but I have only included the pages that I made entirely myself. So the only two pages that should load is the Leaderboard page ( https://tennislegend.pythonanywhere.com/leaderboard ) and the Original i guess ‘general’ CyberMatch page ( https://tennislegend.pythonanywhere.cm/cybermatch ). I decided to keep the buttons, and make them seem like clickable by having the cursor change to a pointer, yet lead nowhere, as you can see in an examples pictured below. Every other functionality like entering a value in the leaderboard, the Easter Eggs (like the cat), etc, should work perfectly.
Ships:
I made a leaderboard system for CyberMatch using HTML, CSS, Python and Flask. The project allows users to submit their details and time, then view the results on a separate leaderboard page that can be sorted in different ways. Along the way I added a dedicated leaderboard layout, a dark theme, hover effects, responsive design for phones and laptops, and links between the original page and the leaderboard page. One of the bigger challenges was getting the sorting system to work properly. At one point names with capital letters would sort differently to names with lowercase letters, which caused some entries to appear in the wrong order. I also had to make sure users could only enter appropriate values into each field so that invalid data wouldn’t affect the leaderboard. After making a few backend changes, the sorting became much more reliable and the input fields behaved as expected. I’m most proud of how the leaderboard ended up looking. The dark theme, green accents and rank highlighting make it feel much better than a plain table. When hovering over an entry, the row changes to a grey background and the text colour changes depending on position, with gold for first, silver for second, bronze for third and green for everyone else. To see the project, click the “Try project” button or go to https://cybermatch.onrender.com/leaderboard . To test it out, try adding a few entries with different names and times, then use the sorting options to make sure everything updates correctly. It is also worth testing on both a laptop and a phone, as the layout was adjusted to work properly on different screen sizes....
|
1793005009.3070104
|
1793091409.3070104
|
|
52653
|
FOG by @shan10 | Stardance
|
shan10
|
1
|
36.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T18:05:57Z", "hours": 36.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built FOG, a Steam-like game e-commerce website. I created the frontend using HTML, CSS and JavaScript with pages like Home, Store, About, Support, Login, Cart and Game Details. I connected the RAWG API through the Spring Boot backend to display game images, names, ratings, release dates and descriptions. I also added game categories like popular, top rated and upcoming games, along with a featured game slider and a section that displays four games. For the backend, I used Java with Spring Boot and created REST APIs for fetching games and game details. I connected the project to MySQL using Spring Data JPA and Hibernate to store user information. I added user registration and login. Passwords are encrypted using BCrypt before being stored. I also added session login, current user checking and logout functionality using Spring Security. I added a cart feature using JavaScript and local storage. Users can open a game, view its details and add it to the cart. I also updated the footer with social media links, account links and an email signup form with validation. I kept the RAWG API key outside the frontend and made sure sensitive information was not pushed to GitHub. This project helped me understand frontend and backend communication, REST APIs, Spring Boot, MySQL, authentication, API integration and Git. i couldnt host it bcoz my bday was near ,hope u leave it :)", "repo": "https://github.com/shanmugesh10/Fog-E-commerce-", "demo": "https://shanmugesh10.github.io/Fog-E-commerce-/"}]...
|
[{"post_id": 66785, "ts": "202 [{"post_id": 66785, "ts": "2026-09-12T17:47:43Z", "hours": 5.4167, "text": "Finally almost done with the website ,i will update more while i ship"}, {"post_id": 62470, "ts": "2026-09-05T20:31:12Z", "hours": 9.6911, "text": "FOG BACKEND UPDATE!! Set up Spring Boot for the backend. Connected Spring Boot with MySQL. Created the Game API. Connected RAWG API to get game data. Created a User system and users table. Added password encryption using BCrypt. Created a login API. Connected our actual FOG login page to the backend. Added CORS so frontend and backend could communicate."}, {"post_id": 57130, "ts": "2026-08-29T07:23:05Z", "hours": 5.1617, "text": "An update on my full-stack project, FOG! I’m really enjoying designing everything from scratch and learning something new every day. It’s been an exciting journey so far, and I’m enjoying every step of it.My next goal is to improve the frontend while working on the backend. For that, I’m going to learn and use Spring Boot to build the backend, connect APIs, and integrate SQL with the website.Excited to see where this journey takes me!"}, {"post_id": 55264, "ts": "2026-08-26T23:19:36Z", "hours": 15.4822, "text": "😊This is my first full stack project,i am really excited to build more and learn on my own. Things i did till now: Made a navbar . Designed ‘store’ page of my website. Added banners. Added interactive buttons. Added single product page. I love this project and i hope this comes out great :)"}]...
|
Title: FOG by @shan10 | Stardance
Devlogs:
😊This Title: FOG by @shan10 | Stardance
Devlogs:
😊This is my first full stack project,i am really excited to build more and learn on my own. Things i did till now: Made a navbar . Designed ‘store’ page of my website. Added banners. Added interactive buttons. Added single product page. I love this project and i hope this comes out great :)
An update on my full-stack project, FOG! I’m really enjoying designing everything from scratch and learning something new every day. It’s been an exciting journey so far, and I’m enjoying every step of it.My next goal is to improve the frontend while working on the backend. For that, I’m going to learn and use Spring Boot to build the backend, connect APIs, and integrate SQL with the website.Excited to see where this journey takes me!
FOG BACKEND UPDATE!! Set up Spring Boot for the backend. Connected Spring Boot with MySQL. Created the Game API. Connected RAWG API to get game data. Created a User system and users table. Added password encryption using BCrypt. Created a login API. Connected our actual FOG login page to the backend. Added CORS so frontend and backend could communicate.
Finally almost done with the website ,i will update more while i ship
Ships:
I built FOG, a Steam-like game e-commerce website. I created the frontend using HTML, CSS and JavaScript with pages like Home, Store, About, Support, Login, Cart and Game Details. I connected the RAWG API through the Spring Boot backend to display game images, names, ratings, release dates and descriptions. I also added game categories like popular, top rated and upcoming games, along with a featured game slider and a section that displays four games. For the backend, I used Java with Spring Boot and created REST APIs for fetching games and game details. I connected the project to MySQL using Spring Data JPA and Hibernate to store user information. I added user registration and login. Passwords are encrypted using BCrypt before being stored. I also added session login, current user checking and logout functionality using Spring Security. I added a cart feature using JavaScript and local storage. Users can open a game, view its details and add it to the cart. I also updated the footer with social media links, account links and an email signup form with validation. I kept the RAWG API key outside the frontend and made sure sensitive information was not pushed to GitHub. This project helped me understand frontend and backend communication, REST APIs, Spring Boot, MySQL, authentication, API integration and Git. i couldnt host it bcoz my bday was near ,hope u leave it :)...
|
1793005008.1691704
|
1793091408.1691704
|
|
57684
|
My First Site =D by @Kaori | Stardance
|
Kaori
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T13:48:27Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a website about myself! It has three pages: Home, where I talk about myself, My Art, where I share my drawings, and Projects, where I’ll put my projects (I only have one right now, so hopefully there’ll be more in the future). The hardest part for me was CSS, because honestly, none of it makes sense to me haha. But I’m really proud of my drawings =) and also proud that I managed to make the website!", "repo": "https://github.com/HeyBochechinha/MyFirstSite", "demo": "https://heybochechinha.github.io/MyFirstSite/"}]...
|
[{"post_id": 68065, "ts": "202 [{"post_id": 68065, "ts": "2026-09-14T13:44:01Z", "hours": 0.2572, "text": "I made my README! It’s pretty simple since there isn’t really much to say about my site, so I think it’s good enough."}, {"post_id": 68059, "ts": "2026-09-14T13:23:27Z", "hours": 0.4478, "text": "I made the Projects section! Honestly, this was a little harder (but not that much). It was pretty quick in my opinion, probably because it’s just one card. I still need to understand how some things work, though. The tutorial doesn’t really explain them very well."}, {"post_id": 68046, "ts": "2026-09-14T12:54:36Z", "hours": 0.5614, "text": "Hi! Well, I finished the drawings part on the site."}, {"post_id": 64534, "ts": "2026-09-09T00:52:42Z", "hours": 0.3444, "text": "I just discovered you can make these little cards ;-; I think I’m gonna use them for my drawings."}, {"post_id": 64530, "ts": "2026-09-09T00:30:32Z", "hours": 0.9133, "text": "I watched a few tutorials and started taking parts that I thought were cool and adding them to my website hehe. I discovered that you can change the font and the colors of so many things on a website, and I really liked how it turned out!I also want to thank my brother for teaching me a few things hehe. Anyway, I hope I can keep learning and improving. I also draw, so I’ll be adding my drawings to the “My Art” section!"}, {"post_id": 62542, "ts": "2026-09-05T23:53:00Z", "hours": 0.6786, "text": "I wrote a description, changed the background color, and tried to add an image."}, {"post_id": 62526, "ts": "2026-09-05T23:05:15Z", "hours": 1.1269, "text": "I’m learning HTML; I find it a bit difficult, but I’ll learn it. I just need to understand the logic and the meaning of everything, but I’ll manage."}]...
|
Title: My First Site =D by @Kaori | Stardance
Dev Title: My First Site =D by @Kaori | Stardance
Devlogs:
I’m learning HTML; I find it a bit difficult, but I’ll learn it. I just need to understand the logic and the meaning of everything, but I’ll manage.
I wrote a description, changed the background color, and tried to add an image.
I watched a few tutorials and started taking parts that I thought were cool and adding them to my website hehe. I discovered that you can change the font and the colors of so many things on a website, and I really liked how it turned out!I also want to thank my brother for teaching me a few things hehe. Anyway, I hope I can keep learning and improving. I also draw, so I’ll be adding my drawings to the “My Art” section!
I just discovered you can make these little cards ;-; I think I’m gonna use them for my drawings.
Hi! Well, I finished the drawings part on the site.
I made the Projects section! Honestly, this was a little harder (but not that much). It was pretty quick in my opinion, probably because it’s just one card. I still need to understand how some things work, though. The tutorial doesn’t really explain them very well.
I made my README! It’s pretty simple since there isn’t really much to say about my site, so I think it’s good enough.
Ships:
I created a website about myself! It has three pages: Home, where I talk about myself, My Art, where I share my drawings, and Projects, where I’ll put my projects (I only have one right now, so hopefully there’ll be more in the future). The hardest part for me was CSS, because honestly, none of it makes sense to me haha. But I’m really proud of my drawings =) and also proud that I managed to make the website!...
|
1793005006.9943116
|
1793091406.9943116
|
|
57680
|
NTHS Website by @Summer22 | Stardance
|
Summer22
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T03:41:28Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a website for my high school’s NTHS (National Technical Honor Society) Chapter. I am very proud of how it turned out. The challenging part was probably getting the pictures to work, as I don’t use pictures in code much, so I didn’t know how to use them and had to work around the text and the picture overlapping.", "repo": "", "demo": ""}]...
|
[{"post_id": 74259, "ts": "202 [{"post_id": 74259, "ts": "2026-09-27T02:44:13Z", "hours": 1.0072, "text": "I finally finished the project"}, {"post_id": 73782, "ts": "2026-09-25T23:26:36Z", "hours": 2.1922, "text": "I added Javascript to the code to make it so that the people trying to join the club could see if they are eligable."}, {"post_id": 73614, "ts": "2026-09-25T14:12:39Z", "hours": 5.295, "text": "Ive forgotten to log in a while but I have completed the leadership and membership pages and got rid of the resources and events pages."}, {"post_id": 64599, "ts": "2026-09-09T03:30:59Z", "hours": 2.525, "text": "Added a logo and completed more visual aspects"}, {"post_id": 63333, "ts": "2026-09-07T03:03:25Z", "hours": 1.3142, "text": "I started the visual aspects of the about page"}, {"post_id": 62650, "ts": "2026-09-06T03:35:52Z", "hours": 0.2875, "text": "I have started creating the next page (the about page) on the website"}, {"post_id": 61301, "ts": "2026-09-04T04:26:55Z", "hours": 0.6758, "text": "I was able to add 2 sections to the project."}, {"post_id": 60622, "ts": "2026-09-03T02:29:54Z", "hours": 0.7806, "text": "I was able to fade some of the color together and add some extra sections"}, {"post_id": 60579, "ts": "2026-09-03T01:02:38Z", "hours": 1.2456, "text": "So far I have made a navigation bar, set the color scheme, and made the main header"}]...
|
Title: NTHS Website by @Summer22 | Stardance
Devl Title: NTHS Website by @Summer22 | Stardance
Devlogs:
So far I have made a navigation bar, set the color scheme, and made the main header
I was able to fade some of the color together and add some extra sections
I was able to add 2 sections to the project.
I have started creating the next page (the about page) on the website
I started the visual aspects of the about page
Added a logo and completed more visual aspects
Ive forgotten to log in a while but I have completed the leadership and membership pages and got rid of the resources and events pages.
I added Javascript to the code to make it so that the people trying to join the club could see if they are eligable.
I finally finished the project
Ships:
I made a website for my high school’s NTHS (National Technical Honor Society) Chapter. I am very proud of how it turned out. The challenging part was probably getting the pictures to work, as I don’t use pictures in code much, so I didn’t know how to use them and had to work around the text and the picture overlapping....
|
1793005005.839407
|
1793091405.839407
|
|
57671
|
LEDBLE controller by @shurayh | Stardance
|
shurayh
|
1
|
16.61
|
94
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-16T16:40:44Z", "hours": 15.0, "multiplier": 6.41, "payout": 94, "blessing": "neutral", "text": "LEDBLE CONTROLLER is a web app that allows you to control various functions of your led light strips. It uses the Bluetooth webAPI to connect to your device and let’s you adjust brightness, set specific rgb values and create presets.", "repo": "https://github.com/Shu-rayh/Led-strip-controller", "demo": "https://starlit-lolly-326867.netlify.app"}]...
|
[{"post_id": 70358, "ts": "202 [{"post_id": 70358, "ts": "2026-09-19T01:15:48Z", "hours": 1.6114, "text": "Dev log #10: worked on the things that were requested from me after I shipped. So it got rejected because there was no way for the shipwrights to test it even though i added a video demo I made, so I had to come up with an emulator and add it TwT. I also worked towards rewriting my ai code but that is a bit tricky because its only css I used ai in and how do I re-write it? I also added a feature where it scales the green and blue input values down so it matches the actual red strength on my strips because the red operates 50% dimmer than the other colors so if I select white in the web app what gets displayed irl is like a light blue color. Oh yes and I added the changes to my readme and explained how the emulator works. Lets hope I don’t get rejected again TwT"}, {"post_id": 69213, "ts": "2026-09-16T16:31:41Z", "hours": 1.1344, "text": "Dev log #9: Good news I debugged the code turns out the number inpits were not styling at all because i put a semicolon at the end of this line of code by mistake TwT. input[type=\"range\"]::-webkit-slider-thumb:hover{transform:scale(1.15);}; . I also optimized it for mobile display. I also worked on the Readme and recorded my demo video, I think im finally ready to ship :)"}, {"post_id": 68703, "ts": "2026-09-15T16:01:20Z", "hours": 2.2225, "text": "Dev log #8: Hi guys, Today was a productive day I finished most of the css , just the number input boxes aren’t styling at all for some reason and I need to optimise it for mobile. I also added a footer to let people know what browsers support web bluetooth so this web app can work. Bellow are some images of the webapp on mobile and on desktop."}, {"post_id": 67554, "ts": "2026-09-13T18:09:58Z", "hours": 1.1906, "text": "Dev log #7: I Sketched out the web apps ui design and started coding it, I also decided on a color pallet: #222831 #31363F #76ABAE #EEEEEE"}, {"post_id": 66970, "ts": "2026-09-12T23:27:07Z", "hours": 2.1267, "text": "Dev log #6: Today i started working on the final bits, I reworked the html so its easier to style. So not looking forward to battling with css tomorrow TwT"}, {"post_id": 66262, "ts": "2026-09-12T00:08:03Z", "hours": 1.79, "text": "Dev log #5: Finally got the preset feature working you can now save presets, edit them and delete and everything works when connected to the actually light strips 🥳 (again i apologize for the many pictures i still don’t know how to delete things TwT)"}, {"post_id": 66057, "ts": "2026-09-11T17:00:23Z", "hours": 2.21, "text": "Dev log #4: Im adding a new feature where you can create, edit and delete presets so all you need to do to set it to your favorite color is click on that preset. Unfortunately i haven’t gotten it working as yet will give it another go later today. (also i apologize for the repeated pictures it duplicated for some reason and i cant delete it)"}, {"post_id": 64997, "ts": "2026-09-09T19:28:08Z", "hours": 2.0125, "text": "Dev log #3: Color preview swatch works Hi guys I spent quite some time debugging and trying to figure out why my css for the swatch wasn’t working only to realize that I forgot to put a # in front of a div id number TwT. Everything is working with the BLE ."}, {"post_id": 63282, "ts": "2026-09-07T01:01:51Z", "hours": 0.7719, "text": "Dev log #2: Today I spent a good half an hour trying to figure out why it wasn’t working and why it doesn’t connect only to realise I copied and pasted a few repeated lines (so i don’t need to type it all over again TwT) and forgot to change certain values. Everythings working now though ^^"}, {"post_id": 63249, "ts": "2026-09-06T23:30:11Z", "hours": 1.2656, "text": "Dev log #1: A little bit of background to this project: Hello world! So I have these led light strips that came with a Bluetooth controller, unfortunately the app it came with is unresponsive and doesn’t always work, so I decided to build one myself. So far the website can connect to the light strips, I’m working on it being able to turn the strips on and off, set the rgb values and adjust brightness."}]...
|
Title: LEDBLE controller by @shurayh | Stardance
Title: LEDBLE controller by @shurayh | Stardance
Devlogs:
Dev log #1: A little bit of background to this project: Hello world! So I have these led light strips that came with a Bluetooth controller, unfortunately the app it came with is unresponsive and doesn’t always work, so I decided to build one myself. So far the website can connect to the light strips, I’m working on it being able to turn the strips on and off, set the rgb values and adjust brightness.
Dev log #2: Today I spent a good half an hour trying to figure out why it wasn’t working and why it doesn’t connect only to realise I copied and pasted a few repeated lines (so i don’t need to type it all over again TwT) and forgot to change certain values. Everythings working now though ^^
Dev log #3: Color preview swatch works Hi guys I spent quite some time debugging and trying to figure out why my css for the swatch wasn’t working only to realize that I forgot to put a # in front of a div id number TwT. Everything is working with the BLE .
Dev log #4: Im adding a new feature where you can create, edit and delete presets so all you need to do to set it to your favorite color is click on that preset. Unfortunately i haven’t gotten it working as yet will give it another go later today. (also i apologize for the repeated pictures it duplicated for some reason and i cant delete it)
Dev log #5: Finally got the preset feature working you can now save presets, edit them and delete and everything works when connected to the actually light strips 🥳 (again i apologize for the many pictures i still don’t know how to delete things TwT)
Dev log #6: Today i started working on the final bits, I reworked the html so its easier to style. So not looking forward to battling with css tomorrow TwT
Dev log #7: I Sketched out the web apps ui design and started coding it, I also decided on a color pallet: #222831 #31363F #76ABAE #EEEEEE
Dev log #8: Hi guys, Today was a productive day I finished most of the css , just the number input boxes aren’t styling at all for some reason and I need to optimise it for mobile. I also added a footer to let people know what browsers support web bluetooth so this web app can work. Bellow are some images of the webapp on mobile and on desktop.
Dev log #9: Good news I debugged the code turns out the number inpits were not styling at all because i put a semicolon at the end of this line of code by mistake TwT. input[type="range"]::-webkit-slider-thumb:hover{transform:scale(1.15);}; . I also optimized it for mobile display. I also worked on the Readme and recorded my demo video, I think im finally ready to ship :)
Dev log #10: worked on the things that were requested from me after I shipped. So it got rejected because there was no way for the shipwrights to test it even though i added a video demo I made, so I had to come up with an emulator and add it TwT. I also worked towards rewriting my ai code but that is a bit tricky because its only css I used ai in and how do I re-write it? I also added a feature where it scales the green and blue input values down so it matches the actual red strength on my strips because the red operates 50% dimmer than the other colors so if I select white in the web app what gets displayed irl is like a light blue color. Oh yes and I added the changes to my readme and explained how the emulator works. Lets hope I don’t get rejected again TwT
Ships:
LEDBLE CONTROLLER is a web app that allows you to control various functions of your led light strips. It uses the Bluetooth webAPI to connect to your device and let’s you adjust brightness, set specific rgb values and create presets....
|
1793005003.1980402
|
1793091403.1980402
|
|
57660
|
Program Framework by @Wiiwhbfidow | Stardance
|
Wiiwhbfidow
|
1
|
25.29
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T00:15:56Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple framework that builds on the Single DirectMedia Library (an existing library) which helps to take care of some boilerplate and streamline programming projects. I finished the basics like rendering and a component system, but I plan to add more soon! Attached is a rough design diagram (made in Microsoft Paint)", "repo": "https://github.com/User-Name54321/BPFramework", "demo": "https://github.com/User-Name54321/BPFramework/releases"}]...
|
[{"post_id": 82832, "ts": "202 [{"post_id": 82832, "ts": "2026-10-25T23:44:12Z", "hours": 1.1975, "text": "Today, I polished the library a bit more and expanded the demo. First, I thought about how “game logic” would be executed and tied to the existing framework’s clock. I decided that the easiest way for me to implement this was to create a function pointer which is called every “tick” (a moment in which you want to execute updates, with an ideally constant step time). Second, I removed my reporting/logging implementation. I don’t think it’s worth it to reinvent the wheel for this right now, but in the future, I might pull in libraries like spdlog. I also updated the demo to show how input can result in movement. Uhh, I also fixed a memory leak in which I never cleared the list of sprites to be rendered after each frame, so memory usage would slowly climb, and my fps would slowly drop. That’s an issue no more!"}, {"post_id": 82806, "ts": "2026-10-25T21:26:32Z", "hours": 2.4167, "text": "Yesterday, I worked on setting up a Linux build for BPF. SDL is largely designed to be compatible for a variety of different platforms, so I thought that not at least trying* to do so would be a bit of a waste. I spent way too long tracking down dependencies and setting up WSL, but I finally have a working binary for Linux (minor caveat: the audio wrapper which uses SDL_Mixer may or may not work; I can’t tell if there’s an issue with my virtual environment or with my code."}, {"post_id": 81136, "ts": "2026-10-20T01:04:45Z", "hours": 3.3481, "text": "New functioning audio system In the past few days, I have been working on implementing an audio system that relies on SDL_Mixer, a separate library from SDL. I decided to use SDL_Mixer because I did not want to manually manage the mixing of sounds and management of the different audio streams, like that of which I would need to do if I used SDL’s built in audio tools. I also dropped SDL_image from the library right now because it adds too many dependencies, and I don’t think the additional overhead is needed for my intended functionality right now. In the future, I was looking into incorporating WUFFS, which is a programming language that is built to guarantee memory safety when loading files. (link: https://github.com/google/wuffs ) I wasn’t really sure of what to put for my image, so I put an image of me stepping through and debugging my code to troubleshoot nothing being played. (Spoiler alert: I flipped an operator)"}, {"post_id": 78910, "ts": "2026-10-12T00:30:07Z", "hours": 4.3239, "text": "First, I worked a bit more on my observer system under the hood. Instead of relying on observer objects, the subject just takes a reference to a callback which is intended to be called on the subject’s notify(). The picture is a demo where anytime I press a key it prints “test.” I also went through my code and tried to leave comments which clarify the functions and usage of certain things, which should help to make it more usable. Also, my Git connection keeps breaking, which is enraging!"}, {"post_id": 73362, "ts": "2026-09-25T00:05:25Z", "hours": 0.5894, "text": "I finished wiring up a simple test render which uses the framework’s systems. I also worked a bit on cleaning up some of the code and labelling my intentions/future plans. I also verified that my build configurations were ok, and made sure I had no more memory issues."}, {"post_id": 72486, "ts": "2026-09-23T02:07:10Z", "hours": 6.6931, "text": "I cobbled together a component system which allows for the creation of two types of containers. One strictly contains data, while the other one is slower but can also contain references to other components and functions. I based quite a bit of this on some of the patterns I read in “Game Programming Patterns” by Robert Nystrom, and I really recommend it if you are interested. In addition to that, I had a “small” (massive) memory leak which resulted from me misunderstanding the way SDL handles rendering, so I got it to render stuff and clear the command queue which fixed that. I also started a little bit on a logging system which also uses SDL, but I want to make it more natural to use and more fitting with the way I designed this library."}, {"post_id": 69876, "ts": "2026-09-17T23:50:57Z", "hours": 6.8017, "text": "Started basic window management, input systems, and texture rendering. More soon!"}]...
|
Title: Program Framework by @Wiiwhbfidow | Stardan Title: Program Framework by @Wiiwhbfidow | Stardance
Devlogs:
Started basic window management, input systems, and texture rendering. More soon!
I cobbled together a component system which allows for the creation of two types of containers. One strictly contains data, while the other one is slower but can also contain references to other components and functions. I based quite a bit of this on some of the patterns I read in “Game Programming Patterns” by Robert Nystrom, and I really recommend it if you are interested. In addition to that, I had a “small” (massive) memory leak which resulted from me misunderstanding the way SDL handles rendering, so I got it to render stuff and clear the command queue which fixed that. I also started a little bit on a logging system which also uses SDL, but I want to make it more natural to use and more fitting with the way I designed this library.
I finished wiring up a simple test render which uses the framework’s systems. I also worked a bit on cleaning up some of the code and labelling my intentions/future plans. I also verified that my build configurations were ok, and made sure I had no more memory issues.
First, I worked a bit more on my observer system under the hood. Instead of relying on observer objects, the subject just takes a reference to a callback which is intended to be called on the subject’s notify(). The picture is a demo where anytime I press a key it prints “test.” I also went through my code and tried to leave comments which clarify the functions and usage of certain things, which should help to make it more usable. Also, my Git connection keeps breaking, which is enraging!
New functioning audio system In the past few days, I have been working on implementing an audio system that relies on SDL_Mixer, a separate library from SDL. I decided to use SDL_Mixer because I did not want to manually manage the mixing of sounds and management of the different audio streams, like that of which I would need to do if I used SDL’s built in audio tools. I also dropped SDL_image from the library right now because it adds too many dependencies, and I don’t think the additional overhead is needed for my intended functionality right now. In the future, I was looking into incorporating WUFFS, which is a programming language that is built to guarantee memory safety when loading files. (link: https://github.com/google/wuffs ) I wasn’t really sure of what to put for my image, so I put an image of me stepping through and debugging my code to troubleshoot nothing being played. (Spoiler alert: I flipped an operator)
Yesterday, I worked on setting up a Linux build for BPF. SDL is largely designed to be compatible for a variety of different platforms, so I thought that not at least trying* to do so would be a bit of a waste. I spent way too long tracking down dependencies and setting up WSL, but I finally have a working binary for Linux (minor caveat: the audio wrapper which uses SDL_Mixer may or may not work; I can’t tell if there’s an issue with my virtual environment or with my code.
Today, I polished the library a bit more and expanded the demo. First, I thought about how “game logic” would be executed and tied to the existing framework’s clock. I decided that the easiest way for me to implement this was to create a function pointer which is called every “tick” (a moment in which you want to execute updates, with an ideally constant step time). Second, I removed my reporting/logging implementation. I don’t think it’s worth it to reinvent the wheel for this right now, but in the future, I might pull in libraries like spdlog. I also updated the demo to show how input can result in movement. Uhh, I also fixed a memory leak in which I never cleared the list of sprites to be rendered after each frame, so memory usage would slowly climb, and my fps would slowly drop. That’s an issue no more!
Ships:
I made a simple framework that builds on the Single DirectMedia Library (an existing library) which helps to take care of some boilerplate and streamline programming projects. I finished the basics like rendering and a component system, but I plan to add more soon! Attached is a rough design diagram (made in Microsoft Paint)...
|
1793005001.9867795
|
1793091401.9867795
|
|
52630
|
Joke teller by @Triter12hi | Stardance
|
Triter12hi
|
1
|
6.0
|
9
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T21:35:52Z", "hours": 6.0, "multiplier": 1.37, "payout": 9, "blessing": "neutral", "text": "v1.0.0 ok guys if you click Try project it will take you to a github page there you will find Joke_teller.exe (that’s the executable i made) click on it then when downloaded just run it. I am so happy that my project is finally shipped i hope you guys enjoy it(btw i might ship this again sometime) ;D", "repo": "https://github.com/lenacalgary-bit/Joke-Teller", "demo": "https://github.com/lenacalgary-bit/Joke-Teller/releases/tag/Stardance"}]...
|
[{"post_id": 72534, "ts": "202 [{"post_id": 72534, "ts": "2026-09-23T04:47:31Z", "hours": 0.4939, "text": "v0.11 ok guys i might ship this on the 23 cause i don’t have much more to add except adding jokes so ill ship it, add all the jokes found in Just Joking btw all the tongue twisters found in Just Joking are in the program (warning i was trying to get my file usable on the web but it didn’t work so you guys might have to download it) there are 21 q & a jokes, 39 knock knock jokes, 45 tongue twisters, andddd 11 puns = 116 jokes in total"}, {"post_id": 71601, "ts": "2026-09-21T04:12:29Z", "hours": 0.3453, "text": "v0.10, Changes! Well I had to save my streak but… We got more puns! Also v0.8 had an exit button but i removed it so when i will make my program usable on web it won’t cause glitches Spoiler Alert! (if you don’t want to get spoiled don’t look at pic) btw if you guys want to vote for me to count all the jokes currently in my program please do so in the comments(trust me its more than 30 at least)"}, {"post_id": 70950, "ts": "2026-09-20T02:53:58Z", "hours": 0.98, "text": "v0.9 plz help me guys i seem to can’t get a good color for the joke buttons also i repositioned the buttons and added puns"}, {"post_id": 69358, "ts": "2026-09-16T21:33:17Z", "hours": 0.6792, "text": "v0.8 shifted the text in buttons and and added all the tongue twisters found in Just Joking"}, {"post_id": 67687, "ts": "2026-09-13T21:16:24Z", "hours": 0.9492, "text": "Ok v0.7 has now tongue twisters along with a few more tweaks, let me know in the comments about what jokes i should add"}, {"post_id": 65811, "ts": "2026-09-11T06:11:52Z", "hours": 0.3061, "text": "idk what to say v0.6 thats all"}, {"post_id": 65161, "ts": "2026-09-10T03:22:53Z", "hours": 0.3147, "text": "v0.5 ok ok i did that just so i wouldnt lose my streak but hey i added 10 more knock knock jokes"}, {"post_id": 64505, "ts": "2026-09-08T23:13:07Z", "hours": 0.6339, "text": "v0.4! finally you have a choice of the types of jokes! i know the last two devlogs were kinda lousy so i decided it was time to change things up"}, {"post_id": 64046, "ts": "2026-09-08T05:33:35Z", "hours": 0.3186, "text": "v0.3 uoh v0.2 had a serious bug! thankfully it is fixed and now there are now 21 jokes! but there are many jokes out there as soon as i have a free afternoon i will post a devlog with many added jokes"}, {"post_id": 63345, "ts": "2026-09-07T03:31:58Z", "hours": 0.2667, "text": "v0.2 added 8 more jokes"}, {"post_id": 61776, "ts": "2026-09-04T21:03:03Z", "hours": 1.0019, "text": "Basicly v0.1 it is simple but i will continue to add jokes and features. Hope you guys like it :)"}]...
|
Title: Joke teller by @Triter12hi | Stardance
Dev Title: Joke teller by @Triter12hi | Stardance
Devlogs:
Basicly v0.1 it is simple but i will continue to add jokes and features. Hope you guys like it :)
v0.2 added 8 more jokes
v0.3 uoh v0.2 had a serious bug! thankfully it is fixed and now there are now 21 jokes! but there are many jokes out there as soon as i have a free afternoon i will post a devlog with many added jokes
v0.4! finally you have a choice of the types of jokes! i know the last two devlogs were kinda lousy so i decided it was time to change things up
v0.5 ok ok i did that just so i wouldnt lose my streak but hey i added 10 more knock knock jokes
idk what to say v0.6 thats all
Ok v0.7 has now tongue twisters along with a few more tweaks, let me know in the comments about what jokes i should add
v0.8 shifted the text in buttons and and added all the tongue twisters found in Just Joking
v0.9 plz help me guys i seem to can’t get a good color for the joke buttons also i repositioned the buttons and added puns
v0.10, Changes! Well I had to save my streak but… We got more puns! Also v0.8 had an exit button but i removed it so when i will make my program usable on web it won’t cause glitches Spoiler Alert! (if you don’t want to get spoiled don’t look at pic) btw if you guys want to vote for me to count all the jokes currently in my program please do so in the comments(trust me its more than 30 at least)
v0.11 ok guys i might ship this on the 23 cause i don’t have much more to add except adding jokes so ill ship it, add all the jokes found in Just Joking btw all the tongue twisters found in Just Joking are in the program (warning i was trying to get my file usable on the web but it didn’t work so you guys might have to download it) there are 21 q & a jokes, 39 knock knock jokes, 45 tongue twisters, andddd 11 puns = 116 jokes in total
Ships:
v1.0.0 ok guys if you click Try project it will take you to a github page there you will find Joke_teller.exe (that’s the executable i made) click on it then when downloaded just run it. I am so happy that my project is finally shipped i hope you guys enjoy it(btw i might ship this again sometime) ;D...
|
1793005000.767717
|
1793091400.767717
|
|
57600
|
Microfreelance Hub by @hazypak | Stardance
|
hazypak
|
1
|
21.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T16:44:31Z", "hours": 21.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made a platform for students to post about their achivements , its like linkledin but focuses on students and helps them build their portfolio , this is ship one , I know there are errors but since my school started i cant fix them i am tooo busy , i hope it can ship and then i can work on it even after stardance hopefully", "repo": "https://github.com/hazypak/micro-freelance-hub", "demo": "https://micro-freelance-hub.vercel.app/"}]...
|
[{"post_id": 74546, "ts": "202 [{"post_id": 74546, "ts": "2026-09-27T16:39:59Z", "hours": 0.4222, "text": "Finalizied everything fixed google auth issue (hopefully)"}, {"post_id": 60601, "ts": "2026-09-03T01:52:06Z", "hours": 0.6581, "text": "updated the read me and fixed google login issues"}, {"post_id": 60488, "ts": "2026-09-02T21:06:42Z", "hours": 1.0914, "text": "just had to run clear on claude code to stop autocompact thrashing and save some tokens by only scanning the essential auth files for microfreelance hub completely revamped the ui to be super playful and widget based with soft rounded borders and cute micro interactions fixed the signup ux so it actually tells you to check your gmail for the activation link added google oauth through supabase so you can just one click sign in and threw cloudflare turnstile captcha on the forms to block bots also used the graphify skill to map it all out and squashed some typescript errors while i was at it finally coming together nicely cheerios (for some reason my claude was having a thinking crisis (if that exists lol))"}, {"post_id": 60367, "ts": "2026-09-02T17:36:13Z", "hours": 18.9314, "text": "Before I could even start building Microfreelance Hub, I had to configure my setup from scratch. I connected Claude Code using Omni Router and literally logged into 44 free providers just to stack enough tokens. Sorting out all the skills, plugins, and CLI configurations was easily the hardest part—first time for everything, lol!Once the environment was set up, I spent a full hour crafting and perfecting my prompt before hitting enter. Then I was actually ready.What followed was a 6-day saga of hitting rate limits, battling random API failures, and counting 27 separate 503 errors. But after grinding through all of that, the website is finally built and alive!Right now, I’m working through a quick deployment bug to get the live site running smoothly. School just started back up, so I’m juggling classes while sorting this out. I’ve built a bunch of projects before—like my game Pixel Planet Healers and my personal portfolio—but I’m pushing Claude Code to its absolute limits on this build.Here’s my first official devlog. Cheers to anyone reading this! :D"}]...
|
Title: Microfreelance Hub by @hazypak | Stardance
Title: Microfreelance Hub by @hazypak | Stardance
Devlogs:
Before I could even start building Microfreelance Hub, I had to configure my setup from scratch. I connected Claude Code using Omni Router and literally logged into 44 free providers just to stack enough tokens. Sorting out all the skills, plugins, and CLI configurations was easily the hardest part—first time for everything, lol!Once the environment was set up, I spent a full hour crafting and perfecting my prompt before hitting enter. Then I was actually ready.What followed was a 6-day saga of hitting rate limits, battling random API failures, and counting 27 separate 503 errors. But after grinding through all of that, the website is finally built and alive!Right now, I’m working through a quick deployment bug to get the live site running smoothly. School just started back up, so I’m juggling classes while sorting this out. I’ve built a bunch of projects before—like my game Pixel Planet Healers and my personal portfolio—but I’m pushing Claude Code to its absolute limits on this build.Here’s my first official devlog. Cheers to anyone reading this! :D
just had to run clear on claude code to stop autocompact thrashing and save some tokens by only scanning the essential auth files for microfreelance hub completely revamped the ui to be super playful and widget based with soft rounded borders and cute micro interactions fixed the signup ux so it actually tells you to check your gmail for the activation link added google oauth through supabase so you can just one click sign in and threw cloudflare turnstile captcha on the forms to block bots also used the graphify skill to map it all out and squashed some typescript errors while i was at it finally coming together nicely cheerios (for some reason my claude was having a thinking crisis (if that exists lol))
updated the read me and fixed google login issues
Finalizied everything fixed google auth issue (hopefully)
Ships:
I have made a platform for students to post about their achivements , its like linkledin but focuses on students and helps them build their portfolio , this is ship one , I know there are errors but since my school started i cant fix them i am tooo busy , i hope it can ship and then i can work on it even after stardance hopefully...
|
1793004999.646527
|
1793091399.646527
|
|
38768
|
Stardew calc by @hrushal | Stardance
|
hrushal
|
1
|
18.29
|
157
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-22T16:31:39Z", "hours": 18.0, "multiplier": 8.57, "payout": 157, "blessing": "neutral", "text": "Starcalc YES THIS IS ANOTHER STARDEW CALCULATOR The problem i wanted to solve w this was making important information thats slighly harder to find on the wiki and requires a lot of clicks like gold/day for each crop, which monster drops what and how to make some artisanal goods be shown upfront so instead of just going down rabbit holes of reddit and wiki i could just open the website and check what things i can do w a specific item and which equipment to use The website has 4 core functions rn which are Crops Monsters Artisanal goods Animals The information is laid in simple to read cards with a image and clear description and the important numbers are highlighted and to avoid clutter produce etc is grouped under a dropdown so you arent bombarded with information you dont need I had a lot of trouble w finalizing the design AND WORST OF ALL TSPARTICLES and then making card components for every page cuz the data is diff for everything and i decided individual components would speed it up", "repo": "https://github.com/Hrushal-Nikhare/star", "demo": "https://star-xi-seven.vercel.app/"}]...
|
[{"post_id": 72637, "ts": "202 [{"post_id": 72637, "ts": "2026-09-23T12:29:59Z", "hours": 0.2906, "text": "Fixed readme with images and website had no title 😭"}, {"post_id": 71390, "ts": "2026-09-20T18:52:44Z", "hours": 3.7192, "text": "WE ARE BACK W IT AND WE FINSIHED THE PROJECT ported the card component to every single sub page and made sure it works shifted sm styles into global.css removed the search route and slug to make it static render able also cuz i didnt find a use for it l8r DEPOLYED ON VERCEL https://star-xi-seven.vercel.app/ added back to home button and mobile compatibility THANK YOU EVERYONE"}, {"post_id": 70150, "ts": "2026-09-18T15:46:19Z", "hours": 1.6047, "text": "DONE W CARD COMPONENT THEY LOOK SO GOOD took 1.5hrs but it looks good atleast 😭"}, {"post_id": 69233, "ts": "2026-09-16T16:57:19Z", "hours": 3.8619, "text": "New homepage and then made a card component for showing the animals (for now) Learnt about how logic in svelte is done w {#} and {/} and then also components and nested objects were pmo i have to make the cards pretty and then if conditionals on prices and dropdown for the produce and tags and then layout too so thanks for reading"}, {"post_id": 60396, "ts": "2026-09-02T18:13:51Z", "hours": 3.5, "text": "NEW NOT SO PLAIN BACKDROP tldr: basically i gave up so i wanted the plans and the wine bottle to have this cute colored circles to ‘splash’ out when you click it But then i look for svelte particle libraries and its only tsparticles which is FINE BUT HOLY DEBUGGING so i went on a side quest to learn it DECENTLY and thats how we have a background ik its not fancy or anything or a lot of added code but the debugging uh let not also shifted to bun for everything and had some issues w vite asw also bun has great support for this stuff crazy"}, {"post_id": 40874, "ts": "2026-08-04T17:53:29Z", "hours": 2.5747, "text": "Redeigned the home page cuz it looked really boring and life less and nothing like stardew spent an hr making the ui and then aft clg started has a urge to redesign the ui so um here we are (feedback and logo help appreciated) Tried three diff styles to see which one i like some of them were: Notebook flipping ish Purple heatmap ahh Cool png animation stuff ( gave up before trying bc couldnt find assets) THE title above is currently in the works of making the A a Star cuz hehe stardew starcalc The Pngs will hopefully have a transition animation where the coffee plant sheds the berries and it swoops to the crops page animals has egg particles artisanal has a foam jet or smth and the slime for moster loses his color and becomes the resource now ill have to ditch all of my programming of the previous ui and start all over again but lowk worth it i need it to be pretty cuz i said so. added both old and new ui for yall to rate and tell pls help me i suck at ui"}, {"post_id": 36960, "ts": "2026-07-29T11:48:44Z", "hours": 3.1017, "text": "Season and Professions Mocked up in Figma purple color scheme Handmade font/icons 2.Chose svelte for no reason (other than to learn) 3. Made Gemni write a data.json to Prototype w (eventually will nosql/sqllite it) 4. Season Select using radios that look like buttons w functioning hover and select colors ( took alot of time and help NO AI THO ALL DOCS) 5. Profession Select drafted but need to Read and add the perks to the data/process in js"}]...
|
Title: Stardew calc by @hrushal | Stardance
Devlo Title: Stardew calc by @hrushal | Stardance
Devlogs:
Season and Professions Mocked up in Figma purple color scheme Handmade font/icons 2.Chose svelte for no reason (other than to learn) 3. Made Gemni write a data.json to Prototype w (eventually will nosql/sqllite it) 4. Season Select using radios that look like buttons w functioning hover and select colors ( took alot of time and help NO AI THO ALL DOCS) 5. Profession Select drafted but need to Read and add the perks to the data/process in js
Redeigned the home page cuz it looked really boring and life less and nothing like stardew spent an hr making the ui and then aft clg started has a urge to redesign the ui so um here we are (feedback and logo help appreciated) Tried three diff styles to see which one i like some of them were: Notebook flipping ish Purple heatmap ahh Cool png animation stuff ( gave up before trying bc couldnt find assets) THE title above is currently in the works of making the A a Star cuz hehe stardew starcalc The Pngs will hopefully have a transition animation where the coffee plant sheds the berries and it swoops to the crops page animals has egg particles artisanal has a foam jet or smth and the slime for moster loses his color and becomes the resource now ill have to ditch all of my programming of the previous ui and start all over again but lowk worth it i need it to be pretty cuz i said so. added both old and new ui for yall to rate and tell pls help me i suck at ui
NEW NOT SO PLAIN BACKDROP tldr: basically i gave up so i wanted the plans and the wine bottle to have this cute colored circles to ‘splash’ out when you click it But then i look for svelte particle libraries and its only tsparticles which is FINE BUT HOLY DEBUGGING so i went on a side quest to learn it DECENTLY and thats how we have a background ik its not fancy or anything or a lot of added code but the debugging uh let not also shifted to bun for everything and had some issues w vite asw also bun has great support for this stuff crazy
New homepage and then made a card component for showing the animals (for now) Learnt about how logic in svelte is done w {#} and {/} and then also components and nested objects were pmo i have to make the cards pretty and then if conditionals on prices and dropdown for the produce and tags and then layout too so thanks for reading
DONE W CARD COMPONENT THEY LOOK SO GOOD took 1.5hrs but it looks good atleast 😭
WE ARE BACK W IT AND WE FINSIHED THE PROJECT ported the card component to every single sub page and made sure it works shifted sm styles into global.css removed the search route and slug to make it static render able also cuz i didnt find a use for it l8r DEPOLYED ON VERCEL https://star-xi-seven.vercel.app/ added back to home button and mobile compatibility THANK YOU EVERYONE
Fixed readme with images and website had no title 😭
Ships:
Starcalc YES THIS IS ANOTHER STARDEW CALCULATOR The problem i wanted to solve w this was making important information thats slighly harder to find on the wiki and requires a lot of clicks like gold/day for each crop, which monster drops what and how to make some artisanal goods be shown upfront so instead of just going down rabbit holes of reddit and wiki i could just open the website and check what things i can do w a specific item and which equipment to use The website has 4 core functions rn which are Crops Monsters Artisanal goods Animals The information is laid in simple to read cards with a image and clear description and the important numbers are highlighted and to avoid clutter produce etc is grouped under a dropdown so you arent bombarded with information you dont need I had a lot of trouble w finalizing the design AND WORST OF ALL TSPARTICLES and then making card components for every page cuz the data is diff for everything and i decided individual components would speed it up...
|
1793004998.4800441
|
1793091398.4800441
|
|
52596
|
My first slack bot! - Blackreaper by @DaviSilva | My first slack bot! - Blackreaper by @DaviSilva | Stardance...
|
DaviSilva
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-21T01:02:51Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I built I made a Slack bot called BlackReaper. It has a few different commands like ping, help, cat facts, jokes, dice, coin flip, and random dog photos. Some of them also use APIs, like the cat fact, joke, and dog photo commands. I also added the three extra commands that were required for the challenge. They are all in my code, but for some reason the three new ones aren’t showing up in Slack. I’m not really sure what happened with the configuration, but I’m still shipping the project since the commands are already in the code. If someone knows what I did wrong or can help me get them working in Slack, I’d really appreciate it. What was challenging I started this project basically knowing nothing about JavaScript, so there was definitely a lot to figure out. The setup was probably the hardest part for me, especially VS Code and the Nest configuration. I ran into a bunch of problems and had to use AI to help me figure some of them out, but I also learned from fixing those problems. What I’m proud of I’m really proud that I actually finished the project. This is my first project on StarDance, and I started it without really knowing JavaScript or how to make a bot. Seeing everything actually work after all the problems I had was really cool. What people should know I put a lot of time and effort into this project and made it with a lot of care. The main commands are working, and the three extra commands are already in the code. The only thing I’m still trying to figure out is why those new commands aren’t showing up in Slack. If someone can help me fix that, I’d really appreciate it!", "repo": "https://github.com/X-BlackScythe/BlackReaper---First-Slack-Bot-", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 71534, "ts": "202 [{"post_id": 71534, "ts": "2026-09-21T00:54:33Z", "hours": 0.35, "text": "So for this new version I added 4 new commands, the joke example from the mission guide, roll a dice, flip a coin and dog photo, Idk if I have to restart something or what but on the VsCode the code for the commands is there but when I try using them on Slack they do not appear…. I’ll ship the project because IDK what to do now, But I did my work with everything that I have :)"}, {"post_id": 62372, "ts": "2026-09-05T18:18:48Z", "hours": 0.3969, "text": "Almost done! - First Slack Bot. Today I made my nest account and got to put my bot (BlackReaper) to work 24/7, I had some problems along the way and had the help of AI to explain it to me, the biggest problem that I had was with the name Index.js hahahaha, I was trying to run it by writing “ node index.js” and it wasn’t working because I had to write “ node Index.js” with the big “i”, I spent 5 minutes just to notice this. I want to add at least 1 more command with API before finishing the project. I also added in the GitHub repository the “README.ms”. Thanks for reading!"}, {"post_id": 54788, "ts": "2026-08-25T22:04:23Z", "hours": 0.4278, "text": "(DevLog #01) First Slack Bot - Blackreaper Until yesterday I didn’t know anything about a slack bot, but today I got to make one and put it to work! I named it Blackreaper, it main purpose its to respond commands in the channel #bot-spam on (Hack Club - Slack) , it has the commands /blackreaper-ping /blackreaper-help and /blackreaper-catfacts ( The last one use an API to get the facts!), I got some problems with VsCode Git and NodeJS but nothing seriously just some configurations, I want to add more commands that uses API’s in the future. That is my first DevLog! Thanks!"}]...
|
Title: My first slack bot! - Blackreaper by @DaviS Title: My first slack bot! - Blackreaper by @DaviSilva | Stardance
Devlogs:
(DevLog #01) First Slack Bot - Blackreaper Until yesterday I didn’t know anything about a slack bot, but today I got to make one and put it to work! I named it Blackreaper, it main purpose its to respond commands in the channel #bot-spam on (Hack Club - Slack) , it has the commands /blackreaper-ping /blackreaper-help and /blackreaper-catfacts ( The last one use an API to get the facts!), I got some problems with VsCode Git and NodeJS but nothing seriously just some configurations, I want to add more commands that uses API’s in the future. That is my first DevLog! Thanks!
Almost done! - First Slack Bot. Today I made my nest account and got to put my bot (BlackReaper) to work 24/7, I had some problems along the way and had the help of AI to explain it to me, the biggest problem that I had was with the name Index.js hahahaha, I was trying to run it by writing “ node index.js” and it wasn’t working because I had to write “ node Index.js” with the big “i”, I spent 5 minutes just to notice this. I want to add at least 1 more command with API before finishing the project. I also added in the GitHub repository the “README.ms”. Thanks for reading!
So for this new version I added 4 new commands, the joke example from the mission guide, roll a dice, flip a coin and dog photo, Idk if I have to restart something or what but on the VsCode the code for the commands is there but when I try using them on Slack they do not appear…. I’ll ship the project because IDK what to do now, But I did my work with everything that I have :)
Ships:
What I built I made a Slack bot called BlackReaper. It has a few different commands like ping, help, cat facts, jokes, dice, coin flip, and random dog photos. Some of them also use APIs, like the cat fact, joke, and dog photo commands. I also added the three extra commands that were required for the challenge. They are all in my code, but for some reason the three new ones aren’t showing up in Slack. I’m not really sure what happened with the configuration, but I’m still shipping the project since the commands are already in the code. If someone knows what I did wrong or can help me get them working in Slack, I’d really appreciate it. What was challenging I started this project basically knowing nothing about JavaScript, so there was definitely a lot to figure out. The setup was probably the hardest part for me, especially VS Code and the Nest configuration. I ran into a bunch of problems and had to use AI to help me figure some of them out, but I also learned from fixing those problems. What I’m proud of I’m really proud that I actually finished the project. This is my first project on StarDance, and I started it without really knowing JavaScript or how to make a bot. Seeing everything actually work after all the problems I had was really cool. What people should know I put a lot of time and effort into this project and made it with a lot of care. The main commands are working, and the three extra commands are already in the code. The only thing I’m still trying to figure out is why those new commands aren’t showing up in Slack. If someone can help me fix that, I’d really appreciate it!...
|
1793004997.3468723
|
1793091397.3468723
|