|
38432
|
Servo Utility Platform by @Kacenta | Stardance
|
Kacenta
|
1
|
74.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T14:18:05Z", "hours": 74.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Devlog #8 - Actually Finished S.U.P. - v1.0 Okay, NOW it’s finished. GO HERE TO SEE VIDEO Last time I said we were getting close. Now I can finally confirm it! S.U.P. is finished. There was still a surprising amount of work left after v0.9.1, especially around handling different servo types. I ended up reworking a lot of the servo logic to make everything work together properly. Important Features Added Full support for different servo types , including 90° , 180° positional , and 360° continuous-rotation servos Added working pulse-width calibration for servo control Added working servo sweeps for testing positional servos Finished the servo type handling system Improved calibration logic so it works correctly with the selected servo type Finished saved profile handling , including persistent storage across resets Finished the joystick calibration system Completed the C.E.A. Laser Calibration system Finished the Settings , Debug , Calibration , Manual Control , and other menu systems Added and tested the final error handling and debugging tools Final Testing I tested the main workflows with real hardware instead of relying on a simulation (as I always have). The Demo Video The final demo video is finished and uploaded here: https://www.youtube.com/watch?v=IzWqsmjGq4U I tried to show the project itself rather than only talking about the code and development process. One thing I did not manage to include properly was footage of the full physical servo calibration process. The only calibration footage I kept was the joystick calibration. Everything works though :D. Sorry about that. The actual calibration system and everything else was still tested and works. I explain the missing footage in the video. Final Result S.U.P. started as a small ESP32 servo tester and grew into a much larger system than I originally expected. TODO There are still ideas I might work on in the future, but they are no longer required for the first release: Custom PCB Custom 3D Case Advanced diagnostics (I’ll have to open up the servo) General code cleanup and optimization For now, though: S.U.P. v1.0 is done.", "repo": "https://github.com/Denkata7622/Servo-Utility-Platform", "demo": ""}]...
|
[{"post_id": 73094, "ts": "202 [{"post_id": 73094, "ts": "2026-09-24T11:30:47Z", "hours": 7.7653, "text": "Devlog #8 - Actually Finished S.U.P. - v1.0 Okay, NOW it’s finished. (GO HERE TO SEE VIDEO: https://www.youtube.com/watch?v=IzWqsmjGq4U ) Last time I said we were getting close. Now I can finally confirm it! S.U.P. is finished. There was still a surprising amount of work left after v0.9.1, especially around handling different servo types. I ended up reworking a lot of the servo logic to make everything work together properly. Important Features Added Full support for different servo types , including 90° , 180° positional, and 360° continuous-rotation servos Added working pulse-width calibration for servo control Added working servo sweeps for testing positional servos Finished the servo type handling system Improved calibration logic so it works correctly with the selected servo type Finished saved profile handling , including persistent storage across resets Finished the joystick calibration system Completed the C.E.A. Laser Calibration system Finished the Settings , Debug , Calibration , Manual Control , and other menu systems Added and tested the final error handling and debugging tools Final Testing I tested the main workflows with real hardware instead of relying on a simulation (as I always have). The Demo Video The final demo video is finished and uploaded here: https://www.youtube.com/watch?v=IzWqsmjGq4U I tried to show the project itself rather than only talking about the code and development process. One thing I did not manage to include properly was footage of the full physical servo calibration process. The only calibration footage I kept was the joystick calibration. Everything works though :D. Sorry about that. The actual calibration system and everything else was still tested and works. I explain the missing footage in the video. Final Result S.U.P. started as a small ESP32 servo tester and grew into a much larger system than I originally expected. TODO There are still ideas I might work on in the future, but they are no longer required for the first release: Custom PCB Custom 3D Case Advanced diagnostics (I’ll have to open up the servo) General code cleanup and optimization For now, though: S.U.P. v1.0 is done."}, {"post_id": 69646, "ts": "2026-09-17T14:15:59Z", "hours": 7.7436, "text": "Devlog #7 - Getting Closer S.U.P. - v0.9.1 To be honest, i kinda lied last time… There is still a lot of work to do, espesially about the servoType handling Important Features Added Added WORKING Joystick Calibration + integrated additional calibration logic directly in joystick movement (toggable, of course) You can finally use the manualControl() with a fully calibrated custom profile . Changing the selected profile now updates automatically . Huge improvements to Selecting Servo Type. Now calibration works for both 90° and 180° servos. Added Servo Test Sweep ! Added a custom option in the main menu to change profiles Wrote the About me Section (Finally) Less Important Features Added Isolated updateSelectedProfile() in its own function so i can reuse it (like 100+ lines of code saved there…) Added debugger function (in “Debug” menu) for testing the joystick calibration Added a global int - actionDelay = 300ms. I have always added a delay(300) before changing display screens, starting/ending actions, ect.. to keep the app posished and remove the irritation of “fake”/“accidental” double, triple and spam clicks Fixed a bug in the normal joystick debugger function TODO [ ] Add support for 360 deg servos basically writing a custom new version of each function but for rotating servos because they are fundamentally different then positional servos (such as 90° and 180°) and don’t integrate well into the current ecosystem. [ ] Show which saved profile is for which servo type [ ] Film the video for the v1.0 release (we are really getting closer :D)."}, {"post_id": 65921, "ts": "2026-09-11T11:51:55Z", "hours": 10.3236, "text": "Devlog #6 - THE “ALMOST FINISHED” [Some original greeting here]! Time goes by, so does progress on this calibrator tool. I really started to like it to be honest. It has been really fun making all the additional systems around the calibration, such as the “Debug”, “Settings”, (soon “About” too), all the UI polish and case handling. Even the NVS storage setup (basically the real ESP32 storage instead of the RAM-like one it usually uses) teached me a lot and I’m proud of how far this project has come. But enough yapping. I FINALLY Taped the Laser module to the servo bracket! Also, I put it in a box of TicTac (image below XD) so it doesnt fall and give wrong reading. Then I filled the box with COINS so it doesn’t wiggle during servo movement. Just WILD XD So, what did i update in this 1 week? - Well… A LOT. If i had to list it: Made the settings finally work! Fixed a bug where option scroll started when there was no need at all Saved all settings, preferences and user profiles to permament NVS storage Changed ALL delay() instances with millis() (Where possible/wanted). Just this took like 4 hours :I (Like I said before) - FINALLY Taped the Laser module to the servo bracket! Also, I put it in a box of TicTac (image below XD) so it doesnt fall and give wrong reading. Then I filled the box with coins so it gets heavy enough to not wiggle during joystick movement :D Changed a breadboard because for some reason my jumper wires started losing lots of voltage and the connectors were really loose for some reason Polished the UI, A LOT. I probably plan to change from normal lists to Flipper Zero-style menu soon. Added a “Simulate Errors” feature in the “Debug” menu to test if my error and case handling works well Fixed multiple smaller bugs… I think that’s pretty much it, there could be more smaller things I don’t remember rn (sorry about that). Notes Sadly went a little above 10 hours this time D; - I sill have lots of things to do - mainly polish messages, small inconsistensies, ect. I kinda gave up on adding a keyboard - it is pretty unnecessary and will add a lot more cases to handle for almost no benefit. These days I will be filming the final video for the v1.0 release! I accept any ideas from you for future features and filming advice."}, {"post_id": 61815, "ts": "2026-09-04T22:00:19Z", "hours": 9.6508, "text": "Devlog #5 - Settings & Profile Storage ## Unknown - 5th September 2026 ### Version: v0.4.0-settinger Hello again! Yeah… I kinda forgot the journal existed again XD A LOT has changed since the last devlog, especially internally. The project is starting to feel less like a giant prototype held together by hopes and prayers and more like an actual tool. ### Main events - Finally started working properly on the Settings menu ! - Added persistent settings using the ESP32’s Preferences storage - Basically all the important environment variables are now stored, including: - - Servo / joystick pins - - Axis inversion and swapping - - Speed settings and multipliers - - Calibration parameters - - Joystick deadzones and offsets - - Debug mode - - Display and scrolling settings - - Calibration list information - - Various delays and timing values - Added saveSettings() and loadSettings() functions so I don’t have to hardcode everything every single time the board boots - Settings also have default values, so if there is no saved value yet, the program still has a working configuration - Started separating the stored data into different Preferences namespaces , so Settings and Servo Profiles don’t all get thrown into one giant storage section - Calibration Lists got actual persistent storage, meaning the calibration data doesn’t disappear every time the ESP32 restarts - Added more profile-related error handling - Continued expanding the 3-digit error code system , which is starting to look suspiciously like I accidentally created my own mini error protocol XD - Did a LOT more bug hunting and general code cleanup - Also spent way too much time making tiny UI things work properly because apparently I have decided that a 128x64 OLED deserves the same amount of attention as a full desktop application :I ### Some of the more important stuff The biggest thing here is probably the storage system. Before, most of the variables were basically just sitting in the code waiting for me to change them manually. Now I can save them to the ESP32 and load them again later. For example: settings . putDouble ( \"speedMultiplier\" , speedMultiplier ); and later: speedMultiplier = settings . getDouble ( \"speedMultiplier\" , 1 ); So if I change a setting, restart the board, and come back later, it stays changed. This also means I finally don’t have to keep scrolling to the top of a 1500+ line sketch every time I want to change something XD ### What’s next? - [ ] Actually TEST the full calibration workflow with a real servo - [ ] Add an X-axis animation to the Settings menu when changing variables - [ ] Add a way to name calibration list slots - [ ] Make the amount of list slots dynamically generated instead of hardcoded - - [ ] Add an “Add New Slot” option - [ ] Add an on-screen keyboard or find a decent library for one - [ ] Add a way to connect to the ESP32-S3’s second USB port and extract saved servo profiles as files - [ ] Keep murdering bugs until the project stops finding new ones ### Notes I’m starting to realize that the actual servo movement part was probably the easy bit. The annoying part is everything around it. Menus, storage, scrolling, profile management, error handling, input validation… At least it makes the project way more interesting :D"}, {"post_id": 53899, "ts": "2026-08-24T16:29:53Z", "hours": 7.9342, "text": "Devlog #4 - UI Polish Hello! Probably not one of the most impressive things, but a good UI is something people always respect (just subcounciously… ). Added prettyPrint() funtion, which essentially gives me the ability to parse any long message into separate pages with skippable delays. All you need to do is just click once you finished reading the page. For now I’m experimenting with the delay but 7.5 seconds feels natural for 64x128 display (probably around ~40 words). Sadly, I need to rework some of the functions for the calibration picker because there is just no way to go back to the main menu at this point.. Added some Display Error Function, which pretty much relies on prettyPrint(). Added some helper functions for things i consistently call to lower the ammount of same-purpose code and managed to bring the sketch down to ~1500 lines! The attached image is the skippable delay I kinda invented because I didn’t want to use milis() XD."}, {"post_id": 48030, "ts": "2026-08-16T10:02:26Z", "hours": 9.9022, "text": "Devlog #3 - Servo Profiles Hello everyone, We just hit a new milestone in the development of this project: Laser Calibration Profiles How do They Work? Right now we have a menu where you can choose between 3 calibration profiles each having a different ammount of samples ( the more, the better, but slower due to the higher ammount of measurements) Basic ( 5 samples ) [0, 45, 90, 135, 180] Accurate ( 9 samples ) [0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180] Servophile ( 17 samples ) [0, 11.25, 22.5, 33.75, 45, 56.25, 67.5, 78.75, 90, 101.25, 112.5, 123.75, 135, 146.25, 157.5, 168.75, 180] (I plan on adding a Super Servophile profile with 33 samples soon!) After choosing the profile (and - in the future - one of the 3 slots each list has), the user will go through with recording distances for each angle using a marking on the wall (use a pencil or just tape a paper and draw on it) That’s it! (At least for the manual input XD) Then the list with colleced measurements gets put in a script and thrown out as a list of angles. Now that’s it! Next Features I plan on adding an expected measurement section in the UI so the user has a better idea what the expected output should be during calibration (also helps with debugging ;) ) Turning the List of angles into a complex map that can directly transform digital angles to calibrated ones Actually using the calilbration profiles when moving servos Adding all environment variables to settings so you can change them during runtime!"}, {"post_id": 39364, "ts": "2026-08-02T09:24:02Z", "hours": 13.0031, "text": "Devlog #2 - The OLED Age SUP! It has been like a week since the last devlog… and a lot happened to be honest. (If you don’t wanna read, just go down to see the SUPER cinematic demo I made for you <3 ) If you read the first devlog, you might remember that the plan was basically: “Make the Servo move” “Then add a Joystick” and then: “Make an OLED Menu” Well, I just finished the OLED Menu! THE CODE This time I spent a LOT more time on the actual code structure (+4 hours wondering why jumper wires (the bare ones with no heads) drop so much voltage, but we don’t talk about that). The sketch has grown up to like ~700 lines, but more importantly, I started optimising it and making the code reusable instead of just putting everything into loop() . I have broken the code down into independent functions like: calculateOffCenter() offCenterToDirection() buildMenu() callMenuOption() drawScrollbar() ... So now everything is more optimised and easier to expand and debug! THE MENU Our menu now consists of: - \"Manual Control\" - \"Calibration\" - \"Debug\" - \"Settings\" I made buildMenu() take an array of options and their length, so I can reuse the same function for all menus. I also added a scrollbar (cause apparently four lines of text just wasn’t enough). Calibration Time This is where things got interesting. I started working on the Calibration menu. Right now it has: - Simple Calibr. - Pulse Width Calibr. - C.E.A. LASER Calibr. - 360deg Servo - 180deg Servo - Go Back Some of these are still placeholders, but LASER Calibration is halfway done. C.E.A. LASER CALIBRATION Yes. I finally found a purpose to my year old laser module :D The idea is pretty simple. Tape a laser to the servo head. Put a piece of paper on a wall. Point the laser at it. Move it a certain ammount of degrees (e.g. 5deg) Then use the distance between the 2 points to figure out how much degrees the servo ACTUALLY moved. And this is where the math comes in. If the servo is L centimeters away from the wall, and the laser spot moves X centimeters, we can calculate the angle with: θ = arctan(X / L) So instead of trusting the servo when sayin’: “Yeah, that’s 90° bro” S.U.P. is able to measure where the servo is actually located. And the best part is that the user doesn’t need to buy some expensive angle sensor (which is the whole idea of the project btw). You need: A laser A ruler A piece of paper A pencil A wall (I hope you have one C: ) That’s it. And I think that’s pretty damn cool. The current prototype goes through: 0° 45° 90° 135° 180° and lets me enter the measured distance (in cm ofc, no freedom units… ) with the joystick. It isn’t finished yet, but the basic system is working. What’s Next? Finish C.E.A. Laser Calibration Make the angle calculation automatic Add proper servo calibration profiles Work on Pulse Width Calibration Figure out 180° vs 360° servos Add joystick calibration Keep improving the OLED interface And hopefully make S.U.P. look less like a breadboard project and more like an actual tool."}, {"post_id": 35165, "ts": "2026-07-26T12:42:25Z", "hours": 7.8275, "text": "Devlog #1 - The Rise of S.U.P. Hello everyone, Welcome to the first ever Devlog of the Servo Utility Platform (aka. S.U.P.) This is the project I decided to make for Stardance , and the first ever solely non-AI-dependent one :D Overview So what even is S.U.P.? [ Demo can be found at the Bottom if you don’t like reading explanations :D] The Servo Utility Platform is, I won’t lie, nothing super wow . The idea is that instead of making a random test circuit every time I wanna test a new servo, I can use S.U.P. to quickly test it, calibrate it, and see if something is wrong with it. At least that’s the plan cuz right now it’s still a bunch of wires on a breadboard :D Hardware Used Currently, S.U.P. uses: ESP-WROOM-32 x1 Small I2C OLED 128x64 Display x1 Joystick Module x1 MG90S Servo Module x1 830-point Breadboard x1 A suspicious amount of jumper wires… The Beginning The first version was… really simple XD. It was literally an ESP32 shooting electricity through a wire and nothing more. [Check out the “Fancy This” picture at the bottom] The goal wasn’t to make something impressive. It was just to make sure I can do the simplest thing imaginable: “Can I make the servo move?” The answer was yes (thankfully XD). After that I added a Volume Knob ( potentiometer ). [Check the Picture that features it (it’s really sad that I can’t put the pictures in-between text)] This helped me control the servo angle , which made it more satisfying to play around with, but felt too weird. It felt like giving a static position to the servo, not making it move . The knob might work for a real 10$ servo tester but it’s just not my style . MEET: The Joystick So I replaced the potentiometer with his cooler Oklahoma bro: The Joystick . [A video of me “casually” testing the hardware can be found down below] And this is where it started feeling like the gadget of my dreams . Instead of: Pot position → Static Servo angle I first changed it to: Joystick Pot position → Static Servo angle wow! amazing! So I had to do a lil more work than changing one wire… The redesigned system was way better: Joystick x-axis position (still a pot just a fancy one ) → offCenter from 0 (we actaully use the middle of the pot as 0 and the ends as -1 and 1) → Velocity → Servo Speed Now moving the joystick slightly makes super small adjustments, while pushing it further makes the servo go wayy faster. To make this feel better, I made my own acceleration function instead of just using a simple linear movement. The final result feels surprisingly nice . Current Prototype Right now S.U.P. has: A working joystick-controlled servo system Acceleration-based movement Speed settings Adjustable servo limits Joystick deadzones A debugging system because manually adding and removing Serial.println() gets old really quickly :I [Now look at the Super Cinematic picture of that MG90S Servo] Things I Learned A few things I learned while making this: Joysticks are basically just two pots and a button The ESP32 ADC reads voltage , not “positions” Tuning acceleration functions is really worth it for making the movement feel good What’s Next? The next steps are: Add joystick calibration Find servo minimum and maximum angles (if even possible idk) Figure out how to detect 180° vs 360° servos Start building the OLED menu system (tbh sounds like the most interesting and hard part at the same time 🙏)"}]...
|
Title: Servo Utility Platform by @Kacenta | Starda Title: Servo Utility Platform by @Kacenta | Stardance
Devlogs:
Devlog #1 - The Rise of S.U.P. Hello everyone, Welcome to the first ever Devlog of the Servo Utility Platform (aka. S.U.P.) This is the project I decided to make for Stardance , and the first ever solely non-AI-dependent one :D Overview So what even is S.U.P.? [ Demo can be found at the Bottom if you don’t like reading explanations :D] The Servo Utility Platform is, I won’t lie, nothing super wow . The idea is that instead of making a random test circuit every time I wanna test a new servo, I can use S.U.P. to quickly test it, calibrate it, and see if something is wrong with it. At least that’s the plan cuz right now it’s still a bunch of wires on a breadboard :D Hardware Used Currently, S.U.P. uses: ESP-WROOM-32 x1 Small I2C OLED 128x64 Display x1 Joystick Module x1 MG90S Servo Module x1 830-point Breadboard x1 A suspicious amount of jumper wires… The Beginning The first version was… really simple XD. It was literally an ESP32 shooting electricity through a wire and nothing more. [Check out the “Fancy This” picture at the bottom] The goal wasn’t to make something impressive. It was just to make sure I can do the simplest thing imaginable: “Can I make the servo move?” The answer was yes (thankfully XD). After that I added a Volume Knob ( potentiometer ). [Check the Picture that features it (it’s really sad that I can’t put the pictures in-between text)] This helped me control the servo angle , which made it more satisfying to play around with, but felt too weird. It felt like giving a static position to the servo, not making it move . The knob might work for a real 10$ servo tester but it’s just not my style . MEET: The Joystick So I replaced the potentiometer with his cooler Oklahoma bro: The Joystick . [A video of me “casually” testing the hardware can be found down below] And this is where it started feeling like the gadget of my dreams . Instead of: Pot position → Static Servo angle I first changed it to: Joystick Pot position → Static Servo angle wow! amazing! So I had to do a lil more work than changing one wire… The redesigned system was way better: Joystick x-axis position (still a pot just a fancy one ) → offCenter from 0 (we actaully use the middle of the pot as 0 and the ends as -1 and 1) → Velocity → Servo Speed Now moving the joystick slightly makes super small adjustments, while pushing it further makes the servo go wayy faster. To make this feel better, I made my own acceleration function instead of just using a simple linear movement. The final result feels surprisingly nice . Current Prototype Right now S.U.P. has: A working joystick-controlled servo system Acceleration-based movement Speed settings Adjustable servo limits Joystick deadzones A debugging system because manually adding and removing Serial.println() gets old really quickly :I [Now look at the Super Cinematic picture of that MG90S Servo] Things I Learned A few things I learned while making this: Joysticks are basically just two pots and a button The ESP32 ADC reads voltage , not “positions” Tuning acceleration functions is really worth it for making the movement feel good What’s Next? The next steps are: Add joystick calibration Find servo minimum and maximum angles (if even possible idk) Figure out how to detect 180° vs 360° servos Start building the OLED menu system (tbh sounds like the most interesting and hard part at the same time 🙏)
Devlog #2 - The OLED Age SUP! It has been like a week since the last devlog… and a lot happened to be honest. (If you don’t wanna read, just go down to see the SUPER cinematic demo I made for you <3 ) If you read the first devlog, you might remember that the plan was basically: “Make the Servo move” “Then add a Joystick” and then: “Make an OLED Menu” Well, I just finished the OLED Menu! THE CODE This time I spent a LOT more time on the actual code structure (+4 hours wondering why jumper wires (the bare ones with no heads) drop so much voltage, but we don’t talk about that). The sketch has grown up to like ~700 lines, but more importantly, I started optimising it and making the code reusable instead of just putting everything into loop() . I have broken the code down into independent functions like: calculateOffCenter() offCenterToDirection() buildMenu() callMenuOption() drawScrollbar() ... So now everything is more optimised and easier to expand and debug! THE MENU Our menu now consists of: - "Manual Control" - "Calibration" - "Debug" - "Settings" I made buildMenu() take an array of options and their length, so I can reuse the same function for all menus. I also added a scrollbar (cause apparently four lines of text just wasn’t enough). Calibration Time This is where things got interesting. I started working on the Calibration menu. Right now it has: - Simple Calibr. - Pulse Width Calibr. - C.E.A. LASER Calibr. - 360deg Servo - 180deg Servo - Go Back Some of these are still placeholders, but LASER Calibration is halfway done. C.E.A. LASER CALIBRATION Yes. I finally found a purpose to my year old laser module :D The idea is pretty simple. Tape a laser to the servo head. Put a piece of paper on a wall. Point the laser at it. Move it a certain ammount of degrees (e.g. 5deg) Then use the distance between the 2 points to figure out how much degrees the servo ACTUALLY moved. And this is where the math comes in. If the servo is L centimeters away from the wall, and the laser spot moves X centimeters, we can calculate the angle with: θ = arctan(X / L) So instead of trusting the servo when sayin’: “Yeah, that’s 90° bro” S.U.P. is able to measure where the servo is actually located. And the best part is that the user doesn’t need to buy some expensive angle sensor (which is the whole idea of the project btw). You need: A laser A ruler A piece of paper A pencil A wall (I hope you have one C: ) That’s it. And I think that’s pretty damn cool. The current prototype goes through: 0° 45° 90° 135° 180° and lets me enter the measured distance (in cm ofc, no freedom units… ) with the joystick. It isn’t finished yet, but the basic system is working. What’s Next? Finish C.E.A. Laser Calibration Make the angle calculation automatic Add proper servo calibration profiles Work on Pulse Width Calibration Figure out 180° vs 360° servos Add joystick calibration Keep improving the OLED interface And hopefully make S.U.P. look less like a breadboard project and more like an actual tool.
Devlog #3 - Servo Profiles Hello everyone, We just hit a new milestone in the development of this project: Laser Calibration Profiles How do They Work? Right now we have a menu where you can choose between 3 calibration profiles each having a different ammount of samples ( the more, the better, but slower due to the higher ammount of measurements) Basic ( 5 samples ) [0, 45, 90, 135, 180] Accurate ( 9 samples ) [0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180] Servophile ( 17 samples ) [0, 11.25, 22.5, 33.75, 45, 56.25, 67.5, 78.75, 90, 101.25, 112.5, 123.75, 135, 146.25, 157.5, 168.75, 180] (I plan on adding a Super Servophile profile with 33 samples soon!) After choosing the profile (and - in the future - one of the 3 slots each list has), the user will go through with recording distances for each angle using a marking on the wall (use a pencil or just tape a paper and draw on it) That’s it! (At least for the manual input XD) Then the list with colleced measurements gets put in a script and thrown out as a list of angles. Now that’s it! Next Features I plan on adding an expected measurement section in the UI so the user has a better idea what the expected output should be during calibration (also helps with debugging ;) ) Turning the List of angles into a complex map that can directly transform digital angles to calibrated ones Actually using the calilbration profiles when moving servos Adding all environment variables to settings so you can change them during runtime!
Devlog #4 - UI Polish Hello! Probably not one of the most impressive things, but a good UI is something people always respect (just subcounciously… ). Added prettyPrint() funtion, which essentially gives me the ability to parse any long message into separate pages with skippable delays. All you need to do is just click once you finished reading the page. For now I’m experimenting with the delay but 7.5 seconds feels natural for 64x128 display (probably around ~40 words). Sadly, I need to rework some of the functions for the calibration picker because there is just no way to go back to the main menu at this point.. Added some Display Error Function, which pretty much relies on prettyPrint(). Added some helper functions for things i consistently call to lower the ammount of same-purpose code and managed to bring the sketch down to ~1500 lines! The attached image is the skippable delay I kinda invented because I didn’t want to use milis() XD.
Devlog #5 - Settings & Profile Storage ## Unknown - 5th September 2026 ### Version: v0.4.0-settinger Hello again! Yeah… I kinda forgot the journal existed again XD A LOT has changed since the last devlog, especially internally. The project is starting to feel less like a giant prototype held together by hopes and prayers and more like an actual tool. ### Main events - Finally started working properly on the Settings menu ! - Added persistent settings using the ESP32’s Preferences storage - Basically all the important environment variables are now stored, including: - - Servo / joystick pins - - Axis inversion and swapping - - Speed settings and multipliers - - Calibration parameters - - Joystick deadzones and offsets - - Debug mode - - Display and scrolling settings - - Calibration list information - - Various delays and timing values - Added saveSettings() and loadSettings() functions so I don’t have to hardcode everything every single time the board boots - Settings also have default values, so if there is no saved value yet, the program still has a working configuration - Started separating the stored data into different Preferences namespaces , so Settings and Servo Profiles don’t all get thrown into one giant storage section - Calibration Lists got actual persistent storage, meaning the calibration data doesn’t disappear every time the ESP32 restarts - Added more profile-related error handling - Continued expanding the 3-digit error code system , which is starting to look suspiciously like I accidentally created my own mini error protocol XD - Did a LOT more bug hunting and general code cleanup - Also spent way too much time making tiny UI things work properly because apparently I have decided that a 128x64 OLED deserves the same amount of attention as a full desktop application :I ### Some of the more important stuff The biggest thing here is probably the storage system. Before, most of the variables were basically just sitting in the code waiting for me to change them manually. Now I can save them to the ESP32 and load them again later. For example: settings . putDouble ( "speedMultiplier" , speedMultiplier ); and later: speedMultiplier = settings . getDouble ( "speedMultiplier" , 1 ); So if I change a setting, restart the board, and come back later, it stays changed. This also means I finally don’t have to keep scrolling to the top of a 1500+ line sketch every time I want to change something XD ### What’s next? - [ ] Actually TEST the full calibration workflow with a real servo - [ ] Add an X-axis animation to the Settings menu when changing variables - [ ] Add a way to name calibration list slots - [ ] Make the amount of list slots dynamically generated instead of hardcoded - - [ ] Add an “Add New Slot” option - [ ] Add an on-screen keyboard or find a decent library for one - [ ] Add a way to connect to the ESP32-S3’s second USB port and extract saved servo profiles as files - [ ] Keep murdering bugs until the project stops finding new ones ### Notes I’m starting to realize that the actual servo movement part was probably the easy bit. The annoying part is everything around it. Menus, storage, scrolling, profile management, error handling, input validation… At least it makes the project way more interesting :D
Devlog #6 - THE “ALMOST FINISHED” [Some original greeting here]! Time goes by, so does progress on this calibrator tool. I really started to like it to be honest. It has been really fun making all the additional systems around the calibration, such as the “Debug”, “Settings”, (soon “About” too), all the UI polish and case handling. Even the NVS storage setup (basically the real ESP32 storage instead of the RAM-like one it usually uses) teached me a lot and I’m proud of how far this project has come. But enough yapping. I FINALLY Taped the Laser module to the servo bracket! Also, I put it in a box of TicTac (image below XD) so it doesnt fall and give wrong reading. Then I filled the box with COINS so it doesn’t wiggle during servo movement. Just WILD XD So, what did i update in this 1 week? - Well… A LOT. If i had to list it: Made the settings finally work! Fixed a bug where option scroll started when there was no need at all Saved all settings, preferences and user profiles to permament NVS storage Changed ALL delay() instances with millis() (Where possible/wanted). Just this took like 4 hours :I (Like I said before) - FINALLY Taped the Laser module to the servo bracket! Also, I put it in a box of TicTac (image below XD) so it doesnt fall and give wrong reading. Then I filled the box with coins so it gets heavy enough to not wiggle during joystick movement :D Changed a breadboard because for some reason my jumper wires started losing lots of voltage and the connectors were really loose for some reason Polished the UI, A LOT. I probably plan to change from normal lists to Flipper Zero-style menu soon. Added a “Simulate Errors” feature in the “Debug” menu to test if my error and case handling works well Fixed multiple smaller bugs… I think that’s pretty much it, there could be more smaller things I don’t remember rn (sorry about that). Notes Sadly went a little above 10 hours this time D; - I sill have lots of things to do - mainly polish messages, small inconsistensies, ect. I kinda gave up on adding a keyboard - it is pretty unnecessary and will add a lot more cases to handle for almost no benefit. These days I will be filming the final video for the v1.0 release! I accept any ideas from you for future features and filming advice.
Devlog #7 - Getting Closer S.U.P. - v0.9.1 To be honest, i kinda lied last time… There is still a lot of work to do, espesially about the servoType handling Important Features Added Added WORKING Joystick Calibration + integrated additional calibration logic directly in joystick movement (toggable, of course) You can finally use the manualControl() with a fully calibrated custom profile . Changing the selected profile now updates automatically . Huge improvements to Selecting Servo Type. Now calibration works for both 90° and 180° servos. Added Servo Test Sweep ! Added a custom option in the main menu to change profiles Wrote the About me Section (Finally) Less Important Features Added Isolated updateSelectedProfile() in its own function so i can reuse it (like 100+ lines of code saved there…) Added debugger function (in “Debug” menu) for testing the joystick calibration Added a global int - actionDelay = 300ms. I have always added a delay(300) before changing display screens, starting/ending actions, ect.. to keep the app posished and remove the irritation of “fake”/“accidental” double, triple and spam clicks Fixed a bug in the normal joystick debugger function TODO [ ] Add support for 360 deg servos basically writing a custom new version of each function but for rotating servos because they are fundamentally different then positional servos (such as 90° and 180°) and don’t integrate well into the current ecosystem. [ ] Show which saved profile is for which servo type [ ] Film the video for the v1.0 release (we are really getting closer :D).
Devlog #8 - Actually Finished S.U.P. - v1.0 Okay, NOW it’s finished. (GO HERE TO SEE VIDEO: https://www.youtube.com/watch?v=IzWqsmjGq4U ) Last time I said we were getting close. Now I can finally confirm it! S.U.P. is finished. There was still a surprising amount of work left after v0.9.1, especially around handling different servo types. I ended up reworking a lot of the servo logic to make everything work together properly. Important Features Added Full support for different servo types , including 90° , 180° positional, and 360° continuous-rotation servos Added working pulse-width calibration for servo control Added working servo sweeps for testing positional servos Finished the servo type handling system Improved calibration logic so it works correctly with the selected servo type Finished saved profile handling , including persistent storage across resets Finished the joystick calibration system Completed the C.E.A. Laser Calibration system Finished the Settings , Debug , Calibration , Manual Control , and other menu systems Added and tested the final error handling and debugging tools Final Testing I tested the main workflows with real hardware instead of relying on a simulation (as I always have). The Demo Video The final demo video is finished and uploaded here: https://www.youtube.com/watch?v=IzWqsmjGq4U I tried to show the project itself rather than only talking about the code and development process. One thing I did not manage to include properly was footage of the full physical servo calibration process. The only calibration footage I kept was the joystick calibration. Everything works though :D. Sorry about that. The actual calibration system and everything else was still tested and works. I explain the missing footage in the video. Final Result S.U.P. started as a small ESP32 servo tester and grew into a much larger system than I originally expected. TODO There are still ideas I might work on in the future, but they are no longer required for the first release: Custom PCB Custom 3D Case Advanced diagnostics (I’ll have to open up the servo) General code cleanup and optimization For now, though: S.U.P. v1.0 is done.
Ships:
Devlog #8 - Actually Finished S.U.P. - v1.0 Okay, NOW it’s finished. GO HERE TO SEE VIDEO Last time I said we were getting close. Now I can finally confirm it! S.U.P. is finished. There was still a surprising amount of work left after v0.9.1, especially around handling different servo types. I ended up reworking a lot of the servo logic to make everything work together properly. Important Features Added Full support for different servo types , including 90° , 180° positional , and 360° continuous-rotation servos Added working pulse-width calibration for servo control Added working servo sweeps for testing positional servos Finished the servo type handling system Improved calibration logic so it works correctly with the selected servo type Finished saved profile handling , including persistent storage across resets Finished the joystick calibration system Completed the C.E.A. Laser Calibration system Finished the Settings , Debug , Calibration , Manual Control , and other menu systems Added and tested the final error handling and debugging tools Final Testing I tested the main workflows with real hardware instead of relying on a simulation (as I always have). The Demo Video The final demo video is finished and uploaded here: https://www.youtube.com/watch?v=IzWqsmjGq4U I tried to show the project itself rather than only talking about the code and development process. One thing I did not manage to include properly was footage of the full physical servo calibration process. The only calibration footage I kept was the joystick calibration. Everything works though :D. Sorry about that. The actual calibration system and everything else was still tested and works. I explain the missing footage in the video. Final Result S.U.P. started as a small ESP32 servo tester and grew into a much larger system than I originally expected. TODO There are still ideas I might work on in the future, but they are no longer required for the first release: Custom PCB Custom 3D Case Advanced diagnostics (I’ll have to open up the servo) General code cleanup and optimization For now, though: S.U.P. v1.0 is done....
|
1793335968.7757978
|
1793422368.7757978
|
|
45516
|
smoother life by @Arianna | Stardance
|
Arianna
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: smoother life by @Arianna | Stardance
|
1793335970.0272272
|
1793940770.0272272
|
|
55151
|
ServerDeck by @justnorbert | Stardance
|
justnorbert
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T12:45:35Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So I did it! I wrote a program that will actually be useful to me (weird, right?). Below is a partial history of how the program was created. I tried to keep the details to a minimum, but it didn’t quite work out. Enjoy reading my short story! I was tired of installing all the packages I needed, and let’s be honest, every VM is different. So the idea came to me: what if I wrote a program that would actually help me manage VMs? And that’s how the concept of ServerDeck was born. A program that allows me to manage users in MariaDB databases, or even create such databases (I admit I hate the default way of creating users in databases via the terminal), so I decided, okay, I’ll add it to the system. And of course, the idea then comes: what next? I put the project on hold for a few days, then I had to install packages on my VM, such as Tailscale, Cloudflare Tunnel, Node.js, and Java. I’ll be honest, I immediately decided I wasn’t going to search for these installation links, so why not simplify it? And that’s how I added the package installation option. However, one day, while I was away from home, I noticed a problem with one of my VMs. One of my websites was lagging terribly. So what can I do? Unfortunately, I log into Termius using my phone, then I enter the btop command, and there I see that I forgot to connect an additional drive to the server! And as you can imagine, I would have avoided this sooner if checking the machine’s status were easier. And thanks to this problem, I added features related to the Discord bot and webhooks! When I reinstalled btop on one of the VMs, I thought, “Okay, but why am I installing this when I can have my own version, right?” And that’s how I added the rest of the program’s features. [The message was written in Polish and then translated into English using Google Translate.]", "repo": "https://github.com/Norbertkkl/ServerDeck", "demo": "https://www.npmjs.com/package/serverdeck"}]...
|
[{"post_id": 62882, "ts": "202 [{"post_id": 62882, "ts": "2026-09-06T12:34:19Z", "hours": 2.8186, "text": "[Devlog 4] So, it worked! The program is working correctly. I’ve added support for Discord bots and webhooks. I admit that AI has been heavily used to translate files (using Google Translate would have been a chore). All messages are sent to the user correctly, along with support for my native language – Polish. At the same time, I slightly rewrote the UFW firewall management system. For some reason, I forgot to scroll and select the element of interest, so I had to fix it. More important, I’ve made the following improvements for version (1.0.1): Window responsiveness has been improved Package installation (often, the user simply received errors from the program, even though the package was installed and launched correctly; a similar situation occurred with uninstallation) Fixed the installation script, which was not creating a user Many other minor fixes It’s worth noting that the program works 100%, but there may be minor bugs that I haven’t been able to resolve/notice. Currently, the program supports Ubuntu 24.04.04 LTS 🎉 [Written using Google Translate]"}, {"post_id": 57459, "ts": "2026-08-29T16:39:03Z", "hours": 2.2181, "text": "[Devlog 3] Hi! I managed to complete the Software Hub section of ServerDeck. I have currently finished working on the software installation module. (I cared about this module the most.) Currently, the tab works 100%, but I am wondering whether to add some services to the installation. If anyone has any ideas, please give me some suggestions. The current list of packages that can be installed is below: 1. OpenSSH Server 2. SFTP Server & VSFTPD 3. MariaDB / MySQL Database 4. Docker Engine (CE) 5. Docker Compose Plugin 6. Nginx Web Server 7. Apache2 Web Server 8. Certbot SSL Let's Encrypt 9. Samba SMB/CIFS Server 10. Cockpit Web GUI 11. Portainer CE Docker UI 12. WireGuard VPN Server 13. Tailscale VPN Mesh 14. Fail2ban Security 15. OpenJDK 8 (Java 8 Legacy) 16. OpenJDK 17 (Java 17 LTS) 17. OpenJDK 21 (Java 21 LTS) 18. OpenJDK 25 / Latest 19. Node.js LTS & NPM 20. PM2 Process Manager 21. Rclone Cloud Sync 22. BorgBackup & Restic 23. Prometheus Node Exporter 24. Pterodactyl Dependencies 25. Core Utilities & SMART 26. Configure UFW Firewall 27. PostgreSQL Database 28. Redis Cache Server 29. Caddy Web Server 30. Uptime Kuma Monitor 31. AdGuard Home DNS 32. Watchtower Auto-Updater 33. Cloudflare Tunnel 34. Go (Golang) Toolchain 35. Rust & Cargo Environment 36. Netdata Real-Time Monitor 37. MinIO S3 Object Storage 38. ServerDeck Ultimate (All-in-One) (The message was translated using Google Translate)"}, {"post_id": 56802, "ts": "2026-08-28T18:34:06Z", "hours": 0.7244, "text": "Hi! I’m currently working on the initial stages of implementing a webhook system for the Discord channel. There are a lot of placeholders to add, but the most important thing for me is enabling full user customization of notifications—we’ll see how it turns out. I’m also adding preliminary support for my native language, Polish. I have to admit, Antigravity is excellent for fully translating files into English; it seems to handle Polish-to-English translation better than English-to-Polish. (Written using Google Translate.)"}, {"post_id": 56514, "ts": "2026-08-28T09:47:46Z", "hours": 2.5364, "text": "Hi, I’m building a tool for the easy configuration and management of VMs running Ubuntu. The goal of the tool is to simplify the installation of essential components such as OpenSSH, Nginx (SFTP), Node.js, Java (versions 8, 18, 21, and 25), and VPNs (like Tailscale or WireGuard). It was also important for me to be able to check the device’s general status; after all, when managing a server with multiple VMs, this is a necessity. (Note: this isn’t the server actually running this test service.) At this stage of the project, I’m working on finishing the “blue” theme and then creating new themes (which can be configured via a data.json file). I drew inspiration from the btop tool as well as the look of my Discord server. Everything is managed via the console (personally, I use an SSH connection from VS Code). I am sending the preliminary layout of the tabs, as well as the ones that are already working correctly. (Written using Google Translate)"}]...
|
Title: ServerDeck by @justnorbert | Stardance
Dev Title: ServerDeck by @justnorbert | Stardance
Devlogs:
Hi, I’m building a tool for the easy configuration and management of VMs running Ubuntu. The goal of the tool is to simplify the installation of essential components such as OpenSSH, Nginx (SFTP), Node.js, Java (versions 8, 18, 21, and 25), and VPNs (like Tailscale or WireGuard). It was also important for me to be able to check the device’s general status; after all, when managing a server with multiple VMs, this is a necessity. (Note: this isn’t the server actually running this test service.) At this stage of the project, I’m working on finishing the “blue” theme and then creating new themes (which can be configured via a data.json file). I drew inspiration from the btop tool as well as the look of my Discord server. Everything is managed via the console (personally, I use an SSH connection from VS Code). I am sending the preliminary layout of the tabs, as well as the ones that are already working correctly. (Written using Google Translate)
Hi! I’m currently working on the initial stages of implementing a webhook system for the Discord channel. There are a lot of placeholders to add, but the most important thing for me is enabling full user customization of notifications—we’ll see how it turns out. I’m also adding preliminary support for my native language, Polish. I have to admit, Antigravity is excellent for fully translating files into English; it seems to handle Polish-to-English translation better than English-to-Polish. (Written using Google Translate.)
[Devlog 3] Hi! I managed to complete the Software Hub section of ServerDeck. I have currently finished working on the software installation module. (I cared about this module the most.) Currently, the tab works 100%, but I am wondering whether to add some services to the installation. If anyone has any ideas, please give me some suggestions. The current list of packages that can be installed is below: 1. OpenSSH Server 2. SFTP Server & VSFTPD 3. MariaDB / MySQL Database 4. Docker Engine (CE) 5. Docker Compose Plugin 6. Nginx Web Server 7. Apache2 Web Server 8. Certbot SSL Let's Encrypt 9. Samba SMB/CIFS Server 10. Cockpit Web GUI 11. Portainer CE Docker UI 12. WireGuard VPN Server 13. Tailscale VPN Mesh 14. Fail2ban Security 15. OpenJDK 8 (Java 8 Legacy) 16. OpenJDK 17 (Java 17 LTS) 17. OpenJDK 21 (Java 21 LTS) 18. OpenJDK 25 / Latest 19. Node.js LTS & NPM 20. PM2 Process Manager 21. Rclone Cloud Sync 22. BorgBackup & Restic 23. Prometheus Node Exporter 24. Pterodactyl Dependencies 25. Core Utilities & SMART 26. Configure UFW Firewall 27. PostgreSQL Database 28. Redis Cache Server 29. Caddy Web Server 30. Uptime Kuma Monitor 31. AdGuard Home DNS 32. Watchtower Auto-Updater 33. Cloudflare Tunnel 34. Go (Golang) Toolchain 35. Rust & Cargo Environment 36. Netdata Real-Time Monitor 37. MinIO S3 Object Storage 38. ServerDeck Ultimate (All-in-One) (The message was translated using Google Translate)
[Devlog 4] So, it worked! The program is working correctly. I’ve added support for Discord bots and webhooks. I admit that AI has been heavily used to translate files (using Google Translate would have been a chore). All messages are sent to the user correctly, along with support for my native language – Polish. At the same time, I slightly rewrote the UFW firewall management system. For some reason, I forgot to scroll and select the element of interest, so I had to fix it. More important, I’ve made the following improvements for version (1.0.1): Window responsiveness has been improved Package installation (often, the user simply received errors from the program, even though the package was installed and launched correctly; a similar situation occurred with uninstallation) Fixed the installation script, which was not creating a user Many other minor fixes It’s worth noting that the program works 100%, but there may be minor bugs that I haven’t been able to resolve/notice. Currently, the program supports Ubuntu 24.04.04 LTS 🎉 [Written using Google Translate]
Ships:
So I did it! I wrote a program that will actually be useful to me (weird, right?). Below is a partial history of how the program was created. I tried to keep the details to a minimum, but it didn’t quite work out. Enjoy reading my short story! I was tired of installing all the packages I needed, and let’s be honest, every VM is different. So the idea came to me: what if I wrote a program that would actually help me manage VMs? And that’s how the concept of ServerDeck was born. A program that allows me to manage users in MariaDB databases, or even create such databases (I admit I hate the default way of creating users in databases via the terminal), so I decided, okay, I’ll add it to the system. And of course, the idea then comes: what next? I put the project on hold for a few days, then I had to install packages on my VM, such as Tailscale, Cloudflare Tunnel, Node.js, and Java. I’ll be honest, I immediately decided I wasn’t going to search for these installation links, so why not simplify it? And that’s how I added the package installation option. However, one day, while I was away from home, I noticed a problem with one of my VMs. One of my websites was lagging terribly. So what can I do? Unfortunately, I log into Termius using my phone, then I enter the btop command, and there I see that I forgot to connect an additional drive to the server! And as you can imagine, I would have avoided this sooner if checking the machine’s status were easier. And thanks to this problem, I added features related to the Discord bot and webhooks! When I reinstalled btop on one of the VMs, I thought, “Okay, but why am I installing this when I can have my own version, right?” And that’s how I added the rest of the program’s features. [The message was written in Polish and then translated into English using Google Translate.]...
|
1793335970.9383469
|
1793422370.9383469
|
|
45517
|
A mini desktop buddy by @anees | Stardance
|
anees
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A mini desktop buddy by @anees | Stardance
|
1793335972.1343572
|
1793940772.1343572
|
|
55158
|
Vinyl Record Hooks by @ncHammer | Stardance
|
ncHammer
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T15:37:43Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made 3D printable wall display hooks for collectible items! I focused mainly on vinyl records and comic books, with 5 sizes and types total. They function as a track that lets you slide the item in and out of the hooks. Feel free to print and use yourself!", "repo": "https://github.com/noahcraig029-code/vinylrecordhooks", "demo": "https://www.thingiverse.com/thing:7409559"}]...
|
[{"post_id": 63610, "ts": "202 [{"post_id": 63610, "ts": "2026-09-07T15:14:56Z", "hours": 0.3125, "text": "One last thing before I ship! I wanted to go back over the designs and I decided to tweak the standalone record hook. Now instead of the PLA filament touching the vinyl directly (which ran the risk of scratching it), there’s space to put some sort of buffer! I plan on using a foam sticker to avoid damaging it, but anything works. Happy decorating!"}, {"post_id": 63552, "ts": "2026-09-07T13:57:35Z", "hours": 0.9, "text": "My wall decoration hooks are finished! These are fully 3D printable ‘hook’ type items that can be attached to a wall to display anything from vinyl records to comic books without damaging the collectable item itself! There are 5 different sizes and shapes, so please feel free to open the Onshape and look around, they’re made to be used! Feedback or suggestions are more then welcome! This is just a fun little project I wanted to do to try and manufacture something I can actually ship sooner rather then later lol"}, {"post_id": 63173, "ts": "2026-09-06T20:31:03Z", "hours": 1.2264, "text": "A smaller, personal-convenience project this time! I’m taking a break from my two bigger tasks to model something small. These are 3D printable display hooks! I like to collect vinyl records and comics, but I’m always worried about using tape or poster tack to stick them to my wall for decoration, so I’m going to 3D print these little guys to help out with that! They’re simple hooks that have a back that connects to the wall, and then you can slide your item in through the hook and let it stand on it’s own! Drill them into your wall, use tape, glue, or anything! They come in 5 different sizes, so pick whatever works best for your collectible item. Feel free to use them as you wish! I’m hoping to get the Bambu A1 mini with my stardust so I can print these out, so if they work well let me know! Feedback or ideas always welcome!"}]...
|
Title: Vinyl Record Hooks by @ncHammer | Stardance Title: Vinyl Record Hooks by @ncHammer | Stardance
Devlogs:
A smaller, personal-convenience project this time! I’m taking a break from my two bigger tasks to model something small. These are 3D printable display hooks! I like to collect vinyl records and comics, but I’m always worried about using tape or poster tack to stick them to my wall for decoration, so I’m going to 3D print these little guys to help out with that! They’re simple hooks that have a back that connects to the wall, and then you can slide your item in through the hook and let it stand on it’s own! Drill them into your wall, use tape, glue, or anything! They come in 5 different sizes, so pick whatever works best for your collectible item. Feel free to use them as you wish! I’m hoping to get the Bambu A1 mini with my stardust so I can print these out, so if they work well let me know! Feedback or ideas always welcome!
My wall decoration hooks are finished! These are fully 3D printable ‘hook’ type items that can be attached to a wall to display anything from vinyl records to comic books without damaging the collectable item itself! There are 5 different sizes and shapes, so please feel free to open the Onshape and look around, they’re made to be used! Feedback or suggestions are more then welcome! This is just a fun little project I wanted to do to try and manufacture something I can actually ship sooner rather then later lol
One last thing before I ship! I wanted to go back over the designs and I decided to tweak the standalone record hook. Now instead of the PLA filament touching the vinyl directly (which ran the risk of scratching it), there’s space to put some sort of buffer! I plan on using a foam sticker to avoid damaging it, but anything works. Happy decorating!
Ships:
I made 3D printable wall display hooks for collectible items! I focused mainly on vinyl records and comic books, with 5 sizes and types total. They function as a track that lets you slide the item in and out of the hooks. Feel free to print and use yourself!...
|
1793335973.0427642
|
1793422373.0427642
|
|
45518
|
My very own WebOS by @arnavispro9956 | Stardance
|
arnavispro9956
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @arnavispro9956 | Star Title: My very own WebOS by @arnavispro9956 | Stardance...
|
1793335974.3291576
|
1793940774.3291576
|
|
46735
|
AlternativeLink by @ERR0RW0LF | Stardance
|
ERR0RW0LF
|
1
|
31.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-18T19:24:36Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "AlternativeLink This project implements the SharkLink Protocol making it compatible with the Shark Jack Display by Hak5. This ship is for the underlying core lib in combination with the CLI. CLI The CLI tool provides a quick and easy way to use any pc in combination with the Shark Jack Display. Using the -h / --help flags this help message is printed: Rust implementation for SharkLink Usage: alternative-link-cli.exe [OPTIONS] --interface <INTERFACE> Options: -i, --interface <INTERFACE> Interface IP to bind to (skips interactive picker) -p, --port <PORT> UDP port to use [default: 1337] -c, --code <CODE> Shared room/pairing code [default: 1-3-3-7] --broadcast-interval <BROADCAST_INTERVAL> Broadcast interval in seconds [default: 5] --auto-test Run non-interactively: auto-test connection as soon as a peer is found. If this is not set after receiving a Ping and sending the Ack the program closes --no-stop Prevents the program from automatically stopping (you will need to manually kill the program if this is set) -v... Increase log verbosity (-v -vv) --json Emit machine-readable JSON status lines instead of prose --max-direct-tries <MAX_DIRECT_TRIES> Maximum retries for the direct connection test [default: 20] -h, --help Print help -V, --version Print version Development The first prototype was developed in python using package inspection with wireshark. After refining that prototype, I wrote a first all in one (file) interactive version of that prototype using rust. Then I found out that the SharkLink tool on the Shark Jack Display a bash script is. (I never looked at it properly but just found out that I accidentally implemented a similar control flow using python and rust) After that I split the project into the cargo workspace structure with one lib and cli crates. Now I have started developing an interactive version but more close to original. Trying it The README on GitHub details how to run it on windows. This is because I have only tested it in these combinations. But it should work everywhere because I haven’t used anything os specific and tested it on wsl.", "repo": "https://github.com/ERR0RW0LF/AlternativeLink", "demo": "https://github.com/ERR0RW0LF/AlternativeLink/releases"}]...
|
[{"post_id": 69567, "ts": "202 [{"post_id": 69567, "ts": "2026-09-17T10:11:34Z", "hours": 5.7008, "text": "Devlog 6: Finaly finished the CLI. Over the past hours I have improved my code a lot. By making it automaticly terminate if it gets pinged and adding the --no_stop flag to prevent automatic closing. Next up: Shipping it and maybe after getting some feedback improving it."}, {"post_id": 64219, "ts": "2026-09-08T13:45:01Z", "hours": 9.0597, "text": "Devlog 5: I finally did it! It’s now a cli tool! What changed: It’s a Cli. So, to use it just try the --help / -h flag to get the usage. Also, I restructured the project into a core lib and the cli bin crates using a cargo workspace. This should allow me to more easily develop the Tui later. I also set up two github workflows, one that audits my used packages using the actions-rust-lang/audit action. The other one builds me the cli for a lot of different targets using the dtolnay/rust-toolchain action. I also started writing some instructions to try the project, but this is still an area of active development. Next up I defiantly need to document the protocol that I’m using. Also, as I have mentioned I want to create a tui. Maybe later a gui would be a great addition but that’s something I’m not quite sure about."}, {"post_id": 55421, "ts": "2026-08-27T07:26:58Z", "hours": 3.2636, "text": "Devlog 4: (Now with logging) What change Rewrote a lot of the logic making it safer Added a timeout for pinging Added a Code struct which has TryFrom<&str> and std::fmt::Display implemented so it’s really easy to convert a code string to the code structure and back added logging with tracing Combined both sending sockets to one Arc<UdpSocket> so broadcaster and direct connection check share one socket reducing overhead Changed how I handle Errors, no longer ignoring them Next up: Cli Maybe a tui"}, {"post_id": 47172, "ts": "2026-08-14T21:15:25Z", "hours": 2.3325, "text": "Devlog 3: Got everything working in Rust. Now the direct connection check works in both directions. Next up: Optimizing TUI CLI"}, {"post_id": 46519, "ts": "2026-08-13T20:03:20Z", "hours": 7.4931, "text": "Devlog 2: I started reimplementing everything in rust. Already have the discovery broadcast and listener working. So the only things missing are the direct connection check from the program site and a better looking interface like a tui."}, {"post_id": 45299, "ts": "2026-08-11T17:42:09Z", "hours": 2.7483, "text": "Devlog 1: So I reverse engineered the protocol hak5 uses for SharkLink using one SharkJack Display and my PC with Wireshark for package inspection. I first needed to implement the device discovery which is a broadcast UDP package which in plan text says <PIN> <Sender_Ip>\\n so for example 1-3-3-7 192.168.178.1\\n Then I reverse engineered the ping messages which are a direct connection with first PING <Sender_IP>\\n and then the response which is ACK <Sender_IP>\\n . Nextup: Reimplement the program in rust and after that create a tui."}]...
|
Title: AlternativeLink by @ERR0RW0LF | Stardance
Title: AlternativeLink by @ERR0RW0LF | Stardance
Devlogs:
Devlog 1: So I reverse engineered the protocol hak5 uses for SharkLink using one SharkJack Display and my PC with Wireshark for package inspection. I first needed to implement the device discovery which is a broadcast UDP package which in plan text says <PIN> <Sender_Ip>\n so for example 1-3-3-7 192.168.178.1\n Then I reverse engineered the ping messages which are a direct connection with first PING <Sender_IP>\n and then the response which is ACK <Sender_IP>\n . Nextup: Reimplement the program in rust and after that create a tui.
Devlog 2: I started reimplementing everything in rust. Already have the discovery broadcast and listener working. So the only things missing are the direct connection check from the program site and a better looking interface like a tui.
Devlog 3: Got everything working in Rust. Now the direct connection check works in both directions. Next up: Optimizing TUI CLI
Devlog 4: (Now with logging) What change Rewrote a lot of the logic making it safer Added a timeout for pinging Added a Code struct which has TryFrom<&str> and std::fmt::Display implemented so it’s really easy to convert a code string to the code structure and back added logging with tracing Combined both sending sockets to one Arc<UdpSocket> so broadcaster and direct connection check share one socket reducing overhead Changed how I handle Errors, no longer ignoring them Next up: Cli Maybe a tui
Devlog 5: I finally did it! It’s now a cli tool! What changed: It’s a Cli. So, to use it just try the --help / -h flag to get the usage. Also, I restructured the project into a core lib and the cli bin crates using a cargo workspace. This should allow me to more easily develop the Tui later. I also set up two github workflows, one that audits my used packages using the actions-rust-lang/audit action. The other one builds me the cli for a lot of different targets using the dtolnay/rust-toolchain action. I also started writing some instructions to try the project, but this is still an area of active development. Next up I defiantly need to document the protocol that I’m using. Also, as I have mentioned I want to create a tui. Maybe later a gui would be a great addition but that’s something I’m not quite sure about.
Devlog 6: Finaly finished the CLI. Over the past hours I have improved my code a lot. By making it automaticly terminate if it gets pinged and adding the --no_stop flag to prevent automatic closing. Next up: Shipping it and maybe after getting some feedback improving it.
Ships:
AlternativeLink This project implements the SharkLink Protocol making it compatible with the Shark Jack Display by Hak5. This ship is for the underlying core lib in combination with the CLI. CLI The CLI tool provides a quick and easy way to use any pc in combination with the Shark Jack Display. Using the -h / --help flags this help message is printed: Rust implementation for SharkLink Usage: alternative-link-cli.exe [OPTIONS] --interface <INTERFACE> Options: -i, --interface <INTERFACE> Interface IP to bind to (skips interactive picker) -p, --port <PORT> UDP port to use [default: 1337] -c, --code <CODE> Shared room/pairing code [default: 1-3-3-7] --broadcast-interval <BROADCAST_INTERVAL> Broadcast interval in seconds [default: 5] --auto-test Run non-interactively: auto-test connection as soon as a peer is found. If this is not set after receiving a Ping and sending the Ack the program closes --no-stop Prevents the program from automatically stopping (you will need to manually kill the program if this is set) -v... Increase log verbosity (-v -vv) --json Emit machine-readable JSON status lines instead of prose --max-direct-tries <MAX_DIRECT_TRIES> Maximum retries for the direct connection test [default: 20] -h, --help Print help -V, --version Print version Development The first prototype was developed in python using package inspection with wireshark. After refining that prototype, I wrote a first all in one (file) interactive version of that prototype using rust. Then I found out that the SharkLink tool on the Shark Jack Display a bash script is. (I never looked at it properly but just found out that I accidentally implemented a similar control flow using python and rust) After that I split the project into the cargo workspace structure with one lib and cli crates. Now I have started developing an interactive version but more close to original. Trying it The README on GitHub details how to run it on windows. This is because I have only tested it in these combinations. But it should work everywhere because I haven’t used anything os specific and tested it on wsl....
|
1793335975.2457216
|
1793422375.2457216
|
|
45522
|
IDK by @jardziochartur | Stardance
|
jardziochartur
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: IDK by @jardziochartur | Stardance
|
1793335978.6277947
|
1793940778.6277947
|
|
41831
|
Personal Website by @satr14 | Stardance
|
satr14
|
2
|
16.1
|
241
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T07:40:40Z", "hours": 3.0, "multiplier": 19.84, "payout": 66, "blessing": "neutral", "text": "this should have fixes from last ship’s suggestions as well as a extra background elements and animations to make the site look alive", "repo": "https://git.satr14.my.id/satr14/5th-site-expanded", "demo": "https://satr14.my.id/"}, {"ship_num": 2, "ts": "2026-09-05T02:50:59Z", "hours": 12.0, "multiplier": 14.97, "payout": 175, "blessing": "neutral", "text": "V5. IS OUT this was mainly challenging as school dumps work after work on me, but i ended up working on it in my spare time whenever i find it. new pages: /projects: contains orgs and repos /guestbook: github discussion powered /random: shows discord status and games i play", "repo": "https://git.satr14.my.id/satr14/5th-site-expanded", "demo": "https://satr14.my.id/"}]...
|
[{"post_id": 70141, "ts": "202 [{"post_id": 70141, "ts": "2026-09-18T15:29:20Z", "hours": 1.0961, "text": "i was supposed to work on smthin else, but saw my friend do this so i decided to implement it on my own site! it took this long mainly because its a very new feature and not really documented. luckily, my friend gave me docs (which will be merged upstream) and i was able to implement this early :D. regardless it was still pretty buggy added discord embed component info using same data as the main site content https://github.com/discord/discord-api-docs/blob/20b7c0d2a7c30fd455d3e8f6e58c8ab42eeb2849/developers/link-previews/component-embeds.mdx early docs if yall wanna try it"}, {"post_id": 67173, "ts": "2026-09-13T07:38:58Z", "hours": 0.6531, "text": "smol update but i randomly had a thought last night before sleeping to add this so im adding it :D added rolling titles in the background based of the roles i put in"}, {"post_id": 65941, "ts": "2026-09-11T12:40:49Z", "hours": 0.9083, "text": "i believe this shouldve been more time, because wakatime randomly stopped tracking time which shouldve been like 15-25 mins but whatever. now that its the weekend, im gonna cram as much hours i can get as this is still exam week. added background elements: idle rotating stars! made the stars turn into arrows when hovering over interactive elements / links added svelte page transitions for the conditional/fetching elements tweaked music player progress bar added a credit section for assets used and design inspiration changed timezone text display for same timezone offsets moved code duplication for styles and transitions to classes and central lib functions"}, {"post_id": 64054, "ts": "2026-09-08T05:45:02Z", "hours": 1.7758, "text": "aight i have an exam tomorrow so prob not the best time to be working, but whatever. im gonna add some finishing details from now on as well as improve based of last ship’s feedback changed hackclub role (im organizing haven in my city :D) added more audios to be randomly played made song playback persist between pages keep player notif open showing playback bar and play/pause button tweak pages gaps and paddings displayed webring name instead of “info?” changed main quote hehe"}, {"post_id": 60871, "ts": "2026-09-03T14:53:46Z", "hours": 1.855, "text": "exams are coming soon but i really need these hours. anyways, all pages should be completed by now. im gonna deploy and ship soon added discord status via lanyard api and npm package added games played via lizardbyte’s free igdb api proxy tweaked page transition to be shorter and use 1 global variable removed unused WIP component tweaked timezone info text remove timezone info card element 9 commits in total"}, {"post_id": 58137, "ts": "2026-08-30T14:25:57Z", "hours": 1.0158, "text": "im not joking when i say im burnt out from school. the only thing thats keeping me driving for coding is stardance and the certificate (prob the shop items too but the cert is more important for me). anyways i didnt have much energy this past week but i tried and well ig i managed to do somethin extra padding fixes for main site add a random page (not yet live) and todo list for what i wanna add later install svelte-lanyard for discord status fetching add extra library functions for timezone information remove unused lib function add timezone information to random page fix tab size in a file"}, {"post_id": 49588, "ts": "2026-08-18T14:00:45Z", "hours": 0.4336, "text": "short devlog because exam tomorrow but I CANT LET MY HACKATIME STREAK DIE AGAIN removed debug line left in prod from last devlog add a favicon of my cat :3 rename communities to organizations in change one of the roles to normal hackclub members add description field to orgs add org display in projects page removed blog link from main page (and prob the actual page soon) in favor of smthin else"}, {"post_id": 48953, "ts": "2026-08-17T15:06:13Z", "hours": 1.8106, "text": "finished with another project so i might as well finish this one remove located in line because i already disclose that in my bio fix curl special display to only if fecth / fix easter egg (background text) font display add vite, zed, nvim, cf, and claude skills and remove bash implemented projects page fix typescript errors with page props data spacing tweaks with main homepage animate skill icon hover resize skill icons and text to smaller size add heatmap to projects page moved heatmap url to index.ts lib tweaked card class styles to remove ugly border and add a nice shadow"}, {"post_id": 45190, "ts": "2026-08-11T14:45:36Z", "hours": 1.6867, "text": "this is longer than expected but oh well. i was too tired to work on any real projects because its a school night (yes indonesia doesnt have long summer breaks 😭) so back onto personal site i guess update personal information fields: description, skills, and roles update skill display to use icons from simpleicons cdn added hover to show skill name functionality added devops eng to roles because someone said i had devops skills from another project fix background z index overlap clarity for timezone refresh local timezone display every second remove card effect for transparent display on the guestbook havent worked on project showcase nor blog posts pages yet because i need to finish my blog first and figure out how to get git repos from forgejo api"}, {"post_id": 37466, "ts": "2026-07-30T07:17:24Z", "hours": 4.8781, "text": "admittedly working on existing projects is much easier than starting from scratch. ill be working on my personal website whenever i get burnt out from other stuff (especially chess programming) anyways i didnt really remember much on what i did because i thought i wouldnt end up working for hours and didnt think it wouldve been worth it to submit for stardance. well turns out i accumulated a lot of hours logged but no memory on what i did so heres my best recall on what i did: added dotted background grid slimmer card body made a card class for a more unified design added support for more than 1 webrings tweaked webring design and functions replaced links with website pages made a WIP component for empty pages made 3 pages: guestbook, posts, and project showcase click to copy curl command added hackatime heatmap"}]...
|
Title: Personal Website by @satr14 | Stardance
De Title: Personal Website by @satr14 | Stardance
Devlogs:
admittedly working on existing projects is much easier than starting from scratch. ill be working on my personal website whenever i get burnt out from other stuff (especially chess programming) anyways i didnt really remember much on what i did because i thought i wouldnt end up working for hours and didnt think it wouldve been worth it to submit for stardance. well turns out i accumulated a lot of hours logged but no memory on what i did so heres my best recall on what i did: added dotted background grid slimmer card body made a card class for a more unified design added support for more than 1 webrings tweaked webring design and functions replaced links with website pages made a WIP component for empty pages made 3 pages: guestbook, posts, and project showcase click to copy curl command added hackatime heatmap
this is longer than expected but oh well. i was too tired to work on any real projects because its a school night (yes indonesia doesnt have long summer breaks 😭) so back onto personal site i guess update personal information fields: description, skills, and roles update skill display to use icons from simpleicons cdn added hover to show skill name functionality added devops eng to roles because someone said i had devops skills from another project fix background z index overlap clarity for timezone refresh local timezone display every second remove card effect for transparent display on the guestbook havent worked on project showcase nor blog posts pages yet because i need to finish my blog first and figure out how to get git repos from forgejo api
finished with another project so i might as well finish this one remove located in line because i already disclose that in my bio fix curl special display to only if fecth / fix easter egg (background text) font display add vite, zed, nvim, cf, and claude skills and remove bash implemented projects page fix typescript errors with page props data spacing tweaks with main homepage animate skill icon hover resize skill icons and text to smaller size add heatmap to projects page moved heatmap url to index.ts lib tweaked card class styles to remove ugly border and add a nice shadow
short devlog because exam tomorrow but I CANT LET MY HACKATIME STREAK DIE AGAIN removed debug line left in prod from last devlog add a favicon of my cat :3 rename communities to organizations in change one of the roles to normal hackclub members add description field to orgs add org display in projects page removed blog link from main page (and prob the actual page soon) in favor of smthin else
im not joking when i say im burnt out from school. the only thing thats keeping me driving for coding is stardance and the certificate (prob the shop items too but the cert is more important for me). anyways i didnt have much energy this past week but i tried and well ig i managed to do somethin extra padding fixes for main site add a random page (not yet live) and todo list for what i wanna add later install svelte-lanyard for discord status fetching add extra library functions for timezone information remove unused lib function add timezone information to random page fix tab size in a file
exams are coming soon but i really need these hours. anyways, all pages should be completed by now. im gonna deploy and ship soon added discord status via lanyard api and npm package added games played via lizardbyte’s free igdb api proxy tweaked page transition to be shorter and use 1 global variable removed unused WIP component tweaked timezone info text remove timezone info card element 9 commits in total
aight i have an exam tomorrow so prob not the best time to be working, but whatever. im gonna add some finishing details from now on as well as improve based of last ship’s feedback changed hackclub role (im organizing haven in my city :D) added more audios to be randomly played made song playback persist between pages keep player notif open showing playback bar and play/pause button tweak pages gaps and paddings displayed webring name instead of “info?” changed main quote hehe
i believe this shouldve been more time, because wakatime randomly stopped tracking time which shouldve been like 15-25 mins but whatever. now that its the weekend, im gonna cram as much hours i can get as this is still exam week. added background elements: idle rotating stars! made the stars turn into arrows when hovering over interactive elements / links added svelte page transitions for the conditional/fetching elements tweaked music player progress bar added a credit section for assets used and design inspiration changed timezone text display for same timezone offsets moved code duplication for styles and transitions to classes and central lib functions
smol update but i randomly had a thought last night before sleeping to add this so im adding it :D added rolling titles in the background based of the roles i put in
i was supposed to work on smthin else, but saw my friend do this so i decided to implement it on my own site! it took this long mainly because its a very new feature and not really documented. luckily, my friend gave me docs (which will be merged upstream) and i was able to implement this early :D. regardless it was still pretty buggy added discord embed component info using same data as the main site content https://github.com/discord/discord-api-docs/blob/20b7c0d2a7c30fd455d3e8f6e58c8ab42eeb2849/developers/link-previews/component-embeds.mdx early docs if yall wanna try it
Ships:
V5. IS OUT this was mainly challenging as school dumps work after work on me, but i ended up working on it in my spare time whenever i find it. new pages: /projects: contains orgs and repos /guestbook: github discussion powered /random: shows discord status and games i play
this should have fixes from last ship’s suggestions as well as a extra background elements and animations to make the site look alive...
|
1793335979.753183
|
1793422379.753183
|
|
45523
|
my os by @Arianna | Stardance
|
Arianna
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: my os by @Arianna | Stardance
|
1793335983.8237407
|
1793940783.8237407
|
|
45524
|
Nook phone by @janicee | Stardance
|
janicee
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Nook phone by @janicee | Stardance
|
1793335984.7245967
|
1793940784.7245967
|
|
28570
|
Natural Selection Simulation by @VasilyKrupenin | Natural Selection Simulation by @VasilyKrupenin | Stardance...
|
VasilyKrupenin
|
1
|
20.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T19:34:25Z", "hours": 20.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made the basics of a natural selection simulation, but it unfortunately is unfinished, and since Stardance is ending pretty soon, I want to publish this so if anyone wants to use my project for something, they are free to do so, since I will be unable to finish it before it ends.", "repo": "https://github.com/vkrpn/Natural-Selection-Simulation", "demo": "https://drive.google.com/drive/folders/1Ek7X9l--7f_XP9Hxx5AYiUP00q131n4a?usp=drive_link"}]...
|
[{"post_id": 73289, "ts": "202 [{"post_id": 73289, "ts": "2026-09-24T19:27:07Z", "hours": 1.3636, "text": "Stardance is about to end, so I might as well publish this to get my 20+ hours worth of stardust. I may finish this later, but it will probably won’t be finished by the time Stardance ends. Do whatever you want with my project. It needs a screenshot, so here’s a cool picture I took:"}, {"post_id": 43552, "ts": "2026-08-08T21:48:17Z", "hours": 2.4575, "text": "It’s been a while since I last posted a devlog because I was hoping to finish the project, but I am farther away than I thought, and I also could not work on any Stardance projects for 2 weeks, unfortunately. It’s been so long since I’ve worked that I forgot what I’ve made; I think I made size, color, and a few tree variants."}, {"post_id": 27445, "ts": "2026-07-13T00:41:49Z", "hours": 2.8772, "text": "I’ve been a bit lazy, but progress on procedural generation is coming along well. I finished it and tweaked it until I got a result I liked (there was more mathematics that I had to do, like I had to use the pythagorean theorem to figure out the distance away from the center and subtract that to ensure that edges are ocean). The way it works is by first creating ocean, beach, fertile land, and mountains from noise, then I use moisture and temperature to determine the biome. Temperature is calculated by getting the latitude, subtracting the elevation (to make higher areas naturally colder), and then a bit of noise is added on top of all of that. Moisture works similarly, minus the latitude part. I also started working on vegetation; see those savanna trees? But I do have to create plants for each biome (or the creatures will have nothing to eat) which I am too lazy to do (as you can see I just made a savanna tree), I do not know what I’ll do for that. There’s so much art I have to make; I’ll have to make the animals and all of the plants. I’m planning to code a bunch of traits gained from animal appearance as soon as I put in the work to create the animals, which will be really difficult to do. I’m finally moving away from MSFT Paint though!"}, {"post_id": 25459, "ts": "2026-07-09T18:57:48Z", "hours": 2.0503, "text": "I don’t have much to display at the moment, I’ve been optimizing the code (for example, I used for loops to repeat the same process with different variables used for graphing instead of having separate code for each variable to significantly shorten the code) and I’ve started working on biomes. Since it has been a while since I have last posted a devlog, I’ll post one, and since I have to attach a screenshot or video, here’s an demonstration of natural selection in my game. You can clearly see the memory trait rose a lot and certain traits balanced out at a certain level (the images are a bit low quality but the values tracked are speed, sight, metabolism, mutation, memory, and population)."}, {"post_id": 23670, "ts": "2026-07-06T19:40:33Z", "hours": 1.7361, "text": "I did a bit more work on the windows. Now you can select which stats to track (only sight and speed for now, but I’ll fix that) and you can track up to 2 stats (but it doesn’t take long to change how many stats you can track), and you can change the colors. In the video, I am tracking the average speed and sight (note that the graph is measuring not the value, but the change in value; sight is twice as large as speed by default). I also demonstrated some of the features of the windows in the video which I forgot to show in the last one."}, {"post_id": 23131, "ts": "2026-07-05T22:03:50Z", "hours": 2.2103, "text": "I haven’t posted much because there wasn’t a lot to display or show that I’ve gotten something to work. Anyway, I coded a mutation trait which modifies how much a child’s traits can change (I noticed something pretty cool; when setting the mutation value super high like 1, it almost always drops back down to around 0.3). Here’s how mutation works: you get a child’s genes by calculating the average of the 2 parents genes plus that same number multiplied by mutation value. With a mutation of value of 1, the highest amount genes can change is double the original value. And most noticeably, I started working on UI; I started making charts that display certain traits. It’s nowhere near done, but it is coming along quite nicely. In the video attached, a chart is tracking the average speed value of the population. I didn’t show in the video, but you can drag the windows around, but that’s about it; I can only manually set the tracked value in code and drag windows around, they don’t have much features. A lot of the work I can’t really show; I was working on tracking, originally it was mostly for debugging, but now I can actually display those values with the graphs I am coding. Sorry that the video’s a bit long, Haaland scored a goal against Brazil and I forgot I was recording; I had to see the replay. He also scored a second one while I was typing this devlog. Go Norway (I’d root for Russia but they got suspended)!"}, {"post_id": 22335, "ts": "2026-07-04T19:12:32Z", "hours": 0.4192, "text": "I didn’t do much coding, and the game still needs a lot of work, but I have reached a great milestone! The game naturally selects traits! I added some statistics and a new memory trait because the creatures could just set off on a journey and remember the exact position down to the decimal places of the last food and water it saw, so I fixed that and added a timer which wipes the memory of the food/water position once it times out. The default traits are: 75 speed, 150 sight, 1 metabolism, and 7 memory. The average traits after running the simulation for some time: 65 speed, 125 sight, similar metabolism, and 10 memory. This result is pretty consistent with the exact plant and water setup in the image, but if I change it to a sparser environment, I saw speed go up by 10, sight go up by 5, metabolism stay the same, and surprisingly, despite being a trait with no negatives implemented yet, memory go down by 0.25. I guess memory doesn’t matter if you are fast enough and see well."}, {"post_id": 22200, "ts": "2026-07-04T15:37:17Z", "hours": 0.7967, "text": "I’m a bit stuck. I don’t really like the gene system so I decided to code traits as numbers, but that needs a lot of balance and tweaking to properly implement, and all of this work is a bit overwhelming. I might take a break from this project for a few days."}, {"post_id": 21092, "ts": "2026-07-02T21:47:31Z", "hours": 0.7008, "text": "I did a LOT of debugging. Fixed the last bug and numerous more that caused things like food not giving any hunger, genes getting incorrect effects, and more. I also changed how metabolism works and nerfed it. Now, Mm = 0, mm = -1, and MM = 1. These values are “intensified” by the I/i alleles. These work the same way as metabolism worked before, but now the values can be negative leading to efficient but low capacity creatures. I had to nerf it because capacity was becoming negative and creatures were getting infinite food."}, {"post_id": 20930, "ts": "2026-07-02T17:37:15Z", "hours": 1.1336, "text": "I restored my work and added a new trait; metabolism. mm is default metabolism; 10 hunger/thirst capacity and normal depletion. Mm is higher metabolism with 12-15 capacity and increased depletion. MM is highest metabolism with 13-22.5 capacity and even more increased depletion. I also made growth smooth instead of how previously juveniles instantly became adults. There’s also a strange bug which I’m trying to fix. Sometimes, the metabolism genotype becomes part of the other genotype. “Qq” “Vv” “Mm” is default, but after a few generations, you start seeing things like “Qq” “vm” “Mm” and eventually, things like “mm” “MM” “Mm”"}, {"post_id": 20449, "ts": "2026-07-02T01:28:54Z", "hours": 0.2603, "text": "All of my progress since my last devlog is lost :( I’ll have to recode all of it, but it isn’t that much work. Probably happened because I set up Git incorrectly or something."}, {"post_id": 19963, "ts": "2026-07-01T12:53:28Z", "hours": 1.1578, "text": "I coded limited resources and juvenile creatures. When creatures spawn, they have to wait 15 seconds until they can mate (so they don’t start mating right out of the womb like last time), and now when food is eaten, it regrows after 7 seconds. I’ll probably add more genes next time, or maybe even expand the map and add new biomes and plants (which would be really easy because I can just drag the food scene onto any plant and the plant now has fruits that grow and regrow)."}, {"post_id": 19464, "ts": "2026-06-30T19:55:19Z", "hours": 1.9164, "text": "I added genetics and reproduction! You can see in the output that each new organism has 2 genotypes, one for Q/q (short for quickness, didn’t want to use S because it’s a common letter and I might need it later idk I forgot), and one for V/v (short for vision) alleles (probably using all the wrong vocabulary). These genes directly affect speed and vision (with some slight randomness) and speed and vision also affects hunger and thirst depletion, meaning that being fast and seeing well has a tradeoff. I really need to code limited resources and I really need to code juvenile creatures (they’re mating at birth 😭😭😭). Maybe I could even make something like eggs? The output got cut off in the image. Here’s what it’s supposed to say: Genetics: [“Qq”,“vv”] Speed: 92.3979906001719 Sight: 150 Genetics: [“qQ”,vv”] Speed: 83.9082190561058 Sight: 150 Genetics: [“QQ”,“vV”] Speed: 142.633334008872 Sight: 171.81141852858 Genetics: [“QQ”,“vv”] Speed: 110.227173121233 Sight: 150 …"}, {"post_id": 18864, "ts": "2026-06-30T02:01:05Z", "hours": 1.2911, "text": "Finished coding a lil guy with some slight (heavy emphasis on slight) survival instincts. You can watch his hunger and thirst go down in the Godot output and watch him race towards food and water (oh wait forgot to add a hungry state he just runs after water, oh well, I’ll just add that next dev log). I just started working on this, so basically everything’s a prototype. And I also had the bright idea of making prototype assets in MS Paint, that’s why the art looks so beautiful and astounding. I have a lot of ideas for the future; I’ll probably code genes and reproduction next, but I also have a ton of ideas for the future, like Perlin noise generated terrain (like in my last project), adding natural selection for plants, multiple biomes, several species, etc… Who knows how this project will turn out? Anyways, it’s 10 PM and I have spend over an hour coding, so I should definitely go to sleep. Or should I? I reallyyyy want to code genes and reproduction."}]...
|
Title: Natural Selection Simulation by @VasilyKrup Title: Natural Selection Simulation by @VasilyKrupenin | Stardance
Devlogs:
Finished coding a lil guy with some slight (heavy emphasis on slight) survival instincts. You can watch his hunger and thirst go down in the Godot output and watch him race towards food and water (oh wait forgot to add a hungry state he just runs after water, oh well, I’ll just add that next dev log). I just started working on this, so basically everything’s a prototype. And I also had the bright idea of making prototype assets in MS Paint, that’s why the art looks so beautiful and astounding. I have a lot of ideas for the future; I’ll probably code genes and reproduction next, but I also have a ton of ideas for the future, like Perlin noise generated terrain (like in my last project), adding natural selection for plants, multiple biomes, several species, etc… Who knows how this project will turn out? Anyways, it’s 10 PM and I have spend over an hour coding, so I should definitely go to sleep. Or should I? I reallyyyy want to code genes and reproduction.
I added genetics and reproduction! You can see in the output that each new organism has 2 genotypes, one for Q/q (short for quickness, didn’t want to use S because it’s a common letter and I might need it later idk I forgot), and one for V/v (short for vision) alleles (probably using all the wrong vocabulary). These genes directly affect speed and vision (with some slight randomness) and speed and vision also affects hunger and thirst depletion, meaning that being fast and seeing well has a tradeoff. I really need to code limited resources and I really need to code juvenile creatures (they’re mating at birth 😭😭😭). Maybe I could even make something like eggs? The output got cut off in the image. Here’s what it’s supposed to say: Genetics: [“Qq”,“vv”] Speed: 92.3979906001719 Sight: 150 Genetics: [“qQ”,vv”] Speed: 83.9082190561058 Sight: 150 Genetics: [“QQ”,“vV”] Speed: 142.633334008872 Sight: 171.81141852858 Genetics: [“QQ”,“vv”] Speed: 110.227173121233 Sight: 150 …
I coded limited resources and juvenile creatures. When creatures spawn, they have to wait 15 seconds until they can mate (so they don’t start mating right out of the womb like last time), and now when food is eaten, it regrows after 7 seconds. I’ll probably add more genes next time, or maybe even expand the map and add new biomes and plants (which would be really easy because I can just drag the food scene onto any plant and the plant now has fruits that grow and regrow).
All of my progress since my last devlog is lost :( I’ll have to recode all of it, but it isn’t that much work. Probably happened because I set up Git incorrectly or something.
I restored my work and added a new trait; metabolism. mm is default metabolism; 10 hunger/thirst capacity and normal depletion. Mm is higher metabolism with 12-15 capacity and increased depletion. MM is highest metabolism with 13-22.5 capacity and even more increased depletion. I also made growth smooth instead of how previously juveniles instantly became adults. There’s also a strange bug which I’m trying to fix. Sometimes, the metabolism genotype becomes part of the other genotype. “Qq” “Vv” “Mm” is default, but after a few generations, you start seeing things like “Qq” “vm” “Mm” and eventually, things like “mm” “MM” “Mm”
I did a LOT of debugging. Fixed the last bug and numerous more that caused things like food not giving any hunger, genes getting incorrect effects, and more. I also changed how metabolism works and nerfed it. Now, Mm = 0, mm = -1, and MM = 1. These values are “intensified” by the I/i alleles. These work the same way as metabolism worked before, but now the values can be negative leading to efficient but low capacity creatures. I had to nerf it because capacity was becoming negative and creatures were getting infinite food.
I’m a bit stuck. I don’t really like the gene system so I decided to code traits as numbers, but that needs a lot of balance and tweaking to properly implement, and all of this work is a bit overwhelming. I might take a break from this project for a few days.
I didn’t do much coding, and the game still needs a lot of work, but I have reached a great milestone! The game naturally selects traits! I added some statistics and a new memory trait because the creatures could just set off on a journey and remember the exact position down to the decimal places of the last food and water it saw, so I fixed that and added a timer which wipes the memory of the food/water position once it times out. The default traits are: 75 speed, 150 sight, 1 metabolism, and 7 memory. The average traits after running the simulation for some time: 65 speed, 125 sight, similar metabolism, and 10 memory. This result is pretty consistent with the exact plant and water setup in the image, but if I change it to a sparser environment, I saw speed go up by 10, sight go up by 5, metabolism stay the same, and surprisingly, despite being a trait with no negatives implemented yet, memory go down by 0.25. I guess memory doesn’t matter if you are fast enough and see well.
I haven’t posted much because there wasn’t a lot to display or show that I’ve gotten something to work. Anyway, I coded a mutation trait which modifies how much a child’s traits can change (I noticed something pretty cool; when setting the mutation value super high like 1, it almost always drops back down to around 0.3). Here’s how mutation works: you get a child’s genes by calculating the average of the 2 parents genes plus that same number multiplied by mutation value. With a mutation of value of 1, the highest amount genes can change is double the original value. And most noticeably, I started working on UI; I started making charts that display certain traits. It’s nowhere near done, but it is coming along quite nicely. In the video attached, a chart is tracking the average speed value of the population. I didn’t show in the video, but you can drag the windows around, but that’s about it; I can only manually set the tracked value in code and drag windows around, they don’t have much features. A lot of the work I can’t really show; I was working on tracking, originally it was mostly for debugging, but now I can actually display those values with the graphs I am coding. Sorry that the video’s a bit long, Haaland scored a goal against Brazil and I forgot I was recording; I had to see the replay. He also scored a second one while I was typing this devlog. Go Norway (I’d root for Russia but they got suspended)!
I did a bit more work on the windows. Now you can select which stats to track (only sight and speed for now, but I’ll fix that) and you can track up to 2 stats (but it doesn’t take long to change how many stats you can track), and you can change the colors. In the video, I am tracking the average speed and sight (note that the graph is measuring not the value, but the change in value; sight is twice as large as speed by default). I also demonstrated some of the features of the windows in the video which I forgot to show in the last one.
I don’t have much to display at the moment, I’ve been optimizing the code (for example, I used for loops to repeat the same process with different variables used for graphing instead of having separate code for each variable to significantly shorten the code) and I’ve started working on biomes. Since it has been a while since I have last posted a devlog, I’ll post one, and since I have to attach a screenshot or video, here’s an demonstration of natural selection in my game. You can clearly see the memory trait rose a lot and certain traits balanced out at a certain level (the images are a bit low quality but the values tracked are speed, sight, metabolism, mutation, memory, and population).
I’ve been a bit lazy, but progress on procedural generation is coming along well. I finished it and tweaked it until I got a result I liked (there was more mathematics that I had to do, like I had to use the pythagorean theorem to figure out the distance away from the center and subtract that to ensure that edges are ocean). The way it works is by first creating ocean, beach, fertile land, and mountains from noise, then I use moisture and temperature to determine the biome. Temperature is calculated by getting the latitude, subtracting the elevation (to make higher areas naturally colder), and then a bit of noise is added on top of all of that. Moisture works similarly, minus the latitude part. I also started working on vegetation; see those savanna trees? But I do have to create plants for each biome (or the creatures will have nothing to eat) which I am too lazy to do (as you can see I just made a savanna tree), I do not know what I’ll do for that. There’s so much art I have to make; I’ll have to make the animals and all of the plants. I’m planning to code a bunch of traits gained from animal appearance as soon as I put in the work to create the animals, which will be really difficult to do. I’m finally moving away from MSFT Paint though!
It’s been a while since I last posted a devlog because I was hoping to finish the project, but I am farther away than I thought, and I also could not work on any Stardance projects for 2 weeks, unfortunately. It’s been so long since I’ve worked that I forgot what I’ve made; I think I made size, color, and a few tree variants.
Stardance is about to end, so I might as well publish this to get my 20+ hours worth of stardust. I may finish this later, but it will probably won’t be finished by the time Stardance ends. Do whatever you want with my project. It needs a screenshot, so here’s a cool picture I took:
Ships:
I made the basics of a natural selection simulation, but it unfortunately is unfinished, and since Stardance is ending pretty soon, I want to publish this so if anyone wants to use my project for something, they are free to do so, since I will be unable to finish it before it ends....
|
1793335985.6921763
|
1793422385.6921763
|
|
45526
|
WarioWare Game by @contanct_fluxnyx_1292 | Stardan WarioWare Game by @contanct_fluxnyx_1292 | Stardance...
|
contanct_fluxnyx_1292
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @contanct_fluxnyx_1292 | Title: WarioWare Game by @contanct_fluxnyx_1292 | Stardance...
|
1793335986.9500973
|
1793940786.9500973
|
|
45528
|
Macropad by @harth | Stardance
|
harth
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Macropad by @harth | Stardance
|
1793335987.8945062
|
1793940787.8945062
|
|
17996
|
WiFi QR Generator by @Greg_ios | Stardance
|
Greg_ios
|
1
|
2.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T07:22:34Z", "hours": 2.0, "multiplier": 1.37, "payout": 3, "blessing": "neutral", "text": "A simple and efficient utility to generate QR codes for your WiFi network, allowing guests to connect instantly by scanning the code with their smartphones. This project comes in two versions: a Command Line Interface (CLI) and a Graphical User Interface (GUI).", "repo": "https://github.com/travletothefurureprogramming/WiFi-QR-Generator", "demo": "https://github.com/travletothefurureprogramming/WiFi-QR-Generator/releases/tag/v1.0.0"}]...
|
[{"post_id": 27596, "ts": "202 [{"post_id": 27596, "ts": "2026-07-13T09:54:32Z", "hours": 0.4175, "text": "Enchanse CLI app using questionary and start making a clean README with clear explanation on how to use it"}, {"post_id": 8672, "ts": "2026-06-14T12:31:46Z", "hours": 0.2517, "text": "Add some error handling⚠️ For example:"}, {"post_id": 8663, "ts": "2026-06-14T12:00:59Z", "hours": 0.45, "text": "I have add the ability to show the password and to print the QR but the print has some problems. Also from now you can select where to save the qr when you press generate"}, {"post_id": 8108, "ts": "2026-06-13T15:06:53Z", "hours": 0.4167, "text": "Make a basic GUI😀😀😀😀😀😀"}, {"post_id": 8088, "ts": "2026-06-13T14:41:36Z", "hours": 0.5336, "text": "Making the main generator in terminal!!!! Next Steps: GUI using CustomTkinter😀😀😀"}]...
|
Title: WiFi QR Generator by @Greg_ios | Stardance
Title: WiFi QR Generator by @Greg_ios | Stardance
Devlogs:
Making the main generator in terminal!!!! Next Steps: GUI using CustomTkinter😀😀😀
Make a basic GUI😀😀😀😀😀😀
I have add the ability to show the password and to print the QR but the print has some problems. Also from now you can select where to save the qr when you press generate
Add some error handling⚠️ For example:
Enchanse CLI app using questionary and start making a clean README with clear explanation on how to use it
Ships:
A simple and efficient utility to generate QR codes for your WiFi network, allowing guests to connect instantly by scanning the code with their smartphones. This project comes in two versions: a Command Line Interface (CLI) and a Graphical User Interface (GUI)....
|
1793335988.8261485
|
1793422388.8261485
|
|
45530
|
Bluetooth RC car by @advait_padalkar | Stardance
|
advait_padalkar
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Bluetooth RC car by @advait_padalkar | Star Title: Bluetooth RC car by @advait_padalkar | Stardance...
|
1793335990.0009296
|
1793940790.0009296
|
|
41886
|
My very own WebOS by @sanskarsingh | Stardance
|
sanskarsingh
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-05T06:56:05Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i did it and its my second project you can also see it on my github page i will do more things like it", "repo": "https://github.com/Sanskarsingh100/webos", "demo": "https://sanskarsingh100.github.io/webos/"}]...
|
[{"post_id": 76962, "ts": "202 [{"post_id": 76962, "ts": "2026-10-05T06:46:05Z", "hours": 0.2556, "text": "it is done now i am publishing it to every one now you can use music and play games and browse in browser but sites can not be opened,thank you"}, {"post_id": 74424, "ts": "2026-09-27T11:14:04Z", "hours": 1.6297, "text": "i have added a music player in it right now and did multiple things now. im going to work on wallpaper and others"}, {"post_id": 38943, "ts": "2026-08-01T15:38:18Z", "hours": 1.1494, "text": "it looks live this now . isn’t is looking good? i have also added live time and date too"}, {"post_id": 38836, "ts": "2026-08-01T12:16:55Z", "hours": 0.2514, "text": "im trying to make a webos based on html"}]...
|
Title: My very own WebOS by @sanskarsingh | Starda Title: My very own WebOS by @sanskarsingh | Stardance
Devlogs:
im trying to make a webos based on html
it looks live this now . isn’t is looking good? i have also added live time and date too
i have added a music player in it right now and did multiple things now. im going to work on wallpaper and others
it is done now i am publishing it to every one now you can use music and play games and browse in browser but sites can not be opened,thank you
Ships:
i did it and its my second project you can also see it on my github page i will do more things like it...
|
1793335990.905544
|
1793422390.905544
|
|
45531
|
My own site! by @guy-flands | Stardance
|
guy-flands
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @guy-flands | Stardance
|
1793335992.1332412
|
1793940792.1332412
|
|
45533
|
Safleyy by @Nomsa | Stardance
|
Nomsa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Safleyy by @Nomsa | Stardance
|
1793335993.052939
|
1793940793.052939
|
|
41895
|
Mew Version Control by @matteoduda | Stardance
|
matteoduda
|
1
|
19.28
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T11:36:04Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The screenshot shows the user’s projects. What was really challenging for me was communicating with the API, which is community maintained and not very well documented.", "repo": "https://www.github.com/gtx-lover-69/mew-version-control/", "demo": "https://github.com/gtx-lover-69/mew-version-control/releases/tag/stable"}]...
|
[{"post_id": 74568, "ts": "202 [{"post_id": 74568, "ts": "2026-09-27T17:22:54Z", "hours": 2.2792, "text": "i FINALLY managed to add support for private projects!! after a LOT of trial and error, both with scratch’s API, web responses, and my own (shitty) code, i finally managed to add support for private projects. users can now pull, edit, and commit their unshared projects locally!"}, {"post_id": 72402, "ts": "2026-09-22T20:56:55Z", "hours": 16.6714, "text": "using tldraw, I figured out the basic workflow of a user. I then built basic features around it and debugged. Using codes such as GPL (get project list) i could easily organise my code into dedicated functions. I also worked on making the CLI pretty."}]...
|
Title: Mew Version Control by @matteoduda | Starda Title: Mew Version Control by @matteoduda | Stardance
Devlogs:
using tldraw, I figured out the basic workflow of a user. I then built basic features around it and debugged. Using codes such as GPL (get project list) i could easily organise my code into dedicated functions. I also worked on making the CLI pretty.
i FINALLY managed to add support for private projects!! after a LOT of trial and error, both with scratch’s API, web responses, and my own (shitty) code, i finally managed to add support for private projects. users can now pull, edit, and commit their unshared projects locally!
Ships:
The screenshot shows the user’s projects. What was really challenging for me was communicating with the API, which is community maintained and not very well documented....
|
1793335993.9791577
|
1793422393.9791577
|
|
45534
|
Website? by @fluxnyx | Stardance
|
fluxnyx
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Website? by @fluxnyx | Stardance
|
1793335995.1810398
|
1793940795.1810398
|
|
45535
|
WarioWare Game by @MashiroAkira | Stardance
|
MashiroAkira
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @MashiroAkira | Stardance
|
1793335996.1181054
|
1793940796.1181054
|
|
33813
|
My own site! by @angegrace | Stardance
|
angegrace
|
1
|
8.31
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-18T15:31:49Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I just made my first ever website and my first ever attempt to programming. What was difficult was figuring out the hackatime, downloading the apps and setting up everything so that I can finally show the world. I never knew programming could be so exciting, I love the CSS part because it helps me paly with colours and stuff. I am still building it. This is not the final version, I still need to play with CSS :) hehe. I started coding at noon then it is only when I need to post a devlog that I realise that hackatime is not in my editor😭😭, that is why it shows only 1 hour. 😭😭", "repo": "https://github.com/nopoudemange-pop/grace-website", "demo": "https://nopoudemange-pop.github.io/grace-website/"}]...
|
[{"post_id": 73736, "ts": "202 [{"post_id": 73736, "ts": "2026-09-25T20:12:52Z", "hours": 4.7478, "text": "I added pictures guys, like real owns and even a gallery. I very much suffered to understand how to put the pictures and even more how to put the pictures. I absolutely love the final look and I feel that all the work has been put to good use."}, {"post_id": 71908, "ts": "2026-09-21T19:07:43Z", "hours": 2.5597, "text": "I am working on my personal website. I have updated it since, I have tried making it warm and lively. I am still trying for it not to look like a whole chunk of a word document, but I think there is improvement. It took a lot of learning from youtube and a lot of confusion and fustration to reach this level 😭😭😭😭"}, {"post_id": 70136, "ts": "2026-09-18T15:19:34Z", "hours": 0.56, "text": "I am working on my own website. This is my first time attempting coding and I am really loving. My favorite part is the css, like playing with the colours an all, I am really happy and motivated to continue. Next time there will be images :) hehe"}]...
|
Title: My own site! by @angegrace | Stardance
Dev Title: My own site! by @angegrace | Stardance
Devlogs:
I am working on my own website. This is my first time attempting coding and I am really loving. My favorite part is the css, like playing with the colours an all, I am really happy and motivated to continue. Next time there will be images :) hehe
I am working on my personal website. I have updated it since, I have tried making it warm and lively. I am still trying for it not to look like a whole chunk of a word document, but I think there is improvement. It took a lot of learning from youtube and a lot of confusion and fustration to reach this level 😭😭😭😭
I added pictures guys, like real owns and even a gallery. I very much suffered to understand how to put the pictures and even more how to put the pictures. I absolutely love the final look and I feel that all the work has been put to good use.
Ships:
I just made my first ever website and my first ever attempt to programming. What was difficult was figuring out the hackatime, downloading the apps and setting up everything so that I can finally show the world. I never knew programming could be so exciting, I love the CSS part because it helps me paly with colours and stuff. I am still building it. This is not the final version, I still need to play with CSS :) hehe. I started coding at noon then it is only when I need to post a devlog that I realise that hackatime is not in my editor😭😭, that is why it shows only 1 hour. 😭😭...
|
1793335997.0649796
|
1793422397.0649796
|
|
45537
|
Frictionless by @josesab2007 | Stardance
|
josesab2007
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @josesab2007 | Stardance
|
1793335998.275709
|
1793940798.275709
|
|
45539
|
My very own WebOS by @Hooper_1209 | Stardance
|
Hooper_1209
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Hooper_1209 | Stardan Title: My very own WebOS by @Hooper_1209 | Stardance...
|
1793335999.224906
|
1793940799.224906
|
|
6648
|
LUNATIK by @g_jeanvermeille | Stardance
|
g_jeanvermeille
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T17:06:09Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built LUNATIK, a flight computer for our model rocket (Pico 2, CircuitPython) that fuses a barometer and accelerometer with a Kalman filter to detect apogee, logs to SD and streams LoRa telemetry. The hard part: we had one motor, so it had to work first try. I’m proud it did, calling apogee 0.45 s after the top while the motor’s charge fired 2.5 s later. To test without a rocket: python scripts/dashboard.py –simulate. Only coding hours were logged, not the hardware build.", "repo": "https://github.com/gabriel84-py/fus-e_code", "demo": ""}]...
|
[{"post_id": 75278, "ts": "202 [{"post_id": 75278, "ts": "2026-09-29T16:59:52Z", "hours": 0.4389, "text": "Documention for ship !"}, {"post_id": 75249, "ts": "2026-09-29T15:50:42Z", "hours": 0.3511, "text": "launching with avionics !!!"}, {"post_id": 70671, "ts": "2026-09-19T15:51:12Z", "hours": 11.8942, "text": "Launching LUNATIK (without electronics) and coding its flight computer to launch it in 1 week !!"}, {"post_id": 42061, "ts": "2026-08-06T16:53:48Z", "hours": 1.9433, "text": "Body of the rocket, some elctronics (PCB) and some code for the PCB !"}]...
|
Title: LUNATIK by @g_jeanvermeille | Stardance
De Title: LUNATIK by @g_jeanvermeille | Stardance
Devlogs:
Body of the rocket, some elctronics (PCB) and some code for the PCB !
Launching LUNATIK (without electronics) and coding its flight computer to launch it in 1 week !!
launching with avionics !!!
Documention for ship !
Ships:
I built LUNATIK, a flight computer for our model rocket (Pico 2, CircuitPython) that fuses a barometer and accelerometer with a Kalman filter to detect apogee, logs to SD and streams LoRa telemetry. The hard part: we had one motor, so it had to work first try. I’m proud it did, calling apogee 0.45 s after the top while the motor’s charge fired 2.5 s later. To test without a rocket: python scripts/dashboard.py –simulate. Only coding hours were logged, not the hardware build....
|
1793336000.115773
|
1793422400.115773
|
|
45540
|
Need by @alikrlll977 | Stardance
|
alikrlll977
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Need by @alikrlll977 | Stardance
|
1793336001.3185306
|
1793940801.3185306
|
|
45541
|
ColrowDB by @SeradedStripes | Stardance
|
SeradedStripes
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ColrowDB by @SeradedStripes | Stardance
|
1793336002.2325592
|
1793940802.2325592
|
|
45543
|
My awesome macropad! by @Raheel | Stardance
|
Raheel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Raheel | Stardance
|
1793336003.166803
|
1793940803.166803
|
|
46834
|
Website for my Mom by @idrinkgrass | Stardance
|
idrinkgrass
|
1
|
5.0
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-22T22:58:35Z", "hours": 5.0, "multiplier": 1.37, "payout": 7, "blessing": "neutral", "text": "Hello, I made a website for my Mom, because she asked me to. It was hard making it look good because I’m not very good at coding even more with CSS. Another way I struggled is school taking away 3/4ths of my time so I didn’t have much time to work on this ╥_╥ . I’m proud that I still finished this project even with school taking away most of my time and still finding time to do it after school and sometimes during class 😭 . There isn’t much that you need to know before testing out my project but the red and blue things at the top right corner are buttons to my moms stuff. I hope that I get at least 15 stardust so I can afford the campfire shirt in the stardance shop 😭 .", "repo": "https://github.com/iDrinkGrass/Website-for-my-Mom", "demo": "https://idrinkgrass.github.io/Website-for-my-Mom/"}]...
|
[{"post_id": 72431, "ts": "202 [{"post_id": 72431, "ts": "2026-09-22T22:47:38Z", "hours": 0.3581, "text": "Read me I added the read me because when I was abt to press ship it said that 21 min would be lost if i didn’t because of the time I spent on the read me so yeah, I added the readme."}, {"post_id": 72404, "ts": "2026-09-22T21:02:10Z", "hours": 0.6017, "text": "I’m currently in art class writing this dev log Hi, i’m in art class writing this devlog rn 😭, I think if i add anymore to this website I won’t finish it in time before stardance ends. So i’m going to ship after I finish my readme and stuff. I hope that I get enough stardust to get the Campfire shirt (I alr have 50 stardust from my WebOS) ps. Try Barch Linux on my Hack Club or Github. New stuff! I moved the Contact Me section to the top right corner, and fixed the Experiences Titles."}, {"post_id": 70442, "ts": "2026-09-19T06:25:00Z", "hours": 1.2197, "text": "I lwk locked in after school Hello, for those who don’t already know I am making a website for my mom so no this is not me 😭. Last dev log I said that school and extracurriculars have been taking up WAY TO MUCH TIME. But, I decided that I have to LOCK IN before stardance ends. So I went to the study hall after school (For like 4 hours ) and added a bunch of new stuff, (Not a lot 😭) hope you like it! New Stuff Contact Me I added a Contact Me section with buttons that take you to my mom’s Linkedin or email. Experiences Section I made a section with all of my mom’s stuff in her portfolio. :D Tab title and icon Exactly what you think it is… Also ty to @Blxm for helping me after school."}, {"post_id": 69921, "ts": "2026-09-18T02:21:14Z", "hours": 2.9394, "text": "Devlog #1 Started a website for my mom Hi, I haven’t made much progress because school and extracurriculars have been TAKING AWAY 4/5THS OF MY TIME , but I hope I can finish this website before stardance ends. I’m trying to make this website good enough so I can get 14 more stardust to get one of those shirts in the shop (I need this ). I am going to try to put a lot more effort and put a lot more of my time into this website so I hope I can make this good."}]...
|
Title: Website for my Mom by @idrinkgrass | Starda Title: Website for my Mom by @idrinkgrass | Stardance
Devlogs:
Devlog #1 Started a website for my mom Hi, I haven’t made much progress because school and extracurriculars have been TAKING AWAY 4/5THS OF MY TIME , but I hope I can finish this website before stardance ends. I’m trying to make this website good enough so I can get 14 more stardust to get one of those shirts in the shop (I need this ). I am going to try to put a lot more effort and put a lot more of my time into this website so I hope I can make this good.
I lwk locked in after school Hello, for those who don’t already know I am making a website for my mom so no this is not me 😭. Last dev log I said that school and extracurriculars have been taking up WAY TO MUCH TIME. But, I decided that I have to LOCK IN before stardance ends. So I went to the study hall after school (For like 4 hours ) and added a bunch of new stuff, (Not a lot 😭) hope you like it! New Stuff Contact Me I added a Contact Me section with buttons that take you to my mom’s Linkedin or email. Experiences Section I made a section with all of my mom’s stuff in her portfolio. :D Tab title and icon Exactly what you think it is… Also ty to @Blxm for helping me after school.
I’m currently in art class writing this dev log Hi, i’m in art class writing this devlog rn 😭, I think if i add anymore to this website I won’t finish it in time before stardance ends. So i’m going to ship after I finish my readme and stuff. I hope that I get enough stardust to get the Campfire shirt (I alr have 50 stardust from my WebOS) ps. Try Barch Linux on my Hack Club or Github. New stuff! I moved the Contact Me section to the top right corner, and fixed the Experiences Titles.
Read me I added the read me because when I was abt to press ship it said that 21 min would be lost if i didn’t because of the time I spent on the read me so yeah, I added the readme.
Ships:
Hello, I made a website for my Mom, because she asked me to. It was hard making it look good because I’m not very good at coding even more with CSS. Another way I struggled is school taking away 3/4ths of my time so I didn’t have much time to work on this ╥_╥ . I’m proud that I still finished this project even with school taking away most of my time and still finding time to do it after school and sometimes during class 😭 . There isn’t much that you need to know before testing out my project but the red and blue things at the top right corner are buttons to my moms stuff. I hope that I get at least 15 stardust so I can afford the campfire shirt in the stardance shop 😭 ....
|
1793336004.1276228
|
1793422404.1276228
|
|
45544
|
AlGOL by @rayzchen | Stardance
|
rayzchen
|
1
|
24.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-30T00:18:08Z", "hours": 24.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "AlGOL - Game of Life NOTE: DOES NOT WORK ON MOBILE https://rayzchen.github.io/algol/ Game of Life is a cellular automata that simulates patterns of cells changing over time. Each cell is either “dead” or “alive”. If an alive cell has more than 3 alive neighbours it dies of crowding If an alive cell has less than 2 alive neighbours it dies of loneliness If a dead cell has exactly 3 alive neighbours it becomes alive Each frame is then decided based on the state of the previous. Have fun experimenting with the simulation controls!", "repo": "https://github.com/rayzchen/algol", "demo": "https://rayzchen.github.io/algol/"}]...
|
[{"post_id": 84471, "ts": "202 [{"post_id": 84471, "ts": "2026-10-29T18:15:34Z", "hours": 1.7108, "text": "Revert cursor Unfortunately I could not get time to finish implementing the cursor functionality, so that has now been moved to a separate branch for anyone interested in running that demo. The patterns can now be accessed via a link in the sidebar."}, {"post_id": 72733, "ts": "2026-09-23T16:43:17Z", "hours": 4.6883, "text": "Cursor for placement Much of this logged time was actually spent hunting for RLE files and testing them… Rewrote a large portion of the loading code to render a ‘cursor’ which indicates where the placed cells will be. The actual placing hasn’t been implemented yet… RLE bank can be found at https://rayzchen.github.io/algol/patterns/"}, {"post_id": 71460, "ts": "2026-09-20T21:21:27Z", "hours": 1.2733, "text": "Loading RLE strings Added a modal to input any RLE string (many can be found at https://conwaylife.com/wiki/ !). Spent a while trying to debug an extra generation simulated when loading, only to realise my RLE loading was too fast and outpaced the simulator… The RLE can also be inputted through Ctrl+Enter. RLE banks to be created soon… Temporary deployments can be found at https://rayzchen.github.io/algol/"}, {"post_id": 50667, "ts": "2026-08-19T22:59:05Z", "hours": 2.2294, "text": "Minimap and QoL After a few busy days at work, I’ve finally made progress on AlGOL! A minimap of the current viewing area appears when the map is dragged or zoomed, it can be toggled and adjusts according to wrapping. Also added zoom hotkeys that zoom precisely on the centre for ease of access. Temporary deployments can be found at https://rayzchen.github.io/algol/"}, {"post_id": 45078, "ts": "2026-08-11T10:55:22Z", "hours": 1.3367, "text": "Wrapping There is now an option to enable/disable grid wrapping, so cells on the edge of the map will die off. Produces interesting results! Also added a button to reset the view to the middle of the map in case the user gets lost in the unwrapped grid. Temporary deployments can be found at https://rayzchen.github.io/algol/"}, {"post_id": 44882, "ts": "2026-08-10T22:28:37Z", "hours": 2.8556, "text": "RLE PATTERN LOADING! There are three default patterns that can be loaded into the map: glider, glider gun, and breeder1 (a glider gun breeder). The map has been expanded to 2048x2048 which may have terrible performance at faster simulation speeds :( Color themes have also been added (currently only blue/green or black/white). Temporary deployments can be found at https://rayzchen.github.io/algol/"}, {"post_id": 44745, "ts": "2026-08-10T18:24:56Z", "hours": 0.5489, "text": "Performance and UI improvements Rendering is now disabled when the simulation is paused, which makes moving around really smooth! The side panel now shows the current zoom level and some keybinds for the buttons. Temporary deployments can be found at https://rayzchen.github.io/algol/"}, {"post_id": 44714, "ts": "2026-08-10T17:33:44Z", "hours": 2.1089, "text": "Better controls The slider now has larger segments for more common speeds (1-5 frames per second, 1-5x speed) for better usability, and now there’s a play/pause button and a step button to view individual generations! https://www.desmos.com/calculator/3ipfxfsmlu contains some of the math for the slider Temporary deployments can be found at https://rayzchen.github.io/algol/"}, {"post_id": 44629, "ts": "2026-08-10T15:03:14Z", "hours": 1.6703, "text": "Click+drag! The map is now larger than just the screen, and click+drag works to explore the whole (repeating) map! Temporary deployments can be found at https://rayzchen.github.io/algol/"}, {"post_id": 44210, "ts": "2026-08-09T20:25:50Z", "hours": 1.9578, "text": "Simulation speeds Changing the “Iterations” slider will change the number of steps the simulation goes through each frame. The code runs slow on mobile for some reason but performance doesn’t drop too much even with 32x iterations on desktop edit: most of the logged time was spent making optimizations in the shaders, will have to investigate mobile later"}, {"post_id": 44089, "ts": "2026-08-09T16:48:54Z", "hours": 0.8133, "text": "Basic GUI Added a few user interaction elements such as toggleable GUI, FPS counter and some frameworks to add more panels"}, {"post_id": 43504, "ts": "2026-08-08T20:21:29Z", "hours": 0.8361, "text": "Colour Cells now fade and change colour when they form and die."}, {"post_id": 43478, "ts": "2026-08-08T19:27:15Z", "hours": 0.7353, "text": "Game of Life rules Implemented the rules of Game of Life: Each cell is either “dead” (black) or “alive” (white) If an alive cell has more than 3 alive neighbours it dies of crowding If an alive cell has less than 2 alive neighbours it dies of loneliness If a dead cell has exactly 3 alive neighbours it becomes alive Each frame is then decided based on the state of the previous. You can see some “glider” patterns emerging from the randomly generated soup!"}, {"post_id": 43263, "ts": "2026-08-08T12:54:09Z", "hours": 1.3628, "text": "Setup First time using WebGL, so I had to look at the mdn documentation quite a few times to understand the syntax. Pink screen."}]...
|
Title: AlGOL by @rayzchen | Stardance
Devlogs:
Se Title: AlGOL by @rayzchen | Stardance
Devlogs:
Setup First time using WebGL, so I had to look at the mdn documentation quite a few times to understand the syntax. Pink screen.
Game of Life rules Implemented the rules of Game of Life: Each cell is either “dead” (black) or “alive” (white) If an alive cell has more than 3 alive neighbours it dies of crowding If an alive cell has less than 2 alive neighbours it dies of loneliness If a dead cell has exactly 3 alive neighbours it becomes alive Each frame is then decided based on the state of the previous. You can see some “glider” patterns emerging from the randomly generated soup!
Colour Cells now fade and change colour when they form and die.
Basic GUI Added a few user interaction elements such as toggleable GUI, FPS counter and some frameworks to add more panels
Simulation speeds Changing the “Iterations” slider will change the number of steps the simulation goes through each frame. The code runs slow on mobile for some reason but performance doesn’t drop too much even with 32x iterations on desktop edit: most of the logged time was spent making optimizations in the shaders, will have to investigate mobile later
Click+drag! The map is now larger than just the screen, and click+drag works to explore the whole (repeating) map! Temporary deployments can be found at https://rayzchen.github.io/algol/
Better controls The slider now has larger segments for more common speeds (1-5 frames per second, 1-5x speed) for better usability, and now there’s a play/pause button and a step button to view individual generations! https://www.desmos.com/calculator/3ipfxfsmlu contains some of the math for the slider Temporary deployments can be found at https://rayzchen.github.io/algol/
Performance and UI improvements Rendering is now disabled when the simulation is paused, which makes moving around really smooth! The side panel now shows the current zoom level and some keybinds for the buttons. Temporary deployments can be found at https://rayzchen.github.io/algol/
RLE PATTERN LOADING! There are three default patterns that can be loaded into the map: glider, glider gun, and breeder1 (a glider gun breeder). The map has been expanded to 2048x2048 which may have terrible performance at faster simulation speeds :( Color themes have also been added (currently only blue/green or black/white). Temporary deployments can be found at https://rayzchen.github.io/algol/
Wrapping There is now an option to enable/disable grid wrapping, so cells on the edge of the map will die off. Produces interesting results! Also added a button to reset the view to the middle of the map in case the user gets lost in the unwrapped grid. Temporary deployments can be found at https://rayzchen.github.io/algol/
Minimap and QoL After a few busy days at work, I’ve finally made progress on AlGOL! A minimap of the current viewing area appears when the map is dragged or zoomed, it can be toggled and adjusts according to wrapping. Also added zoom hotkeys that zoom precisely on the centre for ease of access. Temporary deployments can be found at https://rayzchen.github.io/algol/
Loading RLE strings Added a modal to input any RLE string (many can be found at https://conwaylife.com/wiki/ !). Spent a while trying to debug an extra generation simulated when loading, only to realise my RLE loading was too fast and outpaced the simulator… The RLE can also be inputted through Ctrl+Enter. RLE banks to be created soon… Temporary deployments can be found at https://rayzchen.github.io/algol/
Cursor for placement Much of this logged time was actually spent hunting for RLE files and testing them… Rewrote a large portion of the loading code to render a ‘cursor’ which indicates where the placed cells will be. The actual placing hasn’t been implemented yet… RLE bank can be found at https://rayzchen.github.io/algol/patterns/
Revert cursor Unfortunately I could not get time to finish implementing the cursor functionality, so that has now been moved to a separate branch for anyone interested in running that demo. The patterns can now be accessed via a link in the sidebar.
Ships:
AlGOL - Game of Life NOTE: DOES NOT WORK ON MOBILE https://rayzchen.github.io/algol/ Game of Life is a cellular automata that simulates patterns of cells changing over time. Each cell is either “dead” or “alive”. If an alive cell has more than 3 alive neighbours it dies of crowding If an alive cell has less than 2 alive neighbours it dies of loneliness If a dead cell has exactly 3 alive neighbours it becomes alive Each frame is then decided based on the state of the previous. Have fun experimenting with the simulation controls!...
|
1793336005.321852
|
1793422405.321852
|
|
45546
|
Airsoft AI shooter by @julian_leiser | Stardance
|
julian_leiser
|
0
|
6.81
|
0
|
[]
|
[{"post_id": 43654, "ts": "202 [{"post_id": 43654, "ts": "2026-08-09T01:24:03Z", "hours": 1.0333, "text": "Metal construction that can be used for the final product"}, {"post_id": 43622, "ts": "2026-08-09T00:18:02Z", "hours": 0.2983, "text": "Update Video"}, {"post_id": 43588, "ts": "2026-08-08T22:46:49Z", "hours": 0.45, "text": "Doing some research because of the barrel problem"}, {"post_id": 43565, "ts": "2026-08-08T21:55:19Z", "hours": 2.3669, "text": "Connected GND with a button instead of the trigger, that the Raspberry pi can later shoot without a server next to the trigger. Also tried to attach an old metal rail to it because the original has a too big hole. With the too big hole (1mm too big) the BBs arent stuck till preasure arrives and overload like a shotgun not cool :-( . Wasted much time on the barrel…"}, {"post_id": 43422, "ts": "2026-08-08T17:30:30Z", "hours": 0.8928, "text": "Making the magazine click into the airsoft. I have to impromize a lot because many small plastic pieces are broken"}, {"post_id": 43385, "ts": "2026-08-08T16:15:12Z", "hours": 0.7536, "text": "Measuring the pices to see if the adapter that was in the airsoft still has the correct size"}, {"post_id": 43286, "ts": "2026-08-08T13:51:33Z", "hours": 1.0194, "text": "dismantling the Airsoft to make it smaller and Adding a rail"}]...
|
Title: Airsoft AI shooter by @julian_leiser | Star Title: Airsoft AI shooter by @julian_leiser | Stardance
Devlogs:
dismantling the Airsoft to make it smaller and Adding a rail
Measuring the pices to see if the adapter that was in the airsoft still has the correct size
Making the magazine click into the airsoft. I have to impromize a lot because many small plastic pieces are broken
Connected GND with a button instead of the trigger, that the Raspberry pi can later shoot without a server next to the trigger. Also tried to attach an old metal rail to it because the original has a too big hole. With the too big hole (1mm too big) the BBs arent stuck till preasure arrives and overload like a shotgun not cool :-( . Wasted much time on the barrel…
Doing some research because of the barrel problem
Update Video
Metal construction that can be used for the final product...
|
1793336006.6197479
|
1793940806.6197479
|
|
45547
|
Brainy robot by @SAMIKSHA | Stardance
|
SAMIKSHA
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Brainy robot by @SAMIKSHA | Stardance
|
1793336007.8313022
|
1793940807.8313022
|
|
55267
|
Portfolio Website by @ibrahimthegoat | Stardance
|
ibrahimthegoat
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T16:33:45Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a personal portfolio website to showcase my elder brother’s video editing work in one place. The most challenging part was setting up custom CMS bindings for my editing showcase, getting the embedded video players to load smoothly without layout shifts, and fixing the responsive layout issues on different screens.", "repo": "https://github.com/ibrahimahsan954-eng/portfolio-website", "demo": "https://editsbyebad.freebuff.app"}]...
|
[{"post_id": 63666, "ts": "202 [{"post_id": 63666, "ts": "2026-09-07T16:30:03Z", "hours": 0.3, "text": "let’s make the typography look premium and rich as 🤑"}, {"post_id": 60126, "ts": "2026-09-02T09:22:39Z", "hours": 0.9611, "text": "Adding Security Features & Video Editing Keywords So The Site Gets More Views"}]...
|
Title: Portfolio Website by @ibrahimthegoat | Star Title: Portfolio Website by @ibrahimthegoat | Stardance
Devlogs:
Adding Security Features & Video Editing Keywords So The Site Gets More Views
let’s make the typography look premium and rich as 🤑
Ships:
I built a personal portfolio website to showcase my elder brother’s video editing work in one place. The most challenging part was setting up custom CMS bindings for my editing showcase, getting the embedded video players to load smoothly without layout shifts, and fixing the responsive layout issues on different screens....
|
1793336008.6992655
|
1793422408.6992655
|
|
45548
|
SOX FOR DEVELOPERS by @ALM | Stardance
|
ALM
|
0
|
0.71
|
0
|
[]
|
[{"post_id": 45791, "ts": "202 [{"post_id": 45791, "ts": "2026-08-12T14:40:53Z", "hours": 0.7089, "text": "I am make a navbar for this web"}]...
|
Title: SOX FOR DEVELOPERS by @ALM | Stardance
Dev Title: SOX FOR DEVELOPERS by @ALM | Stardance
Devlogs:
I am make a navbar for this web...
|
1793336009.8825526
|
1793940809.8825526
|
|
45549
|
ENAOS by @Vennerisms | Stardance
|
Vennerisms
|
0
|
2.14
|
0
|
[]
|
[{"post_id": 43777, "ts": "202 [{"post_id": 43777, "ts": "2026-08-09T06:35:17Z", "hours": 1.1028, "text": "Devlog 1.5 : Mini-progress! Hello my lovely little rainrocks! I didn’t wanna make this one a full devlog because I’ve only added two minor things like the draggable welcome window and the digital clock in the corner… my first time tinkering with Javascript actually! I think it’s super neat! :P"}, {"post_id": 43479, "ts": "2026-08-08T19:27:44Z", "hours": 1.0364, "text": "Devlog 1: Basics Hello my lovely little rainrocks! I am back with another mission project :D it is currently 2:24 in the morning and I cannot sleep! Anyways, I have started on the webOS project! Themed after one of my favorite internet webseries, ENA! Nothing big has been achieved just yet, I’ve only made the basics like the welcome window, the bar at the bottom and the background :P I will do more work in the morning!"}]...
|
Title: ENAOS by @Vennerisms | Stardance
Devlogs:
Title: ENAOS by @Vennerisms | Stardance
Devlogs:
Devlog 1: Basics Hello my lovely little rainrocks! I am back with another mission project :D it is currently 2:24 in the morning and I cannot sleep! Anyways, I have started on the webOS project! Themed after one of my favorite internet webseries, ENA! Nothing big has been achieved just yet, I’ve only made the basics like the welcome window, the bar at the bottom and the background :P I will do more work in the morning!
Devlog 1.5 : Mini-progress! Hello my lovely little rainrocks! I didn’t wanna make this one a full devlog because I’ve only added two minor things like the draggable welcome window and the digital clock in the corner… my first time tinkering with Javascript actually! I think it’s super neat! :P...
|
1793336010.7924223
|
1793940810.7924223
|
|
55285
|
Slasher by @KelvinY | Stardance
|
KelvinY
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T07:26:11Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Your friendly slack bot Slasher! You can ask him any questions by typing /slasher-ask [prompt], implemented using Cloudflare Worker AI (spending my own neutrons/tokens :/) You can also type /slasher-trivia to get a random useless fact about the world, fetched from a free api Thank you!", "repo": "https://github.com/kelvinyhf/slasher", "demo": "https://hackclub.slack.com/archives/C0BV7JP4KMZ"}]...
|
[{"post_id": 62724, "ts": "202 [{"post_id": 62724, "ts": "2026-09-06T07:01:08Z", "hours": 0.635, "text": "Added profile picture for Slasher, and completed README"}, {"post_id": 62642, "ts": "2026-09-06T03:26:01Z", "hours": 2.4117, "text": "Added five commands: -help (shows a list of commands available), -ping (latency checking), -hello, -trivia (get a random useless fact, using the free api [https://uselessfacts.jsph.pl/api/v2/facts/random?language=en]), and the core, -ask (using my own cloudflare worker AI, coded in the backend)."}]...
|
Title: Slasher by @KelvinY | Stardance
Devlogs:
A Title: Slasher by @KelvinY | Stardance
Devlogs:
Added five commands: -help (shows a list of commands available), -ping (latency checking), -hello, -trivia (get a random useless fact, using the free api [https://uselessfacts.jsph.pl/api/v2/facts/random?language=en]), and the core, -ask (using my own cloudflare worker AI, coded in the backend).
Added profile picture for Slasher, and completed README
Ships:
Your friendly slack bot Slasher! You can ask him any questions by typing /slasher-ask [prompt], implemented using Cloudflare Worker AI (spending my own neutrons/tokens :/) You can also type /slasher-trivia to get a random useless fact about the world, fetched from a free api Thank you!...
|
1793336012.0942616
|
1793422412.0942616
|
|
50350
|
Skyfall by @piyushpraju | Stardance
|
piyushpraju
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Skyfall by @piyushpraju | Stardance
|
1793336018.120765
|
1793940818.120765
|
|
50352
|
webos by @rgb-hsl | Stardance
|
rgb-hsl
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: webos by @rgb-hsl | Stardance
|
1793336019.0213451
|
1793940819.0213451
|
|
50353
|
Smart Cube by @daniel_peregudov | Stardance
|
daniel_peregudov
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Smart Cube by @daniel_peregudov | Stardance
|
1793336020.0858383
|
1793940820.0858383
|
|
50354
|
My awesome macropad! by @Emvixy | Stardance
|
Emvixy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Emvixy | Stardance
|
1793336021.2380967
|
1793940821.2380967
|
|
41918
|
Ball Pit Sim by @antekj_smalec | Stardance
|
antekj_smalec
|
1
|
11.0
|
146
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T12:34:37Z", "hours": 11.0, "multiplier": 13.32, "payout": 146, "blessing": "neutral", "text": "I made a simple 2d physics collison simulator. I originally intended to have complex polygon collisions but my circumstances didn’t allow me to work on this project for quite some time. Nonetheless I am happy with what I made and I hope you can appreciate it :)", "repo": "https://github.com/antekjsmalec/PySim/", "demo": "https://github.com/antekjsmalec/PySim/releases/tag/1.0"}]...
|
[{"post_id": 74449, "ts": "202 [{"post_id": 74449, "ts": "2026-09-27T12:10:08Z", "hours": 2.4414, "text": "I had to change the scope of the project cos im running out of time. It is only gonna have ball collisions now"}, {"post_id": 39474, "ts": "2026-08-02T13:18:58Z", "hours": 1.5694, "text": "Fixed the bug, took a little longer than i originally thought but also fixed some other things. add some usefull debug features. Anyway collisions for circles is done and pretty fun to play around with"}, {"post_id": 39199, "ts": "2026-08-02T00:07:16Z", "hours": 2.2575, "text": "Lot of work done today, and even more headaches. Changed Particle class to a ball class (still called particle tho). Balls have collision with walls and floor AND with eachother. The white board is for actually understanding the maths. There is a bug and I know what it is, but I need to sleep"}, {"post_id": 38505, "ts": "2026-07-31T22:41:53Z", "hours": 1.0119, "text": "Realised I messed up by diving straight into displaying squares, made a new gameplan and basically started from scratch. I added a Vector class to make the math easier to write later, and a particle class to make a single particle bounce off the floor."}, {"post_id": 37624, "ts": "2026-07-30T14:21:11Z", "hours": 3.6664, "text": "Learned the basics of pygame, and started work. Firstly, I found out that the pygame.Rect() function is pretty much only usefull for buttons in my use case, so i made a class to create four points around a centre point, and using some basic trig, got a square showing up that allowed for a lot more freedom that pygame.Rect(). I added gravity and am now working on collisions."}]...
|
Title: Ball Pit Sim by @antekj_smalec | Stardance
Title: Ball Pit Sim by @antekj_smalec | Stardance
Devlogs:
Learned the basics of pygame, and started work. Firstly, I found out that the pygame.Rect() function is pretty much only usefull for buttons in my use case, so i made a class to create four points around a centre point, and using some basic trig, got a square showing up that allowed for a lot more freedom that pygame.Rect(). I added gravity and am now working on collisions.
Realised I messed up by diving straight into displaying squares, made a new gameplan and basically started from scratch. I added a Vector class to make the math easier to write later, and a particle class to make a single particle bounce off the floor.
Lot of work done today, and even more headaches. Changed Particle class to a ball class (still called particle tho). Balls have collision with walls and floor AND with eachother. The white board is for actually understanding the maths. There is a bug and I know what it is, but I need to sleep
Fixed the bug, took a little longer than i originally thought but also fixed some other things. add some usefull debug features. Anyway collisions for circles is done and pretty fun to play around with
I had to change the scope of the project cos im running out of time. It is only gonna have ball collisions now
Ships:
I made a simple 2d physics collison simulator. I originally intended to have complex polygon collisions but my circumstances didn’t allow me to work on this project for quite some time. Nonetheless I am happy with what I made and I hope you can appreciate it :)...
|
1793336022.1923838
|
1793422422.1923838
|
|
50355
|
My first slack bot! by @adriiana | Stardance
|
adriiana
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @adriiana | Stardanc Title: My first slack bot! by @adriiana | Stardance...
|
1793336023.548811
|
1793940823.548811
|
|
50357
|
Personal Site by @MOSHINNN | Stardance
|
MOSHINNN
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Personal Site by @MOSHINNN | Stardance
|
1793336024.4944935
|
1793940824.4944935
|
|
34622
|
Assistocrat by @TheGeekachu | Stardance
|
TheGeekachu
|
1
|
5.48
|
25
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T18:56:51Z", "hours": 5.0, "multiplier": 5.32, "payout": 25, "blessing": "neutral", "text": "ASSISTOCRAT - AN AI 3D MODEL GEN FOR YOUR PROJECTS I have made Assistocrat, a complete AI 3D Model Generator, that is terrible at generating models. This pointless venture was inspired by LEAP71 in Dubai, and uses Meshlib and Reflex combined with Python for a full stack. Both front and back end are managed by reflex cloud, meaning the web app is fully usable at the Try Project link. Thank you for being part of my pointless journey to make a terrible but inspiring 3D model gen.", "repo": "https://github.com/vijayakasee-debug/Assistocrat", "demo": "https://assistocrat-blue-ring.reflex.run/"}]...
|
[{"post_id": 68314, "ts": "202 [{"post_id": 68314, "ts": "2026-09-14T22:24:43Z", "hours": 0.4806, "text": "So, I got flagged for AI use, and I’m pretty sure it’s just a misunderstanding, because I didn’t use any to actually MAKE the project, so I’m assuming using the Hack API as PART of the project counts as AI, so I’ve updated the AI usage decalaration, and let’s see how it goes!"}, {"post_id": 67580, "ts": "2026-09-13T18:38:12Z", "hours": 2.7775, "text": "I finished the build, also using the Hack Club API now, say hello to Assistocrat! Will finish the README now. It’s also deployed to a website, so you can check it out."}, {"post_id": 27879, "ts": "2026-07-13T19:40:23Z", "hours": 1.8528, "text": "Say hi to Assistocrat! Assistocrat is an AI-powered 3D model gen for your projects. It is also my very second Hack Club project and my first one in Reflex, which is a front-end framework for Python. I just got the base functionality working, so it can officially generate a cube! Also, I switched the LLM from Qwen to GPT-OSS because Qwen was really chatty about its reasoning process, overloading my Reflex Python webpage. I’ll be back with more updates!"}]...
|
Title: Assistocrat by @TheGeekachu | Stardance
De Title: Assistocrat by @TheGeekachu | Stardance
Devlogs:
Say hi to Assistocrat! Assistocrat is an AI-powered 3D model gen for your projects. It is also my very second Hack Club project and my first one in Reflex, which is a front-end framework for Python. I just got the base functionality working, so it can officially generate a cube! Also, I switched the LLM from Qwen to GPT-OSS because Qwen was really chatty about its reasoning process, overloading my Reflex Python webpage. I’ll be back with more updates!
I finished the build, also using the Hack Club API now, say hello to Assistocrat! Will finish the README now. It’s also deployed to a website, so you can check it out.
So, I got flagged for AI use, and I’m pretty sure it’s just a misunderstanding, because I didn’t use any to actually MAKE the project, so I’m assuming using the Hack API as PART of the project counts as AI, so I’ve updated the AI usage decalaration, and let’s see how it goes!
Ships:
ASSISTOCRAT - AN AI 3D MODEL GEN FOR YOUR PROJECTS I have made Assistocrat, a complete AI 3D Model Generator, that is terrible at generating models. This pointless venture was inspired by LEAP71 in Dubai, and uses Meshlib and Reflex combined with Python for a full stack. Both front and back end are managed by reflex cloud, meaning the web app is fully usable at the Try Project link. Thank you for being part of my pointless journey to make a terrible but inspiring 3D model gen....
|
1793336025.4509194
|
1793422425.4509194
|
|
50358
|
Untitled project by @KartikVai1 | Stardance
|
KartikVai1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @KartikVai1 | Stardance
|
1793336026.6575909
|
1793940826.6575909
|
|
41970
|
Speak Tachl7it by @Houad | Stardance
|
Houad
|
1
|
11.0
|
112
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T23:33:39Z", "hours": 11.0, "multiplier": 11.24, "payout": 112, "blessing": "neutral", "text": "A website that translate numbers for a 4,000-year-old language using python. I realized that numbers from 1 to 1M has the same words but in different positions so i made an algorithm using maths rules to change the number into a corresponding name in the language", "repo": "https://github.com/xtrawalo/Speak-Tachl7it", "demo": "https://speak-tachl7it.up.railway.app/"}]...
|
[{"post_id": 66246, "ts": "202 [{"post_id": 66246, "ts": "2026-09-11T23:28:44Z", "hours": 11.3511, "text": "Hi! I just finished my first translator website. I tried to make something using my mother tongue which is a very old language and I thought it would be cool. Check out the website and try speaking a 4000 year old language ( numbers only )"}]...
|
Title: Speak Tachl7it by @Houad | Stardance
Devlo Title: Speak Tachl7it by @Houad | Stardance
Devlogs:
Hi! I just finished my first translator website. I tried to make something using my mother tongue which is a very old language and I thought it would be cool. Check out the website and try speaking a 4000 year old language ( numbers only )
Ships:
A website that translate numbers for a 4,000-year-old language using python. I realized that numbers from 1 to 1M has the same words but in different positions so i made an algorithm using maths rules to change the number into a corresponding name in the language...
|
1793336027.5807898
|
1793422427.5807898
|
|
50359
|
My awesome macropad! by @reti_jani1109 | Stardance
|
reti_jani1109
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @reti_jani1109 | St Title: My awesome macropad! by @reti_jani1109 | Stardance...
|
1793336028.7255137
|
1793940828.7255137
|
|
55312
|
Car For Speed by @Dexpate | Stardance
|
Dexpate
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T09:35:00Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "It is a retro 100-octane garage portfolio and a playable 16-bit arcade racing game like OutRun. I built the entire thing with just vanilla HTML, CSS, and JavaScript without using any big libraries or npm packages! What works & what did you build? An ECU computer boot screen that pretends to test twin turbochargers and 100-octane fuel maps before revealing the site. A real playable pseudo-3D perspective road engine on HTML5 Canvas where you use W/A/S/D or arrow keys to steer, drift along curves, and beat the 45-second timer. Fixed a crazy bug where overtaking yellow traffic cars became giant boxes covering the entire screen! Telemetry gauges, boost monitors, and showcase cards for my hardware and coding projects. Uploaded everything cleanly to GitHub and hosted it live on GitHub Pages.", "repo": "https://github.com/dennispathe123/cars-for-speed", "demo": "https://dennispathe123.github.io/cars-for-speed/"}]...
|
[{"post_id": 66458, "ts": "202 [{"post_id": 66458, "ts": "2026-09-12T09:29:42Z", "hours": 1.8828, "text": "I made a super cool website called Cars for Speed! It has a giant car garage and a retro 80s racing game like OutRun, and I made the WHOLE THING myself with just normal HTML, CSS, and JavaScript. No giant boring libraries or cheats!Stuff I made and fixed:Cool Computer Boot Screen: When you open the page, a black hacker screen pops up that says it’s checking the turbo boost and putting 100 octane race gas in the engine before the game starts.Fake 3D Road That Doesn’t Make Your Tummy Hurt: At first, the road lines were moving weird and made me feel dizzy. So I did tricky math with perspective so the road looks like real 3D curving left and right into the sunset!Fixed The Giant Monster Car Bug: Earlier, when I tried to pass a yellow car, it got HUGE like a giant yellow box that covered the whole screen haha! I fixed the size numbers so it stays regular car-sized and zooms past my bumper.My Real Garage: I added boxes showing my other favorite stuff, like my 21-speed mountain bike with lockout and my computer boards with real wires.Put it on the Internet: I put all the code nicely into separate files, uploaded it to GitHub, wrote the instructions, and turned on the website so anyone can click and drive!"}]...
|
Title: Car For Speed by @Dexpate | Stardance
Devl Title: Car For Speed by @Dexpate | Stardance
Devlogs:
I made a super cool website called Cars for Speed! It has a giant car garage and a retro 80s racing game like OutRun, and I made the WHOLE THING myself with just normal HTML, CSS, and JavaScript. No giant boring libraries or cheats!Stuff I made and fixed:Cool Computer Boot Screen: When you open the page, a black hacker screen pops up that says it’s checking the turbo boost and putting 100 octane race gas in the engine before the game starts.Fake 3D Road That Doesn’t Make Your Tummy Hurt: At first, the road lines were moving weird and made me feel dizzy. So I did tricky math with perspective so the road looks like real 3D curving left and right into the sunset!Fixed The Giant Monster Car Bug: Earlier, when I tried to pass a yellow car, it got HUGE like a giant yellow box that covered the whole screen haha! I fixed the size numbers so it stays regular car-sized and zooms past my bumper.My Real Garage: I added boxes showing my other favorite stuff, like my 21-speed mountain bike with lockout and my computer boards with real wires.Put it on the Internet: I put all the code nicely into separate files, uploaded it to GitHub, wrote the instructions, and turned on the website so anyone can click and drive!
Ships:
It is a retro 100-octane garage portfolio and a playable 16-bit arcade racing game like OutRun. I built the entire thing with just vanilla HTML, CSS, and JavaScript without using any big libraries or npm packages! What works & what did you build? An ECU computer boot screen that pretends to test twin turbochargers and 100-octane fuel maps before revealing the site. A real playable pseudo-3D perspective road engine on HTML5 Canvas where you use W/A/S/D or arrow keys to steer, drift along curves, and beat the 45-second timer. Fixed a crazy bug where overtaking yellow traffic cars became giant boxes covering the entire screen! Telemetry gauges, boost monitors, and showcase cards for my hardware and coding projects. Uploaded everything cleanly to GitHub and hosted it live on GitHub Pages....
|
1793336029.6380136
|
1793422429.6380136
|
|
55334
|
Solar System Simulation by @CyberIntruder | Starda Solar System Simulation by @CyberIntruder | Stardance...
|
CyberIntruder
|
1
|
29.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-18T15:19:05Z", "hours": 29.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a web application that simulates our solar system. At first, I wanted to make a satellite tracker app with a realistic earth model, but after a while I decided I wanted to have also other planets in the background, so I started working on that. I also wanted the moon, so I added moons to all planets, and soon enough a whole solar system simulation was born. Later I decided it would be cool to simulate solar and lunar eclipses, but when I tried it, the moon and earth didn’t align at all, so of course I had to fix it. And I also did. At this point I decided that I’m not making a satellite tracker app, so I transitioned to the solar system simulation app. I specifically wanted realistic distances between planets, moons, etc. to show the massive difference there is, and I added the ability to view all planets from close up and also the whole solar system. At this point the UI still looked terrible, I’m a really bad UI designer, so I decided to use my free three prompts to claude opus 4.8 for exactly this. After that I cleaned up the code and the project was finished!", "repo": "https://github.com/anton2026gamca/solar-system-simulation", "demo": "https://anton2026gamca.github.io/solar-system-simulation/"}]...
|
[{"post_id": 70128, "ts": "202 [{"post_id": 70128, "ts": "2026-09-18T14:54:38Z", "hours": 0.3925, "text": "I deployed the project to github pages, added an icon, and added this image to the README"}, {"post_id": 70102, "ts": "2026-09-18T13:47:13Z", "hours": 5.7144, "text": "I polished the UI with the help of some AI, it looks way better now in my opinion. I also optimized the app a lot by for example downscaling the textures and optimizing some parts of the code, and it loads now a lot faster than before. Then I added a texture to the moon and seasonal textures to earth that change based on what month it is."}, {"post_id": 63670, "ts": "2026-09-07T16:32:39Z", "hours": 9.2492, "text": "Firstly I fixed some major errors in the solar system simulation, like the planets spinning in the wrong direction, the earth not aligning it’s rotation with the sun correctly, etc. Other than that I improved the UI a little bit, it now also shows the current time in the simulation and I also added a toggle for the orbit paths when the earth is focused. Then I added these lines that show the tilt of planets. I also improved the sun’s shader so it looks better and changed the earth’s atmosphere shader so it doesn’t display those jumps as it did before. (PS: Did you know Uranus has for some reason a massive 98 degree tilt like this?)"}, {"post_id": 58373, "ts": "2026-08-30T19:40:19Z", "hours": 9.3211, "text": "I made a simulation of our solar system. It isn’t extremely precise, because when I tested some solar eclipses, it didn’t align completely (well it didn’t align at all…), but I want to improve this in the future. I did use a lot of AI to help me with the position and rotation calculation system, because that was a lot of complex math and it would take me ages to get something working 🙏 . After that I reworked the earth scene to display this more realistic model of earth and hide the orbit paths when I focus it. I also added some movement to the clouds, it looks much better when they move at least somehow."}, {"post_id": 57076, "ts": "2026-08-29T05:07:46Z", "hours": 4.2178, "text": "I didn’t have an idea of what I want to make at the start, so I naturally asked AI. One of the first ideas it gave me was this satellite tracker web app thing, so I decided to start doing that. After some time though I decided to make firstly a super realistic scene with earth, so I worked on that. It’s not done yet, not even close, but I’m slowly getting there! (PS: There’s also a moon in the screenshot!)"}]...
|
Title: Solar System Simulation by @CyberIntruder | Title: Solar System Simulation by @CyberIntruder | Stardance
Devlogs:
I didn’t have an idea of what I want to make at the start, so I naturally asked AI. One of the first ideas it gave me was this satellite tracker web app thing, so I decided to start doing that. After some time though I decided to make firstly a super realistic scene with earth, so I worked on that. It’s not done yet, not even close, but I’m slowly getting there! (PS: There’s also a moon in the screenshot!)
I made a simulation of our solar system. It isn’t extremely precise, because when I tested some solar eclipses, it didn’t align completely (well it didn’t align at all…), but I want to improve this in the future. I did use a lot of AI to help me with the position and rotation calculation system, because that was a lot of complex math and it would take me ages to get something working 🙏 . After that I reworked the earth scene to display this more realistic model of earth and hide the orbit paths when I focus it. I also added some movement to the clouds, it looks much better when they move at least somehow.
Firstly I fixed some major errors in the solar system simulation, like the planets spinning in the wrong direction, the earth not aligning it’s rotation with the sun correctly, etc. Other than that I improved the UI a little bit, it now also shows the current time in the simulation and I also added a toggle for the orbit paths when the earth is focused. Then I added these lines that show the tilt of planets. I also improved the sun’s shader so it looks better and changed the earth’s atmosphere shader so it doesn’t display those jumps as it did before. (PS: Did you know Uranus has for some reason a massive 98 degree tilt like this?)
I polished the UI with the help of some AI, it looks way better now in my opinion. I also optimized the app a lot by for example downscaling the textures and optimizing some parts of the code, and it loads now a lot faster than before. Then I added a texture to the moon and seasonal textures to earth that change based on what month it is.
I deployed the project to github pages, added an icon, and added this image to the README
Ships:
I made a web application that simulates our solar system. At first, I wanted to make a satellite tracker app with a realistic earth model, but after a while I decided I wanted to have also other planets in the background, so I started working on that. I also wanted the moon, so I added moons to all planets, and soon enough a whole solar system simulation was born. Later I decided it would be cool to simulate solar and lunar eclipses, but when I tried it, the moon and earth didn’t align at all, so of course I had to fix it. And I also did. At this point I decided that I’m not making a satellite tracker app, so I transitioned to the solar system simulation app. I specifically wanted realistic distances between planets, moons, etc. to show the massive difference there is, and I added the ability to view all planets from close up and also the whole solar system. At this point the UI still looked terrible, I’m a really bad UI designer, so I decided to use my free three prompts to claude opus 4.8 for exactly this. After that I cleaned up the code and the project was finished!...
|
1793336030.7913437
|
1793422430.7913437
|