|
1736
|
Stormfall by @myth0 | Stardance
|
myth0
|
0
|
75.48
|
0
|
[]
|
[{"post_id": 79704, "ts": "202 [{"post_id": 79704, "ts": "2026-10-15T03:53:42Z", "hours": 0.9122, "text": "I added this cool wind gust shader to my game! Eventually I’m going to have gameplay mechanics where wind pushes the player, which can boost (or limit) the player’s jump distance. For now I just focused on the visuals for this mechanic and I still need to implement the physics. To make the visual effect, I intially tried a unity particle system based approach. This looked really bad however so I made a shader for the wind instead. Basically the shader scrolls the X UV offset on a gradient noise node. The tiling of the gradient noise is super stretched out so it looks like streaks of wind instead of dots. It was simple to make and turned out pretty good! Now time to implement the physics…"}, {"post_id": 79457, "ts": "2026-10-14T03:26:58Z", "hours": 3.2947, "text": "Wow, its been a while since I devlogged on here! I’m back with some more progress on my metroidvania. In the last few hours I started refining the art and level design for the game’s 2nd area. I added a bunch of sprites like tilesets, rock formations, animated dead bushes, and spikes. Then I started assembling the area in the editor. It took me a while to get the area’s art to match what I had imagined without creating visual clutter on the screen. I think it looks pretty good now and Im proud of how it turned out! I also learned a lot from building the previous area and so this time I made a ton of art/environment prefabs right away. This is going to save me a loooot of time when filling in the art for the rest of the area. I also greyboxed a bunch of the level design. I have the level design built for about 1/2 of the area now. This area is where the player unlocks wall jump, and it’s also going to have some fun wind mechanics that can boost the player’s jump distance (I still need to code this). I’m trying to build the level design to complement these features so that the area has a unique play style compared to the first area."}, {"post_id": 75073, "ts": "2026-09-29T02:14:04Z", "hours": 6.7061, "text": "In the last several hours, I made a whole bunch of progress. First I fixed a whole bunch of relatively minor bugs. Things like getting stuck on ability obtained screens, minor potential scene loading issues, and scenes unloading when the player revives after falling on spikes. I added a screen with an autosave notice. It wasnt really nessecary but makes the game look professional. Updated some small things like the game’s splash screen, internal name, and game icon. Added a custom cursor when in the game window. I added a knockback system! Enemies now actually get knocked back when hit. I used an interface that I attached to the enemy health manager script to create this system. I added a new music track for the village area that the player can find after finishing the first gameplay area. Then I actually started working on the village area. I used existing sprites to make a castle-like structure for the player to pass through. I also made a really nice animated flag sprite for the village. I worked on level design for the 2nd major area of the game. I’m about halfway done the level design for this area at the moment! And since stardance is going for an extra month, I’ll probably have time to ship the 2nd area now!"}, {"post_id": 70271, "ts": "2026-09-18T20:58:14Z", "hours": 5.4206, "text": "I did a ton of stuff over the last 5 hours of work! Here’s some of the main things I added: Added a jump animation to the player! This is a feature that many people have requested, but I kept procrastinating adding it. I had briefly tried to draw an animation for this in the past and I just couldn’t get the animation to look right. This time I spent more time and effort on it and I think it turned out pretty good now. Restructured the interaction system. I wanted parry and interact (the input used to talk to NPCs, pick up items, etc) to both use the right mouse button. For most of development I had temporarily set the interact button to a random key on the keyboard to prevent conflict. However, I now implemented a context-based system that detects whether or not the player is nearby an interactable object. If they are, then it executes an interaction, if not, it will parry. This required significant rewriting for the scripts attached to most interactable objects. However the system is now much cleaner and will be easier to maintain in the future. Interaction is now handled from a centralized singleton class, rather from each interactable item script independently. Added a dust trail effect to the player. When the player walks, dust particles will play behind them, making a nice visual effect. There are a couple of weird places the player can reach when using movement abilities accessed from the Beta Features mode. I added a couple little easter eggs to these places for the players who explore everything. Fixed a lot of bugs, including: Breakable objects having iframes that last for too long, effectively making them seem to have much more health than they should. Input not being disabled when the player first loads in, causing potential problems with the intro movement tutorial. Fixed issues with the new jump animations interrupting combat animations, which can cause combat animations to not play when they should. Renamed a couple files to make script names more cohesive. Fixed some collider bugs, including a particular spot where the player kept catching on a seam. Fixed an issue where the player sometimes didn’t count as being grounded when on the very edge of a platform."}, {"post_id": 66794, "ts": "2026-09-12T17:58:57Z", "hours": 6.3628, "text": "I implemented a data-driven tutorial system to my game! Whenever the player gains a new skill or ability, a short tutorial will now pop up explaining how to use the ability. I intentionally made this system super flexible so I can easily add more abilities in the future. Each tutorial is defined by a scriptable object with information including: Tutorial text contents and location on the screen Focused object (A vignette will appear on the screen centered around the object. Usually this is just set to the player but there are some special cases where it should be focused on something else.) Input the player needs to press to use their new ability and clear the tutorial. Overall, the game should be a lot more intuitive to play now. Players will no longer have to read through all the controls, instead the controls get gradually explained to them as they unlock more abilities. This is unrelated to the tutorial system, but I also updated my old dialogue system. I added a function to display fullscreen dialogue. This will be used in key points of the game, where it will fade to white and display some important lines of dialogue. So far, I used this for the game’s “prologue”, a short text-based intro that appears when you first create a new save file."}, {"post_id": 62381, "ts": "2026-09-05T18:28:47Z", "hours": 3.7819, "text": "I finally finished the 10th room of the game! This room introduces a ton of new mechanics in its level design. I’ve been working on the mechanics for this room for the last several devlogs, so it’s nice to finally have finished it! In this room, the player must navigate to 2 different levers that, when triggered, open a gate in the floor. Players can then fall down a chasm into an ancient battlefield room. Then they obtain the shield ability from a fallen soldier. Then some of the newest enemy types spawn in and the player must sucessfully defeat them. To survive the battle, the player needs to utilize the new shield ability which allows them to block attacks. I also added a beta features toggle to the pause menu. The toggle allows the player to use certain in-game abilities that are still in development, like sprinting, dashing, wall jumping, double jumping, lunge attacking, shield bouncing, and more."}, {"post_id": 60580, "ts": "2026-09-03T01:04:49Z", "hours": 6.3033, "text": "I’ve haven’t made too much progress on my project over the last little while because of classes starting :( But I’m finally devlogging some of the changes I’ve made over the last week or so. First, I refactored the combat system for the possibly the 4rd or 5th time since first starting the project (almost a year ago now!) This time around, I implemented an upwards and downwards attack, as well as better implementing the lunge attack. I also switched the attack logic to be partly animation-driven rather than coroutine-driven like it was before. Attack damage is now properly synced to the attack animation, and the weird state bugs I was having before are basically gone. Some parts of the new system still feel a little buggy, but overall I think the attack system is much better now. The second major thing I did was finishing implementing the pathfinding of one of the first “real” enemies (the crawler guys I already have don’t really count). The new enemy now tracks the player correctly. If no player is in range, it will pace back and forth and pause occasionally. It has ledge and wall detection. If the player is in attack range, it will attempt to attack the player. Currently the enemy code architecture isn’t structured very well, but I’m kinda rushing to quickly wrap up this stage of the project so I can ship soon! Now I just gotta polish the game a bit over the next couple days/weeks and then it should be ready to ship!"}, {"post_id": 51756, "ts": "2026-08-21T16:12:58Z", "hours": 3.6508, "text": "I added the UI interface for player customization. Currently this screen is only accessible from the pause screen, but in the future I will incorporate it into the gameplay so the player customize the character at specific locations throughout the world. I also fixed some issues with how the UI menus were structured. I made every screen into a unity Canvas Group. I also fixed some bugs where the player could get stuck in certain menu screens. Last but not least I added a new upward attack animation for the player, though I still need to implement the functionality."}, {"post_id": 49039, "ts": "2026-08-17T17:03:05Z", "hours": 3.8592, "text": "I started working on character customization mechanics! Many metroidvanias just use a static character with little to no customization options so I thought this would be a nice way to differentiate my game from other similar games. Basically for now the player can recolor the knight’s cape, helmet plume, and sword hilt. The knight sprites were originally colored blue, making it tricky to use simple color adjustment shaders to recolor it. Rather than going back and redrawing tons of sprites, I wrote a shader that detects saturated areas on the original sprites and overlays a new color on top. Overall it works pretty well now, and now I just need to add a menu to select a color scheme. I also spent like 30 mins working on enemy pathfinding mechanics for a new enemy type!"}, {"post_id": 41477, "ts": "2026-08-05T18:16:47Z", "hours": 2.3075, "text": "I finally fixed some problems I was having with the player’s collider catching on seams. This bug was pretty rare and not too much of an issue. However in certain parts of the map, mainly near any slopes, the slope’s collider has a tiny seam where it joins the rectangular tilemap collider. The old player collider would get stuck on this seam occasionally. After a lot of messing around with colliders and 2d physics materials, I fixed this issue by changing the player’s collider to a composite collider. The composite collider contains a capsule collider and a box collider. The rounded edges of the capsule allows the player to walk over top of seams easily, and the box collider makes it so the player doesnt slip off the edges of platforms."}, {"post_id": 40887, "ts": "2026-08-04T18:07:42Z", "hours": 2.0378, "text": "For the time tracked in this devlog, I mostly worked on environment decoration in the newest room of the game. I added a really nice looking torch sprite with a fire shader. I also added various details to the game world, like floating platforms in the background, torches, and ancient ruins. I also updated some of the level design. I added platforms to make certain areas possible to reach."}, {"post_id": 40223, "ts": "2026-08-03T17:01:11Z", "hours": 4.5128, "text": "I took a long break from Stardance to work on other projects, but I’m finally back with another devlog for my metroidvania. I mostly finished the art pass for the latest room of the game. I also fixed a bunch of unity inspector warnings that I’ve had for a looong time now and just never got around to fixing. The main warning I fixed were that some of the render textures I used for water reflections and fullscreen shockwaves didn’t have a depth buffer attached. While they did technically work, it wasn’t the ideal way to have the render textures set up. This was a relatively easy fix thankfully."}, {"post_id": 23558, "ts": "2026-07-06T16:23:47Z", "hours": 3.2408, "text": "I continued working on the art for the 9th and 10th rooms of the game. I also fixed some issues in my custom render feature that I use to render special effects, including a few potential memory leaks. I also reworked my “safe zone” mechanic that detects where the player should respawn if they fall onto spikes. Now it tracks specific safe respawn locations instead of the old logic, which was to track any zone where the player shouldn’t respawn."}, {"post_id": 16286, "ts": "2026-06-26T14:11:19Z", "hours": 2.4736, "text": "Continued working on level design. I’ve finished the level design for the entire first area of the game now! I added a room with another lever puzzle that introduces the shortcut mechanics to the player. I also added an area where the player will obtain the shield ability. Now I need to start filling in the art for the new rooms, and create the game’s first boss fight."}, {"post_id": 15107, "ts": "2026-06-24T15:26:36Z", "hours": 3.6742, "text": "Worked a bit on the art for the new rooms. I also added some new gameplay mechanics, like platforms that fall to a new location after the player hits them. I also fixed another instance where the combat animations desynced from the code logic."}, {"post_id": 13726, "ts": "2026-06-22T14:33:17Z", "hours": 3.62, "text": "For the last few hours of work, I’ve been working on level design! I’m very close now to finishing the level design of the first area of the game. I added some generic transversal rooms, a lever puzzle room, and a platforming room with spikes. Next, I’m going to add a room where the player can find the shield, which will grant the parry/block ability."}, {"post_id": 12055, "ts": "2026-06-19T17:43:15Z", "hours": 1.2886, "text": "Added levers! When the player toggles them, they can do various things like open gates, open shortcuts, and maybe even spawn enemies. In the future, I’m going to use them to build puzzle areas that will hopefully make the level design more standout and unique. I’m really happy with how the animations for the new mechanics turned out, especially the gate’s animations shown in the video."}, {"post_id": 11370, "ts": "2026-06-18T16:39:19Z", "hours": 0.66, "text": "This devlog is on the shorter side, but I finally fixed something that I’ve been meaning to fix for a while. Sometimes when spamming the attack button, the code running the attack logic got desynced from the visual animations, causing weird situations where the animation wouldn’t play for a few seconds, or would transition to the next state way too quickly. I was scared it would take hours to debug this problem, but it turned out to be super simple. I fixed it by simply making sure the animation’s exit time in the unity animator exactly matches the cooldown window defined in the code."}, {"post_id": 9629, "ts": "2026-06-16T01:06:14Z", "hours": 3.1986, "text": "Continued refining the stamina mechanics! I mostly finished hooking up the combat system to the stamina system. Attacking and blocking now deplete a set amount of stamina, and a successful, correctly timed block/parry restores a bunch of stamina. The stamina meter also now slowly refills over time, and refills much faster when near a save point. I also made the code and artwork for “stamina flowers” (still need to think of a cool name), which when broken will spawn a stamina orb that flies towards the player and refills a bunch of stamina when picked up. This involved pathfinding logic using trig functions that make the orb fly at the correct angle and velocity towards the player. I plan to use this pathfinding logic for future pickup items as well. Lastly, I added a particle effect that plays when the player’s stamina meter is full, and another effect that plays when it is close to empty. Overall the stamina system feels really polished now, and I feel like the combat is a lot better now with the added stamina mechanics!"}, {"post_id": 8159, "ts": "2026-06-13T16:36:08Z", "hours": 2.8875, "text": "Added a stamina mechanic! Attacking now requires stamina. When stamina is used up, it will slowly refill back to the maximum over time. In the future, I plan to make successfully parrying enemy attacks also refill some stamina. The hardest part of this was creating the visual stamina bar in the UI. I used a shader to offset the sprite’s UV depending on what percentage of stamina the player has remanining. The shader also applies a multiplier to the sprite color’s intensity to make the stamina meter glow more when it is closer to full."}, {"post_id": 6369, "ts": "2026-06-10T18:44:22Z", "hours": 5.2822, "text": "First devlog on Stardance! You might remember this project from flavortown, and I’m going to keep working on it for stardance. I’ve added a ton of stuff to the game in the last month, like 3 or 4 new player abilities, new animations, and polishing various things based on feedback I received. The ~5 hours in this devlog were mostly me trying to set up a system where I can have 2 post processing profiles active at once, but affecting different layers. I used this to create an intense bloom effect that only renders on certain sprites, specifically the spark particles in combat. I finally got it working using render features and render graphs, and I’m super happy with the result."}]...
|
Title: Stormfall by @myth0 | Stardance
Devlogs:
F Title: Stormfall by @myth0 | Stardance
Devlogs:
First devlog on Stardance! You might remember this project from flavortown, and I’m going to keep working on it for stardance. I’ve added a ton of stuff to the game in the last month, like 3 or 4 new player abilities, new animations, and polishing various things based on feedback I received. The ~5 hours in this devlog were mostly me trying to set up a system where I can have 2 post processing profiles active at once, but affecting different layers. I used this to create an intense bloom effect that only renders on certain sprites, specifically the spark particles in combat. I finally got it working using render features and render graphs, and I’m super happy with the result.
Added a stamina mechanic! Attacking now requires stamina. When stamina is used up, it will slowly refill back to the maximum over time. In the future, I plan to make successfully parrying enemy attacks also refill some stamina. The hardest part of this was creating the visual stamina bar in the UI. I used a shader to offset the sprite’s UV depending on what percentage of stamina the player has remanining. The shader also applies a multiplier to the sprite color’s intensity to make the stamina meter glow more when it is closer to full.
Continued refining the stamina mechanics! I mostly finished hooking up the combat system to the stamina system. Attacking and blocking now deplete a set amount of stamina, and a successful, correctly timed block/parry restores a bunch of stamina. The stamina meter also now slowly refills over time, and refills much faster when near a save point. I also made the code and artwork for “stamina flowers” (still need to think of a cool name), which when broken will spawn a stamina orb that flies towards the player and refills a bunch of stamina when picked up. This involved pathfinding logic using trig functions that make the orb fly at the correct angle and velocity towards the player. I plan to use this pathfinding logic for future pickup items as well. Lastly, I added a particle effect that plays when the player’s stamina meter is full, and another effect that plays when it is close to empty. Overall the stamina system feels really polished now, and I feel like the combat is a lot better now with the added stamina mechanics!
This devlog is on the shorter side, but I finally fixed something that I’ve been meaning to fix for a while. Sometimes when spamming the attack button, the code running the attack logic got desynced from the visual animations, causing weird situations where the animation wouldn’t play for a few seconds, or would transition to the next state way too quickly. I was scared it would take hours to debug this problem, but it turned out to be super simple. I fixed it by simply making sure the animation’s exit time in the unity animator exactly matches the cooldown window defined in the code.
Added levers! When the player toggles them, they can do various things like open gates, open shortcuts, and maybe even spawn enemies. In the future, I’m going to use them to build puzzle areas that will hopefully make the level design more standout and unique. I’m really happy with how the animations for the new mechanics turned out, especially the gate’s animations shown in the video.
For the last few hours of work, I’ve been working on level design! I’m very close now to finishing the level design of the first area of the game. I added some generic transversal rooms, a lever puzzle room, and a platforming room with spikes. Next, I’m going to add a room where the player can find the shield, which will grant the parry/block ability.
Worked a bit on the art for the new rooms. I also added some new gameplay mechanics, like platforms that fall to a new location after the player hits them. I also fixed another instance where the combat animations desynced from the code logic.
Continued working on level design. I’ve finished the level design for the entire first area of the game now! I added a room with another lever puzzle that introduces the shortcut mechanics to the player. I also added an area where the player will obtain the shield ability. Now I need to start filling in the art for the new rooms, and create the game’s first boss fight.
I continued working on the art for the 9th and 10th rooms of the game. I also fixed some issues in my custom render feature that I use to render special effects, including a few potential memory leaks. I also reworked my “safe zone” mechanic that detects where the player should respawn if they fall onto spikes. Now it tracks specific safe respawn locations instead of the old logic, which was to track any zone where the player shouldn’t respawn.
I took a long break from Stardance to work on other projects, but I’m finally back with another devlog for my metroidvania. I mostly finished the art pass for the latest room of the game. I also fixed a bunch of unity inspector warnings that I’ve had for a looong time now and just never got around to fixing. The main warning I fixed were that some of the render textures I used for water reflections and fullscreen shockwaves didn’t have a depth buffer attached. While they did technically work, it wasn’t the ideal way to have the render textures set up. This was a relatively easy fix thankfully.
For the time tracked in this devlog, I mostly worked on environment decoration in the newest room of the game. I added a really nice looking torch sprite with a fire shader. I also added various details to the game world, like floating platforms in the background, torches, and ancient ruins. I also updated some of the level design. I added platforms to make certain areas possible to reach.
I finally fixed some problems I was having with the player’s collider catching on seams. This bug was pretty rare and not too much of an issue. However in certain parts of the map, mainly near any slopes, the slope’s collider has a tiny seam where it joins the rectangular tilemap collider. The old player collider would get stuck on this seam occasionally. After a lot of messing around with colliders and 2d physics materials, I fixed this issue by changing the player’s collider to a composite collider. The composite collider contains a capsule collider and a box collider. The rounded edges of the capsule allows the player to walk over top of seams easily, and the box collider makes it so the player doesnt slip off the edges of platforms.
I started working on character customization mechanics! Many metroidvanias just use a static character with little to no customization options so I thought this would be a nice way to differentiate my game from other similar games. Basically for now the player can recolor the knight’s cape, helmet plume, and sword hilt. The knight sprites were originally colored blue, making it tricky to use simple color adjustment shaders to recolor it. Rather than going back and redrawing tons of sprites, I wrote a shader that detects saturated areas on the original sprites and overlays a new color on top. Overall it works pretty well now, and now I just need to add a menu to select a color scheme. I also spent like 30 mins working on enemy pathfinding mechanics for a new enemy type!
I added the UI interface for player customization. Currently this screen is only accessible from the pause screen, but in the future I will incorporate it into the gameplay so the player customize the character at specific locations throughout the world. I also fixed some issues with how the UI menus were structured. I made every screen into a unity Canvas Group. I also fixed some bugs where the player could get stuck in certain menu screens. Last but not least I added a new upward attack animation for the player, though I still need to implement the functionality.
I’ve haven’t made too much progress on my project over the last little while because of classes starting :( But I’m finally devlogging some of the changes I’ve made over the last week or so. First, I refactored the combat system for the possibly the 4rd or 5th time since first starting the project (almost a year ago now!) This time around, I implemented an upwards and downwards attack, as well as better implementing the lunge attack. I also switched the attack logic to be partly animation-driven rather than coroutine-driven like it was before. Attack damage is now properly synced to the attack animation, and the weird state bugs I was having before are basically gone. Some parts of the new system still feel a little buggy, but overall I think the attack system is much better now. The second major thing I did was finishing implementing the pathfinding of one of the first “real” enemies (the crawler guys I already have don’t really count). The new enemy now tracks the player correctly. If no player is in range, it will pace back and forth and pause occasionally. It has ledge and wall detection. If the player is in attack range, it will attempt to attack the player. Currently the enemy code architecture isn’t structured very well, but I’m kinda rushing to quickly wrap up this stage of the project so I can ship soon! Now I just gotta polish the game a bit over the next couple days/weeks and then it should be ready to ship!
I finally finished the 10th room of the game! This room introduces a ton of new mechanics in its level design. I’ve been working on the mechanics for this room for the last several devlogs, so it’s nice to finally have finished it! In this room, the player must navigate to 2 different levers that, when triggered, open a gate in the floor. Players can then fall down a chasm into an ancient battlefield room. Then they obtain the shield ability from a fallen soldier. Then some of the newest enemy types spawn in and the player must sucessfully defeat them. To survive the battle, the player needs to utilize the new shield ability which allows them to block attacks. I also added a beta features toggle to the pause menu. The toggle allows the player to use certain in-game abilities that are still in development, like sprinting, dashing, wall jumping, double jumping, lunge attacking, shield bouncing, and more.
I implemented a data-driven tutorial system to my game! Whenever the player gains a new skill or ability, a short tutorial will now pop up explaining how to use the ability. I intentionally made this system super flexible so I can easily add more abilities in the future. Each tutorial is defined by a scriptable object with information including: Tutorial text contents and location on the screen Focused object (A vignette will appear on the screen centered around the object. Usually this is just set to the player but there are some special cases where it should be focused on something else.) Input the player needs to press to use their new ability and clear the tutorial. Overall, the game should be a lot more intuitive to play now. Players will no longer have to read through all the controls, instead the controls get gradually explained to them as they unlock more abilities. This is unrelated to the tutorial system, but I also updated my old dialogue system. I added a function to display fullscreen dialogue. This will be used in key points of the game, where it will fade to white and display some important lines of dialogue. So far, I used this for the game’s “prologue”, a short text-based intro that appears when you first create a new save file.
I did a ton of stuff over the last 5 hours of work! Here’s some of the main things I added: Added a jump animation to the player! This is a feature that many people have requested, but I kept procrastinating adding it. I had briefly tried to draw an animation for this in the past and I just couldn’t get the animation to look right. This time I spent more time and effort on it and I think it turned out pretty good now. Restructured the interaction system. I wanted parry and interact (the input used to talk to NPCs, pick up items, etc) to both use the right mouse button. For most of development I had temporarily set the interact button to a random key on the keyboard to prevent conflict. However, I now implemented a context-based system that detects whether or not the player is nearby an interactable object. If they are, then it executes an interaction, if not, it will parry. This required significant rewriting for the scripts attached to most interactable objects. However the system is now much cleaner and will be easier to maintain in the future. Interaction is now handled from a centralized singleton class, rather from each interactable item script independently. Added a dust trail effect to the player. When the player walks, dust particles will play behind them, making a nice visual effect. There are a couple of weird places the player can reach when using movement abilities accessed from the Beta Features mode. I added a couple little easter eggs to these places for the players who explore everything. Fixed a lot of bugs, including: Breakable objects having iframes that last for too long, effectively making them seem to have much more health than they should. Input not being disabled when the player first loads in, causing potential problems with the intro movement tutorial. Fixed issues with the new jump animations interrupting combat animations, which can cause combat animations to not play when they should. Renamed a couple files to make script names more cohesive. Fixed some collider bugs, including a particular spot where the player kept catching on a seam. Fixed an issue where the player sometimes didn’t count as being grounded when on the very edge of a platform.
In the last several hours, I made a whole bunch of progress. First I fixed a whole bunch of relatively minor bugs. Things like getting stuck on ability obtained screens, minor potential scene loading issues, and scenes unloading when the player revives after falling on spikes. I added a screen with an autosave notice. It wasnt really nessecary but makes the game look professional. Updated some small things like the game’s splash screen, internal name, and game icon. Added a custom cursor when in the game window. I added a knockback system! Enemies now actually get knocked back when hit. I used an interface that I attached to the enemy health manager script to create this system. I added a new music track for the village area that the player can find after finishing the first gameplay area. Then I actually started working on the village area. I used existing sprites to make a castle-like structure for the player to pass through. I also made a really nice animated flag sprite for the village. I worked on level design for the 2nd major area of the game. I’m about halfway done the level design for this area at the moment! And since stardance is going for an extra month, I’ll probably have time to ship the 2nd area now!
Wow, its been a while since I devlogged on here! I’m back with some more progress on my metroidvania. In the last few hours I started refining the art and level design for the game’s 2nd area. I added a bunch of sprites like tilesets, rock formations, animated dead bushes, and spikes. Then I started assembling the area in the editor. It took me a while to get the area’s art to match what I had imagined without creating visual clutter on the screen. I think it looks pretty good now and Im proud of how it turned out! I also learned a lot from building the previous area and so this time I made a ton of art/environment prefabs right away. This is going to save me a loooot of time when filling in the art for the rest of the area. I also greyboxed a bunch of the level design. I have the level design built for about 1/2 of the area now. This area is where the player unlocks wall jump, and it’s also going to have some fun wind mechanics that can boost the player’s jump distance (I still need to code this). I’m trying to build the level design to complement these features so that the area has a unique play style compared to the first area.
I added this cool wind gust shader to my game! Eventually I’m going to have gameplay mechanics where wind pushes the player, which can boost (or limit) the player’s jump distance. For now I just focused on the visuals for this mechanic and I still need to implement the physics. To make the visual effect, I intially tried a unity particle system based approach. This looked really bad however so I made a shader for the wind instead. Basically the shader scrolls the X UV offset on a gradient noise node. The tiling of the gradient noise is super stretched out so it looks like streaks of wind instead of dots. It was simple to make and turned out pretty good! Now time to implement the physics…...
|
1792778012.0932453
|
1793382812.0932453
|
|
3550
|
Music Control Macropad by @wchia333 | Stardance
|
wchia333
|
0
|
15.85
|
0
|
[]
|
[{"post_id": 79706, "ts": "202 [{"post_id": 79706, "ts": "2026-10-15T04:05:56Z", "hours": 0.3575, "text": "fixed some rotary encoder bugs. gotta admit ai helped me a little 😅"}, {"post_id": 79699, "ts": "2026-10-15T03:34:12Z", "hours": 1.2894, "text": "Flashed firmware onto my xiao!!! But then I realized I soldered one of my diodes the wrong way 💀💀"}, {"post_id": 79464, "ts": "2026-10-14T04:25:17Z", "hours": 0.4461, "text": "“knurled” knob!!! for ec11 rotary encoder!"}, {"post_id": 79460, "ts": "2026-10-14T03:53:58Z", "hours": 0.7022, "text": "Redesigned macropad case! More minimalist with better tolerances"}, {"post_id": 79140, "ts": "2026-10-12T19:58:48Z", "hours": 1.5667, "text": "Finished solderinh! first time so took a long time, made some mistakes, but alas it is almost finished!!! 🥂"}, {"post_id": 54165, "ts": "2026-08-25T00:48:47Z", "hours": 0.5167, "text": "Finished the software! Actually really straight forward once you get the hang of it. Also fixed my GitHub Repo and I’m ready to ship!"}, {"post_id": 52626, "ts": "2026-08-22T20:57:24Z", "hours": 0.3436, "text": "Tried to start the firmware! Its so confusing I moved over to KMK, wish me luck!"}, {"post_id": 52035, "ts": "2026-08-22T02:17:50Z", "hours": 1.9228, "text": "Made some minor improvements to the PCB. Next I’m going to start the software and hopefully get it done by Sunday."}, {"post_id": 51450, "ts": "2026-08-21T05:14:11Z", "hours": 3.4669, "text": "Finishing touches! Some improvements to the case, fixed some problems with the PCB and made my GitHub repo! Can’t wait to start building!"}, {"post_id": 50778, "ts": "2026-08-20T04:44:28Z", "hours": 1.0167, "text": "Finished the case for my hackpad, and added spots for screws and heat set inserts."}, {"post_id": 50738, "ts": "2026-08-20T02:46:16Z", "hours": 1.2833, "text": "Finished Cad Design! Although I hit 10 Fusion projects so now I have to pay to download it😭😭. I will figure out a work around tomorrow."}, {"post_id": 50707, "ts": "2026-08-20T01:14:10Z", "hours": 1.9961, "text": "Finished the PCB! Most noticeable improvements is a switch from direct wiring to matrix. Also added two rotary encoders to control volume or brightness."}, {"post_id": 50658, "ts": "2026-08-19T22:40:53Z", "hours": 0.9428, "text": "Finally Learned how to use KiCad, made my first schematic and pcb. Version 1 of my hackpad is complete, next I want to add some rotary encoders and maybe an OLED Display!"}]...
|
Title: Music Control Macropad by @wchia333 | Stard Title: Music Control Macropad by @wchia333 | Stardance
Devlogs:
Finally Learned how to use KiCad, made my first schematic and pcb. Version 1 of my hackpad is complete, next I want to add some rotary encoders and maybe an OLED Display!
Finished the PCB! Most noticeable improvements is a switch from direct wiring to matrix. Also added two rotary encoders to control volume or brightness.
Finished Cad Design! Although I hit 10 Fusion projects so now I have to pay to download it😭😭. I will figure out a work around tomorrow.
Finished the case for my hackpad, and added spots for screws and heat set inserts.
Finishing touches! Some improvements to the case, fixed some problems with the PCB and made my GitHub repo! Can’t wait to start building!
Made some minor improvements to the PCB. Next I’m going to start the software and hopefully get it done by Sunday.
Tried to start the firmware! Its so confusing I moved over to KMK, wish me luck!
Finished the software! Actually really straight forward once you get the hang of it. Also fixed my GitHub Repo and I’m ready to ship!
Finished solderinh! first time so took a long time, made some mistakes, but alas it is almost finished!!! 🥂
Redesigned macropad case! More minimalist with better tolerances
“knurled” knob!!! for ec11 rotary encoder!
Flashed firmware onto my xiao!!! But then I realized I soldered one of my diodes the wrong way 💀💀
fixed some rotary encoder bugs. gotta admit ai helped me a little 😅...
|
1792756309.8220565
|
1793361109.8220565
|
|
67641
|
Ishaanvi's Internet by @ishaanvi | Stardance
|
ishaanvi
|
0
|
6.81
|
0
|
[]
|
[{"post_id": 79712, "ts": "202 [{"post_id": 79712, "ts": "2026-10-15T05:53:59Z", "hours": 2.8172, "text": "# Devlog 2 Hey guys, I made these changes: Changed the font of the main content Made a new git repo for this site Added a tamagotchi Changed the title Made new nav pages // changed some of them (I can’t remember any thing more-) Thank you!! Love, Ishaanvi"}, {"post_id": 78108, "ts": "2026-10-09T16:02:38Z", "hours": 3.9886, "text": "Devlog 1 HI GUYS!! I’m building my own personal website! I had a ton of ideas and even tried to implement them but then my mind changed and I had to start all over again from scratch… EVERY. SINGLE. TIME. This is what I’m working with currently, and I know it’s not THAT flattering YET but trust the process :) Thanks / Merci / Dhanyavaad !!!!!! Love, Ishaanvi <3"}]...
|
Title: Ishaanvi's Internet by @ishaanvi | Star Title: Ishaanvi's Internet by @ishaanvi | Stardance
Devlogs:
Devlog 1 HI GUYS!! I’m building my own personal website! I had a ton of ideas and even tried to implement them but then my mind changed and I had to start all over again from scratch… EVERY. SINGLE. TIME. This is what I’m working with currently, and I know it’s not THAT flattering YET but trust the process :) Thanks / Merci / Dhanyavaad !!!!!! Love, Ishaanvi <3
# Devlog 2 Hey guys, I made these changes: Changed the font of the main content Made a new git repo for this site Added a tamagotchi Changed the title Made new nav pages // changed some of them (I can’t remember any thing more-) Thank you!! Love, Ishaanvi...
|
1793112731.0247967
|
1793717531.0247967
|
|
6943
|
TubeReplacer by @Preloading | Stardance
|
Preloading
|
0
|
197.22
|
0
|
[]
|
[{"post_id": 79718, "ts": "202 [{"post_id": 79718, "ts": "2026-10-15T06:35:36Z", "hours": 1.0169, "text": "To the demo, I added a time limit & a restart app option in case it breaks and the app has to be restarted."}, {"post_id": 79710, "ts": "2026-10-15T05:23:07Z", "hours": 11.7986, "text": "Cooking up the demo, I’ve basically setup a remote control system on this phone, which should hopefully run over the internet! Giving randos complete control of this phone… what could possibly go wrong???? I still need to do some stuff to lock down the system it runs in, and also patch the problems with tubereplacer that came up recently."}, {"post_id": 74763, "ts": "2026-09-28T05:27:24Z", "hours": 2.1983, "text": "Alright, so the results are in. From what it seems, it mostly went well, however there are some issues that came up, primarly due to me not having enough time to test (I released this the day before stardance was extended for another month…. a bit of extra time would have been nice to iron out the few bugs on release, and also time to diagnose the playback errors people encounted). I did a quick 2.0.1 release to fix some of the bigger issues… 5 days after the initial. i’m tired ok?"}, {"post_id": 72543, "ts": "2026-09-23T05:25:42Z", "hours": 3.6169, "text": "Oh dear, publishing it to the world! I’ve decided to say “fuck it, its good enough”. There are some issues which has popped up, like some versions crashing, and the SABR stream never starting issue. I’m praying that it’s not just that bad. Made a reddit post about it :3 https://www.reddit.com/r/LegacyJailbreak/comments/1wnh4il/ Hopefully this doesn’t go catastrophic! I also have to setup a demo. Right now, the big issue is how to. Just a video is kinda… lame? So I want to do somehow make it an interactable demo. However, there is not an emulator for appstore apps for any iOS version between 5-10. This makes things rather tough. I do have some spare phones I can acquire to run it. However, getting the screen out is uhh….. challenging. The version of AirPlay on iOS is too old for the open source projects, and even the closed source, execpt for one, AirServer (which is 20$ per computer). The 30pin -> HDMI adapter -> capture card is extraordinarily unreliable, and keeps disconnecting when I try to use it, and is a pain in the ass to get working. There’s Veency, but it goes black when playing a video, and is unusable slow. And after all that, I have to send it to a server to stream to a web browser, I have to take input, I have to manage launching the correct app, preventing escaping the app, handle crashing, queuing (its one phone so people will have to wait), etc. All in 7 days. oh dear."}, {"post_id": 71634, "ts": "2026-09-21T06:27:35Z", "hours": 2.2925, "text": "Did some stuff to make the challenge solver/nsig/potoken restart when needed. Also reorganized it a lot of that file."}, {"post_id": 70324, "ts": "2026-09-18T22:56:01Z", "hours": 2.3042, "text": "So, it randomly decided to break for many videos, and only for some people. It appears that YT is doing extra things to detect adblockers on web, and something I’m doing is triggering the adblock detection. This is uhh bad :) I get to figure out what I’m missing and implement it properly. Now for bugfixes I made fixed a signin crash on 1.0.1 & 1.1.0 due to a missing cflag fixed the video date failing to load on iOS 5 added proper backoff to SABR"}, {"post_id": 68463, "ts": "2026-09-15T04:46:50Z", "hours": 2.7594, "text": "Bugfixes! fixed a bug where playlist videos fail to play on channel playlists fixed the open source licesnses page crashing on 2.0.0 fixed a bug where closed videos in 2.0.0 continue to play after closing, locking the phone, then unlocking fixed a crashing bug when not connected to internet when fetching profile"}, {"post_id": 67668, "ts": "2026-09-13T20:35:14Z", "hours": 0.9072, "text": "Made it zip the network log stuff for sending over email, as text files generally have a really good compression ratio, (the file is actually 2mb), and email has really low limits."}, {"post_id": 66921, "ts": "2026-09-12T21:55:08Z", "hours": 2.8417, "text": "I managed to get N/Sig deciphering working with HLS streams, meaning you can now watch livestreams, if you change up some settings & it’s buggy. I’m not intending on shipping proper stream support right now, so this will do for release."}, {"post_id": 65754, "ts": "2026-09-11T03:18:56Z", "hours": 5.4256, "text": "Bugfixes! I’ve decided it’s probably good enuff to “feature lock” and just get it ready for release (also cuz stardance ends soon, yet the streak thingy to a plushie continues. as its ending. why. i wanna take a break!) Not much images but Fix an issue with my trimming stuff not working on 1.4.0 Managed to cleanup the stream when switching video on 2.0.0 Some missing thing on the thumbnail speedup thing My failing to do requestProfileForIdentity correctly."}, {"post_id": 64350, "ts": "2026-09-08T17:29:24Z", "hours": 4.5636, "text": "I did a bunch of things, none of which felt that interesting to make a log for, so here’s one big one. The quality selector now works You can now toggle video stats (logging in history) on or off. Some error handling and trimming stuff to save on ram"}, {"post_id": 62657, "ts": "2026-09-06T03:55:15Z", "hours": 2.315, "text": "Did a small hack to add the tweak’s version to the crash reports"}, {"post_id": 61946, "ts": "2026-09-05T03:58:53Z", "hours": 5.835, "text": "So this one is small, but I’ve done an optimzation for the process of getting that little thumbnail. The older youtube clients did indivisual, very small requests for the specific channel, incl the thumbnail. I already have this data with the video requests, and getting the channel data is rather wasteful of the network and slow. I’ve replaced it with just using the avatar from the feed. Speeds things up a decent chunk!"}, {"post_id": 60937, "ts": "2026-09-03T16:40:57Z", "hours": 1.4744, "text": "Some minor sabr tweaks, and also a fix to the channel id failing to load for certain feeds"}, {"post_id": 60505, "ts": "2026-09-02T21:45:45Z", "hours": 2.1469, "text": "I made some of the settings work, and also made it hide the comments count which I don’t have a way of getting a precise number right now. Ignore the playback error."}, {"post_id": 59350, "ts": "2026-09-01T02:54:44Z", "hours": 4.4475, "text": "i did a bunch of misc fixes which aren’t interesting. iOS 5 preference fix some reloading of video changes with SABR cleanup of a bunch of things a fix to the item count (cuz 32bit limit aaaaaaa) memory things some crash bugs with SABR"}, {"post_id": 57701, "ts": "2026-08-29T22:55:46Z", "hours": 5.6717, "text": "A bunch of signin fixes, I fixed the channel id finder failing for different accounts, and I fixed an issue where one of the requests I did on 2.0.0 is synchronous and would not let the app start until it completed."}, {"post_id": 55413, "ts": "2026-08-27T07:02:08Z", "hours": 3.3828, "text": "2.0.0 support! and actually 1.4.0 support this time (oops, i think i clicked the wrong version…). I really hacked my way to 2.0.0 support, as it adds all the stream data to a protobuf container thingy which is never actually generated as protobuf. The protobuf also isn’t a normal function, and I couldn’t figure out how to recreate it, not that it would really work if it does do some protobuf shenanigans. So I did what probably every programmer does, hack it in poorly. When it starts trying to play the video, after the protobuf section, and where i still have access to the legacy GData streams, and I just shove it in there, and it manages to work! Also had to do some extra things to include valid authentication to the SABR stuff so it can play private videos and such. But now 2.0.0 works!"}, {"post_id": 54270, "ts": "2026-08-25T05:15:09Z", "hours": 1.5956, "text": "I managed to get 1.4.0 support working! They started kinda doing what I implemented myself…. which causes issues, but it works! 2.0.0 is going to be hard tho…"}, {"post_id": 53575, "ts": "2026-08-24T05:23:41Z", "hours": 3.7281, "text": "Managed to get videos to count towards your history! Also some kinda boring optimization things (start parsing even while we are still downloading, because net neutrality doesn’t exist for some reason, and someone got 22 seconds for a 2mb file)"}, {"post_id": 51988, "ts": "2026-08-22T00:14:33Z", "hours": 1.3206, "text": "i managed to get private videos to work, however they still don’t show up in the “Uploads” tab."}, {"post_id": 51417, "ts": "2026-08-21T03:27:49Z", "hours": 1.5033, "text": "A bunch of smaller bugfixes, and now it runs on iOS 5. There was some small differences since polyfils, and it doesn’t work with a proxy on (since it proxies localhost). The left device is iOS 5."}, {"post_id": 51306, "ts": "2026-08-20T21:39:31Z", "hours": 2.2778, "text": "I spent a bit of time fixing up the settings menu to properly have the HD options. Unsure how much of this is going to stay like this, but right now both of the HQ ones work, the 360p (Android) plays with SABR for a bit, then it stops as we don’t have proper attestation (our POTokens only work on web based clients). Probably going to have to forbid using sabr on ANDROID. Unsure yet about Android VR or visionOS. They both need a visitorData, which I still have to get. VisionOS has the nice perk of giving a completely unprotected HLS stream, which this can use. Android VR is traditionally unprotected, but I think they kinda ruined that. I also did a tiny bit of work to get closed captions working, which is basically prefixing https://www.youtube.com to the URL if it begins with a slash"}, {"post_id": 50822, "ts": "2026-08-20T08:01:40Z", "hours": 2.6489, "text": "I fixed the support in 1.0.0-1.3.0, 1.4.0 and above, they started changing a bunch of player things which I still have to figure out…."}, {"post_id": 50056, "ts": "2026-08-19T02:53:41Z", "hours": 5.1094, "text": "I managed to fix most of the RAM issues, excluding the one inside the youtube app which my stuff amplifies. I’ve done some stuff to allow you to change apps, lock the phone, etc, and have the stream recover. It’s not perfect, but it works well enough."}, {"post_id": 49349, "ts": "2026-08-18T03:49:07Z", "hours": 3.9958, "text": "It kinda somewhat maybe works! you can make it through a video, however scrubbing thru the video takes forever (some request never finishes), and theres some random stutter in the video. RAM usage is still a problem, and private videos don’t play. To get here, I did things how the HTTP server wanted so other requests can come in while i’m waiting for a segment, and allows this to play fully, however I do still need to fix the buffering issues."}, {"post_id": 48759, "ts": "2026-08-17T09:09:04Z", "hours": 1.1469, "text": "Shockingly, now that I have most of the TS stuff already in place for video, audio is shockingly painless! It was only just like the previous thing, and ADTS headers, https://wiki.multimedia.cx/index.php/ADTS . Time to try it on device!"}, {"post_id": 48723, "ts": "2026-08-17T07:48:03Z", "hours": 1.5411, "text": "OK, so this was quite annoying, It was really hard to find any docs on how esds is decoded, but I got there in the end, these are some of the parts I need to make the ADTS header ( https://wiki.multimedia.cx/index.php/ADTS ). The decoder is quite bad, and just ignores some cases, but hopefully it will work :)"}, {"post_id": 47913, "ts": "2026-08-16T05:50:14Z", "hours": 2.8556, "text": "Figuring out why the player view was never getting freed was taking too long, so uhh audio! yes! I have managed to grab the header out of the app after having to patch wayyy too many bugs with the header parsing, some of which could crash the app if your network is bad. Tiem to parse dis audio header!"}, {"post_id": 46687, "ts": "2026-08-14T03:54:25Z", "hours": 5.185, "text": "I managed to make the buffering system a little more robust, it can complete a video & even seek if your careful to let it play out. I also fixed some of the memory leaks, you can get much farther, but it does still only climbs, at the end of this 25 minute video it got up to 189mbs of ram used, which means we basically leaked 100mb of ram. This is quite unacceptable still, and I get to do more of figuring out why, yay!"}, {"post_id": 46124, "ts": "2026-08-13T04:10:25Z", "hours": 8.5864, "text": "srry for audio, i am in a discord call, but i managed to get more than like 20 seconds to work, however it currently gobbles RAM, and has wayyyy too many crash bugs. I fixed a bunch of the crash bugs, and broken stream bugs, but there’s still some crashing, esp. on video end."}, {"post_id": 45278, "ts": "2026-08-11T17:04:13Z", "hours": 1.8236, "text": "IT PLAYS!!!!!!!!!!!!!!!!!!!!!! YES!!!!!!!!!!!!!! that took wayyy too much debugging (and i also used ai assistance to tell why it wouldn’t play). I got it first working with VLC & other media players, but the iOS 6 player was especially stubborn. It only plays a couple seconds since I only do one request, but it plays. Did i mention it plays? I might try forcing it to use 1080p since 144p is a little… lacking in quality and SABR is defaulting to it, i guess i’ll figure that out later."}, {"post_id": 44998, "ts": "2026-08-11T04:04:30Z", "hours": 5.6678, "text": "Unsure how much of a win this is, but at least FFplay can play the video! However, VLC, built in media players on windows, and more importantly, the video player within iOS 6 cannot play it :( I’ve forced it to use 144p for a while now for a small file size, but it should be able to go quite up in size. Bigger issue is getting it to play, however I think I will wait on that, and work on having it serve the files on the phone so I can debug this a bit easier, and have the player actually like play the files without my syslog stuff. Hopefully I can get the video to play tho :)"}, {"post_id": 44430, "ts": "2026-08-10T05:47:54Z", "hours": 1.2339, "text": "Quite boring when all that exists in these devlogs is random hex eh? Hopefully this should be the last hex blob before actually getting some kinda of video to play! (maybe, miiiight have to do one more as I hook the TS file up with the HTTP server). I managed to packetize the data into PES packets. The next thing for video (no audio) should be packing it all up in one nice TS file. And then if we get lucky, we will get like 4 seconds of a video :D, maybe even up to like 10 since then the buffer runs out, and second requests to SABR aren’t implemented yet."}, {"post_id": 44396, "ts": "2026-08-10T03:25:28Z", "hours": 2.2244, "text": "I now grab h264 samples, and convert them into annex b samples. I think the next part might be actually building the TS file! wow! This means creating packets of the data, and then making packets out of those packets (why…)"}, {"post_id": 43064, "ts": "2026-08-08T03:57:14Z", "hours": 1.8175, "text": "I decided compiling FFmpeg was going to take forever, uhh doesn’t really give good stardance hours, and this is does more stardance hours ig… I did tfdt, tfhd, and trun parsing. I think this is all the parsing I need to do on the video side and the fragment size… i hope. Here’s a screenshot of me just printing the sample size to syslog."}, {"post_id": 42485, "ts": "2026-08-07T07:55:25Z", "hours": 2.5286, "text": "I did some extra work trying to parse MP4, but like… this is going to be a lot of effort to do, and just for the video, not even looking at audio yet. For this reason, I would like to bundle parts off FFMPeg with it, but compiling it is being terrible… I got arm64 after a while, but armv7 just does not want to go :("}, {"post_id": 41141, "ts": "2026-08-05T04:55:53Z", "hours": 6.0775, "text": "POTokens actually work! current protection status being 1 means the session is approved and good to continue throughout the entire stream! I basically implemented the PR at https://github.com/LuanRT/BgUtils/pull/44 , and did some user agent fixes… and my fuckup mis-spelling something I literally said in comments I might of 😭 . And now I get SPS of 1! :D :D :D It only took… like 3 months…. for potokens… 😔 I also figured out that Web offers an HLS stream if you specify an iOS useragent… uhhhhh i pretend not to see (for now), I’m sunk cost right now, and such. I wanna commit video container crimes!"}, {"post_id": 40546, "ts": "2026-08-04T05:23:46Z", "hours": 5.7383, "text": "Actually doing something with the media data we get from SABR now. I have decided that probably the best way to implement this is to convert it into an HLS stream. I came to this decision after fully looking at what SABR outputs, a fragmented MP4 intended for DASH, which the phone cannot play. However, SABR splits up the files based on the header first, then a bunch of fMP4 fragments. With a lot of work, I should be able to manually change the container from fMP4, to MPEG-TS, the format used by HLS, and have it streamed. It does have some hickups, changing stream to a lower or higher quality while streaming would likely be difficult (more concerning with it being a server adaptive bit rate system). Also MPEG-TS looks kinda… janky? This may also bring me some trouble if I chose to add Opus audio, since much of the audio streams are Opus based. Anyways, I now parse the first MP4 stream we get per format (audio & video), specifically the initialization section, and create an HLS manifest out of it! My next step is probably to have the phone itself host an HTTP server to grab the stream from, as it only supports getting videos from URLs. Audio is also in MP4 format, so this should work for it too :D"}, {"post_id": 39802, "ts": "2026-08-03T01:12:06Z", "hours": 2.3247, "text": "Working on some SABR parsing stuff, I got StreamProtectionStatus & NextRequestPolicy, along with the extraction stuff to get the segment from SABR. Doing this kinda of debugging on airplane wifi is rather hard, as the response is quite big, containing video segments."}, {"post_id": 39281, "ts": "2026-08-02T04:46:10Z", "hours": 4.9647, "text": "OK, a couple fun things. I finally got an output from SABR yay! The bug was really stupid, and it took me wayyy to long to figure out. I get the ustreamerconfig as base64, HOWEVER, this isn’t standard base64, it’s URL safe base64… for some reason. To send it in SABR, I have to turn it into bytes, specifically an NSData. These old iOS versions don’t have a standard base64 library, so I import one. The base64 library does not accept the - & _ type, and instead of like throwing any sort of error or even a log, it just… ignores them! So the error was actually accurate, it was a malformed config, specifically ustreamer config. I also did some stuff on POTokens. It appears that youtube did an update, and the POToken engine does more checks to see if it’s on youtube.com, or something like that. It seems it now specifically refuses POTokens were minted on not youtube.com, and only for the video id case, and only sometimes, specifically if fexp in the URL is 51973818, if it’s 51973819 it works. Also for some reason on my end using the visitorData works, which it doesn’t for other people in the youtube.js discord. Oh I should mention it also affects the library BgUtils, which my thing (and yt-dlp, and literally everything) is based on/uses. For now, i’m going to ignore the POToken issue, since I’m honestly not that great at debugging the youtube’s JS (i spent like a couple hours trying, if you search for function Vr in the base.js you’ll find something in the POToken minter as of right now). However according to Luan (the author of the BgUtils thingy), nothing changed in the player code, so idk, Idk how I could really debug the potoken engine. Oh also, something… interesting, someone else in the BgUtils discord decided to uhh fork my thing and using the power of AI, implement POToken gen using QuickJS. I initally tried this for POToken gen but got stuck with me missing polyfills. I’m considering taking parts of the forked code (specifically the polyfills), and some of my older QuickJS code and having two POToken systems you can switch between in case one breaks (ES6 issues for example), but idk if I should. I guess for now, I get to go actually write an implementation reading SABR data/UMP now. Maybe i’ll be doing this on a plane again :D (return flight)"}, {"post_id": 34375, "ts": "2026-07-25T01:13:15Z", "hours": 7.5297, "text": "I’ve been doing a lot of work on getting SABR playback working. I think i’ve got sending “preferred” audio & video formats, client info stuff and probably some other things too. Currently the only response I have is sabr.malformed_config (2c1d0a15 73616272 2e6d616c 666f726d 65645f63 6f6e6669 6710021a 022006). Most of these 7h 30m were done on the ground, but i’m working on this at 37 000ft in the air. Had to do some hacks & scripting to get this to connect to the internet, which needs you to watch an ad every 30 minutes."}, {"post_id": 32689, "ts": "2026-07-22T00:21:33Z", "hours": 2.3422, "text": "I did a bunch of integration stuff, and cleanup, but now it plays 360p from the mweb client! I had to add an extra way to decipher n/sig to it (since youtube is yes), but it seems decently reliable, execpt for me not having POToken generation checks to see if it’s ready. Hopefully shouldn’t be too hard :)"}, {"post_id": 32532, "ts": "2026-07-21T19:26:46Z", "hours": 0.4147, "text": "iOS 5 now works with the botguard stuff! It was pretty simple, I just had it load the cloudflare version of polyfill.io and copied the JS it gave (since it’s based on UA)"}, {"post_id": 32499, "ts": "2026-07-21T18:34:50Z", "hours": 1.1594, "text": "I did some minor optimization of the POToken stuff, so it doesn’t block the main (UI) thread for too long, turning 2478.5ms -> 8.8ms by adding a 0 second settimeout when starting the botguard VM. I also went to go check on iOS 5. When there, I noticed my analytics temp file was failing to write, meaning it sent a “installed” event every launch. This is well… bad. It means my analytics are bad yay! I added a small check to see if I can actually write this file before sending it off, i’ll diagnose it later."}, {"post_id": 32158, "ts": "2026-07-21T03:56:13Z", "hours": 0.7561, "text": "And finally, I DID IT!!!!!!!!!!!!!!! YESS!!!!! This URL was generated on the phone, from a URL from the mobile client, meaning I can now get signed in videos. This was months and have ruined the speed of startup… BUT IT WORKS!!!!! I also have to actually make it like use the n/sig function, and do other tweaks since I used a proxy to manually implant the URL. It also means I can finally start making a SABR client inside this. I am very happy 😭"}, {"post_id": 32127, "ts": "2026-07-21T02:27:00Z", "hours": 3.8428, "text": "YESSS I HAVE A N/SIG SOLVED WITH JS CHALLENGE. I am yet to test if it’s valid though, here’s hoping lol."}, {"post_id": 31906, "ts": "2026-07-20T17:49:16Z", "hours": 1.3297, "text": "In an effort to keep it on device, I tried switching to tree-sitter. I got it all compiled for iOS, and I did get it to just parse the javascript on device! However, it took 40 seconds to parse. Along with this, RAM usage went from 58MB -> 220MB. The 3GS (one of the current targets) only has 256MB, and if I ever even try on the 3G, that only has 128MBs of ram. This is very bad. As much as it pains me, I think the best solution would likely be to have a server pick out the n/sig function, and have the device pull a json file or something which has the functions it needs. Kinda does ruin the “no server is involved” stuff with this, but that kinda does seem like the sacrifice I have to make unfortunately. Sadge :("}, {"post_id": 31547, "ts": "2026-07-20T01:21:56Z", "hours": 2.8094, "text": "So I decided to look at n/sig, as that’s what I need next. N/Sig is basically two steps Find the function for n/sig Run that function. The n/sig function is located somewhere in https://www.youtube.com/s/player/882a803a/player_es6.vflset/en_US/base.js (the link changes as new players come out, so it’s dynamic). If you look at it for a bit, you may notice it’s quite big. 2.4mb. Every other tool puts it into something called meryiah, a JS parser. https://meriyah.github.io/meriyah/ . If you try to put that script into that site, you will notice the output is extremely long. It’s long enough that you cannot select all of it. It’s also long enough to cause memory exhaustion. This is a problem. I cannot run this on my device without causing an out of memory crash. I’m unsure right now how I should get around this, but we will see I also did some integrating the POToken stuff with the rest of that app, but that was relatively minor execpt for the bad memory management I do biting me in the ass. I think this may have also destroyed launch preformance, but i guess we have to see."}, {"post_id": 31466, "ts": "2026-07-19T20:51:47Z", "hours": 1.5017, "text": "I quickly did coldstart token generation. This is intended for when the POToken engine is starting up/unavailable. It’s used to allow for instant playback on actual youtube, and here too I hope. There’s a few things I need to do to make sure this works alright. Right now, if there’s no network on startup, the engine will just be perpetually broken, and that’s not great, so I need to handle that, along with actually integrating it with the rest of the tweak."}, {"post_id": 31112, "ts": "2026-07-19T07:51:46Z", "hours": 2.9272, "text": "i did it! i now have a POToken on device. God that took far too long lol. Now I actually have to like… use them. im going to bed."}, {"post_id": 31024, "ts": "2026-07-19T02:36:09Z", "hours": 5.005, "text": "Probably had some other things, but I got the botguard response in the youtube app instead of the YT Capture app. This was shockingly annoying, since idk why, but the GTMHTTPFetcher just… doesn’t work on the youtube app? Since at least for now this is iOS 5+, I just switched to an equivalent function in the NS stuff. Right now this does botguard responses only, but I need POToken generation, so here I go i guess….. (isn’t this just riveting?)"}, {"post_id": 21806, "ts": "2026-07-03T22:44:25Z", "hours": 4.5053, "text": "I decided that QuickJS was just not working out, and decided to switch over to a hidden webview. I had a few hiccups due to the fact that it’s an ancient webview, and thus missing functions like await, async, and Symbol. The latter was required by the botguard’s iframe, which caused issues trying to polyfill it, but I got there in the end. And now I have a fresh botguard token! Now it’s time for POTokens, and then the needed tokens for uploading videos!"}, {"post_id": 21213, "ts": "2026-07-03T01:08:14Z", "hours": 3.8242, "text": "I fixed an issue where videos with a view count over the 32bit integer limit (2.14B) go into the negatives. This was relatively annoying since the issue was the app turning the int64 into an int when passing it to a function to display the video, meaning I had to RE & recreate the functions for displaying video info three times! (1.2.1 & 1.3.0 had different versions for iPad, and 2.0.0) Also did a small fix to the dislikes where viewing a video where more dislikes than likes (baby shark) would make the likes & dislikes 50/50."}, {"post_id": 18845, "ts": "2026-06-30T01:30:09Z", "hours": 5.8875, "text": "Took a break from PO stuff still, but now you can select a specific channel, though i’ve hidden my other one bcuz privacy."}, {"post_id": 9060, "ts": "2026-06-15T04:01:08Z", "hours": 0.3219, "text": "Since I keep seeing crash reports from people not reading “Known Issues”, i’ve added one for this, and iPad on iOS 9 incompatibilities. Hopefully I will stop seeing all this :)"}, {"post_id": 9053, "ts": "2026-06-15T03:35:25Z", "hours": 5.7428, "text": "I am taking a break from POToken for now, since they are legitimately hell, and it’s kinda gotten in a state where too much is broken and I must do a patch to fix these issues. I’ve managed to fix most of the issues which include Sentence based instead of word based captions not being handled “Viewer Discretion” videos not playing due to some missing flags RYTDL now uses ratio stuff with the from youtube like count instead of relying on just sometimes broken data from RYTDL Homepage length being broken Playlist content (trending, categories, playlists (duh), favourites, watch later) no longer appearing Removing the now broken “Adaptive” option (rip)"}, {"post_id": 7077, "ts": "2026-06-11T21:03:53Z", "hours": 3.9622, "text": "I’m getting somewhere but it’s still quite wrong. I managed to “pass” initalization, but generating a botguard response is just flat out broken. This should look very different. I changed out some bits on how setTimeout & setInterval to get it to initalize, but I don’t know if something there is wrong or what is happening :("}, {"post_id": 1889, "ts": "2026-06-04T03:24:22Z", "hours": 2.4694, "text": "Sooo uhh suffering :D I do not know everything in this 2h 26m, but I spent a bunch of time rewriting some of my requesting stuff to have auth for challenges, and debugging why the challenge response I got was junk. Turns out, I’m bad at javascript and didn’t properly await -_-. Now I can actually get a completed challenge! but only currently in the browser… Time to try it on device!"}]...
|
Title: TubeReplacer by @Preloading | Stardance
De Title: TubeReplacer by @Preloading | Stardance
Devlogs:
Sooo uhh suffering :D I do not know everything in this 2h 26m, but I spent a bunch of time rewriting some of my requesting stuff to have auth for challenges, and debugging why the challenge response I got was junk. Turns out, I’m bad at javascript and didn’t properly await -_-. Now I can actually get a completed challenge! but only currently in the browser… Time to try it on device!
I’m getting somewhere but it’s still quite wrong. I managed to “pass” initalization, but generating a botguard response is just flat out broken. This should look very different. I changed out some bits on how setTimeout & setInterval to get it to initalize, but I don’t know if something there is wrong or what is happening :(
I am taking a break from POToken for now, since they are legitimately hell, and it’s kinda gotten in a state where too much is broken and I must do a patch to fix these issues. I’ve managed to fix most of the issues which include Sentence based instead of word based captions not being handled “Viewer Discretion” videos not playing due to some missing flags RYTDL now uses ratio stuff with the from youtube like count instead of relying on just sometimes broken data from RYTDL Homepage length being broken Playlist content (trending, categories, playlists (duh), favourites, watch later) no longer appearing Removing the now broken “Adaptive” option (rip)
Since I keep seeing crash reports from people not reading “Known Issues”, i’ve added one for this, and iPad on iOS 9 incompatibilities. Hopefully I will stop seeing all this :)
Took a break from PO stuff still, but now you can select a specific channel, though i’ve hidden my other one bcuz privacy.
I fixed an issue where videos with a view count over the 32bit integer limit (2.14B) go into the negatives. This was relatively annoying since the issue was the app turning the int64 into an int when passing it to a function to display the video, meaning I had to RE & recreate the functions for displaying video info three times! (1.2.1 & 1.3.0 had different versions for iPad, and 2.0.0) Also did a small fix to the dislikes where viewing a video where more dislikes than likes (baby shark) would make the likes & dislikes 50/50.
I decided that QuickJS was just not working out, and decided to switch over to a hidden webview. I had a few hiccups due to the fact that it’s an ancient webview, and thus missing functions like await, async, and Symbol. The latter was required by the botguard’s iframe, which caused issues trying to polyfill it, but I got there in the end. And now I have a fresh botguard token! Now it’s time for POTokens, and then the needed tokens for uploading videos!
Probably had some other things, but I got the botguard response in the youtube app instead of the YT Capture app. This was shockingly annoying, since idk why, but the GTMHTTPFetcher just… doesn’t work on the youtube app? Since at least for now this is iOS 5+, I just switched to an equivalent function in the NS stuff. Right now this does botguard responses only, but I need POToken generation, so here I go i guess….. (isn’t this just riveting?)
i did it! i now have a POToken on device. God that took far too long lol. Now I actually have to like… use them. im going to bed.
I quickly did coldstart token generation. This is intended for when the POToken engine is starting up/unavailable. It’s used to allow for instant playback on actual youtube, and here too I hope. There’s a few things I need to do to make sure this works alright. Right now, if there’s no network on startup, the engine will just be perpetually broken, and that’s not great, so I need to handle that, along with actually integrating it with the rest of the tweak.
So I decided to look at n/sig, as that’s what I need next. N/Sig is basically two steps Find the function for n/sig Run that function. The n/sig function is located somewhere in https://www.youtube.com/s/player/882a803a/player_es6.vflset/en_US/base.js (the link changes as new players come out, so it’s dynamic). If you look at it for a bit, you may notice it’s quite big. 2.4mb. Every other tool puts it into something called meryiah, a JS parser. https://meriyah.github.io/meriyah/ . If you try to put that script into that site, you will notice the output is extremely long. It’s long enough that you cannot select all of it. It’s also long enough to cause memory exhaustion. This is a problem. I cannot run this on my device without causing an out of memory crash. I’m unsure right now how I should get around this, but we will see I also did some integrating the POToken stuff with the rest of that app, but that was relatively minor execpt for the bad memory management I do biting me in the ass. I think this may have also destroyed launch preformance, but i guess we have to see.
In an effort to keep it on device, I tried switching to tree-sitter. I got it all compiled for iOS, and I did get it to just parse the javascript on device! However, it took 40 seconds to parse. Along with this, RAM usage went from 58MB -> 220MB. The 3GS (one of the current targets) only has 256MB, and if I ever even try on the 3G, that only has 128MBs of ram. This is very bad. As much as it pains me, I think the best solution would likely be to have a server pick out the n/sig function, and have the device pull a json file or something which has the functions it needs. Kinda does ruin the “no server is involved” stuff with this, but that kinda does seem like the sacrifice I have to make unfortunately. Sadge :(
YESSS I HAVE A N/SIG SOLVED WITH JS CHALLENGE. I am yet to test if it’s valid though, here’s hoping lol.
And finally, I DID IT!!!!!!!!!!!!!!! YESS!!!!! This URL was generated on the phone, from a URL from the mobile client, meaning I can now get signed in videos. This was months and have ruined the speed of startup… BUT IT WORKS!!!!! I also have to actually make it like use the n/sig function, and do other tweaks since I used a proxy to manually implant the URL. It also means I can finally start making a SABR client inside this. I am very happy 😭
I did some minor optimization of the POToken stuff, so it doesn’t block the main (UI) thread for too long, turning 2478.5ms -> 8.8ms by adding a 0 second settimeout when starting the botguard VM. I also went to go check on iOS 5. When there, I noticed my analytics temp file was failing to write, meaning it sent a “installed” event every launch. This is well… bad. It means my analytics are bad yay! I added a small check to see if I can actually write this file before sending it off, i’ll diagnose it later.
iOS 5 now works with the botguard stuff! It was pretty simple, I just had it load the cloudflare version of polyfill.io and copied the JS it gave (since it’s based on UA)
I did a bunch of integration stuff, and cleanup, but now it plays 360p from the mweb client! I had to add an extra way to decipher n/sig to it (since youtube is yes), but it seems decently reliable, execpt for me not having POToken generation checks to see if it’s ready. Hopefully shouldn’t be too hard :)
I’ve been doing a lot of work on getting SABR playback working. I think i’ve got sending “preferred” audio & video formats, client info stuff and probably some other things too. Currently the only response I have is sabr.malformed_config (2c1d0a15 73616272 2e6d616c 666f726d 65645f63 6f6e6669 6710021a 022006). Most of these 7h 30m were done on the ground, but i’m working on this at 37 000ft in the air. Had to do some hacks & scripting to get this to connect to the internet, which needs you to watch an ad every 30 minutes.
OK, a couple fun things. I finally got an output from SABR yay! The bug was really stupid, and it took me wayyy to long to figure out. I get the ustreamerconfig as base64, HOWEVER, this isn’t standard base64, it’s URL safe base64… for some reason. To send it in SABR, I have to turn it into bytes, specifically an NSData. These old iOS versions don’t have a standard base64 library, so I import one. The base64 library does not accept the - & _ type, and instead of like throwing any sort of error or even a log, it just… ignores them! So the error was actually accurate, it was a malformed config, specifically ustreamer config. I also did some stuff on POTokens. It appears that youtube did an update, and the POToken engine does more checks to see if it’s on youtube.com, or something like that. It seems it now specifically refuses POTokens were minted on not youtube.com, and only for the video id case, and only sometimes, specifically if fexp in the URL is 51973818, if it’s 51973819 it works. Also for some reason on my end using the visitorData works, which it doesn’t for other people in the youtube.js discord. Oh I should mention it also affects the library BgUtils, which my thing (and yt-dlp, and literally everything) is based on/uses. For now, i’m going to ignore the POToken issue, since I’m honestly not that great at debugging the youtube’s JS (i spent like a couple hours trying, if you search for function Vr in the base.js you’ll find something in the POToken minter as of right now). However according to Luan (the author of the BgUtils thingy), nothing changed in the player code, so idk, Idk how I could really debug the potoken engine. Oh also, something… interesting, someone else in the BgUtils discord decided to uhh fork my thing and using the power of AI, implement POToken gen using QuickJS. I initally tried this for POToken gen but got stuck with me missing polyfills. I’m considering taking parts of the forked code (specifically the polyfills), and some of my older QuickJS code and having two POToken systems you can switch between in case one breaks (ES6 issues for example), but idk if I should. I guess for now, I get to go actually write an implementation reading SABR data/UMP now. Maybe i’ll be doing this on a plane again :D (return flight)
Working on some SABR parsing stuff, I got StreamProtectionStatus & NextRequestPolicy, along with the extraction stuff to get the segment from SABR. Doing this kinda of debugging on airplane wifi is rather hard, as the response is quite big, containing video segments.
Actually doing something with the media data we get from SABR now. I have decided that probably the best way to implement this is to convert it into an HLS stream. I came to this decision after fully looking at what SABR outputs, a fragmented MP4 intended for DASH, which the phone cannot play. However, SABR splits up the files based on the header first, then a bunch of fMP4 fragments. With a lot of work, I should be able to manually change the container from fMP4, to MPEG-TS, the format used by HLS, and have it streamed. It does have some hickups, changing stream to a lower or higher quality while streaming would likely be difficult (more concerning with it being a server adaptive bit rate system). Also MPEG-TS looks kinda… janky? This may also bring me some trouble if I chose to add Opus audio, since much of the audio streams are Opus based. Anyways, I now parse the first MP4 stream we get per format (audio & video), specifically the initialization section, and create an HLS manifest out of it! My next step is probably to have the phone itself host an HTTP server to grab the stream from, as it only supports getting videos from URLs. Audio is also in MP4 format, so this should work for it too :D
POTokens actually work! current protection status being 1 means the session is approved and good to continue throughout the entire stream! I basically implemented the PR at https://github.com/LuanRT/BgUtils/pull/44 , and did some user agent fixes… and my fuckup mis-spelling something I literally said in comments I might of 😭 . And now I get SPS of 1! :D :D :D It only took… like 3 months…. for potokens… 😔 I also figured out that Web offers an HLS stream if you specify an iOS useragent… uhhhhh i pretend not to see (for now), I’m sunk cost right now, and such. I wanna commit video container crimes!
I did some extra work trying to parse MP4, but like… this is going to be a lot of effort to do, and just for the video, not even looking at audio yet. For this reason, I would like to bundle parts off FFMPeg with it, but compiling it is being terrible… I got arm64 after a while, but armv7 just does not want to go :(
I decided compiling FFmpeg was going to take forever, uhh doesn’t really give good stardance hours, and this is does more stardance hours ig… I did tfdt, tfhd, and trun parsing. I think this is all the parsing I need to do on the video side and the fragment size… i hope. Here’s a screenshot of me just printing the sample size to syslog.
I now grab h264 samples, and convert them into annex b samples. I think the next part might be actually building the TS file! wow! This means creating packets of the data, and then making packets out of those packets (why…)
Quite boring when all that exists in these devlogs is random hex eh? Hopefully this should be the last hex blob before actually getting some kinda of video to play! (maybe, miiiight have to do one more as I hook the TS file up with the HTTP server). I managed to packetize the data into PES packets. The next thing for video (no audio) should be packing it all up in one nice TS file. And then if we get lucky, we will get like 4 seconds of a video :D, maybe even up to like 10 since then the buffer runs out, and second requests to SABR aren’t implemented yet.
Unsure how much of a win this is, but at least FFplay can play the video! However, VLC, built in media players on windows, and more importantly, the video player within iOS 6 cannot play it :( I’ve forced it to use 144p for a while now for a small file size, but it should be able to go quite up in size. Bigger issue is getting it to play, however I think I will wait on that, and work on having it serve the files on the phone so I can debug this a bit easier, and have the player actually like play the files without my syslog stuff. Hopefully I can get the video to play tho :)
IT PLAYS!!!!!!!!!!!!!!!!!!!!!! YES!!!!!!!!!!!!!! that took wayyy too much debugging (and i also used ai assistance to tell why it wouldn’t play). I got it first working with VLC & other media players, but the iOS 6 player was especially stubborn. It only plays a couple seconds since I only do one request, but it plays. Did i mention it plays? I might try forcing it to use 1080p since 144p is a little… lacking in quality and SABR is defaulting to it, i guess i’ll figure that out later.
srry for audio, i am in a discord call, but i managed to get more than like 20 seconds to work, however it currently gobbles RAM, and has wayyyy too many crash bugs. I fixed a bunch of the crash bugs, and broken stream bugs, but there’s still some crashing, esp. on video end.
I managed to make the buffering system a little more robust, it can complete a video & even seek if your careful to let it play out. I also fixed some of the memory leaks, you can get much farther, but it does still only climbs, at the end of this 25 minute video it got up to 189mbs of ram used, which means we basically leaked 100mb of ram. This is quite unacceptable still, and I get to do more of figuring out why, yay!
Figuring out why the player view was never getting freed was taking too long, so uhh audio! yes! I have managed to grab the header out of the app after having to patch wayyy too many bugs with the header parsing, some of which could crash the app if your network is bad. Tiem to parse dis audio header!
OK, so this was quite annoying, It was really hard to find any docs on how esds is decoded, but I got there in the end, these are some of the parts I need to make the ADTS header ( https://wiki.multimedia.cx/index.php/ADTS ). The decoder is quite bad, and just ignores some cases, but hopefully it will work :)
Shockingly, now that I have most of the TS stuff already in place for video, audio is shockingly painless! It was only just like the previous thing, and ADTS headers, https://wiki.multimedia.cx/index.php/ADTS . Time to try it on device!
It kinda somewhat maybe works! you can make it through a video, however scrubbing thru the video takes forever (some request never finishes), and theres some random stutter in the video. RAM usage is still a problem, and private videos don’t play. To get here, I did things how the HTTP server wanted so other requests can come in while i’m waiting for a segment, and allows this to play fully, however I do still need to fix the buffering issues.
I managed to fix most of the RAM issues, excluding the one inside the youtube app which my stuff amplifies. I’ve done some stuff to allow you to change apps, lock the phone, etc, and have the stream recover. It’s not perfect, but it works well enough.
I fixed the support in 1.0.0-1.3.0, 1.4.0 and above, they started changing a bunch of player things which I still have to figure out….
I spent a bit of time fixing up the settings menu to properly have the HD options. Unsure how much of this is going to stay like this, but right now both of the HQ ones work, the 360p (Android) plays with SABR for a bit, then it stops as we don’t have proper attestation (our POTokens only work on web based clients). Probably going to have to forbid using sabr on ANDROID. Unsure yet about Android VR or visionOS. They both need a visitorData, which I still have to get. VisionOS has the nice perk of giving a completely unprotected HLS stream, which this can use. Android VR is traditionally unprotected, but I think they kinda ruined that. I also did a tiny bit of work to get closed captions working, which is basically prefixing https://www.youtube.com to the URL if it begins with a slash
A bunch of smaller bugfixes, and now it runs on iOS 5. There was some small differences since polyfils, and it doesn’t work with a proxy on (since it proxies localhost). The left device is iOS 5.
i managed to get private videos to work, however they still don’t show up in the “Uploads” tab.
Managed to get videos to count towards your history! Also some kinda boring optimization things (start parsing even while we are still downloading, because net neutrality doesn’t exist for some reason, and someone got 22 seconds for a 2mb file)
I managed to get 1.4.0 support working! They started kinda doing what I implemented myself…. which causes issues, but it works! 2.0.0 is going to be hard tho…
2.0.0 support! and actually 1.4.0 support this time (oops, i think i clicked the wrong version…). I really hacked my way to 2.0.0 support, as it adds all the stream data to a protobuf container thingy which is never actually generated as protobuf. The protobuf also isn’t a normal function, and I couldn’t figure out how to recreate it, not that it would really work if it does do some protobuf shenanigans. So I did what probably every programmer does, hack it in poorly. When it starts trying to play the video, after the protobuf section, and where i still have access to the legacy GData streams, and I just shove it in there, and it manages to work! Also had to do some extra things to include valid authentication to the SABR stuff so it can play private videos and such. But now 2.0.0 works!
A bunch of signin fixes, I fixed the channel id finder failing for different accounts, and I fixed an issue where one of the requests I did on 2.0.0 is synchronous and would not let the app start until it completed.
i did a bunch of misc fixes which aren’t interesting. iOS 5 preference fix some reloading of video changes with SABR cleanup of a bunch of things a fix to the item count (cuz 32bit limit aaaaaaa) memory things some crash bugs with SABR
I made some of the settings work, and also made it hide the comments count which I don’t have a way of getting a precise number right now. Ignore the playback error.
Some minor sabr tweaks, and also a fix to the channel id failing to load for certain feeds
So this one is small, but I’ve done an optimzation for the process of getting that little thumbnail. The older youtube clients did indivisual, very small requests for the specific channel, incl the thumbnail. I already have this data with the video requests, and getting the channel data is rather wasteful of the network and slow. I’ve replaced it with just using the avatar from the feed. Speeds things up a decent chunk!
Did a small hack to add the tweak’s version to the crash reports
I did a bunch of things, none of which felt that interesting to make a log for, so here’s one big one. The quality selector now works You can now toggle video stats (logging in history) on or off. Some error handling and trimming stuff to save on ram
Bugfixes! I’ve decided it’s probably good enuff to “feature lock” and just get it ready for release (also cuz stardance ends soon, yet the streak thingy to a plushie continues. as its ending. why. i wanna take a break!) Not much images but Fix an issue with my trimming stuff not working on 1.4.0 Managed to cleanup the stream when switching video on 2.0.0 Some missing thing on the thumbnail speedup thing My failing to do requestProfileForIdentity correctly.
I managed to get N/Sig deciphering working with HLS streams, meaning you can now watch livestreams, if you change up some settings & it’s buggy. I’m not intending on shipping proper stream support right now, so this will do for release.
Made it zip the network log stuff for sending over email, as text files generally have a really good compression ratio, (the file is actually 2mb), and email has really low limits.
Bugfixes! fixed a bug where playlist videos fail to play on channel playlists fixed the open source licesnses page crashing on 2.0.0 fixed a bug where closed videos in 2.0.0 continue to play after closing, locking the phone, then unlocking fixed a crashing bug when not connected to internet when fetching profile
So, it randomly decided to break for many videos, and only for some people. It appears that YT is doing extra things to detect adblockers on web, and something I’m doing is triggering the adblock detection. This is uhh bad :) I get to figure out what I’m missing and implement it properly. Now for bugfixes I made fixed a signin crash on 1.0.1 & 1.1.0 due to a missing cflag fixed the video date failing to load on iOS 5 added proper backoff to SABR
Did some stuff to make the challenge solver/nsig/potoken restart when needed. Also reorganized it a lot of that file.
Oh dear, publishing it to the world! I’ve decided to say “fuck it, its good enough”. There are some issues which has popped up, like some versions crashing, and the SABR stream never starting issue. I’m praying that it’s not just that bad. Made a reddit post about it :3 https://www.reddit.com/r/LegacyJailbreak/comments/1wnh4il/ Hopefully this doesn’t go catastrophic! I also have to setup a demo. Right now, the big issue is how to. Just a video is kinda… lame? So I want to do somehow make it an interactable demo. However, there is not an emulator for appstore apps for any iOS version between 5-10. This makes things rather tough. I do have some spare phones I can acquire to run it. However, getting the screen out is uhh….. challenging. The version of AirPlay on iOS is too old for the open source projects, and even the closed source, execpt for one, AirServer (which is 20$ per computer). The 30pin -> HDMI adapter -> capture card is extraordinarily unreliable, and keeps disconnecting when I try to use it, and is a pain in the ass to get working. There’s Veency, but it goes black when playing a video, and is unusable slow. And after all that, I have to send it to a server to stream to a web browser, I have to take input, I have to manage launching the correct app, preventing escaping the app, handle crashing, queuing (its one phone so people will have to wait), etc. All in 7 days. oh dear.
Alright, so the results are in. From what it seems, it mostly went well, however there are some issues that came up, primarly due to me not having enough time to test (I released this the day before stardance was extended for another month…. a bit of extra time would have been nice to iron out the few bugs on release, and also time to diagnose the playback errors people encounted). I did a quick 2.0.1 release to fix some of the bigger issues… 5 days after the initial. i’m tired ok?
Cooking up the demo, I’ve basically setup a remote control system on this phone, which should hopefully run over the internet! Giving randos complete control of this phone… what could possibly go wrong???? I still need to do some stuff to lock down the system it runs in, and also patch the problems with tubereplacer that came up recently.
To the demo, I added a time limit & a restart app option in case it breaks and the app has to be restarted....
|
1792529450.069319
|
1793134250.069319
|
|
65352
|
Robot for fixing Ai factory's problems by @ale Robot for fixing Ai factory's problems by @alexnikogosyan57 | Stardance...
|
alexnikogosyan57
|
0
|
6.23
|
0
|
[]
|
[{"post_id": 79721, "ts": "202 [{"post_id": 79721, "ts": "2026-10-15T06:42:03Z", "hours": 0.8319, "text": "I modeled an arm for the robot and assembled the components. It is powered by an HG90 servo motor and is very well-suited for picking up objects."}, {"post_id": 76797, "ts": "2026-10-04T16:13:02Z", "hours": 1.8897, "text": "I created half of the black line for the challenge course, verified and adjusted the precision of every component on the robot, added a TCRT5000 IR sensor, and created a 3D version of the VEML color sensor."}, {"post_id": 76442, "ts": "2026-10-03T15:05:21Z", "hours": 1.0192, "text": "I finished building the case for the Arduino and H-bridge and added IR sensors."}, {"post_id": 75571, "ts": "2026-09-30T13:55:05Z", "hours": 1.2106, "text": "Case for 9V battery"}, {"post_id": 75258, "ts": "2026-09-29T16:12:41Z", "hours": 1.2758, "text": "Case for a dedicated H-Bridge on a 2WD Smart Car: This is only half of it."}]...
|
Title: Robot for fixing Ai factory's problems Title: Robot for fixing Ai factory's problems by @alexnikogosyan57 | Stardance
Devlogs:
Case for a dedicated H-Bridge on a 2WD Smart Car: This is only half of it.
Case for 9V battery
I finished building the case for the Arduino and H-bridge and added IR sensors.
I created half of the black line for the challenge course, verified and adjusted the precision of every component on the robot, added a TCRT5000 IR sensor, and created a 3D version of the VEML color sensor.
I modeled an arm for the robot and assembled the components. It is powered by an HG90 servo motor and is very well-suited for picking up objects....
|
1793087302.5706632
|
1793692102.5706632
|
|
21092
|
The HackClub cloud by @Toma_Kuchta | Stardance
|
Toma_Kuchta
|
1
|
54.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T07:09:26Z", "hours": 54.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So this was my first project I have ever done in a real hackathon. I was in a team with Olivia and she had a beautiful traditional Chinese string instrument and we wanted to merge them both into one beautiful and colorful art piece. And we weren’t able to do that in the end sadly. :( lie it would have look great! ciya", "repo": "https://github.com/Tomas-Kuchta-FPV/The_Hack-Club_cloud", "demo": ""}]...
|
[{"post_id": 79722, "ts": "202 [{"post_id": 79722, "ts": "2026-10-15T06:57:50Z", "hours": 2.1853, "text": "Oh neat extra forgotten hours. It’s probably from when I was doing something and didn’t devlog it. sorry for this one. BC IDK what I was doing and don’t recal anything."}, {"post_id": 56134, "ts": "2026-07-17T00:00:00Z", "hours": 6.7, "text": "So we’ve unpaked everything from the ClayHaul and asseced the damage on the led wall. And oh boy all the pillow fill fell from it. So after more figuring out from where to get spray adhereve it turned out that it was in a repair booth, how convinient. Also like a lot of solder connections were tore up from the transport so I’ve repaired those, glued on the pillow fill and it worked great!! Oh yeah and then Gwendal figured out how to play games on the matrix with wled!!!!"}, {"post_id": 56133, "ts": "2026-07-16T00:00:00Z", "hours": 9.0, "text": "Allright so after that mess we’ve locked in hard. While my temate was repairing her project (She did that for almost the whole hackathon, which is crazy). I began soldering and gluing on the LED strips. Then remembered that it would be great to screw in the screws (With the DIY shitty screwdriver), resumed work on the LED strips. Allright and now we have around two hours left. After everything was soldered I’ve turned it on and it didn’t work. First there were problems with WLED configuration and then with one segment that was dead. Soooo after a “quick hour fix” The LED matrix was working. But we still have just a hour left to ship it. So I’ve quickly done some plywood gymnastic with spare people and put the whole contraption on chairs screwed in the legs and stood it up. Oh yeah it was working!!!!! OH no my teamate was still working on her project, so we needed to pivot. I had prepaired the repo for shipping while she sprayed adhesive on the board and glued the pillow fluff on. It was a messs. But we managed to do it in time lol. After that we had a short visit from our favorite creators, packed everything and went partying! They even had a B-day cake for me how lovely! Thank y’all! Here is a little video we’ve filmed. PS: I didn’t take a photo of the final build as I was so bussy!!!!"}, {"post_id": 56132, "ts": "2026-07-15T00:00:00Z", "hours": 10.0, "text": "So this day was spent by asking people around if we can PAINT! I thought we can atlest do some things that are not really needed but there wasn’t much though. So the whole morning was spent asking if we can paint as it was promised to happen now, but everytime I was told off. So I’ve procrastinated instead with talking to people lol. After it we all went on a picnic and we got back by around 4 pm. Allright no more staling we have layed down the OBS boards and began gluing on the led strips which we have precut yeasterday. And while gluing on the strips I went to another round of asking around for a saw, but this time dhamari helped me soooo much!!! <3 So after yesterdays pain with a small metal saw I’ve managed to borrowed a great stanley saw from a framing shop nextdoor. Nice!! Aaaaaaaaaaahhhhhh so I’ve finally managed to cut down the wood. Oh also we don’t have a scredriver so we’ve made our own scrappy one."}, {"post_id": 56131, "ts": "2026-07-14T00:00:00Z", "hours": 6.7, "text": "Mys first task was finding a teamate in which I failed horibly as I wasn’t able fo find anyone. I’m normaly social but it was different here as I was speaking a different language, and just a lot of first times (USA, Solo flight, long haul flight, hackathon, new people, different culture) … yeah it was overwhelming. And did I mention that I was on a family and frinds gathering in the middle of novehwre! So my plan was to when I land go to lowes and bring back all the stuff needed with yaha, but by the time I’ve came from the airport I wouldn’t have enough time to make it in time for the opening ceremony. So yaha came there by himself, picked up and rode it in an uber - just in time nice!!!! Also my plan was to spray paint the OSB light blue at lowes but that didn’t happen so I’ve bugged staff for the whole evening if there is a place that we can paint it, I weren’t to a more disorganized even in my whole life! It was chaos on all fronts."}, {"post_id": 56130, "ts": "2026-07-14T00:00:00Z", "hours": 1.5, "text": "So after a bit of setup I had like 18hr traveling to the venue. The leg to Frankfurt was great but the flight to San Francisco was super long and I didn’t know what to do. But in the last two hours of flight I’ve remembered that I need to finish the animations for the LED matrix. ’*sad"}, {"post_id": 14521, "ts": "2026-06-23T17:40:25Z", "hours": 2.9719, "text": "After shipping yesterday I had today started working on riping TwinkleTron out of my table, and overwriting it with the latest FW. Then I began configuring it. I have set up the LED strip channels as one can only do 800 LED’s reliably. It was split in the middle by 576 pixels. After I peeked into the matrix config set up the defined matrix size and it didn’t look right. Went to readme to spot the mistake ant it was because I’ve wrongly converted from mm to cm. OR so I thought. It was the whole calculation that was wrong. 🤦♂️ MATHS Boink I got an notification that my ship was rejected and needs changes. (No images in readme and no BOM) Back to the project, and after a few blank stares into the readme and also the CAD file I’ve managed to at least hopefully correctly calculate the needed LEDs. SO I had to redesign the power delivery section. Updated the repo for requested changes and shipped it back out. PS: I also managed to get the price down :yay"}, {"post_id": 13753, "ts": "2026-06-22T15:19:42Z", "hours": 4.2097, "text": "Allright I’m almost finished!! So first thing I did today was cleaning up the repo and pushing the yesterdays changes. Then I went on to do the drawing of the stand that will hold the LED matrix, I’ve tried to even show the LED strips in there but FreeCAD couldn’t handle it, so I sketched it up in draw.IO. with a kinda like a block diagram. Wrote about the intended SW in the readme. And then I’ve created the vision board so anybody can get the idea about the project, which is going to get shipped as a demo The whole time I was thinking about how I’ll create a render in blender for it with cloud simulation, but it didn’t work yesterday. But I got inspiration from some YT video that mocked it up with photoshop. So I hopped into affinity and started designing after a tutorial which I couldn’t follow, so I’ve found an online texture export and inported it into affinity tweaked it and it worked. But then I need some kind of backgroud for it, so I took akemi from the WLED effects website and blurred it out behind the cloud layer. Yeah it didn’t look right. And ChatGPT halucinated completly different thing. But after a bit of tweaking I managed to make it work. And after all of that I have threw everything into the shipping baskets, wrote down the price. And going to ship soon …. Good luck"}, {"post_id": 13086, "ts": "2026-06-21T12:46:37Z", "hours": 2.2622, "text": "Today I had done the schematic. It’s going to be a pretty interesting concept as the wiring is wild different to other matricies. We need almost 120m of LED strips. And they are going to draw almost 2 000W. It’s going to be an electric kettle lol. Because of that I have added two power cables to power the thing, as 220V is better for this. *laughs in geman. I have started creating the schematic in DrawIO. First was the PSU along with the two heavy duty cables I’ve mentioned earlier. Then it’s going to WAGO connectors which will be our power distribution and then it’s going to be distributed to the LED power injection points. Next I did a block diagram in it for the LED matrix, but it wasn’t really clear how to connect it up so I’ve hopped into tinkercad and did a small scale schematic with all of the right features. Next up is: Doing drawings of the the LED strip placement and / adding the 2x4 supports as well as the PSUs Ask my brother if he can try to visualize it in blender Create instructions for building at outpost or at home lol"}, {"post_id": 12752, "ts": "2026-06-20T21:01:24Z", "hours": 3.6581, "text": "So after that last pivot I’m super happy how this project is turning out. I hope that other people loves it as much as I do. But firstly I wanted to move the repo as the original is getting cluttered and it’s a mess. so new repo it it. And it’s also getting a rebrand from generic MatrixShow it’s going to be called The Hack Club cloud, symbolizing the many great ideas of Hack Clubbers. Well this one isn’t going to be about me it’s about ya’lls creativity passion and perseverance. And this sounds so epic in my head! So after a bit of philosophy. I went to look for suitable LED strips they were either super expensive or didn’t meet my criteria. And after a while I was able to find them, neat! So everything else was based around them, like the rows spacing, read more about that in my repo. https://github.com/Tomas-Kuchta-FPV/The_Hack-Club_cloud/blob/main/readme.md#constraints Alright and then I done the 3D model for the matrix. Which turned out OK, but it’s looking too much technical, but I can make drawing for it that we’ll use when building. Peace out Thomas"}, {"post_id": 11833, "ts": "2026-06-19T08:30:07Z", "hours": 1.915, "text": "So I need to pivot as it’s going to be super expensive! It’s going to be like 300 bulbs, which is feasible but it needs to be a huge budget. It would be fun thought, as I was on planning to use American electrical material. BTW I love the flat cables! So at first I’ve pivoted to making a addressable LED Christmass string light matrix. So basically drill out thousand of holes and plop them in an interval of about 15cm, but that wouldn’t have the right WOW effect. So there was another pivot to cheaper LED strips, which is doable!!! So I’ve decided to make a 4x8ft cloud wall!! It’s going to be addresable and it will be driven by my custom WLED LED controller called TwinkleTron. I still need to CAD it and spec the PSU, but it’s going to be awesome!!!!!!!"}, {"post_id": 11183, "ts": "2026-06-18T09:12:38Z", "hours": 2.9239, "text": "So I’ve defined BOM, and made a sketch of the matrix. A halve a year ago I had a light exposition in my hometown which turned out very good. So I want to use the current tested setup, which are Smart sonoff lightbulbs. So I’ve made a BOM around it. And CADed it. But when in CAD I’ve noticed that it’s like 300 smart bulbs and it’s going to be super expensive. So after finding out that this route isn’t good I’m going for a WS2811 addressable lights."}]...
|
Title: The HackClub cloud by @Toma_Kuchta | Starda Title: The HackClub cloud by @Toma_Kuchta | Stardance
Devlogs:
So I’ve defined BOM, and made a sketch of the matrix. A halve a year ago I had a light exposition in my hometown which turned out very good. So I want to use the current tested setup, which are Smart sonoff lightbulbs. So I’ve made a BOM around it. And CADed it. But when in CAD I’ve noticed that it’s like 300 smart bulbs and it’s going to be super expensive. So after finding out that this route isn’t good I’m going for a WS2811 addressable lights.
So I need to pivot as it’s going to be super expensive! It’s going to be like 300 bulbs, which is feasible but it needs to be a huge budget. It would be fun thought, as I was on planning to use American electrical material. BTW I love the flat cables! So at first I’ve pivoted to making a addressable LED Christmass string light matrix. So basically drill out thousand of holes and plop them in an interval of about 15cm, but that wouldn’t have the right WOW effect. So there was another pivot to cheaper LED strips, which is doable!!! So I’ve decided to make a 4x8ft cloud wall!! It’s going to be addresable and it will be driven by my custom WLED LED controller called TwinkleTron. I still need to CAD it and spec the PSU, but it’s going to be awesome!!!!!!!
So after that last pivot I’m super happy how this project is turning out. I hope that other people loves it as much as I do. But firstly I wanted to move the repo as the original is getting cluttered and it’s a mess. so new repo it it. And it’s also getting a rebrand from generic MatrixShow it’s going to be called The Hack Club cloud, symbolizing the many great ideas of Hack Clubbers. Well this one isn’t going to be about me it’s about ya’lls creativity passion and perseverance. And this sounds so epic in my head! So after a bit of philosophy. I went to look for suitable LED strips they were either super expensive or didn’t meet my criteria. And after a while I was able to find them, neat! So everything else was based around them, like the rows spacing, read more about that in my repo. https://github.com/Tomas-Kuchta-FPV/The_Hack-Club_cloud/blob/main/readme.md#constraints Alright and then I done the 3D model for the matrix. Which turned out OK, but it’s looking too much technical, but I can make drawing for it that we’ll use when building. Peace out Thomas
Today I had done the schematic. It’s going to be a pretty interesting concept as the wiring is wild different to other matricies. We need almost 120m of LED strips. And they are going to draw almost 2 000W. It’s going to be an electric kettle lol. Because of that I have added two power cables to power the thing, as 220V is better for this. *laughs in geman. I have started creating the schematic in DrawIO. First was the PSU along with the two heavy duty cables I’ve mentioned earlier. Then it’s going to WAGO connectors which will be our power distribution and then it’s going to be distributed to the LED power injection points. Next I did a block diagram in it for the LED matrix, but it wasn’t really clear how to connect it up so I’ve hopped into tinkercad and did a small scale schematic with all of the right features. Next up is: Doing drawings of the the LED strip placement and / adding the 2x4 supports as well as the PSUs Ask my brother if he can try to visualize it in blender Create instructions for building at outpost or at home lol
Allright I’m almost finished!! So first thing I did today was cleaning up the repo and pushing the yesterdays changes. Then I went on to do the drawing of the stand that will hold the LED matrix, I’ve tried to even show the LED strips in there but FreeCAD couldn’t handle it, so I sketched it up in draw.IO. with a kinda like a block diagram. Wrote about the intended SW in the readme. And then I’ve created the vision board so anybody can get the idea about the project, which is going to get shipped as a demo The whole time I was thinking about how I’ll create a render in blender for it with cloud simulation, but it didn’t work yesterday. But I got inspiration from some YT video that mocked it up with photoshop. So I hopped into affinity and started designing after a tutorial which I couldn’t follow, so I’ve found an online texture export and inported it into affinity tweaked it and it worked. But then I need some kind of backgroud for it, so I took akemi from the WLED effects website and blurred it out behind the cloud layer. Yeah it didn’t look right. And ChatGPT halucinated completly different thing. But after a bit of tweaking I managed to make it work. And after all of that I have threw everything into the shipping baskets, wrote down the price. And going to ship soon …. Good luck
After shipping yesterday I had today started working on riping TwinkleTron out of my table, and overwriting it with the latest FW. Then I began configuring it. I have set up the LED strip channels as one can only do 800 LED’s reliably. It was split in the middle by 576 pixels. After I peeked into the matrix config set up the defined matrix size and it didn’t look right. Went to readme to spot the mistake ant it was because I’ve wrongly converted from mm to cm. OR so I thought. It was the whole calculation that was wrong. 🤦♂️ MATHS Boink I got an notification that my ship was rejected and needs changes. (No images in readme and no BOM) Back to the project, and after a few blank stares into the readme and also the CAD file I’ve managed to at least hopefully correctly calculate the needed LEDs. SO I had to redesign the power delivery section. Updated the repo for requested changes and shipped it back out. PS: I also managed to get the price down :yay
So after a bit of setup I had like 18hr traveling to the venue. The leg to Frankfurt was great but the flight to San Francisco was super long and I didn’t know what to do. But in the last two hours of flight I’ve remembered that I need to finish the animations for the LED matrix. ’*sad
Mys first task was finding a teamate in which I failed horibly as I wasn’t able fo find anyone. I’m normaly social but it was different here as I was speaking a different language, and just a lot of first times (USA, Solo flight, long haul flight, hackathon, new people, different culture) … yeah it was overwhelming. And did I mention that I was on a family and frinds gathering in the middle of novehwre! So my plan was to when I land go to lowes and bring back all the stuff needed with yaha, but by the time I’ve came from the airport I wouldn’t have enough time to make it in time for the opening ceremony. So yaha came there by himself, picked up and rode it in an uber - just in time nice!!!! Also my plan was to spray paint the OSB light blue at lowes but that didn’t happen so I’ve bugged staff for the whole evening if there is a place that we can paint it, I weren’t to a more disorganized even in my whole life! It was chaos on all fronts.
So this day was spent by asking people around if we can PAINT! I thought we can atlest do some things that are not really needed but there wasn’t much though. So the whole morning was spent asking if we can paint as it was promised to happen now, but everytime I was told off. So I’ve procrastinated instead with talking to people lol. After it we all went on a picnic and we got back by around 4 pm. Allright no more staling we have layed down the OBS boards and began gluing on the led strips which we have precut yeasterday. And while gluing on the strips I went to another round of asking around for a saw, but this time dhamari helped me soooo much!!! <3 So after yesterdays pain with a small metal saw I’ve managed to borrowed a great stanley saw from a framing shop nextdoor. Nice!! Aaaaaaaaaaahhhhhh so I’ve finally managed to cut down the wood. Oh also we don’t have a scredriver so we’ve made our own scrappy one.
Allright so after that mess we’ve locked in hard. While my temate was repairing her project (She did that for almost the whole hackathon, which is crazy). I began soldering and gluing on the LED strips. Then remembered that it would be great to screw in the screws (With the DIY shitty screwdriver), resumed work on the LED strips. Allright and now we have around two hours left. After everything was soldered I’ve turned it on and it didn’t work. First there were problems with WLED configuration and then with one segment that was dead. Soooo after a “quick hour fix” The LED matrix was working. But we still have just a hour left to ship it. So I’ve quickly done some plywood gymnastic with spare people and put the whole contraption on chairs screwed in the legs and stood it up. Oh yeah it was working!!!!! OH no my teamate was still working on her project, so we needed to pivot. I had prepaired the repo for shipping while she sprayed adhesive on the board and glued the pillow fluff on. It was a messs. But we managed to do it in time lol. After that we had a short visit from our favorite creators, packed everything and went partying! They even had a B-day cake for me how lovely! Thank y’all! Here is a little video we’ve filmed. PS: I didn’t take a photo of the final build as I was so bussy!!!!
So we’ve unpaked everything from the ClayHaul and asseced the damage on the led wall. And oh boy all the pillow fill fell from it. So after more figuring out from where to get spray adhereve it turned out that it was in a repair booth, how convinient. Also like a lot of solder connections were tore up from the transport so I’ve repaired those, glued on the pillow fill and it worked great!! Oh yeah and then Gwendal figured out how to play games on the matrix with wled!!!!
Oh neat extra forgotten hours. It’s probably from when I was doing something and didn’t devlog it. sorry for this one. BC IDK what I was doing and don’t recal anything.
Ships:
So this was my first project I have ever done in a real hackathon. I was in a team with Olivia and she had a beautiful traditional Chinese string instrument and we wanted to merge them both into one beautiful and colorful art piece. And we weren’t able to do that in the end sadly. :( lie it would have look great! ciya...
|
1793051417.51055
|
1793137817.51055
|
|
30214
|
PANTRY REANTRY by @mikhailnotfish | Stardance
|
mikhailnotfish
|
1
|
32.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-16T05:14:45Z", "hours": 32.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "THIS is pantry reentry. a game where you throw houshold objects, into the atmosphere. it includes: 8 different objects UNITY HDRP shaders plasma meshes, instead of particles. offline play portability (downloadable .exe) please leave me a good rating, i hope you enjoy the game!", "repo": "https://github.com/mikhailnotfish/pantry-reantry", "demo": "https://mikhailnotfish.itch.io/pantryreentry"}]...
|
[{"post_id": 79726, "ts": "202 [{"post_id": 79726, "ts": "2026-10-15T07:10:17Z", "hours": 1.4983, "text": "pantryReeantry IS FINISHED!!! i have added a settings menu, becuse youre gonna have to download the game, i did some work on github stuff and i uploaded it to itch.io. this has really been a great journy and this MAY be my last project on stardance, because it is ending in about 2 weeks. i hope you like the project! here is a gameplay image of a piano burning up."}, {"post_id": 79235, "ts": "2026-10-13T04:51:52Z", "hours": 2.5872, "text": "ive been working for a while!! so, for the past 2 and a half hours, i have as promised converted the entire project to HDRP, because stock unity looks horrible. i have made a few desicions, including removing the planet entirely and just spawning a blue circle with c#, and removing the particle systems nd swapping them out for PLASMA MESHES! i have made a quick UI using c# here is a image (theres a burning up bean shelf)"}, {"post_id": 78476, "ts": "2026-10-10T22:04:42Z", "hours": 8.5625, "text": "i have decided, that becuse stardance has been extended, i am going to convert pantry reantry, to hdrp!! lit shaders look much better there, and the particles are gonna be volumetric. this game is going to look fabulous! for shipwright: i get whats happening now. how do i have 8 hours? i havent been on unity that much in the past 2 weeks! its because VScode tracks “ple0017’ SO WHENEVER I USE VSCODE, WHATEVER IT MAY BE IM DOING, IT TRACKS HERE. if fraud squad is seeing this you may remove some of these hours, i wasnt vscoding for unity the whole time!!!"}, {"post_id": 46233, "ts": "2026-08-13T10:23:07Z", "hours": 2.3314, "text": "this devlog is a mistake! i accidentally transferred 2 hours via lapse onto this project, instead of youtubeds i accedentally clicked this project. ive gone to help on slack, but the ABSOLUTE CLANKERS there said “there is no way to” like bro why did you reply then"}, {"post_id": 39306, "ts": "2026-08-02T06:11:35Z", "hours": 3.2194, "text": "Today I started replacing the original cube with the first real object in the game: a fridge. Most of the work went into getting the Signed Distance Field (SDF) collider working correctly, since the reentry plasma effect relies on it to collide with the object’s surface instead of passing straight through it.I imported the fridge model, prepared it for Unity, and worked on baking a new SDF that matched its shape. Compared to the simple cube, this was a much better test because the fridge has more detailed geometry, making it a good way to see how well the plasma effect wraps around different objects during reentry.The long-term goal is for every object in the game to have its own mesh, collider, and SDF while still sharing the same reentry system. That means I can eventually swap between things like fridges, pizzas, cars, and other random objects without rebuilding all of the effects each time.Although most of today’s progress happened behind the scenes, it’s an important step toward turning the project into an actual game instead of a simple physics demo. Soon the player will be able to choose what object they want to throw into Earth’s atmosphere and see if it survives the trip."}, {"post_id": 27051, "ts": "2026-07-12T07:45:01Z", "hours": 1.0494, "text": "Today I started working on making the reentry system more flexible by preparing the game for multiple objects instead of just the test cube.I experimented with the idea of making every object its own prefab, allowing things like fridges, pizzas, cars, and other random objects to be thrown into the atmosphere. The plan is to keep the same reentry system, but swap out the mesh, collider, and SDF data for each object so every item has its own way of interacting with the plasma and heat effects.I also looked into making the VFX system more reusable by using one main reentry plasma graph while giving each object its own settings, like different SDF collision shapes and different fire trail styles. This should make adding new objects much faster instead of rebuilding the entire system every time.A big focus today was thinking about the future structure of the game. Instead of one object being launched, the player will eventually be able to choose what they want to send into reentry and see if it survives.The project is starting to move from a physics test into an actual game with different challenges, objects, and replay value."}, {"post_id": 26448, "ts": "2026-07-11T07:59:17Z", "hours": 1.5622, "text": "Today I worked on improving the gameplay loop for Pantry Reantry and focused on making the launch, crash, and respawn systems work properly.I added a respawn button that appears after the object crashes, allowing the player to try again without restarting the game. I also worked on fixing the camera so it doesn’t randomly teleport during resets and stays attached to the player object when needed.A big part of today was debugging the VFX systems. The reentry plasma and fire trail were having issues where they would start at the wrong time or keep existing particles after respawning. I worked on making the atmosphere trigger control when the effects activate, instead of them starting automatically when the object launches.There are still a few small VFX issues to clean up, but the overall reentry loop is coming together. The object can now launch, enter the atmosphere, activate the heat effects, crash, and be reset for another attempt.The next steps are finishing the UI and adding things like altitude, speed, heat, and survival stats to make the reentry experience feel more like a real game."}, {"post_id": 25693, "ts": "2026-07-10T03:41:03Z", "hours": 1.6783, "text": "Today I worked on making the reentry experience. I focused on connecting all the systems together so the player can actually watch an object fall from space and survive (or not survive) the journey.I improved the VFX setup by making the reentry plasma and fire trail activate when the object enters the atmosphere. Instead of having the effects constantly running, they now wait until the object reaches the invisible atmosphere boundary, which makes the transition feel much more realistic.I also fixed the particle behaviour so the smoke and fire trail stays behind the object instead of moving with it. This made a huge difference because the trail now actually looks like something burning through the atmosphere.Another challenge was the camera system. The menu camera and gameplay camera were fighting each other because the follow script was constantly overriding the start button position. I fixed this by making the camera follow system activate only after pressing the start button, allowing the camera to transition into the gameplay view properly.There is still a lot to add, like better destruction effects, heat intensity based on speed, and more detailed atmosphere visuals, but the core reentry sequence is finally starting to come together."}, {"post_id": 25125, "ts": "2026-07-09T04:22:04Z", "hours": 1.3044, "text": "Today I worked on making the reentry system feel way more alive. I focused on getting the heat particles to actually interact with the objects instead of just floating around them. After a bit of experimenting with collisions, SDFs, and VFX Graph, I finally got particles reacting properly with the objects flying through the atmosphere.I also started setting up the systems needed for objects to have their own reentry effects. The goal is that every object falling from space can have its own heat trail that follows it, turns on when it hits the atmosphere, and disappears when it escapes or slows down.A big challenge was making everything follow moving objects correctly. Static effects are easy, but when you have something travelling at high speed, everything needs to stay perfectly synced. I worked on making the particle emitter follow the object and keeping the collision data aligned so the effects don’t lag behind.There is still more to improve, like making the heat intensity change based on speed and adding better visuals, but the foundation is now working. Seeing the particles actually wrap around and react to the objects makes the whole reentry experience feel much more realistic."}, {"post_id": 24481, "ts": "2026-07-08T01:46:35Z", "hours": 0.4189, "text": "so uhh today i continued my work from yesterday, making the reentry plasma, i realized there was no way in history i was gonna make a blender made modular physics based reentry plasma system and tried to make a plasma one normally, using a sphere. long story short, i failed, fell asleep and then gave up 🥀 hopefully ill be back at it later today, if not wait till tomorrow."}, {"post_id": 23950, "ts": "2026-07-07T05:07:52Z", "hours": 2.9003, "text": "Today was mostly about making reentry look and feel a lot cooler. I spent a good chunk of time learning Shader Graph and experimenting until I had a fire effect that looked much more like an object burning through the atmosphere. It took a lot of trial and error, and I had to fix several bugs along the way, but I eventually got everything working together.After that, I added explosions to the game. I learned how to create and use prefabs, then connected them to my reentry system so objects now explode once they get too hot. Seeing random objects burn up and explode while falling toward Earth makes the game feel much more fun than before. There are still plenty of improvements I want to make, like adding better visual effects and making the explosions even more cinematic, but having the whole reentry-to-explosion sequence working is a big milestone.Overall, today was a really productive day. I learned a lot about Unity’s visual effects tools while making the game look much more exciting, and I’m happy with how much progress I made."}, {"post_id": 23413, "ts": "2026-07-06T11:03:08Z", "hours": 1.2431, "text": "Today I worked on improving the reentry and visual effects system for my Unity project, focusing mainly on making the atmosphere interaction feel more cinematic and less “flat prototype.” I spent time testing how the particle system behaves during high-speed descent, especially around the point where the object hits the upper atmosphere. The initial version was too abrupt — the effect would briefly show particles and then disappear, which completely killed the sense of momentum and scale. I experimented with smoothing the transition using gradual intensity changes instead of instant triggers. I also adjusted local offsets and rotation values to better align the effect with the object’s trajectory, since some of the transforms were behaving inconsistently between the inspector and runtime. That took a bit of debugging because some values were being overridden or reset in unexpected ways. After that, I started exploring how to push the visuals further toward a “glowing plasma cone” look, with stronger edge concentration and a softer fade into the surrounding atmosphere. I also began looking into Visual Effect Graph as a possible upgrade path for more advanced GPU-driven effects. Overall, it was a day of fixing broken motion, improving visual flow, and pushing the system closer to something cinematic rather than purely functional."}, {"post_id": 22743, "ts": "2026-07-05T10:08:55Z", "hours": 1.7656, "text": "Today I worked on a space reentry style simulation and spent most of my time getting the gravity and camera systems feeling right. I set up the test object so it’s always pulled toward the planet and rotates to face it as it moves, which makes its motion feel more like it’s actually orbiting and falling through space instead of just drifting around. That part was pretty important because it sets the foundation for everything else. A big chunk of time went into the camera. I tried a bunch of different follow styles because at first it kept jittering, flipping, or ending up in weird positions where I couldn’t even see the planet properly. I went from a basic follow camera, to trying rotation copying, to LookAt setups, and eventually simplified it down to a system where the camera stays in a fixed position relative to the object and just rotates with it in a stable way. After a lot of trial and error (and a few broken camera moments), I ended up with a setup where the object behaves correctly under gravity and the camera stays locked in a consistent orbit view so the planet is always visible and the motion is readable. however i still have issues with the camera and the tetobject that ill b using for ll the objects thrown into the atmosphere so ill probbably fix that tomorrow"}, {"post_id": 21990, "ts": "2026-07-04T06:41:10Z", "hours": 1.9978, "text": "Today I worked on the reentry system for pantry reantry and fixed a bunch of annoying physics bugs, especially the crazy jittering when the ship got far from the origin. I separated the skybox movement from the actual physics so the visuals don’t break anymore at high altitude. Reentry feels way more stable now and doesn’t glitch out when you’re coming in fast. I also tested a few high-speed drops to make sure it doesn’t fall apart. Next up is adding heat damage and making reentry actually dangerous instead of just falling through the atmosphere. i put in a screenshot of the progress on the button and the earth not jittering, it is definitly starting to come together! stay tuned for the second devlog surely coming tomorrow i hope maybe"}]...
|
Title: PANTRY REANTRY by @mikhailnotfish | Stardan Title: PANTRY REANTRY by @mikhailnotfish | Stardance
Devlogs:
Today I worked on the reentry system for pantry reantry and fixed a bunch of annoying physics bugs, especially the crazy jittering when the ship got far from the origin. I separated the skybox movement from the actual physics so the visuals don’t break anymore at high altitude. Reentry feels way more stable now and doesn’t glitch out when you’re coming in fast. I also tested a few high-speed drops to make sure it doesn’t fall apart. Next up is adding heat damage and making reentry actually dangerous instead of just falling through the atmosphere. i put in a screenshot of the progress on the button and the earth not jittering, it is definitly starting to come together! stay tuned for the second devlog surely coming tomorrow i hope maybe
Today I worked on a space reentry style simulation and spent most of my time getting the gravity and camera systems feeling right. I set up the test object so it’s always pulled toward the planet and rotates to face it as it moves, which makes its motion feel more like it’s actually orbiting and falling through space instead of just drifting around. That part was pretty important because it sets the foundation for everything else. A big chunk of time went into the camera. I tried a bunch of different follow styles because at first it kept jittering, flipping, or ending up in weird positions where I couldn’t even see the planet properly. I went from a basic follow camera, to trying rotation copying, to LookAt setups, and eventually simplified it down to a system where the camera stays in a fixed position relative to the object and just rotates with it in a stable way. After a lot of trial and error (and a few broken camera moments), I ended up with a setup where the object behaves correctly under gravity and the camera stays locked in a consistent orbit view so the planet is always visible and the motion is readable. however i still have issues with the camera and the tetobject that ill b using for ll the objects thrown into the atmosphere so ill probbably fix that tomorrow
Today I worked on improving the reentry and visual effects system for my Unity project, focusing mainly on making the atmosphere interaction feel more cinematic and less “flat prototype.” I spent time testing how the particle system behaves during high-speed descent, especially around the point where the object hits the upper atmosphere. The initial version was too abrupt — the effect would briefly show particles and then disappear, which completely killed the sense of momentum and scale. I experimented with smoothing the transition using gradual intensity changes instead of instant triggers. I also adjusted local offsets and rotation values to better align the effect with the object’s trajectory, since some of the transforms were behaving inconsistently between the inspector and runtime. That took a bit of debugging because some values were being overridden or reset in unexpected ways. After that, I started exploring how to push the visuals further toward a “glowing plasma cone” look, with stronger edge concentration and a softer fade into the surrounding atmosphere. I also began looking into Visual Effect Graph as a possible upgrade path for more advanced GPU-driven effects. Overall, it was a day of fixing broken motion, improving visual flow, and pushing the system closer to something cinematic rather than purely functional.
Today was mostly about making reentry look and feel a lot cooler. I spent a good chunk of time learning Shader Graph and experimenting until I had a fire effect that looked much more like an object burning through the atmosphere. It took a lot of trial and error, and I had to fix several bugs along the way, but I eventually got everything working together.After that, I added explosions to the game. I learned how to create and use prefabs, then connected them to my reentry system so objects now explode once they get too hot. Seeing random objects burn up and explode while falling toward Earth makes the game feel much more fun than before. There are still plenty of improvements I want to make, like adding better visual effects and making the explosions even more cinematic, but having the whole reentry-to-explosion sequence working is a big milestone.Overall, today was a really productive day. I learned a lot about Unity’s visual effects tools while making the game look much more exciting, and I’m happy with how much progress I made.
so uhh today i continued my work from yesterday, making the reentry plasma, i realized there was no way in history i was gonna make a blender made modular physics based reentry plasma system and tried to make a plasma one normally, using a sphere. long story short, i failed, fell asleep and then gave up 🥀 hopefully ill be back at it later today, if not wait till tomorrow.
Today I worked on making the reentry system feel way more alive. I focused on getting the heat particles to actually interact with the objects instead of just floating around them. After a bit of experimenting with collisions, SDFs, and VFX Graph, I finally got particles reacting properly with the objects flying through the atmosphere.I also started setting up the systems needed for objects to have their own reentry effects. The goal is that every object falling from space can have its own heat trail that follows it, turns on when it hits the atmosphere, and disappears when it escapes or slows down.A big challenge was making everything follow moving objects correctly. Static effects are easy, but when you have something travelling at high speed, everything needs to stay perfectly synced. I worked on making the particle emitter follow the object and keeping the collision data aligned so the effects don’t lag behind.There is still more to improve, like making the heat intensity change based on speed and adding better visuals, but the foundation is now working. Seeing the particles actually wrap around and react to the objects makes the whole reentry experience feel much more realistic.
Today I worked on making the reentry experience. I focused on connecting all the systems together so the player can actually watch an object fall from space and survive (or not survive) the journey.I improved the VFX setup by making the reentry plasma and fire trail activate when the object enters the atmosphere. Instead of having the effects constantly running, they now wait until the object reaches the invisible atmosphere boundary, which makes the transition feel much more realistic.I also fixed the particle behaviour so the smoke and fire trail stays behind the object instead of moving with it. This made a huge difference because the trail now actually looks like something burning through the atmosphere.Another challenge was the camera system. The menu camera and gameplay camera were fighting each other because the follow script was constantly overriding the start button position. I fixed this by making the camera follow system activate only after pressing the start button, allowing the camera to transition into the gameplay view properly.There is still a lot to add, like better destruction effects, heat intensity based on speed, and more detailed atmosphere visuals, but the core reentry sequence is finally starting to come together.
Today I worked on improving the gameplay loop for Pantry Reantry and focused on making the launch, crash, and respawn systems work properly.I added a respawn button that appears after the object crashes, allowing the player to try again without restarting the game. I also worked on fixing the camera so it doesn’t randomly teleport during resets and stays attached to the player object when needed.A big part of today was debugging the VFX systems. The reentry plasma and fire trail were having issues where they would start at the wrong time or keep existing particles after respawning. I worked on making the atmosphere trigger control when the effects activate, instead of them starting automatically when the object launches.There are still a few small VFX issues to clean up, but the overall reentry loop is coming together. The object can now launch, enter the atmosphere, activate the heat effects, crash, and be reset for another attempt.The next steps are finishing the UI and adding things like altitude, speed, heat, and survival stats to make the reentry experience feel more like a real game.
Today I started working on making the reentry system more flexible by preparing the game for multiple objects instead of just the test cube.I experimented with the idea of making every object its own prefab, allowing things like fridges, pizzas, cars, and other random objects to be thrown into the atmosphere. The plan is to keep the same reentry system, but swap out the mesh, collider, and SDF data for each object so every item has its own way of interacting with the plasma and heat effects.I also looked into making the VFX system more reusable by using one main reentry plasma graph while giving each object its own settings, like different SDF collision shapes and different fire trail styles. This should make adding new objects much faster instead of rebuilding the entire system every time.A big focus today was thinking about the future structure of the game. Instead of one object being launched, the player will eventually be able to choose what they want to send into reentry and see if it survives.The project is starting to move from a physics test into an actual game with different challenges, objects, and replay value.
Today I started replacing the original cube with the first real object in the game: a fridge. Most of the work went into getting the Signed Distance Field (SDF) collider working correctly, since the reentry plasma effect relies on it to collide with the object’s surface instead of passing straight through it.I imported the fridge model, prepared it for Unity, and worked on baking a new SDF that matched its shape. Compared to the simple cube, this was a much better test because the fridge has more detailed geometry, making it a good way to see how well the plasma effect wraps around different objects during reentry.The long-term goal is for every object in the game to have its own mesh, collider, and SDF while still sharing the same reentry system. That means I can eventually swap between things like fridges, pizzas, cars, and other random objects without rebuilding all of the effects each time.Although most of today’s progress happened behind the scenes, it’s an important step toward turning the project into an actual game instead of a simple physics demo. Soon the player will be able to choose what object they want to throw into Earth’s atmosphere and see if it survives the trip.
this devlog is a mistake! i accidentally transferred 2 hours via lapse onto this project, instead of youtubeds i accedentally clicked this project. ive gone to help on slack, but the ABSOLUTE CLANKERS there said “there is no way to” like bro why did you reply then
i have decided, that becuse stardance has been extended, i am going to convert pantry reantry, to hdrp!! lit shaders look much better there, and the particles are gonna be volumetric. this game is going to look fabulous! for shipwright: i get whats happening now. how do i have 8 hours? i havent been on unity that much in the past 2 weeks! its because VScode tracks “ple0017’ SO WHENEVER I USE VSCODE, WHATEVER IT MAY BE IM DOING, IT TRACKS HERE. if fraud squad is seeing this you may remove some of these hours, i wasnt vscoding for unity the whole time!!!
ive been working for a while!! so, for the past 2 and a half hours, i have as promised converted the entire project to HDRP, because stock unity looks horrible. i have made a few desicions, including removing the planet entirely and just spawning a blue circle with c#, and removing the particle systems nd swapping them out for PLASMA MESHES! i have made a quick UI using c# here is a image (theres a burning up bean shelf)
pantryReeantry IS FINISHED!!! i have added a settings menu, becuse youre gonna have to download the game, i did some work on github stuff and i uploaded it to itch.io. this has really been a great journy and this MAY be my last project on stardance, because it is ending in about 2 weeks. i hope you like the project! here is a gameplay image of a piano burning up.
Ships:
THIS is pantry reentry. a game where you throw houshold objects, into the atmosphere. it includes: 8 different objects UNITY HDRP shaders plasma meshes, instead of particles. offline play portability (downloadable .exe) please leave me a good rating, i hope you enjoy the game!...
|
1793051515.7532659
|
1793137915.7532659
|
|
69596
|
Aakriti Portfolio by @Ankit_7 | Stardance
|
Ankit_7
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T07:26:53Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have make a Portfolio webpage for a content creator of Nepal. I face a bug and in order to fix that it look me some time. I am proud that , I have been able to make this website , debug the errors. To test this I have provided you a link of webpage/demo url . Just click on the url and you will be able to see the webpage. Or simply paste this url : https://ankit-dev-7.github.io/Aakriti_Portfolio/", "repo": "https://github.com/Ankit-dev-7/Aakriti_Portfolio", "demo": "https://ankit-dev-7.github.io/Aakriti_Portfolio/"}]...
|
[{"post_id": 79727, "ts": "202 [{"post_id": 79727, "ts": "2026-10-15T07:18:14Z", "hours": 6.3222, "text": "A Portfolio for a content creator of Nepal"}]...
|
Title: Aakriti Portfolio by @Ankit_7 | Stardance
Title: Aakriti Portfolio by @Ankit_7 | Stardance
Devlogs:
A Portfolio for a content creator of Nepal
Ships:
I have make a Portfolio webpage for a content creator of Nepal. I face a bug and in order to fix that it look me some time. I am proud that , I have been able to make this website , debug the errors. To test this I have provided you a link of webpage/demo url . Just click on the url and you will be able to see the webpage. Or simply paste this url : https://ankit-dev-7.github.io/Aakriti_Portfolio/...
|
1793008282.1911
|
1793094682.1911
|
|
69791
|
https://prepos4.netlify.app/ by @princepatel | Sta https://prepos4.netlify.app/ by @princepatel | Stardance...
|
princepatel
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-17T15:16:15Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Prep OS, an AI-powered study workspace and syllabus tracker designed specifically for Class 12th science and competitive exam preparation across Physics, Chemistry, and Mathematics. To solve the problem of ineffective revision, I built an Error Log AI System that uses the Google Gemini API to analyze mock test mistakes, categorize error types (conceptual, calculation, or misreading), and generate targeted practice tasks. I also created an AI Schedule Maker that calculates remaining syllabus requirements and generates personalized, time-blocked daily timetables using active recall and spaced repetition. The biggest challenge was structuring Gemini API prompts to parse speech/text mistake inputs into clean JSON outputs and managing automated deployments on Render via GitHub. I am proud of creating a comprehensive tool that turns test mistakes into actionable study plans. Anyone testing the live site on Render can update chapter completion bars, log recent test mistakes into the Error Log AI to receive automated revision strategies, and run the AI Schedule Maker to generate a personalized timetable. What was challenging? Integrating the Google Gemini API to reliably power both the Error Log analysis and dynamic schedule generation was challenging. It required crafting precise prompt structures to convert speech/text inputs into actionable study insights, as well as managing deployment on Render with seamless GitHub backend integration. What are you proud of? I am proud of building a unified study workspace that goes beyond basic progress bars. Combining automated mistake analysis with smart timetable generation creates a practical, high-value tool that directly optimizes real-world exam prep workflows. What should people know so they can test your project? Users can visit the deployed app on Render to test all core modules: track subject/chapter progress, input recent test errors into the Error Log AI for targeted review suggestions, and use the AI Schedule Maker to generate a personalized daily study routine.", "repo": "https://github.com/prince12xo/nasa", "demo": "https://prepos4.netlify.app/"}]...
|
[{"post_id": 79728, "ts": "202 [{"post_id": 79728, "ts": "2026-10-15T07:20:37Z", "hours": 0.4303, "text": "“A mission-critical web OS engineered with dynamic syllabus tracking, countdown telemetry, focus tools, and client-side AI diagnostics for astronaut cadets and STEM aspirants.”"}]...
|
Title: https://prepos4.netlify.app/ by @princepate Title: https://prepos4.netlify.app/ by @princepatel | Stardance
Devlogs:
“A mission-critical web OS engineered with dynamic syllabus tracking, countdown telemetry, focus tools, and client-side AI diagnostics for astronaut cadets and STEM aspirants.”
Ships:
I built Prep OS, an AI-powered study workspace and syllabus tracker designed specifically for Class 12th science and competitive exam preparation across Physics, Chemistry, and Mathematics. To solve the problem of ineffective revision, I built an Error Log AI System that uses the Google Gemini API to analyze mock test mistakes, categorize error types (conceptual, calculation, or misreading), and generate targeted practice tasks. I also created an AI Schedule Maker that calculates remaining syllabus requirements and generates personalized, time-blocked daily timetables using active recall and spaced repetition. The biggest challenge was structuring Gemini API prompts to parse speech/text mistake inputs into clean JSON outputs and managing automated deployments on Render via GitHub. I am proud of creating a comprehensive tool that turns test mistakes into actionable study plans. Anyone testing the live site on Render can update chapter completion bars, log recent test mistakes into the Error Log AI to receive automated revision strategies, and run the AI Schedule Maker to generate a personalized timetable. What was challenging? Integrating the Google Gemini API to reliably power both the Error Log analysis and dynamic schedule generation was challenging. It required crafting precise prompt structures to convert speech/text inputs into actionable study insights, as well as managing deployment on Render with seamless GitHub backend integration. What are you proud of? I am proud of building a unified study workspace that goes beyond basic progress bars. Combining automated mistake analysis with smart timetable generation creates a practical, high-value tool that directly optimizes real-world exam prep workflows. What should people know so they can test your project? Users can visit the deployed app on Render to test all core modules: track subject/chapter progress, input recent test errors into the Error Log AI for targeted review suggestions, and use the AI Schedule Maker to generate a personalized daily study routine....
|
1793008356.76098
|
1793094756.76098
|
|
17291
|
an EPIC Light Sail Simulation by @SpaceEvee | Star an EPIC Light Sail Simulation by @SpaceEvee | Stardance...
|
SpaceEvee
|
1
|
49.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T08:42:06Z", "hours": 49.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is the first ship of an interstellar light sail simulation for a research paper I am working on. The simulation models an idealised Gaussian laser beam with a fixed nominal propagation direction along +Z. The beam settings include peak intensity (I_0), waist (w_0), wavelength (\\lambda), and lateral beam-centre offsets. The sail model estimates radiation-pressure force and torque over the discretised surface, then advances translational and rotational state. The workbench records time histories so configurations can be inspected and compared. A local radiative-equilibrium calculation estimates surface temperature from absorbed illumination and the configured emissivity. Few Notes: The simulation is not very optimised so it may take some time to function on lower end PCs I have added a video performing some functions of the software in the github ReadMe. (As in the ship of my last project, many people told me to have a video as they didn’t want to download the package itself.) If there the runner throws an exception or error pop up at the end, i.e. after running the program, the data can still be accessed (plots, .json, .csv, etc.)", "repo": "https://github.com/Evyvaan-Space-Lover/Nyx", "demo": "https://github.com/Evyvaan-Space-Lover/Nyx/releases/tag/v1.0"}]...
|
[{"post_id": 79732, "ts": "202 [{"post_id": 79732, "ts": "2026-10-15T07:54:51Z", "hours": 0.3886, "text": "Mini Devlog :yoooo-chat-whats-up–are-yall-ready-for-another-weekly-journal–i-hope-so-kitty-dance-mb-sorry-for-b: I completed the parameter sweep and it works (still pretty glitchy tho) and added a 3d visualisation section to the program (prolly the most visually appealing thing ) GONNA SHIP NOW YAY"}, {"post_id": 79555, "ts": "2026-10-14T16:10:53Z", "hours": 9.5667, "text": "NYX DEVLOG MUHEHEHEHHE (NO IDEA BOUT THE INDEX) sorry for being dead for so long. i was busy with irl stuff The Simulator is ALMOST done yay I made the GUI for yall (the program is not user friendly ) and now the simulated data can FINALLY be saved into .json and .csv and some boring physics shit heres the run down: Physics World frame inertia calculation. i CORRECTED THE INERTIA TENSOR TRANSFORMATION so that angular momentum and rotational dynamics use the inertia tensor in the world frame Rotational Dynamics used the rigid body rotational equation normalised the intermediate RK4 orientation states (so yeah lots of attitude control yk) paraboloid COM and hemisphere COM were straight wrong as i found out so they are fixed now respectively GUI added a workbench/gui for the whole program (I HATE this) and in the repo i added the Read Me after two gazillion years ill say Nyx (the simulator) is done and i can ship it FINALLY after so long and start working on the paper FINALLY. btw the BEANS SHALL PREVAIL some things the 3d geometry visualization doesnt work with the gui stack so ill have to fix that and the parameter sweep doesnt work any bit. these things ill have to do before the first ship and besides ill say the same is pretty good and completed"}, {"post_id": 59110, "ts": "2026-08-31T18:55:55Z", "hours": 7.2819, "text": "DEVLOG 6 (and seven soon) Its been soooooooooooooooo long since my last devlog. I had my exams and well I couldn’t much and didn’t write my devlog last time. Oh you don’t know what Nyx? It is a light sail simulation I am working on for a paper I am writing (btw there are emojis now so cool stuff got added when I was gone) NEW ADDITIONS: Introduce a materials package (Material dataclass + presets: Graphene, Aluminium, SiliconCarbide) and an analysis package with plotting helpers and an Experiment helper. Update SimMain to accept a material for each sail type, pull reflectivity/absorptivity from the material, and record max/average temperature history. Fix numeric/geometry issues: correct sphere inertia, improve normal/rotation math for sphere and paraboloid, and ensure positions use rotated local coordinates. Add multiple debug/test scripts and enable analysis plotting at the end of simLoop to visualize force, position, velocity, acceleration, angular velocity and temperature histories. I did NOT copy-paste the commit here trust. If you think I did, you're wrong Well, thats it for now, Ill put more effort in the next devlog See YALL soon (no one cares, but I care )"}, {"post_id": 28180, "ts": "2026-07-14T09:47:43Z", "hours": 8.4836, "text": "DEVLOG - smth im bad at remembering numbers and its been sometime too WHATS UP LOVELY PEOPLE Another Nyx devlog it is! You dont know what Nyx is? Its my light sail simulation for a paper im working on! I did some code refining and yeah lots of boring stuff. Used the Stefan–Boltzmann equilibrium approximation to estimate local surface temperature. Added a temperature mapping system based on absorbed laser intensity (Absolutely obsolete btw ): ) Fixed the paraboloid sign issue so it curved in the intended direction. -Also tried using other libraries for rendering, but MatPlotLib is the best option right now other miscellaneous stuff I cant remember honestly (Next devlog will be more detailed trust)"}, {"post_id": 16406, "ts": "2026-06-26T18:05:21Z", "hours": 12.8053, "text": "Devlog - 4 YO PEOPLE, i am BACK (ts so cringe. literally nobody cares). This devlog is about how almost lost my minds migrating my simulation’s rotation calculations into Quaternions , integrating RK4 and as always solving bugs, because Nyx is filled with bugs (Oh, you dont know what Nyx is? well it is my passive beam riding light sail simulation, for a research paper im working on) Euler Angles Started Tweaking Ok so before this, Nyx used normal Euler angle rotations using thetaX and thetaY for orientation. At first it worked fine, but after longer simulations stuff started tweaking hard The sphere and paraboloid would randomly start flattening into weird pancake/disc things (which i lowkey think might be cuz matplotlib library hates me idk) , rotations started looking cursed, and the orientation slowly became unstable over time. At first I thought matplotlib was just being goofy again, but nah, the actual orientation system itself was kinda cooked (most likely) . The problem was that Euler angles are not really built for stable continuous 3D rotational dynamics. Rotations started interfering with each other and the geometry would slowly drift into nonphysical states during longer simulations.Basically Nyx had reached the point where the old orientation system just wasn’t enough anymore :(. Quaternion Migration (The Pain of ’26 ) So yeah, this devlog was basically the “quaternion suffering” update I replaced the entire orientation system with quaternions. Instead of storing orientation as separate thetaX and thetaY values, Nyx now stores orientation as a quaternion state directly integrated through RK4.This was honestly one of the biggest upgrades to the simulator so far because now orientation itself is physically simulated instead of just being fake angle accumulation and stuff. The migration was WAY more painful than expected At first literally everything exploded: infinitiesNaNsbroken, normals-cursed, and sphere geometry intensity overflows. At one point the simulator straight up started generating inf values and the sphere looked like it got compressed by a hydraulic press .The biggest issue ended up being invalid normal vectors inside the sphere mesh generation. A single broken normal could completely destroy the intensity calculations and then infect the entire simulation state with NaNs.After fixing all that, Nyx now has stable quaternion orientation. quaternion vector rotation, quaternion RK4 integration, much more stable rotational dynamics, no more gimbal-lock-type weird ahh stuff . This was really hard for me to add lol now what ? so thats what took more than 10 hours. I think my boi Nyx is doing pretty good and will help me in great magnitude for my research paper. For now at least, i wanna make a sort of UI and replace ‘matplotlib’ with smth better cuz’ I am lowkey fed up. I would also like to add a feature of mass data collection, so that there is much data to study. – that’s it for me today, I hope YOU have a great day! (BTW, i have no idea why the markdown on this devlog is so weird, i can not seem to fix it lowkey)"}, {"post_id": 13176, "ts": "2026-06-21T15:45:41Z", "hours": 4.1456, "text": "Devlog 3 - NYX HAS FRIED MY BRAN btw, if you havent seen my older devlogs, you are legally obligated to do so, and if not done, the police shall come for you so, after my last devlog, added a new sail geometry, fixed A LOT OF BUGS and made the code efficient (not really) and improved the physics calculation, to a more complex force calculation engine (its not an engine, idk why i said that). also, i realized paraboloids are pretty niffty as with some dingle dangle, we can have a circular sail without even making a new class! Features i added Paraboloid geometry, cleaned up the radiation pressure code, quivers for visualization and better force equation. the force equation is now F = fmag * (2*cosTheta*normal - beamDih) (this is embarrassing, but in my code, the beam direction variable is beamDih ) Whats Next? wanna improve the visualization local force vector rendering time evolution moving sail oscillation simulation ability to upload a .obj file as a sail (The image below is when i broke the code. i accidentally wrote =+ instead of += )"}, {"post_id": 10036, "ts": "2026-06-16T16:26:48Z", "hours": 3.6364, "text": "Nyx Devlog #2: The Curved Sail Arc Status: Nyx V2 Complete Mood: Sleep-deprived aerospace engineer Bug Count: We don’t talk about the 90° bug. So… what happened? This dev cycle started with a simple goal: “Let’s add some tilt to the sails.” Several hours later, we somehow ended up with a computational beam-riding lightsail simulator. Oops. Gaussian Beams Are Cool Nyx uses a Gaussian beam to model the laser intensity distribution. def gaussian(r): return I0 * np.exp(-2 * r 2 / w0 2) Basically: The beam is strongest at the center. The farther away you go, the weaker it gets. Nature decided lasers should have exponential decay because apparently linear wasn’t dramatic enough. Tilting the Sails The sails can now rotate about the X and Y axes. def rotateX(vector, angle): x, y, z = vector return np.array([ x, y*np.cos(angle) - z*np.sin(angle), y*np.sin(angle) + z*np.cos(angle) ]) def rotateY(vector, angle): x, y, z = vector return np.array([ x*np.cos(angle) + z*np.sin(angle), y, -x*np.sin(angle) + z*np.cos(angle) ]) This worked surprisingly well. Unlike the visualization. Introducing: The Hemisphere™ Rectangle sails were getting lonely. So Nyx gained a new geometry: class SphereLightSail(): (Yes, it’s technically a hemisphere. Naming things is hard.) The hemisphere is discretized into tiny patches that each experience radiation pressure from the laser beam. Science! Radiation Pressure Time Every tiny patch gets hit by photons. The force magnitude is calculated using: fmag = (2 * I / c) * (cosTheta**2) * dA where: I is beam intensity, c is the speed of light, cosTheta accounts for sail orientation, dA is the patch area. Translation: Tiny packets of light aggressively boop the sail. Torque Has Entered The Chat Turns out forces acting away from the center like to cause problems. tau = np.cross(position, F) Nyx now computes total torque acting on the sail. This means we can begin asking questions like: Which geometries are stable? instead of: Why is Matplotlib gaslighting me? Visualization! Nyx can now visualize sail geometries using 3D plots. scatter = ax.scatter( self.xPoints, self.yPoints, self.zPoints, c=self.intensities, cmap=‘plasma’, s=30 ) With a colorbar: fig.colorbar( scatter, ax=ax, label=‘Beam Intensity (W/m^2)’ ) And even a force vector: ax.quiver( 0, 0, 0, Force[0], Force[1], Force[2], color=‘red’, length=2, normalize=True ) It looks surprisingly professional. Until you rotate it to 90°. The Great 90° Incident At one point, Nyx decided that rotating things by 90° was optional. Several debugging sessions later: “It’s probably fine.” Nyx is now operating under the internationally recognized engineering principle of: If the physics works, Future Me can fix the plotting (ik guys, ELITE mindset). What Nyx V2 Can Do Nyx V2 ├── Gaussian beam model ✓ ├── Rectangle sail geometry ✓ ├── Hemisphere sail geometry ✓ ├── Sail tilting ✓ ├── Radiation pressure forces ✓ ├── Torque calculations ✓ ├── Intensity heatmaps ✓ └── Force vector visualization ✓ What’s Next? We’re moving beyond random shapes. Future geometries need to answer one question: Could someone actually use this as a lightsail? Possible candidates: □ Paraboloids □ Hyperboloids □ Other beam-riding geometries from literature Party hats are currently under review. Final Thoughts Nyx V2 was the phase where the project stopped feeling like a collection of scripts and started feeling like an actual research tool. Also, I now know far more about Matplotlib’s quirks than any human"}, {"post_id": 7524, "ts": "2026-06-12T15:48:47Z", "hours": 2.8322, "text": "#Devlog 001 — The Beginning of Nyx (I call the light sails Nyx, because why not) Started building the computational simulator for my project on passive beam-riding stability of interstellar lightsails. What I implemented: -A Gaussian laser beam model to simulate how beam intensity changes from the center outward. -A rectangular lightsail simulator divided into tiny surface patches. -Calculations for net force and net torque acting on the sail. -Support for changing the sail’s position relative to the beam. -Support for x-axis and y-axis tilts, allowing the sail to change orientation. -Validation tests showing that centered sails produce near-zero torque and that results converge with increasing resolution. -The beginnings of a 3D geometry engine, including a hemispherical lightsail generator using spherical coordinates. -3D visualization of the hemispherical sail to verify that the geometry was generated correctly. (Am currently working on the the force and torque calculation for the spherical sails) (The test cases are for tilted says, the first one is not tilted at all and the last one is tilted 90 degrees)"}]...
|
Title: an EPIC Light Sail Simulation by @SpaceEvee Title: an EPIC Light Sail Simulation by @SpaceEvee | Stardance
Devlogs:
#Devlog 001 — The Beginning of Nyx (I call the light sails Nyx, because why not) Started building the computational simulator for my project on passive beam-riding stability of interstellar lightsails. What I implemented: -A Gaussian laser beam model to simulate how beam intensity changes from the center outward. -A rectangular lightsail simulator divided into tiny surface patches. -Calculations for net force and net torque acting on the sail. -Support for changing the sail’s position relative to the beam. -Support for x-axis and y-axis tilts, allowing the sail to change orientation. -Validation tests showing that centered sails produce near-zero torque and that results converge with increasing resolution. -The beginnings of a 3D geometry engine, including a hemispherical lightsail generator using spherical coordinates. -3D visualization of the hemispherical sail to verify that the geometry was generated correctly. (Am currently working on the the force and torque calculation for the spherical sails) (The test cases are for tilted says, the first one is not tilted at all and the last one is tilted 90 degrees)
Nyx Devlog #2: The Curved Sail Arc Status: Nyx V2 Complete Mood: Sleep-deprived aerospace engineer Bug Count: We don’t talk about the 90° bug. So… what happened? This dev cycle started with a simple goal: “Let’s add some tilt to the sails.” Several hours later, we somehow ended up with a computational beam-riding lightsail simulator. Oops. Gaussian Beams Are Cool Nyx uses a Gaussian beam to model the laser intensity distribution. def gaussian(r): return I0 * np.exp(-2 * r 2 / w0 2) Basically: The beam is strongest at the center. The farther away you go, the weaker it gets. Nature decided lasers should have exponential decay because apparently linear wasn’t dramatic enough. Tilting the Sails The sails can now rotate about the X and Y axes. def rotateX(vector, angle): x, y, z = vector return np.array([ x, y*np.cos(angle) - z*np.sin(angle), y*np.sin(angle) + z*np.cos(angle) ]) def rotateY(vector, angle): x, y, z = vector return np.array([ x*np.cos(angle) + z*np.sin(angle), y, -x*np.sin(angle) + z*np.cos(angle) ]) This worked surprisingly well. Unlike the visualization. Introducing: The Hemisphere™ Rectangle sails were getting lonely. So Nyx gained a new geometry: class SphereLightSail(): (Yes, it’s technically a hemisphere. Naming things is hard.) The hemisphere is discretized into tiny patches that each experience radiation pressure from the laser beam. Science! Radiation Pressure Time Every tiny patch gets hit by photons. The force magnitude is calculated using: fmag = (2 * I / c) * (cosTheta**2) * dA where: I is beam intensity, c is the speed of light, cosTheta accounts for sail orientation, dA is the patch area. Translation: Tiny packets of light aggressively boop the sail. Torque Has Entered The Chat Turns out forces acting away from the center like to cause problems. tau = np.cross(position, F) Nyx now computes total torque acting on the sail. This means we can begin asking questions like: Which geometries are stable? instead of: Why is Matplotlib gaslighting me? Visualization! Nyx can now visualize sail geometries using 3D plots. scatter = ax.scatter( self.xPoints, self.yPoints, self.zPoints, c=self.intensities, cmap=‘plasma’, s=30 ) With a colorbar: fig.colorbar( scatter, ax=ax, label=‘Beam Intensity (W/m^2)’ ) And even a force vector: ax.quiver( 0, 0, 0, Force[0], Force[1], Force[2], color=‘red’, length=2, normalize=True ) It looks surprisingly professional. Until you rotate it to 90°. The Great 90° Incident At one point, Nyx decided that rotating things by 90° was optional. Several debugging sessions later: “It’s probably fine.” Nyx is now operating under the internationally recognized engineering principle of: If the physics works, Future Me can fix the plotting (ik guys, ELITE mindset). What Nyx V2 Can Do Nyx V2 ├── Gaussian beam model ✓ ├── Rectangle sail geometry ✓ ├── Hemisphere sail geometry ✓ ├── Sail tilting ✓ ├── Radiation pressure forces ✓ ├── Torque calculations ✓ ├── Intensity heatmaps ✓ └── Force vector visualization ✓ What’s Next? We’re moving beyond random shapes. Future geometries need to answer one question: Could someone actually use this as a lightsail? Possible candidates: □ Paraboloids □ Hyperboloids □ Other beam-riding geometries from literature Party hats are currently under review. Final Thoughts Nyx V2 was the phase where the project stopped feeling like a collection of scripts and started feeling like an actual research tool. Also, I now know far more about Matplotlib’s quirks than any human
Devlog 3 - NYX HAS FRIED MY BRAN btw, if you havent seen my older devlogs, you are legally obligated to do so, and if not done, the police shall come for you so, after my last devlog, added a new sail geometry, fixed A LOT OF BUGS and made the code efficient (not really) and improved the physics calculation, to a more complex force calculation engine (its not an engine, idk why i said that). also, i realized paraboloids are pretty niffty as with some dingle dangle, we can have a circular sail without even making a new class! Features i added Paraboloid geometry, cleaned up the radiation pressure code, quivers for visualization and better force equation. the force equation is now F = fmag * (2*cosTheta*normal - beamDih) (this is embarrassing, but in my code, the beam direction variable is beamDih ) Whats Next? wanna improve the visualization local force vector rendering time evolution moving sail oscillation simulation ability to upload a .obj file as a sail (The image below is when i broke the code. i accidentally wrote =+ instead of += )
Devlog - 4 YO PEOPLE, i am BACK (ts so cringe. literally nobody cares). This devlog is about how almost lost my minds migrating my simulation’s rotation calculations into Quaternions , integrating RK4 and as always solving bugs, because Nyx is filled with bugs (Oh, you dont know what Nyx is? well it is my passive beam riding light sail simulation, for a research paper im working on) Euler Angles Started Tweaking Ok so before this, Nyx used normal Euler angle rotations using thetaX and thetaY for orientation. At first it worked fine, but after longer simulations stuff started tweaking hard The sphere and paraboloid would randomly start flattening into weird pancake/disc things (which i lowkey think might be cuz matplotlib library hates me idk) , rotations started looking cursed, and the orientation slowly became unstable over time. At first I thought matplotlib was just being goofy again, but nah, the actual orientation system itself was kinda cooked (most likely) . The problem was that Euler angles are not really built for stable continuous 3D rotational dynamics. Rotations started interfering with each other and the geometry would slowly drift into nonphysical states during longer simulations.Basically Nyx had reached the point where the old orientation system just wasn’t enough anymore :(. Quaternion Migration (The Pain of ’26 ) So yeah, this devlog was basically the “quaternion suffering” update I replaced the entire orientation system with quaternions. Instead of storing orientation as separate thetaX and thetaY values, Nyx now stores orientation as a quaternion state directly integrated through RK4.This was honestly one of the biggest upgrades to the simulator so far because now orientation itself is physically simulated instead of just being fake angle accumulation and stuff. The migration was WAY more painful than expected At first literally everything exploded: infinitiesNaNsbroken, normals-cursed, and sphere geometry intensity overflows. At one point the simulator straight up started generating inf values and the sphere looked like it got compressed by a hydraulic press .The biggest issue ended up being invalid normal vectors inside the sphere mesh generation. A single broken normal could completely destroy the intensity calculations and then infect the entire simulation state with NaNs.After fixing all that, Nyx now has stable quaternion orientation. quaternion vector rotation, quaternion RK4 integration, much more stable rotational dynamics, no more gimbal-lock-type weird ahh stuff . This was really hard for me to add lol now what ? so thats what took more than 10 hours. I think my boi Nyx is doing pretty good and will help me in great magnitude for my research paper. For now at least, i wanna make a sort of UI and replace ‘matplotlib’ with smth better cuz’ I am lowkey fed up. I would also like to add a feature of mass data collection, so that there is much data to study. – that’s it for me today, I hope YOU have a great day! (BTW, i have no idea why the markdown on this devlog is so weird, i can not seem to fix it lowkey)
DEVLOG - smth im bad at remembering numbers and its been sometime too WHATS UP LOVELY PEOPLE Another Nyx devlog it is! You dont know what Nyx is? Its my light sail simulation for a paper im working on! I did some code refining and yeah lots of boring stuff. Used the Stefan–Boltzmann equilibrium approximation to estimate local surface temperature. Added a temperature mapping system based on absorbed laser intensity (Absolutely obsolete btw ): ) Fixed the paraboloid sign issue so it curved in the intended direction. -Also tried using other libraries for rendering, but MatPlotLib is the best option right now other miscellaneous stuff I cant remember honestly (Next devlog will be more detailed trust)
DEVLOG 6 (and seven soon) Its been soooooooooooooooo long since my last devlog. I had my exams and well I couldn’t much and didn’t write my devlog last time. Oh you don’t know what Nyx? It is a light sail simulation I am working on for a paper I am writing (btw there are emojis now so cool stuff got added when I was gone) NEW ADDITIONS: Introduce a materials package (Material dataclass + presets: Graphene, Aluminium, SiliconCarbide) and an analysis package with plotting helpers and an Experiment helper. Update SimMain to accept a material for each sail type, pull reflectivity/absorptivity from the material, and record max/average temperature history. Fix numeric/geometry issues: correct sphere inertia, improve normal/rotation math for sphere and paraboloid, and ensure positions use rotated local coordinates. Add multiple debug/test scripts and enable analysis plotting at the end of simLoop to visualize force, position, velocity, acceleration, angular velocity and temperature histories. I did NOT copy-paste the commit here trust. If you think I did, you're wrong Well, thats it for now, Ill put more effort in the next devlog See YALL soon (no one cares, but I care )
NYX DEVLOG MUHEHEHEHHE (NO IDEA BOUT THE INDEX) sorry for being dead for so long. i was busy with irl stuff The Simulator is ALMOST done yay I made the GUI for yall (the program is not user friendly ) and now the simulated data can FINALLY be saved into .json and .csv and some boring physics shit heres the run down: Physics World frame inertia calculation. i CORRECTED THE INERTIA TENSOR TRANSFORMATION so that angular momentum and rotational dynamics use the inertia tensor in the world frame Rotational Dynamics used the rigid body rotational equation normalised the intermediate RK4 orientation states (so yeah lots of attitude control yk) paraboloid COM and hemisphere COM were straight wrong as i found out so they are fixed now respectively GUI added a workbench/gui for the whole program (I HATE this) and in the repo i added the Read Me after two gazillion years ill say Nyx (the simulator) is done and i can ship it FINALLY after so long and start working on the paper FINALLY. btw the BEANS SHALL PREVAIL some things the 3d geometry visualization doesnt work with the gui stack so ill have to fix that and the parameter sweep doesnt work any bit. these things ill have to do before the first ship and besides ill say the same is pretty good and completed
Mini Devlog :yoooo-chat-whats-up–are-yall-ready-for-another-weekly-journal–i-hope-so-kitty-dance-mb-sorry-for-b: I completed the parameter sweep and it works (still pretty glitchy tho) and added a 3d visualisation section to the program (prolly the most visually appealing thing ) GONNA SHIP NOW YAY
Ships:
This is the first ship of an interstellar light sail simulation for a research paper I am working on. The simulation models an idealised Gaussian laser beam with a fixed nominal propagation direction along +Z. The beam settings include peak intensity (I_0), waist (w_0), wavelength (\lambda), and lateral beam-centre offsets. The sail model estimates radiation-pressure force and torque over the discretised surface, then advances translational and rotational state. The workbench records time histories so configurations can be inspected and compared. A local radiative-equilibrium calculation estimates surface temperature from absorbed illumination and the configured emissivity. Few Notes: The simulation is not very optimised so it may take some time to function on lower end PCs I have added a video performing some functions of the software in the github ReadMe. (As in the ship of my last project, many people told me to have a video as they didn’t want to download the package itself.) If there the runner throws an exception or error pop up at the end, i.e. after running the program, the data can still be accessed (plots, .json, .csv, etc.)...
|
1793051272.8738303
|
1793137672.8738303
|
|
69527
|
firstos by @Aarjav_3 | Stardance
|
Aarjav_3
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T08:14:47Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a web os (definitely no looking like tht) but i made it my self i knew preety much of html/css but was very new to js so i faced many problems in it and i used ai to rectify errors. it was very fun", "repo": "https://github.com/aarjavjain-in/firstos", "demo": "https://aarjavjain-in.github.io/firstos/"}]...
|
[{"post_id": 79734, "ts": "202 [{"post_id": 79734, "ts": "2026-10-15T08:01:57Z", "hours": 0.4275, "text": "added a live wallpaper in loop"}, {"post_id": 79512, "ts": "2026-10-14T11:58:40Z", "hours": 0.9592, "text": "created 3 draggable/movable windows with js"}, {"post_id": 79360, "ts": "2026-10-13T17:07:10Z", "hours": 0.3933, "text": "added current date and time"}, {"post_id": 79352, "ts": "2026-10-13T16:33:55Z", "hours": 0.5717, "text": "Im workin on a web ob umm i know its very basic but ill definetly improve with time"}]...
|
Title: firstos by @Aarjav_3 | Stardance
Devlogs:
Title: firstos by @Aarjav_3 | Stardance
Devlogs:
Im workin on a web ob umm i know its very basic but ill definetly improve with time
added current date and time
created 3 draggable/movable windows with js
added a live wallpaper in loop
Ships:
i made a web os (definitely no looking like tht) but i made it my self i knew preety much of html/css but was very new to js so i faced many problems in it and i used ai to rectify errors. it was very fun...
|
1793008241.2356467
|
1793094641.2356467
|
|
69802
|
MOSFET ALU by @purpletue | Stardance
|
purpletue
|
0
|
0.5
|
0
|
[]
|
[{"post_id": 79737, "ts": "202 [{"post_id": 79737, "ts": "2026-10-15T08:15:20Z", "hours": 0.5, "text": "Just finished the main board for the ALU. 2 sets of 5 bits of input, 5 bits + carry bit for output. it’s modular, so each operation has to be plugged into the header on the right."}]...
|
Title: MOSFET ALU by @purpletue | Stardance
Devlo Title: MOSFET ALU by @purpletue | Stardance
Devlogs:
Just finished the main board for the ALU. 2 sets of 5 bits of input, 5 bits + carry bit for output. it’s modular, so each operation has to be plugged into the header on the right....
|
1792860470.6352286
|
1793465270.6352286
|
|
69348
|
Reminder by @myselfgaurav99 | Stardance
|
myselfgaurav99
|
0
|
6.47
|
0
|
[]
|
[{"post_id": 79744, "ts": "202 [{"post_id": 79744, "ts": "2026-10-15T08:33:51Z", "hours": 6.4689, "text": "Hey everyone! 👋I’ve been working on a project called Reminder, which is a Chrome extension I made to help people remember their tasks and not forget important things. The idea behind this project is pretty simple. Sometimes we forget things we need to do, whether it’s studying, completing homework, taking a break, or doing something important. So I wanted to make something that could help with that. With Reminder, you can set reminders for different tasks and get notifications when it’s time. It also has options to snooze or dismiss reminders, recurring reminders so you don’t have to set the same thing again and again, and a dark mode for people who prefer it. The extension also stores data locally.I wanted to keep it simple and easy to use instead of making something complicated with too many features.I’m still working on improving it, fixing things, and making the experience better. This is one of my projects that I’m happy to share, and I’d love to hear what people think about it."}]...
|
Title: Reminder by @myselfgaurav99 | Stardance
De Title: Reminder by @myselfgaurav99 | Stardance
Devlogs:
Hey everyone! 👋I’ve been working on a project called Reminder, which is a Chrome extension I made to help people remember their tasks and not forget important things. The idea behind this project is pretty simple. Sometimes we forget things we need to do, whether it’s studying, completing homework, taking a break, or doing something important. So I wanted to make something that could help with that. With Reminder, you can set reminders for different tasks and get notifications when it’s time. It also has options to snooze or dismiss reminders, recurring reminders so you don’t have to set the same thing again and again, and a dark mode for people who prefer it. The extension also stores data locally.I wanted to keep it simple and easy to use instead of making something complicated with too many features.I’m still working on improving it, fixing things, and making the experience better. This is one of my projects that I’m happy to share, and I’d love to hear what people think about it....
|
1793130916.8650794
|
1793735716.8650794
|
|
65201
|
My personal site!!! by @marina | Stardance
|
marina
|
0
|
4.91
|
0
|
[]
|
[{"post_id": 79752, "ts": "202 [{"post_id": 79752, "ts": "2026-10-15T08:47:37Z", "hours": 0.4778, "text": "added a back to top button as well as outlines"}, {"post_id": 74413, "ts": "2026-09-27T10:37:27Z", "hours": 0.3433, "text": "added an achievements section and style for it!!"}, {"post_id": 73733, "ts": "2026-09-25T20:11:46Z", "hours": 0.5872, "text": "added animations for project cards!!"}, {"post_id": 73087, "ts": "2026-09-24T11:04:53Z", "hours": 0.6136, "text": "i added the vrm for project mari and the animations for it to projects section!!"}, {"post_id": 73055, "ts": "2026-09-24T08:59:53Z", "hours": 0.9275, "text": "i addedd project cards a grid layout neww background and brand new info about me!!"}, {"post_id": 72839, "ts": "2026-09-23T20:57:00Z", "hours": 0.5494, "text": "i added more to my about section anddd fixed the cursor to remove the white background on it!!!!"}, {"post_id": 72824, "ts": "2026-09-23T20:13:15Z", "hours": 1.4133, "text": "began to create my personal site! today i added a leaf animation a stardance star icon andddd a about me and projects section aswell as a pumpkin cursor!"}]...
|
Title: My personal site!!! by @marina | Stardance
Title: My personal site!!! by @marina | Stardance
Devlogs:
began to create my personal site! today i added a leaf animation a stardance star icon andddd a about me and projects section aswell as a pumpkin cursor!
i added more to my about section anddd fixed the cursor to remove the white background on it!!!!
i addedd project cards a grid layout neww background and brand new info about me!!
i added the vrm for project mari and the animations for it to projects section!!
added animations for project cards!!
added an achievements section and style for it!!
added a back to top button as well as outlines...
|
1793084085.4425566
|
1793688885.4425566
|
|
63489
|
purrrfectday by @samarnova1 | Stardance
|
samarnova1
|
0
|
10.26
|
0
|
[]
|
[{"post_id": 79753, "ts": "202 [{"post_id": 79753, "ts": "2026-10-15T08:51:42Z", "hours": 4.2717, "text": "fixed the background, it was so zoomed out before it was annoying and was kept on scroll so i had to make changes on how do i make the background coded components adjusted and revised alot of stuff. tried adding moving crabs but maintaining them became nearly impossible many logic errors.. gotta work on it some more. the background beach drop is basically horizontal and it wont fit the screen so i ended up having the background same color as the sand so even if scrolled ALL the contents wud show"}, {"post_id": 75747, "ts": "2026-09-30T22:58:27Z", "hours": 0.2667, "text": "have a look and be delighted"}, {"post_id": 75731, "ts": "2026-09-30T21:37:59Z", "hours": 1.5056, "text": "the QnA pg ! i think i should add more interesting questions.>~< wait till u see the night theme of this pg"}, {"post_id": 72894, "ts": "2026-09-23T23:41:20Z", "hours": 1.4239, "text": "the night theme! tbh this is so satisfying cz its animated >o< havin to watch the night clouds gradually move across the screen under the twilight or shud i say moonlight. And the text and everything just existing under the moonlit sky. OH and did i mention there are sound effects! here u can hear crickets as you scrolldown to reveal more of the fun theme >o<"}, {"post_id": 72285, "ts": "2026-09-22T16:15:53Z", "hours": 0.2667, "text": "THE DAY THEME !! OMG! its soo goood"}, {"post_id": 72242, "ts": "2026-09-22T14:57:00Z", "hours": 0.2575, "text": "this is just a timelapse of how the the first part of the website turned out! https://lapse.hackclub.com/timelapse/6_sIP8E7TCH3"}, {"post_id": 70238, "ts": "2026-09-18T19:29:29Z", "hours": 2.2678, "text": "Soo this is smth i sat with friends and made, we chatted mean while i coded something basic as a begginer"}]...
|
Title: purrrfectday by @samarnova1 | Stardance
De Title: purrrfectday by @samarnova1 | Stardance
Devlogs:
Soo this is smth i sat with friends and made, we chatted mean while i coded something basic as a begginer
this is just a timelapse of how the the first part of the website turned out! https://lapse.hackclub.com/timelapse/6_sIP8E7TCH3
THE DAY THEME !! OMG! its soo goood
the night theme! tbh this is so satisfying cz its animated >o< havin to watch the night clouds gradually move across the screen under the twilight or shud i say moonlight. And the text and everything just existing under the moonlit sky. OH and did i mention there are sound effects! here u can hear crickets as you scrolldown to reveal more of the fun theme >o<
the QnA pg ! i think i should add more interesting questions.>~< wait till u see the night theme of this pg
have a look and be delighted
fixed the background, it was so zoomed out before it was annoying and was kept on scroll so i had to make changes on how do i make the background coded components adjusted and revised alot of stuff. tried adding moving crabs but maintaining them became nearly impossible many logic errors.. gotta work on it some more. the background beach drop is basically horizontal and it wont fit the screen so i ended up having the background same color as the sand so even if scrolled ALL the contents wud show...
|
1793051496.2320483
|
1793656296.2320483
|
|
59361
|
project mari by @marina | Stardance
|
marina
|
1
|
25.74
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T08:38:13Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Marina, an anime character who lives on your Mac desktop in a transparent window. You talk to her or type, and she answers in her own voice, lip syncs, and acts out what she writes. She starts speaking before she’s finished thinking, you can interrupt her by talking over her, and sometimes she starts the conversation. Everything except the language model runs locally on an 8 GB MacBook Air. It’s built on rayenfeng/riko_project, which had a voice pipeline but no avatar. the hard part was fitting it all into 8 GB of RAM, which is why the language model runs on a separate GPU server. Making her feel responsive was the hardest part. Streaming replies a sentence at a time meant making sure she never split a stage direction or a number like 3.5 in half. Letting you interrupt her was tricky too, because her own voice goes back into the mic. The quickest way to see her is https://skep13.github.io/marina/ where you can type to her in the browser. Replies there are recorded lines in her real voice. The app only runs on a Mac. Keep the folder at ~/marina, not in Desktop or Documents, or it will hang. Run ./setup-mac.sh first. Bring your own .vrm avatar and put it at app/models/model.vrm. For the model, install Ollama, run ollama pull llama3.2:3b and set base_url to http://127.0.0.1:11434/v1 in the config. Hover over her to see the buttons.", "repo": "https://github.com/skep13/marina/releases/download/v1.0.0/Marina-1.0.0-arm64.dmg", "demo": "https://skep13.github.io/marina/"}]...
|
[{"post_id": 79756, "ts": "202 [{"post_id": 79756, "ts": "2026-10-15T08:57:34Z", "hours": 0.8908, "text": "repackaged as a .app and added her to my personal site!!"}, {"post_id": 72136, "ts": "2026-09-22T09:01:35Z", "hours": 3.56, "text": "Added this to a portable .app image now, the python is now a bundle and works out of the box with options to edit for a custom config"}, {"post_id": 68073, "ts": "2026-09-14T13:59:47Z", "hours": 3.5517, "text": "completly rewrote server.py to remove old ai code setup that was used to ensure the gpu passthrough would work"}, {"post_id": 67961, "ts": "2026-09-14T09:07:55Z", "hours": 1.7833, "text": "Today i removed old code that i used ai to assist with in the beginning the majority of it is now hand written along with using code from the riko project made by JustRayen, the main part made by ai is the gpu passthrough on my server as both vulkan and the other fix for amd cards wasnt working and i hadnt commited any of my new code on github to fix things like the memory bug and visual effects with the hair clipping into clothing"}, {"post_id": 66165, "ts": "2026-09-11T20:15:30Z", "hours": 1.9531, "text": "today i fixed the gpu passthrough for an amd gpu, it currently took a long time to respond when using vulkan it now responds a few seconds quicker after first prompt"}, {"post_id": 65272, "ts": "2026-09-10T08:36:20Z", "hours": 0.6164, "text": "Updated the try project page"}, {"post_id": 65252, "ts": "2026-09-10T07:52:39Z", "hours": 1.9619, "text": "i fixed the ability to interrupt it mid conversation to feel more realistic, she now speaks once every 25 minutes of not being interacted with, she can set timers, check battery and other similar stuff and finally she speaks before the prompt is finishing generating which feels more natural and reduces thinking time from 23s to 0.2s to first token."}, {"post_id": 64777, "ts": "2026-09-09T13:05:06Z", "hours": 0.4111, "text": "today i decided to combine both whisper and kokoro to have a more accurate voice model that i can run locally, i also added a new design inside of vroid studio that will be added later on :)"}, {"post_id": 64722, "ts": "2026-09-09T10:55:34Z", "hours": 1.3836, "text": "Fixed idle animations to be less snappy and more human like"}, {"post_id": 64659, "ts": "2026-09-09T07:24:23Z", "hours": 2.2275, "text": "This is a demo of marina introducing itself to, its own tiktok account there will be more updates shortly!"}, {"post_id": 64440, "ts": "2026-09-08T20:25:23Z", "hours": 3.6125, "text": "today i typed up, the requirements file to have all of this running, tommorow i will be setting up the api link to my server. As well as a selectable menu to choose local or api hosted AI"}, {"post_id": 63522, "ts": "2026-09-07T12:55:53Z", "hours": 3.5061, "text": "the ui for the app"}]...
|
Title: project mari by @marina | Stardance
Devlog Title: project mari by @marina | Stardance
Devlogs:
the ui for the app
today i typed up, the requirements file to have all of this running, tommorow i will be setting up the api link to my server. As well as a selectable menu to choose local or api hosted AI
This is a demo of marina introducing itself to, its own tiktok account there will be more updates shortly!
Fixed idle animations to be less snappy and more human like
today i decided to combine both whisper and kokoro to have a more accurate voice model that i can run locally, i also added a new design inside of vroid studio that will be added later on :)
i fixed the ability to interrupt it mid conversation to feel more realistic, she now speaks once every 25 minutes of not being interacted with, she can set timers, check battery and other similar stuff and finally she speaks before the prompt is finishing generating which feels more natural and reduces thinking time from 23s to 0.2s to first token.
Updated the try project page
today i fixed the gpu passthrough for an amd gpu, it currently took a long time to respond when using vulkan it now responds a few seconds quicker after first prompt
Today i removed old code that i used ai to assist with in the beginning the majority of it is now hand written along with using code from the riko project made by JustRayen, the main part made by ai is the gpu passthrough on my server as both vulkan and the other fix for amd cards wasnt working and i hadnt commited any of my new code on github to fix things like the memory bug and visual effects with the hair clipping into clothing
completly rewrote server.py to remove old ai code setup that was used to ensure the gpu passthrough would work
Added this to a portable .app image now, the python is now a bundle and works out of the box with options to edit for a custom config
repackaged as a .app and added her to my personal site!!
Ships:
I made Marina, an anime character who lives on your Mac desktop in a transparent window. You talk to her or type, and she answers in her own voice, lip syncs, and acts out what she writes. She starts speaking before she’s finished thinking, you can interrupt her by talking over her, and sometimes she starts the conversation. Everything except the language model runs locally on an 8 GB MacBook Air. It’s built on rayenfeng/riko_project, which had a voice pipeline but no avatar. the hard part was fitting it all into 8 GB of RAM, which is why the language model runs on a separate GPU server. Making her feel responsive was the hardest part. Streaming replies a sentence at a time meant making sure she never split a stage direction or a number like 3.5 in half. Letting you interrupt her was tricky too, because her own voice goes back into the mic. The quickest way to see her is https://skep13.github.io/marina/ where you can type to her in the browser. Replies there are recorded lines in her real voice. The app only runs on a Mac. Keep the folder at ~/marina, not in Desktop or Documents, or it will hang. Run ./setup-mac.sh first. Bring your own .vrm avatar and put it at app/models/model.vrm. For the model, install Ollama, run ollama pull llama3.2:3b and set base_url to http://127.0.0.1:11434/v1 in the config. Hover over her to see the buttons....
|
1793130453.0705104
|
1793216853.0705104
|
|
13914
|
Overclocked! by @baker | Stardance
|
baker
|
1
|
18.0
|
103
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T05:01:11Z", "hours": 18.0, "multiplier": 5.73, "payout": 103, "blessing": "neutral", "text": "If your rating this plz give good rating. My first clicker game. UI done with AI but logic, description and assets were done by me (assets from google ofc)", "repo": "https://github.com/Hamdan772/Overclocked-", "demo": "https://overclocked-game.vercel.app"}]...
|
[{"post_id": 7976, "ts": "2026 [{"post_id": 7976, "ts": "2026-06-13T09:27:18Z", "hours": 1.0, "text": "Done with the game playable at: https://overclocked-game.vercel.app (gonna ship it now) my opinion on this game is……… well it’s not bad I kinda wish I worked on the UI instead of AI but I liked coding the logic. ♥️⭐️"}, {"post_id": 7440, "ts": "2026-06-12T11:54:25Z", "hours": 1.0, "text": "I think I cooked. thx to the people on slack telling me not to use ai generated assets. should I go for a more pixel-y vibe?"}, {"post_id": 6748, "ts": "2026-06-11T09:23:59Z", "hours": 8.0, "text": "working on assets and lore rn the clicker game is going good but would love suggestions for upgrades or lore (like descriptions to the upgrades) or features. and if yall are wondering why the logged time is so much its cuz I did like 1-2 hours yesterday and since im sick I skip school!! also there more assets and this is subjective to change"}, {"post_id": 6225, "ts": "2026-06-10T13:58:10Z", "hours": 4.0, "text": "Added tons of features but not loving the UI so I’ll update it tomorrow. Should probably take a break but I really wanna add some lore and better assets."}, {"post_id": 6039, "ts": "2026-06-10T04:38:02Z", "hours": 0.0, "text": "Worked so long that im number 6 globally. the core is done and im ideating the upgrades and buttons. going for the cookie clicker vibe. I should probably stop making the devlogs so casual and start talking more about the features."}, {"post_id": 6032, "ts": "2026-06-10T03:51:28Z", "hours": 1.0, "text": "Made a very basic UI for now to make sure core functionality works. credit goes to Elucidation on GitHub for the main core"}]...
|
Title: Overclocked! by @baker | Stardance
Devlogs Title: Overclocked! by @baker | Stardance
Devlogs:
Made a very basic UI for now to make sure core functionality works. credit goes to Elucidation on GitHub for the main core
Worked so long that im number 6 globally. the core is done and im ideating the upgrades and buttons. going for the cookie clicker vibe. I should probably stop making the devlogs so casual and start talking more about the features.
Added tons of features but not loving the UI so I’ll update it tomorrow. Should probably take a break but I really wanna add some lore and better assets.
working on assets and lore rn the clicker game is going good but would love suggestions for upgrades or lore (like descriptions to the upgrades) or features. and if yall are wondering why the logged time is so much its cuz I did like 1-2 hours yesterday and since im sick I skip school!! also there more assets and this is subjective to change
I think I cooked. thx to the people on slack telling me not to use ai generated assets. should I go for a more pixel-y vibe?
Done with the game playable at: https://overclocked-game.vercel.app (gonna ship it now) my opinion on this game is……… well it’s not bad I kinda wish I worked on the UI instead of AI but I liked coding the logic. ♥️⭐️
Ships:
If your rating this plz give good rating. My first clicker game. UI done with AI but logic, description and assets were done by me (assets from google ofc)...
|
1792878763.9999301
|
1793742763.9999301
|
|
69539
|
Hackpad by @Himikle09 | Stardance
|
Himikle09
|
0
|
2.07
|
0
|
[]
|
[{"post_id": 79763, "ts": "202 [{"post_id": 79763, "ts": "2026-10-15T09:25:53Z", "hours": 2.0686, "text": "designing digitally and getting the hang of Kicad and fusion"}]...
|
Title: Hackpad by @Himikle09 | Stardance
Devlogs: Title: Hackpad by @Himikle09 | Stardance
Devlogs:
designing digitally and getting the hang of Kicad and fusion...
|
1792857095.2830133
|
1793461895.2830133
|
|
67542
|
Edith by @Midhunesh | Stardance
|
Midhunesh
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T12:20:38Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made a language translator which translates some languages while travelling around the world. You can use this app while travelling in India, France, Germany, Spain and some other European countries. My main challenge was to convert one language to another but I managed it well because I knew python before doing this project. I feel proud that after launching this app, many tourists will be able to explore more places and can use this app to make conversations with the people in that country. People should accept this project because this will enhance tourism and help tourists.", "repo": "https://github.com/midhuneshbraj123/Edith", "demo": "https://midhuneshbraj123.github.io/Edith/"}]...
|
[{"post_id": 79765, "ts": "202 [{"post_id": 79765, "ts": "2026-10-15T09:46:38Z", "hours": 0.4669, "text": "Devlog Number 7: I have finally completed making the project. I have made some modifications like adding new languages which is used in India. The app is successfully working and I am excited to ship my project"}, {"post_id": 78961, "ts": "2026-10-12T06:19:38Z", "hours": 0.3722, "text": "Devlog Number 6: I have almost completed. There are few works left to do like writing Readme and some modifications in the code. I tested my translator app by translating various languages and it translated them successfully!"}, {"post_id": 78943, "ts": "2026-10-12T03:33:30Z", "hours": 0.2803, "text": "Devlog Number 5: I have almost finished the coding and now I am testing my translator app with various languages. It is working but I think it is bit slow. I am trying to fix that problem too."}, {"post_id": 78686, "ts": "2026-10-11T09:19:53Z", "hours": 0.4064, "text": "Devlog Number 4: I have decided to control my translator into few languages because translating many languages might be a burden for coding. So I decided to translate only German, French, Hindi, Dutch, Spanish and English."}, {"post_id": 78388, "ts": "2026-10-10T16:58:35Z", "hours": 0.3056, "text": "Devlog Number 3: I am continuing with coding works and the app has a problem with translating languages. I am trying to fix it along with writing the code."}, {"post_id": 77858, "ts": "2026-10-08T15:46:07Z", "hours": 0.2506, "text": "Devlog Number 2: I am giving my translator the right coding to translate any language to English. This app features to translate only to English due to its limitations. I am excited to execute it after coding. I think this will be a best app for travel around the world"}, {"post_id": 77603, "ts": "2026-10-07T16:29:57Z", "hours": 0.4936, "text": "Devlog Number 1: I am creating a translator app which makes life better and smoother while we are on a travel or trip. It translates any language into English. I was facing a problem with Hackatime because it didn’t record the time. So, I fixed that problem and continued to start coding."}]...
|
Title: Edith by @Midhunesh | Stardance
Devlogs:
D Title: Edith by @Midhunesh | Stardance
Devlogs:
Devlog Number 1: I am creating a translator app which makes life better and smoother while we are on a travel or trip. It translates any language into English. I was facing a problem with Hackatime because it didn’t record the time. So, I fixed that problem and continued to start coding.
Devlog Number 2: I am giving my translator the right coding to translate any language to English. This app features to translate only to English due to its limitations. I am excited to execute it after coding. I think this will be a best app for travel around the world
Devlog Number 3: I am continuing with coding works and the app has a problem with translating languages. I am trying to fix it along with writing the code.
Devlog Number 4: I have decided to control my translator into few languages because translating many languages might be a burden for coding. So I decided to translate only German, French, Hindi, Dutch, Spanish and English.
Devlog Number 5: I have almost finished the coding and now I am testing my translator app with various languages. It is working but I think it is bit slow. I am trying to fix that problem too.
Devlog Number 6: I have almost completed. There are few works left to do like writing Readme and some modifications in the code. I tested my translator app by translating various languages and it translated them successfully!
Devlog Number 7: I have finally completed making the project. I have made some modifications like adding new languages which is used in India. The app is successfully working and I am excited to ship my project
Ships:
I have made a language translator which translates some languages while travelling around the world. You can use this app while travelling in India, France, Germany, Spain and some other European countries. My main challenge was to convert one language to another but I managed it well because I knew python before doing this project. I feel proud that after launching this app, many tourists will be able to explore more places and can use this app to make conversations with the people in that country. People should accept this project because this will enhance tourism and help tourists....
|
1793008274.7006514
|
1793094674.7006514
|
|
26937
|
LM399 Voltage Standard by @IndexJson | Stardance
|
IndexJson
|
0
|
21.13
|
0
|
[]
|
[{"post_id": 79772, "ts": "202 [{"post_id": 79772, "ts": "2026-10-15T10:38:09Z", "hours": 6.5269, "text": "Devlog #10 Overview I did a lot of work. And I can proudly say that software is finished! Now I can connect to it via USB and read all the stats: uptime, voltage on power rails and heater current. And of course I can manage all the calibration data and everything else. Interface I made it as a CLI-like interface. Code is well… it works. It’s not my best piece of code but if it works then don’t touch it. The problem is that I can’t really type in commands. Every line must be sent as continuous stream. Currently I do it by copying lines from a file and pasting them into picocom. I will write a proper helper program in c++ with a proper gui, but it’s out of scope for this project. Calibration In order to calibrate the device you must use following command: BEGIN CAL <hex number representing value of binary trim network> <voltage before calibration> <date of calibration> END It will automatically fill the uptime and temperature fields. Initial calibration is a little different. It is only meant to be done once, and does not contain fields like normal calibration, therefore normal cal still must be done after initial cal. BEGIN INIT_CAL <LM399 Serial Number> <Date of calibration> <LM399 Voltage> END It also has some other commands. INIT_FULL - resets calibration header to default settings CLEAR_STATS - clears uptime RESET - resets the MCU GET_INFO - returns the calibration header GET_INIT_CAL - returns initial calibration GET - returns basic stats (uptime, voltages on power rails, heater current, temp) returns calibration at specific index BEGIN GET_CAL <cal index> END"}, {"post_id": 76474, "ts": "2026-10-03T17:11:17Z", "hours": 1.83, "text": "Devlog #09 I implemented some cool things, so let’s look at them. printf I got tired of the old way of sending data via USB (via snprintf and CDC_Transmit_FS) so I made my own USB_printf. It works almost like a regular printf. By almost I mean it does not work with floats, but that’s limited by the environment. If I ran it on linux or windows (just the formatting part) it would work fine, but on STM32 it’s a little different. The function is just a wrapper for the old way, but with added timeout. It also checks whether any device is connected to usb, but it’s kinda weird. This way the function does not block the rest of the program when host is not connected. Here’s how it looks: uint8_t USB_printf ( const char * fmt , ...); So really nothing special, looks just like regular printf Saving uptime data Now via WriteHourStats I am able to write data about total uptime to eeprom. Inside the implementation I used something that I rarely use: union. Many people never even heard of it. Union makes all the inner properties share the same address. Example from the source code: union HourBuffer { uint8_t b8 [ 2 ]; uint16_t b16 ; } buffer ; No matter what I try to access, whether its b8[0] or b16 I get the same value. Well, not exactly. By accessing b8[0] i get lower part of b16, its the same as doing b16 & 0xff. Here I am writing data so I need to set b16 to a certain value. This also meant that it sets b8[0] and b[1]. This does not impact performance nor does it increase memory usage. The union is still just 16 bits. It can be done simpler but it is more readable and I wanted to use a union :) All it does is that it avoids weird pointer casting or shifting the value. Next Steps Now I’ll focus either on saving calibration data, that I started a little, or do something with the adc, like measuring temperature of the reference section, heater current and voltage on both +15V rails."}, {"post_id": 76142, "ts": "2026-10-02T14:12:27Z", "hours": 1.5047, "text": "Devlog #08 Overview It’s really coming together. I added support for devices that use I2C: TMP102 temperature sensor and M24C64 EEPROM. TMP102 I created a function in TMP102.c that reads the current temperature. It communicates with the IC using I2C. M24C64 I created a basic library in M24Cxx.c that can read and write data to the IC. It’s fully configurable and easy to use."}, {"post_id": 75947, "ts": "2026-10-01T18:04:06Z", "hours": 1.5739, "text": "Devlog #07 Overview I managed to get a basic program running on the STM32. It is my first time using such an MCU on a custom PCB, but it was quite easy. Also I am still learning the platform, everything is quite different from arduino. I like it though. USB It was the hardest part, and I spent most of my time on it. Besides issues with my code (that was expected since it’s my first project with USB on STM32) I had problems with my hardware. I spent quite a bit of time on it and solution was simple. I just had to connect it to my PC… Well, guess things work better when they’re actually connected, don’t they? Anyway, it works now. It logs it’s uptime every seconds. LED Also the RGB LED is red when the device is heating up and green when it’s ready to be used. Simple yet useful. I’ll have to adjust the heat up time to 15 minutes, but for development time it’s fine as is."}, {"post_id": 73925, "ts": "2026-09-26T10:44:33Z", "hours": 4.0886, "text": "Devlog #06 Overview I finished soldering the PCB! It looks awesome. I quickly tested some parts of it and it seems to be working. Soldering Most of it was easy to solder but some components weren’t easy at all. The 3V3 regulator was very annoying because of its small footprint. The same goes for I2C temperature sensor. I barely soldered them. That being said, I would still do the same in my next PCB. (I once used a 4-pad BGA sensor. At least I learned to not use those😅 ) Problems with MCU I encountered an issue with the circuit: reset line had no pullup and capacitor. This was a big problem since it could lead to power cycling. Fortunately I fixed it by using some copper wire and some passives. It isn’t the most pretty solution but it works. I still can’t believe I forgot to add those components. At least it’s fixed now. As for the analog part, everything seems to be just fine, still requires calibration though. Now I should focus on the software part of the project."}, {"post_id": 27645, "ts": "2026-07-13T12:25:42Z", "hours": 2.6331, "text": "Devlog #05 The design step is finished! I fully designed the PCB. The precision section is separated from the rest, PSU is far away and everything looks nice. Digital section I added an STM32, it tracks uptime, manages calibration data, measures temperature, measures heater current and all 15V rails. It can be connection to a PCB via USB. Silkscreen I left a few text fields on the silkscreen in order to write down initial LM399 voltage and other stuff: temperature during calibration, date and Serial Number."}, {"post_id": 26705, "ts": "2026-07-11T17:31:06Z", "hours": 0.7522, "text": "Devlog #04 — PCB — I added shielding for the precision section. All that’s left to do here is to route power, but I will do that after I route the PSU. — PSU — I added a 3.3V regulator for an STM32. It will use 1 16V transformer and make: 15V for reference, 15V for heater, 5V and 3.3V. — MCU — I am planning to add an STM32G431. To it I’ll connect and EEPROM that would store some calibration data, like date and drift."}, {"post_id": 25898, "ts": "2026-07-10T12:07:31Z", "hours": 1.1222, "text": "Devlog #03 I have mostly finished reference. I’ll tell you a few interesting things about it. — Schematic — Not much changed. I simply added footprints. But the thing I have to point out is the added filter. I decided to go with 50ohm resistor, 10uF aluminum cap and 100nF MLCC cap. — Stackup — I went with a 4-layer board. That allowed me to have a dedicated ground plane on second layer. It will improve the performance. — Layout — I tried to keep everything together, so all the parts will have similar temperature. Also the reference part will be on opposite side of the board compared to PSU. That would be all. It looks like I will soon finish this project, but that will take me just a little more time."}, {"post_id": 25407, "ts": "2026-07-09T17:44:36Z", "hours": 0.4003, "text": "Devlog #02 — Power Supply — I made schematic for power supply. To make 15V for the zener, I decided to go with LT3045 and 7018 for a pre-regulator. 7818 will help with noise and ripple. Also LT3045 cannot handle input voltage so 7818 steps it down first, then it is regulated to 15V. — Transformers — I decided to go with 2 DP-241-4-20 20V transformers. The datasheet states that it has low capacitive coupling, which is crucial for such precision standard. Higher capacitance between windings means higher common mode currents, that could potentially make measurement inaccurate. This specific type of transformer has been tested by Marco Reps in his Extreme Isolation video , with quite good result. This transformer has lower leakage that Fluke 732A. which is much better than any standard based on LM399. It is a 20V transformer, so after rectification there will no more than 28V - voltage drop on rectifiers without a load. That’s why pre-regulator is necessary, otherwise it would fry the main LDO. Also I used low leakage diodes as the rectifier. The heater supply isn’t too interesting - just a 7815. I am wondering whether I should switch to 16V transformers or not. I am not concerned about ref supply, since it draws very little current. What may be a problem is the heater supply, but i will have to do some more calculations."}, {"post_id": 25299, "ts": "2026-07-09T14:40:24Z", "hours": 0.6939, "text": "Devlog #01 I am making a precision 10V Standard based on LM399. — Reference schematic — I managed to make a schematic for the reference, gain stage and calibration resistors. The output can be calibrated by soldering required jumpers that connect trim resistors. I want to achieve sub 5ppm stability, so the resistors for the gain stage must be precise and stable. — Power supply — Now I should focus on power supply. The heater will be powered from a separate source. Another important thing about building the PSU is isolation. It has to be isolated from mains quite well so leakage currents will not mess up the measurements. Capacitance between transformer windings is a problem."}]...
|
Title: LM399 Voltage Standard by @IndexJson | Star Title: LM399 Voltage Standard by @IndexJson | Stardance
Devlogs:
Devlog #01 I am making a precision 10V Standard based on LM399. — Reference schematic — I managed to make a schematic for the reference, gain stage and calibration resistors. The output can be calibrated by soldering required jumpers that connect trim resistors. I want to achieve sub 5ppm stability, so the resistors for the gain stage must be precise and stable. — Power supply — Now I should focus on power supply. The heater will be powered from a separate source. Another important thing about building the PSU is isolation. It has to be isolated from mains quite well so leakage currents will not mess up the measurements. Capacitance between transformer windings is a problem.
Devlog #02 — Power Supply — I made schematic for power supply. To make 15V for the zener, I decided to go with LT3045 and 7018 for a pre-regulator. 7818 will help with noise and ripple. Also LT3045 cannot handle input voltage so 7818 steps it down first, then it is regulated to 15V. — Transformers — I decided to go with 2 DP-241-4-20 20V transformers. The datasheet states that it has low capacitive coupling, which is crucial for such precision standard. Higher capacitance between windings means higher common mode currents, that could potentially make measurement inaccurate. This specific type of transformer has been tested by Marco Reps in his Extreme Isolation video , with quite good result. This transformer has lower leakage that Fluke 732A. which is much better than any standard based on LM399. It is a 20V transformer, so after rectification there will no more than 28V - voltage drop on rectifiers without a load. That’s why pre-regulator is necessary, otherwise it would fry the main LDO. Also I used low leakage diodes as the rectifier. The heater supply isn’t too interesting - just a 7815. I am wondering whether I should switch to 16V transformers or not. I am not concerned about ref supply, since it draws very little current. What may be a problem is the heater supply, but i will have to do some more calculations.
Devlog #03 I have mostly finished reference. I’ll tell you a few interesting things about it. — Schematic — Not much changed. I simply added footprints. But the thing I have to point out is the added filter. I decided to go with 50ohm resistor, 10uF aluminum cap and 100nF MLCC cap. — Stackup — I went with a 4-layer board. That allowed me to have a dedicated ground plane on second layer. It will improve the performance. — Layout — I tried to keep everything together, so all the parts will have similar temperature. Also the reference part will be on opposite side of the board compared to PSU. That would be all. It looks like I will soon finish this project, but that will take me just a little more time.
Devlog #04 — PCB — I added shielding for the precision section. All that’s left to do here is to route power, but I will do that after I route the PSU. — PSU — I added a 3.3V regulator for an STM32. It will use 1 16V transformer and make: 15V for reference, 15V for heater, 5V and 3.3V. — MCU — I am planning to add an STM32G431. To it I’ll connect and EEPROM that would store some calibration data, like date and drift.
Devlog #05 The design step is finished! I fully designed the PCB. The precision section is separated from the rest, PSU is far away and everything looks nice. Digital section I added an STM32, it tracks uptime, manages calibration data, measures temperature, measures heater current and all 15V rails. It can be connection to a PCB via USB. Silkscreen I left a few text fields on the silkscreen in order to write down initial LM399 voltage and other stuff: temperature during calibration, date and Serial Number.
Devlog #06 Overview I finished soldering the PCB! It looks awesome. I quickly tested some parts of it and it seems to be working. Soldering Most of it was easy to solder but some components weren’t easy at all. The 3V3 regulator was very annoying because of its small footprint. The same goes for I2C temperature sensor. I barely soldered them. That being said, I would still do the same in my next PCB. (I once used a 4-pad BGA sensor. At least I learned to not use those😅 ) Problems with MCU I encountered an issue with the circuit: reset line had no pullup and capacitor. This was a big problem since it could lead to power cycling. Fortunately I fixed it by using some copper wire and some passives. It isn’t the most pretty solution but it works. I still can’t believe I forgot to add those components. At least it’s fixed now. As for the analog part, everything seems to be just fine, still requires calibration though. Now I should focus on the software part of the project.
Devlog #07 Overview I managed to get a basic program running on the STM32. It is my first time using such an MCU on a custom PCB, but it was quite easy. Also I am still learning the platform, everything is quite different from arduino. I like it though. USB It was the hardest part, and I spent most of my time on it. Besides issues with my code (that was expected since it’s my first project with USB on STM32) I had problems with my hardware. I spent quite a bit of time on it and solution was simple. I just had to connect it to my PC… Well, guess things work better when they’re actually connected, don’t they? Anyway, it works now. It logs it’s uptime every seconds. LED Also the RGB LED is red when the device is heating up and green when it’s ready to be used. Simple yet useful. I’ll have to adjust the heat up time to 15 minutes, but for development time it’s fine as is.
Devlog #08 Overview It’s really coming together. I added support for devices that use I2C: TMP102 temperature sensor and M24C64 EEPROM. TMP102 I created a function in TMP102.c that reads the current temperature. It communicates with the IC using I2C. M24C64 I created a basic library in M24Cxx.c that can read and write data to the IC. It’s fully configurable and easy to use.
Devlog #09 I implemented some cool things, so let’s look at them. printf I got tired of the old way of sending data via USB (via snprintf and CDC_Transmit_FS) so I made my own USB_printf. It works almost like a regular printf. By almost I mean it does not work with floats, but that’s limited by the environment. If I ran it on linux or windows (just the formatting part) it would work fine, but on STM32 it’s a little different. The function is just a wrapper for the old way, but with added timeout. It also checks whether any device is connected to usb, but it’s kinda weird. This way the function does not block the rest of the program when host is not connected. Here’s how it looks: uint8_t USB_printf ( const char * fmt , ...); So really nothing special, looks just like regular printf Saving uptime data Now via WriteHourStats I am able to write data about total uptime to eeprom. Inside the implementation I used something that I rarely use: union. Many people never even heard of it. Union makes all the inner properties share the same address. Example from the source code: union HourBuffer { uint8_t b8 [ 2 ]; uint16_t b16 ; } buffer ; No matter what I try to access, whether its b8[0] or b16 I get the same value. Well, not exactly. By accessing b8[0] i get lower part of b16, its the same as doing b16 & 0xff. Here I am writing data so I need to set b16 to a certain value. This also meant that it sets b8[0] and b[1]. This does not impact performance nor does it increase memory usage. The union is still just 16 bits. It can be done simpler but it is more readable and I wanted to use a union :) All it does is that it avoids weird pointer casting or shifting the value. Next Steps Now I’ll focus either on saving calibration data, that I started a little, or do something with the adc, like measuring temperature of the reference section, heater current and voltage on both +15V rails.
Devlog #10 Overview I did a lot of work. And I can proudly say that software is finished! Now I can connect to it via USB and read all the stats: uptime, voltage on power rails and heater current. And of course I can manage all the calibration data and everything else. Interface I made it as a CLI-like interface. Code is well… it works. It’s not my best piece of code but if it works then don’t touch it. The problem is that I can’t really type in commands. Every line must be sent as continuous stream. Currently I do it by copying lines from a file and pasting them into picocom. I will write a proper helper program in c++ with a proper gui, but it’s out of scope for this project. Calibration In order to calibrate the device you must use following command: BEGIN CAL <hex number representing value of binary trim network> <voltage before calibration> <date of calibration> END It will automatically fill the uptime and temperature fields. Initial calibration is a little different. It is only meant to be done once, and does not contain fields like normal calibration, therefore normal cal still must be done after initial cal. BEGIN INIT_CAL <LM399 Serial Number> <Date of calibration> <LM399 Voltage> END It also has some other commands. INIT_FULL - resets calibration header to default settings CLEAR_STATS - clears uptime RESET - resets the MCU GET_INFO - returns the calibration header GET_INIT_CAL - returns initial calibration GET - returns basic stats (uptime, voltages on power rails, heater current, temp) returns calibration at specific index BEGIN GET_CAL <cal index> END...
|
1792788803.2876952
|
1793393603.2876952
|
|
69775
|
Take Two by @DCoder | Stardance
|
DCoder
|
0
|
0.31
|
0
|
[]
|
[{"post_id": 79787, "ts": "202 [{"post_id": 79787, "ts": "2026-10-15T12:30:12Z", "hours": 0.3075, "text": "Today, I just built the schematics for Take Two. Pretty simple stuff, just a bunch of wires, a SEEEDUINO, and some switched. Not much really. Hopefully, I will make the PCB and the Case soon, cuz I got less time."}]...
|
Title: Take Two by @DCoder | Stardance
Devlogs:
T Title: Take Two by @DCoder | Stardance
Devlogs:
Today, I just built the schematics for Take Two. Pretty simple stuff, just a bunch of wires, a SEEEDUINO, and some switched. Not much really. Hopefully, I will make the PCB and the Case soon, cuz I got less time....
|
1792857378.2581677
|
1793462178.2581677
|
|
30331
|
∇Calc by @EngThi | Stardance
|
EngThi
|
0
|
64.45
|
0
|
[]
|
[{"post_id": 79791, "ts": "202 [{"post_id": 79791, "ts": "2026-10-15T12:42:36Z", "hours": 0.5311, "text": "I just finished redoing the parts of the case the parts there and everything else in the project after this second round. This last one that was missing was from Part Studio 4 , which was the little slider drawer for camera privacy and protection on the back 🔒 , along with Part Studio 5 where I made the sliding lid/cover. Very, very simple. I also added some small slots there just to give it a nice tactile texture/grip — pretty small, with a 0.350 mm cut extrusion (removing material). That was kind of the piece I was still missing. It was simple and quick since I already had the basic idea from earlier attempts. Oh, and one thing I think I forgot to mention before: I imported .DXF files into the sketch to help guide the drawings, basically defining the extrusions for the parts. It turned out pretty good! To wrap up, I added what I had forgotten before: the mounting holes on the back cover bosses. Put 1.6mm holes there to hold the screws properly ⚙️ ."}, {"post_id": 79509, "ts": "2026-10-14T11:14:33Z", "hours": 1.2011, "text": "For now I’m working on the CAD ; I had finished the PCB. I put up a quick video of how it turned out I recorded it with Canva, which I’d used before for a school project, and it works. I even have the Spectacle app for Linux , but it records in 720p, which looks kind of bad, so recording it online through Canva ends up looking way better. Basically, it has the dimensions of part two , which I was rethinking and everything. And well, this was more or less the idea I had: there’s the front part for the buttons, and in this other version, it was supposed to have a passage for a circuit board to fit a small solar cell ☀️ . Depending on what I can find around the house and if there’s any leftover space in the casing (it’s pretty much ready), I might implement it even if it ends up mounted on the outside rather than inside the case, just for reuse and photovoltaic charging. Then I also put the back part together: the little hole for the camera 📷 , the slider for its protection, and on the side, the microSD card slot. The keymat for the buttons which I changed the layout of, so it’s not square anymore now has roughly the positions for all 49 keys and the holes where the support bosses will go. There’s also that little strip/rectangle, which is meant to be the protective cover fitting right into the other slot. Basically, that’s it! I’ll continue and tweak it later. It’s not too difficult, and I think it’ll be finished soon."}, {"post_id": 77958, "ts": "2026-10-08T23:51:34Z", "hours": 0.9608, "text": "It’s kind of funny that I messed with this again, but basically this is a version where I repositioned the buttons and pins because, well, I decided the keys aren’t going to stay as a plain square matrix. So I kind of organized and divided things there to get a better idea of how the pins will be placed roughly around the center. On the top part, there’s sort of that D-pad area (not an actual single pad, but the individual buttons for that navigation). That circular button style you see on game controllers, handhelds , and on some other calculators too. I also moved the FPC connector over to the corner so it’s way easier and cleaner to connect everything up . On top of that, I rounded the board edges in this version. Overall, that was pretty much it! Lapse: Lapse"}, {"post_id": 77073, "ts": "2026-10-05T15:33:01Z", "hours": 0.7336, "text": "Keypad PCB done! Top & Bottom preview Now that I’ve finished, I’ve completed the PCB both images, the top and the bottom . I left the spaces for the M2 screws and already rotated everything, it was pretty easy! Basically, I kind of left an array, a 7x7 matrix . The keys would be more or less standardized and the only difference would be in the pad — like, in the rubber, the material that you press to trigger that key. That kind of thing. It turned out pretty nice. It’s simple, it’s actually simple to do this part, this kind of thing… That’s how it turned out. I’m not sure if I’ll tweak it much to add things like a D-pad or other types of keys for navigation, functions, the numeric keypad itself , that kind of stuff."}, {"post_id": 77024, "ts": "2026-10-05T12:20:38Z", "hours": 1.9592, "text": "I’m back! Finalized the second PCB for the keys Well, yeah, I’m here again. I’m back, it’s been a while since I was away, right? I waited for things to settle down here so I could continue with the project. Yeah, and I finalized the idea of making a board on the second PCB there, where the buttons will be, you know, the clicks to use the calculator keys . And this here was kind of leftover code organization I was doing in the repository . I ended up not remembering everything from the project, but now I’m here again. So I’ll finish this up. It was pretty simple, I didn’t record it. But basically, I made a 7x7 matrix of switches , the buttons. Along with that, there’s the FPC connector to actually connect the board to the ribbon, to the rest of the MCP expander. I’m going to tidy it up a bit. The board also ended up being quite small 84x78 basically just to fit there, it would provide support and, you know, fit the switches at the distances that had already been predetermined in the case , right in the middle of the product’s housing. And then, along with that, the schematic is also simple, I just put an FPC connector , that’s all that’s really needed, and the buttons, the switches. Really simple. I think it’s interesting to mention (diodes & debounce): I was also going to use, you know, I was looking, people were saying, it’s good to use diodes , but just to kind of reduce debounce , fix certain issues, but it wouldn’t be that necessary, since the contacts closing would almost never happen like, I don’t know, three clicks at once, one next to the other. So that doesn’t really cause a problem where the ESP wouldn’t know exactly which key is being pressed and what it should do with the signal it’s receiving. And depending on how you study it and see how to handle it in the firmware , it actually wouldn’t even be that necessary to put these diodes on each of these buttons for that."}, {"post_id": 58915, "ts": "2026-08-31T14:11:46Z", "hours": 1.8789, "text": "almost ready to submit!!! Finished and I’m getting ready to submit the project for review! I took some new renders and also did the prices part for the project items. I have everything here now and it is looking nice. Like I said before, I left some points to see and change better on the case when I have everything in my hands, so I can prototype 🤖 it better. I don’t have much skill with soldering, so I really hope I can get the Top PCBA . This is all really cool and interesting that I was able to do, and I’m really happy about it. At the end I also organized things a little more and changed stuff to track what is needed in the repo , help anyone that wants to look at it or reproduce the project somehow. The System architecture section got really cool in the translation and organization, AI did that . I don’t really know how to make this type of diagram myself yet :/ I hope I didn’t forget anything and that the organization I made, and later asked to improve, documents the state well. Basically I: I finished organizing the repo, checking the prices, calculations , etc., taking screenshots , I kept iterating in the repo, editing, moving things , that kind of organization 🗂️"}, {"post_id": 58142, "ts": "2026-08-30T14:30:08Z", "hours": 0.6419, "text": "more docs things right these Well, I tidied up the README and organized the folders and file names better. The repo in general . The other image is because I think I didn’t show it properly here and I was reposting , checking items and analyzing anything left there on EasyEDA"}, {"post_id": 57737, "ts": "2026-08-30T00:16:59Z", "hours": 1.2197, "text": "its possible only four images… I fiddled a bit more with these items, files 📁 , repo organization , stuff like that . Also, I took screenshots of some views from the project’s mechanical render … I’m not really focusing on any one part, but I tinker a bit here and if I remember something I should have done or think could be better, I take care of it. Like parts of the firmware, code, repo organization, images, and the internal side of the apps: CAD and EDA . Basically, that’s it, to sum up . I forgot to put the others Lapse"}, {"post_id": 57543, "ts": "2026-08-29T18:35:03Z", "hours": 1.2081, "text": "I’m done here! The two files we worked on are finished. Now we have the initializer and use of the MCP23017 (I’ll just write MCP from now on in this log) . The addresses have been mapped and the registers too. You can see what happens along with the logic of keeping the line in the LOW state and the rest HIGH . In this part, it’s necessary to use masks and bitwise operations to see how it works. It stays in a loop analyzing what was pressed and, of course, if something strange happens outside the configuration, it throws an error saying UNKNOWN ."}, {"post_id": 56813, "ts": "2026-08-28T18:53:29Z", "hours": 1.4183, "text": "I made a lot more progress on the firmware !! As I said, the functions , declarations , and general use of the ESP-IDF are standardized , so it’s simple to build by consulting materials: docs, example codes, usage with some peripherals and components, AI , etc. In this case, the use of I2C and SPI communication is also well organized. The drivers for the components I use don’t give you headaches for this. Previously, we had already been working on the ‘macros’ part, or rather the project HAL , even without knowing what it was. In the second image, there’s the keymap, made as a 7x7 matrix for the calculator - what the keys do. That’s already connected to the names of each key . The scanning was done, a loop that identifies which keys were used, and the rendering of the items on the display . Taking the data buffers and transitioning the communication with the ESP about what was pressed and how it will relay that to the screen. I think it’s interesting to mention: Explaining how key reading works with the MCP: each key is assigned by the matrix indices - row x column. The columns are set up with internal pull-up resistors, so when inactive they measure 3.3V (level 1). The ESP pulls the row to 0V (level 0), and when a key is pressed, it knows it because it reads !=0 from the column and matches it with the row it’s accessing to get the unique identifier for that key. That way you know 100% for sure what was pressed. And this cycle keeps running every few milliseconds."}, {"post_id": 56250, "ts": "2026-08-27T22:35:57Z", "hours": 0.6989, "text": "I got started at the base and analyzed the HAL (Hardware Abstraction Layer) of the project. I was studying some things, basically the functions and how to use the framework . I noticed that the functions are pretty standardized, like how to use registers, handle addressing, and use macros , directives/variables . Basically, the headers I was going to use and docs and things like that I was checking out, now speaking exclusively about the Aliexpress display that was in Mandarin (some of the ones I saw while researching) and offline I was tinkering and looking at some things, asking AI to explain and check things to move forward . I got the variant I was going to use, and later on it got analyzed and the board_pins.h ended up fine. I also started messing with the keypad, just defining it and later on how to monitor and use the identifiers of each key ."}, {"post_id": 55265, "ts": "2026-08-26T23:21:10Z", "hours": 0.9006, "text": "I started looking more closely at the firmware part ! Actually, I’ve never worked with ESP-IDF, so I’m going to take another good look at it and refresh myself on things I might not be prepared enough for. I grabbed it to check out and study with the example code \"Blynk Led\" —the one in the picture is a different one. It’s to control the internal LED with the BOOT button. I’ve seen a bit, and RTOS seems really cool, here it’s FreeRTOS . But you need to pay attention and be aware, understand how things work. I feel like it’s going to be a long and tough road… but let’s go! The good thing is that we have AI to help us out and clarify points, test stuff , and so on."}, {"post_id": 54514, "ts": "2026-08-25T15:21:59Z", "hours": 0.6925, "text": "I finished working on a few more things in the Assembly . I was aligning the cut positions in the view (remove extrude) and it took a while because the Mates , Fastened Mates created kind of restrictions that didn’t allow certain parts to move. Also put the 3D for the display. Then at the end I made the first commit to the repo! Lapse"}, {"post_id": 54126, "ts": "2026-08-24T23:04:44Z", "hours": 1.725, "text": "I just tweaked the parts a little more and then went to the Assembly . The PCB step was 50MB and took a while to load, and then when I tried to insert it, it didn’t load everything right after choosing a square option with a symbol similar to the Part Studio one, but eventually it worked. I used some fastened mates to join the items, and since this isn’t constant and there are hollow parts where you want to center/place in a specific spot, the Mate Connector doesn’t apply, so I used something like the transform to select the piece. That’s how I kept going until I got here! In the middle of the work, I had to edit the Part Studio because some points differed from the positioning and mounted parts of the PCB , like the USB and microSD . That’s it—work, found mistakes, fix them, and move forward! Lapse"}, {"post_id": 53863, "ts": "2026-08-24T15:49:47Z", "hours": 0.6503, "text": "What happened with the keypad being wrong was that in the sketch I dimensioned it incorrectly (swapped height for width) , and that’s why some of the blocks went beyond the edges and weren’t symmetrical. I imagined that might be it and fixed it . I made a rectangle there thinking about maybe adding a simple lens protection for the camera. After that, a rough idea of the cover that is usually used to protect the front part. Besides that, just a simple fillet on the sides. I did that, but I admit I might change this idea and its overall shape . Once I have everything in hand, I’ll update it to have a proper enclosure . Lapse"}, {"post_id": 53704, "ts": "2026-08-24T11:43:25Z", "hours": 1.1836, "text": "I finished the rear shell for the case. I made some bosses for the PCB fitting. It’s noticeable that the top right one is misaligned. I mentioned before that it’s because the traces and components were occupying that space, and when I remodeled it to 84x85 , the hole slots didn’t go along—they got lost on the canvas . Later I remembered, organized, and figured out a way to put them like this. Only one ended up 'strange,' which is NOT a problem at all. I made the shell 1.8mm thick and also cut the slot for the camera. I left the keypad at 74x80 , making a 7x7 feature pattern . This still bugs me because it doesn’t look right and the logic seems to change… I just need more experience and general practice to be ready for different scenarios. Some parts went out of place, but it’s just a matter of testing measurements until it works and maybe checking some guide videos on how to use this feature correctly . Lapse"}, {"post_id": 53406, "ts": "2026-08-23T22:58:39Z", "hours": 1.8672, "text": "I had made a Variable Studio but I end up not using it and don’t remember much. I asked the AI for help since I’ve never really worked with this item and it seemed better for standardizing and putting something defined that is used constantly. But in the end, I remember the quota values and some calculations are simple. Here I did the rear and front parts of the case, I didn’t do the extrusion there but it’s more or less correct. I had been thinking, and as I said, I worked on an idea and previous version, so it was actually pretty easy for that."}, {"post_id": 53124, "ts": "2026-08-23T15:34:18Z", "hours": 1.4269, "text": "I finished placing the holes on the PCB. Actually, I had forgotten… I was focused on finishing and trying to deliver something more professional in the routing part that when I finished I was like \"finally did it? Can I export the production files now?\" and the happiness and rush of the moment made it happen . It wasn’t possible to perfectly align the holes and the thought I had because of the traces I needed to place on the PCB, so it stayed like this. Only the top-right one ended up ‘different’. Now it’s just finishing the PCB and fixing the firmware . I was already checking and testing a bit offline."}, {"post_id": 51854, "ts": "2026-08-21T18:37:09Z", "hours": 3.1492, "text": "I routed a lot more! I tried, tried to optimize so I wouldn’t have to run traces on Inner1 , but it really wasn’t going to work. Partly because of the layout and distances of some ICs to the decoupling capacitors , practices for better signal quality . I forgot ( ) and it was already almost done , so I came here to post up to this point Lapse: Lapse"}, {"post_id": 50471, "ts": "2026-08-19T17:13:34Z", "hours": 3.94, "text": "Well, what happened. I went to check the price of the PCB – in this case, when exporting the GERBER it showed a price and it was pretty expensive, $33! The other 3 boards I made were within the 100x100 size and, if I’m not mistaken, the most expensive one was listed at $7. Here I’m kind of making different versions and testing, experimenting with what happens with certain configurations (size, traces, layers, type of components, price,…). I was putting it off and taking my time because I wanted to use what I had from the other one, but then I decided to start routing from scratch."}, {"post_id": 48112, "ts": "2026-08-16T12:20:20Z", "hours": 1.2892, "text": "I’ve practically finished the new schematic for the raw camera version. I managed to tidy up and properly organize the layout for this new part. First, I looked over it to see what I could add and prepare in positioning the new components for routing. The camera I left is one that uses an FPC connector . I’ve already put this item in place, arranged it with LDOs , translators , and controllers . Basically, it’s about handling the signals, how they occur, to make them compatible with the module I took and the rest of what I had already prepared. It got a bit messy because I really need to see how to place each item, and I wanted to make use of a large part of the general layout from the other PCB version … lapse"}, {"post_id": 47488, "ts": "2026-08-15T12:52:48Z", "hours": 1.2344, "text": "I made some changes and was researching a raw version with the OV5640 . To make it a more controlled and integrated work, and thinking about reducing it and making the aesthetics of the project look more like what it really is, reducing the thickness, I changed and added a lot of other components and I’m starting to organize them to be on the Bottom Layer. I need more LDOs , capacitors , and resistors . Simple, right? The passives and ‘controllers’ for electricity, current, voltage, etc. I’m not really knowing much about the impedance part, so I use ChatGPT to guide me, teach things, and think about the structure of the project, the PCB… Lapse: Lapse"}, {"post_id": 46376, "ts": "2026-08-13T15:31:34Z", "hours": 0.7503, "text": "Well, things were already going pretty well. Basically, I messed around a bit with the routes since the camera pins would be placed behind the PCB, like on the bottom. Then I changed the header layer and rerouted it. Now I managed to remove the header from the 3D preview (since the header was used to make the holes and get an idea of the position of the Arducam pin rows). When I have it in hand, I’ll solder everything directly onto the board. I was messing around a bit with other things too, in the firmware, doing research, checking data, etc. I used ChatGPT for that and even Antigravity. Then I moved forward with some things, checked, asked about the case. The thing is, I’m busy (or I should be) and couldn’t really do sessions and things of the project that I was working on to save. And then I really ended up forgetting to make the Lapses… a lot of times it was gradual work, bit by bit, and sometimes I’d go a while without touching it because I depended on my parents to call me or something like that, a pause. As far as I remember, I used to be able to edit the Lapses before, but I think it’s better to do it directly. All of this wasn’t just 17 minutes! I realized that there was a WakaTime extension for EasyEDA and Onshape. At the time (~ about 5 months ago) I didn’t know about Lapse or anything like that and ended up using this. I ended up creating more than one project to test things out, run tests, and see other people’s implementations. And it turned out they came out with very similar names and all. I didn’t remember the name anymore and I think I synced a few incorrectly. I fragmented the time. BUT REALLY MOST OF IT WAS BECAUSE I DIDN’T RECORD, ETC. I think you can add like 3 more hours"}, {"post_id": 43610, "ts": "2026-08-08T23:42:13Z", "hours": 1.5008, "text": "Well, I tweaked the PCB design just a little more. Actually, very little—I was just seeing if there was a way to handle the USB traces since these two NETs were 170mm and had a lot of vias . The center already had the other components and trace routing, so I guess there wasn’t much to do. And honestly, I’m not experienced, so I don’t know how to make these things better . Along with that, there’s roughly an idea of how the project case will look and the items I had already been working on."}, {"post_id": 41474, "ts": "2026-08-05T18:14:06Z", "hours": 0.9006, "text": "Finally the errors disappeared… it turns out you had the custom DRC rules that I set. Then, like 2 or 3 NETs had thickness rules that couldn’t be followed because QFN components and the VSON package type have pads really close to each other (pitch) , so there was no way to route 0.8mm traces on components with, like, 0.4mm pitch . Obviously, you had to reduce it to make it work, but I didn’t know by how much and whether it might be wrong at some point, cause problems, or lower the PCB’s lifespan. 😶 I figured out how to change the rules and get things fixed and done. Man, I think I should review it again and really check some automatic NETs from the editor. After all these days without touching this, I noticed there were these NETs without descriptive names . I don’t remember if it’s because I didn’t assign a NET, or if it’s just that connection between those pins or something like that. But overall it’s going to be easy. I really hope SO MUCH! Lapse Lapse"}, {"post_id": 41406, "ts": "2026-08-05T16:27:53Z", "hours": 4.0842, "text": "I’m back… I won’t be able to be very active here due to classes and coursework. I spent a good few hours working on this, but when I checked, it only showed 23 minutes… Maybe I linked the hours to the project incorrectly. Actually, there’s a file with the same name plus “_copy” at the end, and I thought I was already working on the right one. Well, I actually finished the routing. It turned out there were some copper islands that weren’t connecting to the rest of the pour, so I had to route them too. But to me, some of the ones flagging routing errors (showing ratsnests) didn’t look isolated and should have been able to join the copper plane. Oh well. The center ended up looking messy; that’s where the components—and consequently the traces—are concentrated. I’ll probably have to find a way to optimize and work on that. Plus, there are 39 DRC errors now… I hope I can submit this project; I’ve already done two others, but the deadline unfortunately ran out while I was optimizing things, addressing review comments, and dealing with components and budget issues. Oh, the way development work and hardware projects are recorded has also changed; now there are timelapses available here on Lapse : Lapse Lapse Lapse Lapse"}, {"post_id": 34370, "ts": "2026-07-25T00:59:26Z", "hours": 0.8669, "text": "I kept routing. I made the port expander matrix (the one on the FPC in the center left), the header for the camera, and practically all the ESP pins I’m still thinking about tidying it up a bit to reduce the number of traces going into the antenna area. There have to be traces coming there, it’s already acceptable as it is, but I will optimize… That’s kind of it."}, {"post_id": 34268, "ts": "2026-07-24T20:33:45Z", "hours": 2.6953, "text": "I was researching, looking at some more DOCS and just tidying up the last bits to start routing. I used Perplexity for some research and to cross-check data and see the trace widths for the NETs. I put DRC rules, so it’s much easier to work, because when you activate routing on a NET it automatically sets that thickness and rules in the project. I routed these more critical parts, power, data, a bit of the display part and stuff like that. Even with plenty of space, it already got a bit messy. This is my third board, so I’m still not that experienced with it. But this is the way to go. Most likely I won’t have to go back and change components. I just need to finish routing , think about the case and its mechanics What annoys me the most is having to return/exchange a component or it not being what I expect. In the case of marketplace sales, stores like Aliexpress"}, {"post_id": 33125, "ts": "2026-07-22T19:01:55Z", "hours": 0.7283, "text": "What I changed At the top, there’s the 2x11 header for the ArduCAM module—you just need to plug it in. I also added a few more devices (actually kind of switched around their positions and values). I hadn’t shown it before, but I imported this 3D model and linked it to the display device . I did a general cleanup and a lot more research , tests , t hings like that . I’m doing kinda okay. I kept waiting for the sellers to respond to me. But I didn’t get much, I could only get one reply per day. I would send messages there, but it was like 11hrs over there, outside their working hours. A lot of time for nothing… Also, that display manual/datasheet didn’t come with the dimensions of the display assembly, like the total height and the screen size I needed. I found it on a website, and it said 6mm, so I left that to do the 3D design to import the STEP as a 3D model. Another seller said they didn’t have the manufacturer’s data I needed for the camera to check the dimensions and the bus. I wanted one that was 3.3V , and usually it’s the common 22 or 24 pins. But random ones from Aliexpress can easily change something in the pinout or order, which breaks everything. Here I’m kind of developing the project blindly . It has to be a really precise version, and that’s difficult… I think I’m going to go with the ArduCam module. It’s not small or as modular as others, but for my case it’s probably okay. (until now YES)"}, {"post_id": 31507, "ts": "2026-07-19T23:30:21Z", "hours": 1.6856, "text": "As I said, I was going to send a message to the sellers, but I procrastinated, and by the time I sent it, it was already the weekend there. The sellers are Chinese, so their time zone is 11 hours ahead. Actually, it’s already Monday there now, so I think there’s no need to resend the message since mine is already in the queue (I hope…). Anyway, I messed around a bit more, organized the schematics a little better, added a few things, and thought about, more or less, how the items could/should be distributed on the PCB, so I did that with the images. So, this whole size isn’t totally necessary. It will help when routing, but there really aren’t any problems with that. What I might do is remove the part where the display goes since it will be securely framed in the future case. They sent the link to the display manual"}, {"post_id": 30148, "ts": "2026-07-17T14:17:14Z", "hours": 0.7, "text": "organizing schematics Here are the schematic pages I’m organizing: 01_SYSTEM_MCU , 02_POWER_USB , 03_KEYPAD_IO , 04_DISPLAY_STORAGE , Actually, I’m still missing one more schematic image: 05_CAMERA_TBD . It seems only four images are allowed per devlog. That’s it—trying to follow a logical organization, with a left-to-right flow and the power sections included :|"}, {"post_id": 29867, "ts": "2026-07-17T00:59:00Z", "hours": 1.255, "text": "I added a few more components. The thing is, I’m preparing how I’m going to connect the keyboard/MCP of the keys to the circuit, and for that, I’m going to use an FPC for it and other LDO parts. Parts that deal with inductance/decoupling and protection of the circuit components. I had to research and really look into things, and I’m already checking to find a module/version of the OV5640 with DVP FPC . I had to keep changing and reviewing the practical use of the components and kind of the electrical **‘needs’ **of the setup."}, {"post_id": 29153, "ts": "2026-07-15T21:01:04Z", "hours": 1.1164, "text": "I switched the MCP MCP23017 to a QFN type. I realized that in the end, everything was most likely going to be pretty big. The final product thickness is around 15mm or more. So now I’m studying and researching to change the components, organization, and then properly design the mechanics in CAD/case so everything stays stable. I didn’t really know the display dimensions. Some are kind of generic, with chip data/technical specifications giving a certain thickness, but most don’t have thickness. Looks like I’ll have to message the Aliexpress seller to get the exact data… I feel way more lost than I should. It’s annoying because I had already thought a bit at the start and there wasn’t supposed to be so many reconstructions/pivots in the project."}, {"post_id": 28238, "ts": "2026-07-14T11:46:50Z", "hours": 1.6344, "text": "Well, what I kept working on was the case. I was thinking that the right way is to make three separate parts: the back part where a phone case fits (thinking in this case), the front part where there are holes for the display, keys/buttons, etc., and the sliding cover with the tracks. This one, when using a normal calculator, usually fits on the back of the body and when not, it fits on the front, storing and protecting the screen. In my ideas, I asked Gemini to generate these images to help me clarify my thoughts and development. It turned out good! Another thing is that I noticed the display PCB module isn’t centered relative to the screen at all. Because of this, due to the width of the PCB and the case ending up close to the display module, it can’t be centered since there’s little free area for horizontal movement and the board would already touch the case walls. I made this 3D model to see roughly how it would look, and it looked weird. Not too much, but… The thing is, I usually do some stylizations, drawings, stuff like that. It would be possible to put a solar panel there, yeah, but I’m not going to go back much to that part of the EDA and rethink the system, mechanics, and circuit logic."}, {"post_id": 27633, "ts": "2026-07-13T12:05:34Z", "hours": 2.5256, "text": "I was supposed to post yesterday but my uncles came over and I didn’t get back to it at night here I’ve pretty much done the part that holds the PCB . The shell , I recessed inside it, and in the other picture you can see I made an Assembly to see how it was coming along and to have an idea of where the screw holes for the PCB are, and later what I should do on the case. I haven’t done this yet, but you can see some Mate Connectors in the picture of the case alone (the light blue, slightly grayish part) . I tried to make the holes, but the sketch planes and flat planes were on the top face and I couldn't make the holes . I spent some time trying that. I don’t know, but probably if I make a sketch on the bottom of the case I can make the holes. That’s it, 3D for EasyEDA , I’ve already fixed it in Onshape and I’m doing well with the case part. 🫡🙂"}, {"post_id": 27287, "ts": "2026-07-12T18:46:51Z", "hours": 1.1164, "text": "I finished tweaking a few more things in the PCB schematic and getting it ready to export a STEP to use as a base in Onshape. Actually, I made the display way too big, standardized at 10 or 15mm, but it should be something like ~2.8mm . The thing is, when I was moving some items around, it ended up moving the Board Outline too, even though I didn’t select it… so I locked it to prevent that from happening, and I’ve already done the same in Onshape . Now I’ll start on the case and then come back to routing"}, {"post_id": 26282, "ts": "2026-07-11T00:03:35Z", "hours": 1.0503, "text": "As I said, I didn’t see the dimensions of the full PCB for the 2.8 inch version , and because of that, I was going to need to change the board (since I don’t want to increase the size of the final product). So I went after the dimensions of the 2.4 inch version and made the rectangle just to represent the space it would take up in the PCB schematic. A strange thing is that when I went to change the 3D model of the device , instead of changing it, it added another part to it. I had to overlap them so it wouldn’t look so weird there in EasyEDA. Here is the image of parameters"}, {"post_id": 26039, "ts": "2026-07-10T16:52:05Z", "hours": 1.2689, "text": "I was getting ready to start routing, but then I decided to take a quick look at the schematic again and check if the power supply and protection/best practices part of the circuit was all good. I consulted Perplexity and it suggested adding resistors and changing a capacitor on the EN pin of the ESP. I changed it from 100nF to 1uF and added a 10kΩ resistor along with it. I had already added resistors to the SDA and SCL pins and I don’t remember if I changed that.. I also looked up the data for the external components. The display and the battery. I wanted to make a 3D model to make it look better and to get an idea in the EasyEDA rendering. I searched for the display data on the site, on its manufacturer’s website but found nothing. So I googled it and the data came up on a site already known here and there it was fine, that must be it, I needed the thickness in this case ~15mm. Ah, and I hadn’t noticed that the footprint I made for the display was only for the screen, not the complete module. Then I realized it’s going to be bigger than one of the PCB dimensions I had in mind… It’s supposed to be like that, I hadn’t noticed but in the image I attached with the green arrow it shows that it’s 50x86mm"}, {"post_id": 24935, "ts": "2026-07-08T20:19:46Z", "hours": 1.1667, "text": "more for PCB"}, {"post_id": 24848, "ts": "2026-07-08T17:59:50Z", "hours": 1.25, "text": "Here I made some mistakes… I thought I had done the footprints, but after entering the 3D view/rendering of the PCB, I saw that there are only holes in the devices I made (these two in the attached images). I made some area that is seen as non-outline or something like that of the PCB. So I’ll have to fix that 😑 I also made an area on the board that will not have PCB material (FR-4) under the chip/module ESP antenna. This and the 15 mm keepout area around the antenna are to avoid interfering with Wi-Fi and Bluetooth connectivity ."}, {"post_id": 24636, "ts": "2026-07-08T11:08:13Z", "hours": 1.0189, "text": "I kept working on the PCB schematic . After tidying it up a bit, I decided to make a device and footprint for the battery I’m going to use. It’s kind of standardized with dimensions of 10x34x50 , A type with 2000mAh. That’s it, I made a rectangle of 84 by 165mm and put some holes 5mm away from the edges. I still need to figure out what type I’ll use, whether it’s countersunk or not. But either way, between 2.2 and 3mm ."}, {"post_id": 24419, "ts": "2026-07-07T23:26:18Z", "hours": 1.8364, "text": "I’m still working on the schematic… I was finishing organizing things and then messing around with the PCB design at the end . I’m going to call it PCB SCHEMATIC . Earlier I changed the display to a 2.8 inch one because I realized it was going to be too big, and the style I’m going for is kind of like this Casio ClassWiz Here in the attached images are the drawings of the device and footprint ."}, {"post_id": 23722, "ts": "2026-07-06T20:42:28Z", "hours": 1.9294, "text": "Here I tried to fix the NETs of the components and connections. I looked for the datasheets of the devices I’m using (it was easy since I just had to go back to LCSC with the Part Numbers , and on its page, the datasheet is already there ). I downloaded them, some in English, others in Asian languages (I think if I remember correctly there was only Mandarin and Korean). I uploaded them to NotebookLM, and it gave me an overview of how things worked and pin data, that kind of stuff . I saw that I had done some things wrong yesterday, so I had to fix the labels and that kind of stuff."}, {"post_id": 22336, "ts": "2026-07-04T19:13:23Z", "hours": 2.0931, "text": "I created another device—just to simulate the 3.5 LCD display I found on AliExpress. After doing some research and looking at other options, I decided against using Seeed’s S3 Sense. It comes with an OV2640 camera, but I’m going to use an external OV5640 module instead—a 5MP one I bought along with the other two . I did some research, checked out components and versions in the LCSC library , verified a few things with Perplexity, and added the items to the schematic. It’s still pretty messy, but I’ll clean it up, organize it, and get the NET’s sorted out later."}, {"post_id": 21583, "ts": "2026-07-03T16:47:05Z", "hours": 0.7672, "text": "Well, I started this project here… the idea I had was to make a node that is a ‘calculator’ from scratch. I’m not exactly sure if I’ll include multiple buttons or common functions in it, because the difference with this one is having access to the AI API, and I’m also thinking about adding Wolfram Alpha. It’s going to have a camera to take a picture of the equation, send it to the API, and it returns an image of the solution. It connects to Wi-Fi and sends the data to a server where it’s processed, formatted in LaTeX, and then returns the image. So I started by putting the components in the EasyEDA schematic and created a simple device that was supposed to be the Seeed Xiao ESP32 S3"}]...
|
Title: ∇Calc by @EngThi | Stardance
Devlogs:
Well Title: ∇Calc by @EngThi | Stardance
Devlogs:
Well, I started this project here… the idea I had was to make a node that is a ‘calculator’ from scratch. I’m not exactly sure if I’ll include multiple buttons or common functions in it, because the difference with this one is having access to the AI API, and I’m also thinking about adding Wolfram Alpha. It’s going to have a camera to take a picture of the equation, send it to the API, and it returns an image of the solution. It connects to Wi-Fi and sends the data to a server where it’s processed, formatted in LaTeX, and then returns the image. So I started by putting the components in the EasyEDA schematic and created a simple device that was supposed to be the Seeed Xiao ESP32 S3
I created another device—just to simulate the 3.5 LCD display I found on AliExpress. After doing some research and looking at other options, I decided against using Seeed’s S3 Sense. It comes with an OV2640 camera, but I’m going to use an external OV5640 module instead—a 5MP one I bought along with the other two . I did some research, checked out components and versions in the LCSC library , verified a few things with Perplexity, and added the items to the schematic. It’s still pretty messy, but I’ll clean it up, organize it, and get the NET’s sorted out later.
Here I tried to fix the NETs of the components and connections. I looked for the datasheets of the devices I’m using (it was easy since I just had to go back to LCSC with the Part Numbers , and on its page, the datasheet is already there ). I downloaded them, some in English, others in Asian languages (I think if I remember correctly there was only Mandarin and Korean). I uploaded them to NotebookLM, and it gave me an overview of how things worked and pin data, that kind of stuff . I saw that I had done some things wrong yesterday, so I had to fix the labels and that kind of stuff.
I’m still working on the schematic… I was finishing organizing things and then messing around with the PCB design at the end . I’m going to call it PCB SCHEMATIC . Earlier I changed the display to a 2.8 inch one because I realized it was going to be too big, and the style I’m going for is kind of like this Casio ClassWiz Here in the attached images are the drawings of the device and footprint .
I kept working on the PCB schematic . After tidying it up a bit, I decided to make a device and footprint for the battery I’m going to use. It’s kind of standardized with dimensions of 10x34x50 , A type with 2000mAh. That’s it, I made a rectangle of 84 by 165mm and put some holes 5mm away from the edges. I still need to figure out what type I’ll use, whether it’s countersunk or not. But either way, between 2.2 and 3mm .
Here I made some mistakes… I thought I had done the footprints, but after entering the 3D view/rendering of the PCB, I saw that there are only holes in the devices I made (these two in the attached images). I made some area that is seen as non-outline or something like that of the PCB. So I’ll have to fix that 😑 I also made an area on the board that will not have PCB material (FR-4) under the chip/module ESP antenna. This and the 15 mm keepout area around the antenna are to avoid interfering with Wi-Fi and Bluetooth connectivity .
more for PCB
I was getting ready to start routing, but then I decided to take a quick look at the schematic again and check if the power supply and protection/best practices part of the circuit was all good. I consulted Perplexity and it suggested adding resistors and changing a capacitor on the EN pin of the ESP. I changed it from 100nF to 1uF and added a 10kΩ resistor along with it. I had already added resistors to the SDA and SCL pins and I don’t remember if I changed that.. I also looked up the data for the external components. The display and the battery. I wanted to make a 3D model to make it look better and to get an idea in the EasyEDA rendering. I searched for the display data on the site, on its manufacturer’s website but found nothing. So I googled it and the data came up on a site already known here and there it was fine, that must be it, I needed the thickness in this case ~15mm. Ah, and I hadn’t noticed that the footprint I made for the display was only for the screen, not the complete module. Then I realized it’s going to be bigger than one of the PCB dimensions I had in mind… It’s supposed to be like that, I hadn’t noticed but in the image I attached with the green arrow it shows that it’s 50x86mm
As I said, I didn’t see the dimensions of the full PCB for the 2.8 inch version , and because of that, I was going to need to change the board (since I don’t want to increase the size of the final product). So I went after the dimensions of the 2.4 inch version and made the rectangle just to represent the space it would take up in the PCB schematic. A strange thing is that when I went to change the 3D model of the device , instead of changing it, it added another part to it. I had to overlap them so it wouldn’t look so weird there in EasyEDA. Here is the image of parameters
I finished tweaking a few more things in the PCB schematic and getting it ready to export a STEP to use as a base in Onshape. Actually, I made the display way too big, standardized at 10 or 15mm, but it should be something like ~2.8mm . The thing is, when I was moving some items around, it ended up moving the Board Outline too, even though I didn’t select it… so I locked it to prevent that from happening, and I’ve already done the same in Onshape . Now I’ll start on the case and then come back to routing
I was supposed to post yesterday but my uncles came over and I didn’t get back to it at night here I’ve pretty much done the part that holds the PCB . The shell , I recessed inside it, and in the other picture you can see I made an Assembly to see how it was coming along and to have an idea of where the screw holes for the PCB are, and later what I should do on the case. I haven’t done this yet, but you can see some Mate Connectors in the picture of the case alone (the light blue, slightly grayish part) . I tried to make the holes, but the sketch planes and flat planes were on the top face and I couldn't make the holes . I spent some time trying that. I don’t know, but probably if I make a sketch on the bottom of the case I can make the holes. That’s it, 3D for EasyEDA , I’ve already fixed it in Onshape and I’m doing well with the case part. 🫡🙂
Well, what I kept working on was the case. I was thinking that the right way is to make three separate parts: the back part where a phone case fits (thinking in this case), the front part where there are holes for the display, keys/buttons, etc., and the sliding cover with the tracks. This one, when using a normal calculator, usually fits on the back of the body and when not, it fits on the front, storing and protecting the screen. In my ideas, I asked Gemini to generate these images to help me clarify my thoughts and development. It turned out good! Another thing is that I noticed the display PCB module isn’t centered relative to the screen at all. Because of this, due to the width of the PCB and the case ending up close to the display module, it can’t be centered since there’s little free area for horizontal movement and the board would already touch the case walls. I made this 3D model to see roughly how it would look, and it looked weird. Not too much, but… The thing is, I usually do some stylizations, drawings, stuff like that. It would be possible to put a solar panel there, yeah, but I’m not going to go back much to that part of the EDA and rethink the system, mechanics, and circuit logic.
I switched the MCP MCP23017 to a QFN type. I realized that in the end, everything was most likely going to be pretty big. The final product thickness is around 15mm or more. So now I’m studying and researching to change the components, organization, and then properly design the mechanics in CAD/case so everything stays stable. I didn’t really know the display dimensions. Some are kind of generic, with chip data/technical specifications giving a certain thickness, but most don’t have thickness. Looks like I’ll have to message the Aliexpress seller to get the exact data… I feel way more lost than I should. It’s annoying because I had already thought a bit at the start and there wasn’t supposed to be so many reconstructions/pivots in the project.
I added a few more components. The thing is, I’m preparing how I’m going to connect the keyboard/MCP of the keys to the circuit, and for that, I’m going to use an FPC for it and other LDO parts. Parts that deal with inductance/decoupling and protection of the circuit components. I had to research and really look into things, and I’m already checking to find a module/version of the OV5640 with DVP FPC . I had to keep changing and reviewing the practical use of the components and kind of the electrical **‘needs’ **of the setup.
organizing schematics Here are the schematic pages I’m organizing: 01_SYSTEM_MCU , 02_POWER_USB , 03_KEYPAD_IO , 04_DISPLAY_STORAGE , Actually, I’m still missing one more schematic image: 05_CAMERA_TBD . It seems only four images are allowed per devlog. That’s it—trying to follow a logical organization, with a left-to-right flow and the power sections included :|
As I said, I was going to send a message to the sellers, but I procrastinated, and by the time I sent it, it was already the weekend there. The sellers are Chinese, so their time zone is 11 hours ahead. Actually, it’s already Monday there now, so I think there’s no need to resend the message since mine is already in the queue (I hope…). Anyway, I messed around a bit more, organized the schematics a little better, added a few things, and thought about, more or less, how the items could/should be distributed on the PCB, so I did that with the images. So, this whole size isn’t totally necessary. It will help when routing, but there really aren’t any problems with that. What I might do is remove the part where the display goes since it will be securely framed in the future case. They sent the link to the display manual
What I changed At the top, there’s the 2x11 header for the ArduCAM module—you just need to plug it in. I also added a few more devices (actually kind of switched around their positions and values). I hadn’t shown it before, but I imported this 3D model and linked it to the display device . I did a general cleanup and a lot more research , tests , t hings like that . I’m doing kinda okay. I kept waiting for the sellers to respond to me. But I didn’t get much, I could only get one reply per day. I would send messages there, but it was like 11hrs over there, outside their working hours. A lot of time for nothing… Also, that display manual/datasheet didn’t come with the dimensions of the display assembly, like the total height and the screen size I needed. I found it on a website, and it said 6mm, so I left that to do the 3D design to import the STEP as a 3D model. Another seller said they didn’t have the manufacturer’s data I needed for the camera to check the dimensions and the bus. I wanted one that was 3.3V , and usually it’s the common 22 or 24 pins. But random ones from Aliexpress can easily change something in the pinout or order, which breaks everything. Here I’m kind of developing the project blindly . It has to be a really precise version, and that’s difficult… I think I’m going to go with the ArduCam module. It’s not small or as modular as others, but for my case it’s probably okay. (until now YES)
I was researching, looking at some more DOCS and just tidying up the last bits to start routing. I used Perplexity for some research and to cross-check data and see the trace widths for the NETs. I put DRC rules, so it’s much easier to work, because when you activate routing on a NET it automatically sets that thickness and rules in the project. I routed these more critical parts, power, data, a bit of the display part and stuff like that. Even with plenty of space, it already got a bit messy. This is my third board, so I’m still not that experienced with it. But this is the way to go. Most likely I won’t have to go back and change components. I just need to finish routing , think about the case and its mechanics What annoys me the most is having to return/exchange a component or it not being what I expect. In the case of marketplace sales, stores like Aliexpress
I kept routing. I made the port expander matrix (the one on the FPC in the center left), the header for the camera, and practically all the ESP pins I’m still thinking about tidying it up a bit to reduce the number of traces going into the antenna area. There have to be traces coming there, it’s already acceptable as it is, but I will optimize… That’s kind of it.
I’m back… I won’t be able to be very active here due to classes and coursework. I spent a good few hours working on this, but when I checked, it only showed 23 minutes… Maybe I linked the hours to the project incorrectly. Actually, there’s a file with the same name plus “_copy” at the end, and I thought I was already working on the right one. Well, I actually finished the routing. It turned out there were some copper islands that weren’t connecting to the rest of the pour, so I had to route them too. But to me, some of the ones flagging routing errors (showing ratsnests) didn’t look isolated and should have been able to join the copper plane. Oh well. The center ended up looking messy; that’s where the components—and consequently the traces—are concentrated. I’ll probably have to find a way to optimize and work on that. Plus, there are 39 DRC errors now… I hope I can submit this project; I’ve already done two others, but the deadline unfortunately ran out while I was optimizing things, addressing review comments, and dealing with components and budget issues. Oh, the way development work and hardware projects are recorded has also changed; now there are timelapses available here on Lapse : Lapse Lapse Lapse Lapse
Finally the errors disappeared… it turns out you had the custom DRC rules that I set. Then, like 2 or 3 NETs had thickness rules that couldn’t be followed because QFN components and the VSON package type have pads really close to each other (pitch) , so there was no way to route 0.8mm traces on components with, like, 0.4mm pitch . Obviously, you had to reduce it to make it work, but I didn’t know by how much and whether it might be wrong at some point, cause problems, or lower the PCB’s lifespan. 😶 I figured out how to change the rules and get things fixed and done. Man, I think I should review it again and really check some automatic NETs from the editor. After all these days without touching this, I noticed there were these NETs without descriptive names . I don’t remember if it’s because I didn’t assign a NET, or if it’s just that connection between those pins or something like that. But overall it’s going to be easy. I really hope SO MUCH! Lapse Lapse
Well, I tweaked the PCB design just a little more. Actually, very little—I was just seeing if there was a way to handle the USB traces since these two NETs were 170mm and had a lot of vias . The center already had the other components and trace routing, so I guess there wasn’t much to do. And honestly, I’m not experienced, so I don’t know how to make these things better . Along with that, there’s roughly an idea of how the project case will look and the items I had already been working on.
Well, things were already going pretty well. Basically, I messed around a bit with the routes since the camera pins would be placed behind the PCB, like on the bottom. Then I changed the header layer and rerouted it. Now I managed to remove the header from the 3D preview (since the header was used to make the holes and get an idea of the position of the Arducam pin rows). When I have it in hand, I’ll solder everything directly onto the board. I was messing around a bit with other things too, in the firmware, doing research, checking data, etc. I used ChatGPT for that and even Antigravity. Then I moved forward with some things, checked, asked about the case. The thing is, I’m busy (or I should be) and couldn’t really do sessions and things of the project that I was working on to save. And then I really ended up forgetting to make the Lapses… a lot of times it was gradual work, bit by bit, and sometimes I’d go a while without touching it because I depended on my parents to call me or something like that, a pause. As far as I remember, I used to be able to edit the Lapses before, but I think it’s better to do it directly. All of this wasn’t just 17 minutes! I realized that there was a WakaTime extension for EasyEDA and Onshape. At the time (~ about 5 months ago) I didn’t know about Lapse or anything like that and ended up using this. I ended up creating more than one project to test things out, run tests, and see other people’s implementations. And it turned out they came out with very similar names and all. I didn’t remember the name anymore and I think I synced a few incorrectly. I fragmented the time. BUT REALLY MOST OF IT WAS BECAUSE I DIDN’T RECORD, ETC. I think you can add like 3 more hours
I made some changes and was researching a raw version with the OV5640 . To make it a more controlled and integrated work, and thinking about reducing it and making the aesthetics of the project look more like what it really is, reducing the thickness, I changed and added a lot of other components and I’m starting to organize them to be on the Bottom Layer. I need more LDOs , capacitors , and resistors . Simple, right? The passives and ‘controllers’ for electricity, current, voltage, etc. I’m not really knowing much about the impedance part, so I use ChatGPT to guide me, teach things, and think about the structure of the project, the PCB… Lapse: Lapse
I’ve practically finished the new schematic for the raw camera version. I managed to tidy up and properly organize the layout for this new part. First, I looked over it to see what I could add and prepare in positioning the new components for routing. The camera I left is one that uses an FPC connector . I’ve already put this item in place, arranged it with LDOs , translators , and controllers . Basically, it’s about handling the signals, how they occur, to make them compatible with the module I took and the rest of what I had already prepared. It got a bit messy because I really need to see how to place each item, and I wanted to make use of a large part of the general layout from the other PCB version … lapse
Well, what happened. I went to check the price of the PCB – in this case, when exporting the GERBER it showed a price and it was pretty expensive, $33! The other 3 boards I made were within the 100x100 size and, if I’m not mistaken, the most expensive one was listed at $7. Here I’m kind of making different versions and testing, experimenting with what happens with certain configurations (size, traces, layers, type of components, price,…). I was putting it off and taking my time because I wanted to use what I had from the other one, but then I decided to start routing from scratch.
I routed a lot more! I tried, tried to optimize so I wouldn’t have to run traces on Inner1 , but it really wasn’t going to work. Partly because of the layout and distances of some ICs to the decoupling capacitors , practices for better signal quality . I forgot ( ) and it was already almost done , so I came here to post up to this point Lapse: Lapse
I finished placing the holes on the PCB. Actually, I had forgotten… I was focused on finishing and trying to deliver something more professional in the routing part that when I finished I was like "finally did it? Can I export the production files now?" and the happiness and rush of the moment made it happen . It wasn’t possible to perfectly align the holes and the thought I had because of the traces I needed to place on the PCB, so it stayed like this. Only the top-right one ended up ‘different’. Now it’s just finishing the PCB and fixing the firmware . I was already checking and testing a bit offline.
I had made a Variable Studio but I end up not using it and don’t remember much. I asked the AI for help since I’ve never really worked with this item and it seemed better for standardizing and putting something defined that is used constantly. But in the end, I remember the quota values and some calculations are simple. Here I did the rear and front parts of the case, I didn’t do the extrusion there but it’s more or less correct. I had been thinking, and as I said, I worked on an idea and previous version, so it was actually pretty easy for that.
I finished the rear shell for the case. I made some bosses for the PCB fitting. It’s noticeable that the top right one is misaligned. I mentioned before that it’s because the traces and components were occupying that space, and when I remodeled it to 84x85 , the hole slots didn’t go along—they got lost on the canvas . Later I remembered, organized, and figured out a way to put them like this. Only one ended up 'strange,' which is NOT a problem at all. I made the shell 1.8mm thick and also cut the slot for the camera. I left the keypad at 74x80 , making a 7x7 feature pattern . This still bugs me because it doesn’t look right and the logic seems to change… I just need more experience and general practice to be ready for different scenarios. Some parts went out of place, but it’s just a matter of testing measurements until it works and maybe checking some guide videos on how to use this feature correctly . Lapse
What happened with the keypad being wrong was that in the sketch I dimensioned it incorrectly (swapped height for width) , and that’s why some of the blocks went beyond the edges and weren’t symmetrical. I imagined that might be it and fixed it . I made a rectangle there thinking about maybe adding a simple lens protection for the camera. After that, a rough idea of the cover that is usually used to protect the front part. Besides that, just a simple fillet on the sides. I did that, but I admit I might change this idea and its overall shape . Once I have everything in hand, I’ll update it to have a proper enclosure . Lapse
I just tweaked the parts a little more and then went to the Assembly . The PCB step was 50MB and took a while to load, and then when I tried to insert it, it didn’t load everything right after choosing a square option with a symbol similar to the Part Studio one, but eventually it worked. I used some fastened mates to join the items, and since this isn’t constant and there are hollow parts where you want to center/place in a specific spot, the Mate Connector doesn’t apply, so I used something like the transform to select the piece. That’s how I kept going until I got here! In the middle of the work, I had to edit the Part Studio because some points differed from the positioning and mounted parts of the PCB , like the USB and microSD . That’s it—work, found mistakes, fix them, and move forward! Lapse
I finished working on a few more things in the Assembly . I was aligning the cut positions in the view (remove extrude) and it took a while because the Mates , Fastened Mates created kind of restrictions that didn’t allow certain parts to move. Also put the 3D for the display. Then at the end I made the first commit to the repo! Lapse
I started looking more closely at the firmware part ! Actually, I’ve never worked with ESP-IDF, so I’m going to take another good look at it and refresh myself on things I might not be prepared enough for. I grabbed it to check out and study with the example code "Blynk Led" —the one in the picture is a different one. It’s to control the internal LED with the BOOT button. I’ve seen a bit, and RTOS seems really cool, here it’s FreeRTOS . But you need to pay attention and be aware, understand how things work. I feel like it’s going to be a long and tough road… but let’s go! The good thing is that we have AI to help us out and clarify points, test stuff , and so on.
I got started at the base and analyzed the HAL (Hardware Abstraction Layer) of the project. I was studying some things, basically the functions and how to use the framework . I noticed that the functions are pretty standardized, like how to use registers, handle addressing, and use macros , directives/variables . Basically, the headers I was going to use and docs and things like that I was checking out, now speaking exclusively about the Aliexpress display that was in Mandarin (some of the ones I saw while researching) and offline I was tinkering and looking at some things, asking AI to explain and check things to move forward . I got the variant I was going to use, and later on it got analyzed and the board_pins.h ended up fine. I also started messing with the keypad, just defining it and later on how to monitor and use the identifiers of each key .
I made a lot more progress on the firmware !! As I said, the functions , declarations , and general use of the ESP-IDF are standardized , so it’s simple to build by consulting materials: docs, example codes, usage with some peripherals and components, AI , etc. In this case, the use of I2C and SPI communication is also well organized. The drivers for the components I use don’t give you headaches for this. Previously, we had already been working on the ‘macros’ part, or rather the project HAL , even without knowing what it was. In the second image, there’s the keymap, made as a 7x7 matrix for the calculator - what the keys do. That’s already connected to the names of each key . The scanning was done, a loop that identifies which keys were used, and the rendering of the items on the display . Taking the data buffers and transitioning the communication with the ESP about what was pressed and how it will relay that to the screen. I think it’s interesting to mention: Explaining how key reading works with the MCP: each key is assigned by the matrix indices - row x column. The columns are set up with internal pull-up resistors, so when inactive they measure 3.3V (level 1). The ESP pulls the row to 0V (level 0), and when a key is pressed, it knows it because it reads !=0 from the column and matches it with the row it’s accessing to get the unique identifier for that key. That way you know 100% for sure what was pressed. And this cycle keeps running every few milliseconds.
I’m done here! The two files we worked on are finished. Now we have the initializer and use of the MCP23017 (I’ll just write MCP from now on in this log) . The addresses have been mapped and the registers too. You can see what happens along with the logic of keeping the line in the LOW state and the rest HIGH . In this part, it’s necessary to use masks and bitwise operations to see how it works. It stays in a loop analyzing what was pressed and, of course, if something strange happens outside the configuration, it throws an error saying UNKNOWN .
its possible only four images… I fiddled a bit more with these items, files 📁 , repo organization , stuff like that . Also, I took screenshots of some views from the project’s mechanical render … I’m not really focusing on any one part, but I tinker a bit here and if I remember something I should have done or think could be better, I take care of it. Like parts of the firmware, code, repo organization, images, and the internal side of the apps: CAD and EDA . Basically, that’s it, to sum up . I forgot to put the others Lapse
more docs things right these Well, I tidied up the README and organized the folders and file names better. The repo in general . The other image is because I think I didn’t show it properly here and I was reposting , checking items and analyzing anything left there on EasyEDA
almost ready to submit!!! Finished and I’m getting ready to submit the project for review! I took some new renders and also did the prices part for the project items. I have everything here now and it is looking nice. Like I said before, I left some points to see and change better on the case when I have everything in my hands, so I can prototype 🤖 it better. I don’t have much skill with soldering, so I really hope I can get the Top PCBA . This is all really cool and interesting that I was able to do, and I’m really happy about it. At the end I also organized things a little more and changed stuff to track what is needed in the repo , help anyone that wants to look at it or reproduce the project somehow. The System architecture section got really cool in the translation and organization, AI did that . I don’t really know how to make this type of diagram myself yet :/ I hope I didn’t forget anything and that the organization I made, and later asked to improve, documents the state well. Basically I: I finished organizing the repo, checking the prices, calculations , etc., taking screenshots , I kept iterating in the repo, editing, moving things , that kind of organization 🗂️
I’m back! Finalized the second PCB for the keys Well, yeah, I’m here again. I’m back, it’s been a while since I was away, right? I waited for things to settle down here so I could continue with the project. Yeah, and I finalized the idea of making a board on the second PCB there, where the buttons will be, you know, the clicks to use the calculator keys . And this here was kind of leftover code organization I was doing in the repository . I ended up not remembering everything from the project, but now I’m here again. So I’ll finish this up. It was pretty simple, I didn’t record it. But basically, I made a 7x7 matrix of switches , the buttons. Along with that, there’s the FPC connector to actually connect the board to the ribbon, to the rest of the MCP expander. I’m going to tidy it up a bit. The board also ended up being quite small 84x78 basically just to fit there, it would provide support and, you know, fit the switches at the distances that had already been predetermined in the case , right in the middle of the product’s housing. And then, along with that, the schematic is also simple, I just put an FPC connector , that’s all that’s really needed, and the buttons, the switches. Really simple. I think it’s interesting to mention (diodes & debounce): I was also going to use, you know, I was looking, people were saying, it’s good to use diodes , but just to kind of reduce debounce , fix certain issues, but it wouldn’t be that necessary, since the contacts closing would almost never happen like, I don’t know, three clicks at once, one next to the other. So that doesn’t really cause a problem where the ESP wouldn’t know exactly which key is being pressed and what it should do with the signal it’s receiving. And depending on how you study it and see how to handle it in the firmware , it actually wouldn’t even be that necessary to put these diodes on each of these buttons for that.
Keypad PCB done! Top & Bottom preview Now that I’ve finished, I’ve completed the PCB both images, the top and the bottom . I left the spaces for the M2 screws and already rotated everything, it was pretty easy! Basically, I kind of left an array, a 7x7 matrix . The keys would be more or less standardized and the only difference would be in the pad — like, in the rubber, the material that you press to trigger that key. That kind of thing. It turned out pretty nice. It’s simple, it’s actually simple to do this part, this kind of thing… That’s how it turned out. I’m not sure if I’ll tweak it much to add things like a D-pad or other types of keys for navigation, functions, the numeric keypad itself , that kind of stuff.
It’s kind of funny that I messed with this again, but basically this is a version where I repositioned the buttons and pins because, well, I decided the keys aren’t going to stay as a plain square matrix. So I kind of organized and divided things there to get a better idea of how the pins will be placed roughly around the center. On the top part, there’s sort of that D-pad area (not an actual single pad, but the individual buttons for that navigation). That circular button style you see on game controllers, handhelds , and on some other calculators too. I also moved the FPC connector over to the corner so it’s way easier and cleaner to connect everything up . On top of that, I rounded the board edges in this version. Overall, that was pretty much it! Lapse: Lapse
For now I’m working on the CAD ; I had finished the PCB. I put up a quick video of how it turned out I recorded it with Canva, which I’d used before for a school project, and it works. I even have the Spectacle app for Linux , but it records in 720p, which looks kind of bad, so recording it online through Canva ends up looking way better. Basically, it has the dimensions of part two , which I was rethinking and everything. And well, this was more or less the idea I had: there’s the front part for the buttons, and in this other version, it was supposed to have a passage for a circuit board to fit a small solar cell ☀️ . Depending on what I can find around the house and if there’s any leftover space in the casing (it’s pretty much ready), I might implement it even if it ends up mounted on the outside rather than inside the case, just for reuse and photovoltaic charging. Then I also put the back part together: the little hole for the camera 📷 , the slider for its protection, and on the side, the microSD card slot. The keymat for the buttons which I changed the layout of, so it’s not square anymore now has roughly the positions for all 49 keys and the holes where the support bosses will go. There’s also that little strip/rectangle, which is meant to be the protective cover fitting right into the other slot. Basically, that’s it! I’ll continue and tweak it later. It’s not too difficult, and I think it’ll be finished soon.
I just finished redoing the parts of the case the parts there and everything else in the project after this second round. This last one that was missing was from Part Studio 4 , which was the little slider drawer for camera privacy and protection on the back 🔒 , along with Part Studio 5 where I made the sliding lid/cover. Very, very simple. I also added some small slots there just to give it a nice tactile texture/grip — pretty small, with a 0.350 mm cut extrusion (removing material). That was kind of the piece I was still missing. It was simple and quick since I already had the basic idea from earlier attempts. Oh, and one thing I think I forgot to mention before: I imported .DXF files into the sketch to help guide the drawings, basically defining the extrusions for the parts. It turned out pretty good! To wrap up, I added what I had forgotten before: the mounting holes on the back cover bosses. Put 1.6mm holes there to hold the screws properly ⚙️ ....
|
1792806741.0958614
|
1793411541.0958614
|
|
69838
|
THE GAMES by @roshank | Stardance
|
roshank
|
1
|
19.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T14:01:38Z", "hours": 19.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’ve made a static website of the OG games that was most played since 2000 yr.", "repo": "https://github.com/roshan-12design/The-most11", "demo": "https://roshan-12design.github.io/The-most11/"}]...
|
[{"post_id": 79796, "ts": "202 [{"post_id": 79796, "ts": "2026-10-15T13:47:53Z", "hours": 19.4564, "text": "To change the hover animation in games card of flip."}]...
|
Title: THE GAMES by @roshank | Stardance
Devlogs: Title: THE GAMES by @roshank | Stardance
Devlogs:
To change the hover animation in games card of flip.
Ships:
I’ve made a static website of the OG games that was most played since 2000 yr....
|
1793008345.9846795
|
1793094745.9846795
|
|
69335
|
Water this Plant by @LeonOMO | Stardance
|
LeonOMO
|
0
|
1.59
|
0
|
[]
|
[{"post_id": 79804, "ts": "202 [{"post_id": 79804, "ts": "2026-10-15T13:58:00Z", "hours": 0.4, "text": "Devlog Water this Plant! #3. So i did make a case, well a very basic one and the problem right now is where should i put the usb c (esp32) and where the moisture sensor. Should i put them both at the front of the case? or maybe one at the front one at the back? well ill see till tomorrow."}, {"post_id": 79601, "ts": "2026-10-14T17:45:30Z", "hours": 0.7167, "text": "Devlog Water this Plant! #2. Made the Github and also the final referance in TinkerCAD the code is working and it seems to be looking good. This is maybe the final post software wise if i dont make a case or PCB."}, {"post_id": 79406, "ts": "2026-10-13T20:47:03Z", "hours": 0.4692, "text": "Devlog Water my Plant #1. I made the Firmware for it today based of someones datasheet. Next ill make a KiCad referance board well or like use TinkerCAD."}]...
|
Title: Water this Plant by @LeonOMO | Stardance
D Title: Water this Plant by @LeonOMO | Stardance
Devlogs:
Devlog Water my Plant #1. I made the Firmware for it today based of someones datasheet. Next ill make a KiCad referance board well or like use TinkerCAD.
Devlog Water this Plant! #2. Made the Github and also the final referance in TinkerCAD the code is working and it seems to be looking good. This is maybe the final post software wise if i dont make a case or PCB.
Devlog Water this Plant! #3. So i did make a case, well a very basic one and the problem right now is where should i put the usb c (esp32) and where the moisture sensor. Should i put them both at the front of the case? or maybe one at the front one at the back? well ill see till tomorrow....
|
1793130904.0219498
|
1793735704.0219498
|
|
69263
|
Trv7h's Launge by @Trv7h | Stardance
|
Trv7h
|
0
|
3.54
|
0
|
[]
|
[{"post_id": 79811, "ts": "202 [{"post_id": 79811, "ts": "2026-10-15T14:43:16Z", "hours": 0.5064, "text": "Devlog 2| 10/15/2026. loaded in a logo and added it next to the Website’s name. Used alt=”” so the name avoids repeating itself. Made a life changing discovery(flex-shrink) very simple that saves so much time, from fixing images being stretched or cropped."}, {"post_id": 79770, "ts": "2026-10-15T10:27:39Z", "hours": 3.0386, "text": "A personal website about me, my projects, and my interests. Added A web-fluid reactive background that waves when visitor scrolls. Added a project column that displays my custom made Minecraft skin in 3d and a mini picture-in-picture player that plays a preview of my favorite song"}]...
|
Title: Trv7h's Launge by @Trv7h | Stardance
D Title: Trv7h's Launge by @Trv7h | Stardance
Devlogs:
A personal website about me, my projects, and my interests. Added A web-fluid reactive background that waves when visitor scrolls. Added a project column that displays my custom made Minecraft skin in 3d and a mini picture-in-picture player that plays a preview of my favorite song
Devlog 2| 10/15/2026. loaded in a logo and added it next to the Website’s name. Used alt=”” so the name avoids repeating itself. Made a life changing discovery(flex-shrink) very simple that saves so much time, from fixing images being stretched or cropped....
|
1793130843.4647133
|
1793735643.4647133
|
|
69743
|
about me by @lollo22 | Stardance
|
lollo22
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T15:08:06Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal site with a lot of passion and cool things!. I’m proud to have reached this result and i hope ypu enjoy visiting my work. btw I love pingu.", "repo": "https://github.com/lorenzo22mercurio/personal_site", "demo": "https://lorenzo22mercurio.github.io/personal_site/"}]...
|
[{"post_id": 79813, "ts": "202 [{"post_id": 79813, "ts": "2026-10-15T14:58:32Z", "hours": 1.8803, "text": "about me site! pingu. noot noot."}]...
|
Title: about me by @lollo22 | Stardance
Devlogs:
Title: about me by @lollo22 | Stardance
Devlogs:
about me site! pingu. noot noot.
Ships:
I made a personal site with a lot of passion and cool things!. I’m proud to have reached this result and i hope ypu enjoy visiting my work. btw I love pingu....
|
1793008342.9053452
|
1793094742.9053452
|
|
61203
|
live elbow angle detection by @madheysh | Stardanc live elbow angle detection by @madheysh | Stardance...
|
madheysh
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T15:22:29Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "so my first serious python project working with camera feeds, it detects your elbow angle live and displays it on the top left corner. This took way more time than it should have (I didn’t know what mediapipe was at first) so yea, feel free to try this lil thing out ( also streamlit was a DRAG)", "repo": "https://github.com/Madheysh/Elbow-angles", "demo": "https://elbow-angles-fg5f7dpb8qpqsebeatmb4v.streamlit.app/"}]...
|
[{"post_id": 79816, "ts": "202 [{"post_id": 79816, "ts": "2026-10-15T15:06:15Z", "hours": 0.3331, "text": "got a live demo"}, {"post_id": 79037, "ts": "2026-10-12T13:46:20Z", "hours": 0.9381, "text": "its working (forgot to post this omg)"}, {"post_id": 66578, "ts": "2026-09-12T12:41:07Z", "hours": 5.0678, "text": "A code to detect my hands, and elbows, eventually displaying my elbow angles in the video i upload i wanted to detect elbows but for sume reason it detected hands???? i fixed it but what was that about"}]...
|
Title: live elbow angle detection by @madheysh | S Title: live elbow angle detection by @madheysh | Stardance
Devlogs:
A code to detect my hands, and elbows, eventually displaying my elbow angles in the video i upload i wanted to detect elbows but for sume reason it detected hands???? i fixed it but what was that about
its working (forgot to post this omg)
got a live demo
Ships:
so my first serious python project working with camera feeds, it detects your elbow angle live and displays it on the top left corner. This took way more time than it should have (I didn’t know what mediapipe was at first) so yea, feel free to try this lil thing out ( also streamlit was a DRAG)...
|
1793008244.4239113
|
1793094644.4239113
|
|
68972
|
WarioWare Game by @SadPlayer652523 | Stardance
|
SadPlayer652523
|
1
|
5.39
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-10T16:15:11Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "WarioWare-style game with 2 minigames. This is for testing purposes. This project is finished and will no longer be updated. Animations were hard, so I’m never doing any AnimationPlayer ever again.", "repo": "https://github.com/SadPlayer652523/Wario-Ware-Stardance", "demo": "https://sadplayer652523.itch.io/warioware-stardance"}]...
|
[{"post_id": 79822, "ts": "202 [{"post_id": 79822, "ts": "2026-10-15T15:21:35Z", "hours": 0.9161, "text": "I fixed what felt like 200 bugs today. It was just bug after bug. Minigame 4 done. Finally. Everything is complete."}, {"post_id": 79703, "ts": "2026-10-15T03:52:47Z", "hours": 2.1128, "text": "Crude minigame 4 added. Fixed many bugs. Timer showing x.y instead of x.y0 -> Fixed"}, {"post_id": 79373, "ts": "2026-10-13T18:21:56Z", "hours": 0.5656, "text": "v0.2 is out. Removed Animations from Minigame 1. Added Minigame 3: Clicker."}, {"post_id": 79366, "ts": "2026-10-13T17:35:09Z", "hours": 0.7944, "text": "Working on new minigames and bugfixes"}, {"post_id": 78366, "ts": "2026-10-10T16:01:39Z", "hours": 1.0106, "text": "The animations were so hard for no reason. Never working on this game ever again tbh. Definitely better things to do or animate."}]...
|
Title: WarioWare Game by @SadPlayer652523 | Starda Title: WarioWare Game by @SadPlayer652523 | Stardance
Devlogs:
The animations were so hard for no reason. Never working on this game ever again tbh. Definitely better things to do or animate.
Working on new minigames and bugfixes
v0.2 is out. Removed Animations from Minigame 1. Added Minigame 3: Clicker.
Crude minigame 4 added. Fixed many bugs. Timer showing x.y instead of x.y0 -> Fixed
I fixed what felt like 200 bugs today. It was just bug after bug. Minigame 4 done. Finally. Everything is complete.
Ships:
WarioWare-style game with 2 minigames. This is for testing purposes. This project is finished and will no longer be updated. Animations were hard, so I’m never doing any AnimationPlayer ever again....
|
1793062374.1013072
|
1793148774.1013072
|
|
69886
|
JT Sportsfest Website by @ahmadhassan | Stardance
|
ahmadhassan
|
1
|
30.0
|
73
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T16:43:55Z", "hours": 30.0, "multiplier": 7.29, "payout": 73, "blessing": "neutral", "text": "This is a website for my school’s sports event in which delegates can check rules of the sports and register their schools for the event.", "repo": "https://github.com/ahmad-56/jtsportsfest26", "demo": "https://lgsjtsportsfest.com"}]...
|
[{"post_id": 79831, "ts": "202 [{"post_id": 79831, "ts": "2026-10-15T15:47:19Z", "hours": 30.4494, "text": "JT Sportsfest Website"}]...
|
Title: JT Sportsfest Website by @ahmadhassan | Sta Title: JT Sportsfest Website by @ahmadhassan | Stardance
Devlogs:
JT Sportsfest Website
Ships:
This is a website for my school’s sports event in which delegates can check rules of the sports and register their schools for the event....
|
1793008474.6478522
|
1793094874.6478522
|
|
52418
|
ANK Bank - A virtual ATM by @najil_kilayil | Stard ANK Bank - A virtual ATM by @najil_kilayil | Stardance...
|
najil_kilayil
|
3
|
19.0
|
186
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T16:08:34Z", "hours": 4.0, "multiplier": 9.68, "payout": 41, "blessing": "neutral", "text": "This is a ATM virtual simulation using JavaScript, HTML and CSS. I coded this from scratch by my own! I created a blueprint of this project on papers as roughly with 18 frames. So i just created each by each frame and connect together! This project is created on the mindset that may helpful for kids who can practice how the ATM works, Its just simulation. Anyway you need to fill a form to enter the page note that the all data in that form such your name and security it doesn’t saved or transferred to anywhere. It is just used for the name and pin for the better experience. User can check the balance, withdraw and deposit money and even user can change its own PIN! I tried to give by maximum effort for making the user experience better for that i added the animations, and also made responsive that user can experience the website from both devices - Desktop and as well as mobile phone. I hope you will try my website and explore every corner of the website in mobile and as well as in desktop, Btw feel free to give suggestions!", "repo": "https://github.com/najilkilayil/ANK-bank", "demo": "https://ank-bank.vercel.app/"}, {"ship_num": 2, "ts": "2026-09-16T10:18:50Z", "hours": 8.0, "multiplier": 13.65, "payout": 108, "blessing": "neutral", "text": "This is a ATM virtual simulation using JavaScript, HTML and CSS. I coded this from scratch by my own! I created a blueprint of this project on papers as roughly with 18 frames. So i just created each by each frame and connect together! You can experience the real ATM Machine in your Browser , note that it is just simulation. At first you need to fill the form to continue the the website and to enter the ATM. Then you can explore options such balance, deposit, withdraw, and as well as you can change the PIN. Note that it doesn’t connect with localStorage or any cloud storage that you need to fill and submit the form each time you visit the website, i will work on that to make it local storage available. And note that i changed the entire website testing colours theme into a dark-shaded theme which give a realistic experience of a ATM. Hope you will go through my devlogs and code as well as explore all the features in my website and feel to free make suggestions!", "repo": "https://github.com/najilkilayil/ANK-bank", "demo": "https://ank-bank.vercel.app/"}, {"ship_num": 3, "ts": "2026-08-25T12:45:43Z", "hours": 7.0, "multiplier": 5.52, "payout": 37, "blessing": "neutral", "text": "This is a ATM virtual simulation using JavaScript, HTML and CSS. I coded this from scratch by my own! I created a blueprint of this project on papers as roughly with 18 frames. So i just created each by each frame and connect together! In this project user can experience as same as that of a ATM in your browser (NB: Need to register each time you open the website). Now it’s time to ship this project but note that i would like share my JS and implementing logics only I spend time on CSS! I would like hear your response and like hear what should i change and suggest me what should i do in CSS, Iam totally confused about CSS styling this project", "repo": "https://github.com/najilkilayil/ANK-bank", "demo": "https://ank-bank.vercel.app/"}]...
|
[{"post_id": 79832, "ts": "202 [{"post_id": 79832, "ts": "2026-10-15T15:49:42Z", "hours": 1.125, "text": "Devlog 2.3 - Frame 12 - 18 In Frame 12 , There is nothing extraordinary changes. Just aligned the whole texts into center and also increased the size of button as per made in other frames. In Frame 13 , I first made all texts into center then i feel like there are a lot space between the lines so tried solve that, I changed that by removing the margin top and margin bottom as well as the line spacing and line height. Btw i changed the button width as same others. In Frame 14 , In this frame i removed the default padding and margins and then restarted to arrange everything perfectly such as made to be aligned center and added margin top where was needed. Then also change the length of the button. In Frame 15 , There is no change which had removed this frame from main website. That for there is no change required but automatically it working perfectly on the mobile screens. In Frame 16 , Just aligned and made suitable change as per the same method that used in the previous frames. In Frame 17 , There is no change required since there is perfectly aligned already! In Frame 18 , It is very easy when sees but i tried to make it aligned as perfect centered it doesn’t working. I tried a lot of time and i found a cheap solution which had i adjust that using margin function! ##Now the UI design of the mobile responsive website is completed. But i found some bugs. Devlog 2.4 Now it’s time recheck that there is any bug or errors are occurring. First of all, i found a bug that only in desktop mode (in mobile screen it’s working perfectly) which is animation between two frames 3 and 4 are doesn’t working basic not showing. So i tried one by one each method and finally i found it! Then the animations is working perfectly. Then i would find any further bugs or errors in both screen. Then i noticed that the alert notification in mobile screen is seems to boring so i decide to change the fade-in and fade-out animation into transition of y axis from x axis. Now i think its time to reship the project!"}, {"post_id": 79757, "ts": "2026-10-15T09:12:58Z", "hours": 1.8514, "text": "Devlog 2.2 - Frame 5 - 11 Today i started to continue the project after a two week break! So started to working hardly to submit my project. I am working on making the project mobile responsive. I completed everything under frame 4, Now working from frame 5… In frame 5 , I would like to make more attractive and user friendly. For that i made the main option and welcome text in full screen with height and width 100%. That’s all i made change in this frame, Btw i also changed the line-height, i felt that the texts in the frame 5 are feeling like congested, so i increased the line-height through it. In frame 6 , I found a logical error, whereas the Dialpad is not showing since i changed the subsection display into none before on mobile responsive. I think why should i solve this using CSS function such :has and :not, I need to hide the subsection on the main menu so i used the if the frame contains the id that #menu_option it has to hide the subsection and similarly if not make the height of the main section and subsection in 3:2 ratio with 100% width. Then i increased the gap between the Dialpad and as well as the width of the buttons. In frame 7 , Now i am facing i huge logical error again i have no idea and i failed that i already implemented method. As before i managed the logical error of showing subsection and main section just by using has and not function in CSS and that time it still hiding in the all frame, in ratio 3:2, whereas the subsection is showing where the Dialpad is doesn’t help. After a long try i found a solution from the google (redit) by replacing a line in the script code. I added a line of code which in the function ‘balWindow()’ first declaring the that in innerHTML of the subsection into empty then hide it now it would working without any error!… After all i made the text aligned center and also increased the width of the button… In frame 8 , It is really simple there is no any logical error just increased the width of input and also removed the padding of the whole content and so there changed only! In Frame 9 , I aligned all the text into center and also increased the width and margin of the button. In the frame file (‘frame9.html’), it looks like as we expected but in the main website (‘index.html’) it doesn’t seems good. Since the Dialpad is not hiding after onwards the frame 8, After a detailed observation i found that the Dialpad is never hiding even when the main menu’s frame is came again. Anyway i solved the error by doing the same way that i did in frame 7. In Frame 10 , In this frame i thought that to make the ‘other’ button into 100% and make the others into grid form. Since when we exclude the other button the number of buttons become odd and seems a bad alignment, So i added another button with amount 3000. Now the alignment working perfectly. My next issue in this frame was that when the user clicks on the other button the whole view will moves upward. So i made the height into auto then unfortunately its working i don’t know what is actually happing in my code!! In Frame 11 , i just hide the showing Dialpad i mean the subsection and made the main section into full screen. simply adding that subsection.innerHTML into empty in the function ‘loadingWindow()’"}, {"post_id": 75233, "ts": "2026-09-29T15:24:23Z", "hours": 1.3094, "text": "Devlog 2.0 Today i am planning to make important change in the website. I found that, the website is looking bad and not working the UI properly in mobile screens. So i decided to make the website responsive and dynamic in mobile screens also as well as the desktop screens So let start to design the whole webpage again! Devlog 2.1 | Frame 1 - 5 First of all i made some research about making a webpage into a responsive one, and i found that we can simply edit the layout of the element according to screen width using @media function in CSS file. So i found that the maximum width of a mobile screen is 480px. So decided to adjust the @media function with screen width 480px. In frame 1, i doesn’t made any changes for the mobile screen. But in frame 2 i found that it doesn’t align the text exact that of the center of the screen height and width. And also find that the text typing animation is the issue regarding that! So i tried my maximum to solve that but unfortunately i couldn’t, So i decided to remove the animation in the mobile screen. In frame 3, Then i moved into next frame. I made the main div into 100% width and height that of the screen. Also made the input box into a little smaller than that of the 100% width. Similarly also changed the width of the button. In frame 4, I made everything exactly center to the whole screen. by making the layout position as absolute and then made top and left as 50% move. Solving Bugs and logical errors. I found a bug in the animation period on the mobile screen. It has been working perfectly until the animation between frames 3 & 4. I found that the fade-out animation of frame 3 is working perfectly but the fade-in animation of frame 4 is working but placing the frame at the very bottom-right side. After a huge think i created a id tag for a this special animation issue which has the issue for these two frames only. Then i connected them using JS now its working perfectly."}, {"post_id": 69068, "ts": "2026-09-16T09:58:48Z", "hours": 3.2153, "text": "Devlog 12 - Remaining frames Today i decided to work all the remaining frames, which is almost 10+ frames. But it seems to be easy because i already setted the theme and colour palette now i just need to change accordingly. In frame 8 , I changed the font-size and colour of the heading and also changed the almost everything that of input field. In frame 9 , there are 2 main heading 2 big digits text and a button. first of all, i changed the colours and text font-size of all 4 texts into different ones. and made the button as other buttons with text “Back to Menu”. In frame 10 , There one heading and 6 buttons. i made the buttons as same as others and made the “Other” button with another text colour and border colour if the user clicks on that it will appear an input field and as well as dialpad. In frame 11 , Just created and made a animation which is changeing the opacity, and letterspacing as well as scale of the text which makes more interesting for the user as it will give a sign that it is under processing… In frame 12 , this frame is styled as everything same as that of the frame 9. In frame 13 , this frame is also same as that of frame 9 but there is some changes in font size and colour of text since it is for failure that for used red-shade colour text. In frame 14 , In this frame made the input section and text more styled adn also removed the outline of the input box if the user focus on the input box. In frame 16 , It is just a text with green coloured as indicating successful and a button with caption ‘Back to Menu’. In frame 17 , It is text with ‘Quitting…’ i added animation for that text which is changing its opacity, and motion of y-axis. In frame 18 , This is the last frame of this project it is as shows as the conclusion of the project. I added a span tag in-between the text for changeing colour of ‘ANK’ only into blue. After all these the basic styling is completed! Final Changed I noticed that it is very boring and showing separately that the default js alert() is function to change that i decided to make more attractive and simple one. So i created another div called ‘error_alert’ which is similarly show up the notification at top-right of the screen when there is any error or alert occurs. I added showing animation which is changed the x-axis and opacity of the div and as well as the hideing animation. For make this dynamically i created a new function called ‘errorAlert()’ with one parameter which is function as this div is displayed with the text that in parameter whenever the function is called. And also made that it need to hide automatically after 3 seconds with hideing animation. Then i changed the alert() into errorAlert({text}) which made more interesting for the website and ATM simulation. Solving Bugs I found i bug that in the section ‘change PIN’ there is a major bug which is like these, if the user enters ‘2222’ in the first input field and ‘1111’ in the second one then the user clicks on the update button it will update the PIN as ‘2222’ but the conform PIN and entered PIN are not same after a detailed look through my JS code i found the error at the function updatePIN() then i solved that bug. Iam proud that i solved this bug without help any resources."}, {"post_id": 68700, "ts": "2026-09-15T15:50:26Z", "hours": 2.3792, "text": "Devlog 11 - Frame 5 & Frame 6 & Frame 7 In these days, i made a lot of changes in the project. I started to make the project more attractive and i need to be show up this project as 100% simulation design of ATM Machine. So i decided to use font-family of inter and selected a dark-shade background and theme for the whole project though out the entire project! In frame 5 , As we know this frame is the main frame and important frame which is showing the main options and homepage of this simulation. For that i changed the text interface into more useful and attractive. Currently the text at the top is just “Welcome, {username}” below that “{accountnumber}” just these only, which gives a normal and booring look and not much branding look. I need to make sure that to look and design like a branding project! For that i changed the text into like these “Welcome Back, {username}” then “{accountnumber}” below that i added another text “What would you like to do?”. At last for these texts i added different colour pattern and size according to text importance! then i spend time to work on the section of buttons, first of all i changed the texts from “Balance” into “Check Balance”, “Deposit” to “Deposit Money”, “Withdraw” to “Withdraw money” and “Quit” into “Exit”. As well as i changed the button background colour and border colours and removes the default border-radius and also added hovering animation which made the buttons more like a ATM. In frame 6 , I added another text below the current text and also changed the input box size and colour as well as the border and background colour and given the same button effects that of the main menu buttons (in frame 5). At there i added few more features - I updated pinInputFun() which is the user enters input with length of 4 letters then the dial-pad’s “Check” button will automatically highlights which the user can understand it time to enter that button and check the PIN. Then also removed the alert notification into that when the user enters wrong password the input password’s colour will change into red and then back to normal after 2 seconds. In frame 7 , I added another text below the current text and changed the button caption. And also designed the texts in different font size and font colour. and Addded the button style as in frame 5. NB: Tried out a lot of animations and styling ways to occur this output which wasted me a much time to spend on it and need to remove into trash :)"}, {"post_id": 60950, "ts": "2026-09-03T17:09:43Z", "hours": 2.2897, "text": "Lets continue on this project more! I decided to change the colours and themes into a single UI design. I choose dark blue colour and planned to remove bright colours such as yellow, green etc which makes the user more distraction from the website (not suitable for ATM Simulation). So lets redesign the whole webpage frame by frame again Devlog 10 - Frame 1 & Frame 2 & Frame 3 & Frame 4 First of all, i created a var css function of :root of colors i used in the website for making easy to reuse the color all over the website. In All over the website , I changed the white background into dark navy blue colour and sky-blue colour for basic normal text. And as well as i selected some font from google fonts . And i added a font name ‘Inter’ to the body for making the default font-family thought out the webpage. In frame 1 , I broke one line text into two line text and also removed the black background into default website background. And also changed the default font-family into ‘Segoe UI’ font-family which i had connected from google fonts. In frame 2 , I made the letters into uppercase which made the website heading more attractive and branding look! And as well as i changed the font into ‘Space Grotesk’. In frame 3 , I added a card effect to the whole section with a slight decreasing the darkness to the background colour. Changed the default input box colour into another colour that matches to the background and also given the colour to the border of input box when the user focus on that input box and also added :disabled condition to ensure and make identification to the user that it is un-editable by making the darkness in background colour of the input box. And also i added a fixed margin between texts and input boxes. Then i changed the submit button’s background colour into the default colour of the normal text which i saved in the :root function with white text. Btw, i also changed the text such as balance into initial balance and pin into security pin etc.. In frame 4 , As per the feedback i found that i made a lot of spelling mistaken in this frame. So i changed them into correct. Then i added the same background that i used in the frame 3 for the card. Then i added a successful tick mark icon at the top with green background with only using div tag. Then i changed the heading to ‘Account Created Successfully’ with a line break at before the text ‘Successfully’ which i had added span tag between them to change the colour of that word into green which gives more branding feel to the user! Then i added another sub-text below the heading. Then i created two cards one with holder name and another with account number. At last changed the animation that from appearing left and hiding to right into hiding and showing at right with ease-in-out function and also changed the animation time from 3s into 1.2s which made the animation more faster and furious!"}, {"post_id": 54406, "ts": "2026-08-25T12:24:25Z", "hours": 0.6292, "text": "Devlog 9 Created README.md file with i included the brief description. And also mentioned that need more to work on CSS! And also i included the use of each and main functions using table in md file . It is my first time ever using table in md file Also mentioned the details of each frame as in a table!"}, {"post_id": 54319, "ts": "2026-08-25T08:27:52Z", "hours": 0.4175, "text": "Devlog 8 - Frame 17 & Frame 18 In frame 17 , It will just a loading screen with text quiting… In frame 18 , It is page that will shows after frame 17. And It is the last frame of this project! when the user clicks on quit button from homepage menu it will trigger the function optQuit(), then it will show up the frame 17 for 2.5 second then it will show frame 18 as the last frame! After all i created a another function called loadingWindow() which is the frame 11. I called this function everywhere as a processing windows as loading screen for 2 second. Now the project has been completed but it just looks like a template and only backend project, i need to wokr on CSS file to make this project more attractive!"}, {"post_id": 54284, "ts": "2026-08-25T06:36:41Z", "hours": 0.7269, "text": "Devlog 7 - Frame 14 & Frame 16 In frame 14 , It is the window that shows the user when the user select Change PIN option from home page. Then the user need to enter the current PIN (frame 6) then it will show up the frame 14. There the user needs to enter new 4 digit PIN as well as need to conform that! In frame 16 , it is shows when the New pin and conform PIN are matching, This windows shows the user that PIN has been changed successfully with a button that direct to home page menu. In here i created a function optPIN() which will direct to enter the current PIN and then it direct to changePinWindo() it will shows up the frame 14 with a dial pad the user can enter new PIN using the dial pad. Then created changePinInputFun() with one parameter which will the clicked number will enter in the first input box. After the 4 digits in the first input box it will direct to next input box. After both input boxes attain 4 digit and matching digits it will show up the changePinSuccess() (frame 16). Otherwise users can also click the update button from the frame 14, that will trigger updatePIN(), it will do the same thing! After all PIN changing option is completed!"}, {"post_id": 53893, "ts": "2026-08-24T16:20:55Z", "hours": 1.4303, "text": "Devlog 6 - Frame 10 & Frame 11 & Frame 12 & Frame 13 In frame 10 , when the user clicks on withdraw button from the home page menu. First it will direct towards a PIN entering page (frame 6). Then if the user enters the PIN correctly then frame 10 will show up! In this frame the user can select few buttons with amount and also user can enter when the user clicks on custom button then it will show up a input that can user enter custom amount using the Dialpad. And added a same condition error as well as the deposit amount section. In frame 11 , It is just a loading frame with the text processing. I added this frame to add a time between the processing of the ATM! In frame 12 , In this frame will show up when the user withdraw the amount successfully. In this page it shows the amount user withdrawn and the balance after that and as well as there is button to back to the home page. In frame 13 , Similarly in this frame it will show up when withdraw is failed. I created a function called customAmountWindow() which will trigger when the user clicks on the button ‘other’ from the withdraw window. When this function triggers it show frame 10. And also created another function called withdrawAmount() with one parameter. It will check that the user entered amount is less than or equal to the current balance using if-else condition. If the user entered amount is greater than that of the current balance it will show up the frame 13 otherwise it will show the frame 12. Both frames had the back to home button. I also added this function trigger when the user using the buttons at frame 10 for fixed amount. Now withdraw section is Completed!"}, {"post_id": 53613, "ts": "2026-08-24T08:13:46Z", "hours": 1.1081, "text": "Devlog 5 - Frame 8 & Frame 9 In Frame 8 , it is the entering amount window of the deposit option but before accessing that need to verify the PIN so PIN entering screen (frame 6) before frame 8. created function optDepo() to view the keypad when user clicks deposit button from homepage. When user enters the PIN correctly it direct towards the exact frame 8 which is the window for the user can enter the amount to be deposited. So i created the dial with a function called moneyInputFun() with two parameters as same as the function pinInputFun(), thus moneyInputFun() helps the user to enter the amount using the Dialpad, In this window i also added a condition that only allows the user to enter x100 otherwise it shows an error for which i added, event dispatch when every button clicks, it may checks the error condition for each letter is clicks.! In frame 9 , It is the window that shows after the user enter the deposit money which shows the successful window that shows the amount that the user deposited and also the shows the balance amount. At last added button that direct towards the main menu After all deposit option is completed!"}, {"post_id": 52134, "ts": "2026-08-22T07:07:32Z", "hours": 0.7444, "text": "Devlog 4 - Frame 6 & Frame 7 In frame 6 , It is pin entering window which will allow or disallow the user for the next action based on the correct PIN or not! I am working on the balance btn, that for i created a function called ‘optBal()’ which will trigger when the user clicks on the balance button from the home page. On optBal() added Dialpad in sub-section to display it. I got an idea put this Dialpad function in a another function with a parameter, which may help to remove static coding for the future PIN entering window for other button actions. So i created a another function with two parameters one is to focus the which input is and another is which number is user pressed on Dialpad - ‘pinInputFun(Xinput, num)’ This is function is only tigger when the user clicks buttons on the dial pad! In frame 7 , It is the main window that shows the balance amount to the user. btw this window only shows when the user enter PIN correctly. For that in the pinInputFun() inside that another function called checkPin(), i added a another if condition if the user enters the password correctly it checks that which input it was because i thought use the pinInputFun() for all the Pin entering window, so the function need understand which function is to be triggered next. So that if the input is balance input then show the function showBal(). In showBal(), i designed simply without any much styling because now it is testing phase. btw i added a button with action showMenu() which will move to homepage!"}, {"post_id": 52109, "ts": "2026-08-22T05:59:30Z", "hours": 0.5069, "text": "Devlog 3 - Frame 5 Now iam working on Frame 5, which is the real interface of the ATM. At first i converted this whole page into main-section and sub-section with 3:2 width. In main-section i would like to display the text and options in ATM as main window, and in sub-section it only for keypad to enter values and numbers… So i created two section at frame5. In main window there is no need of keypad i hide sub-section. And also added to welcome with name of the user and below that i added account number then it will shows the buttons of function which are user can choose the options such as Balance, Deposit, Withdraw, Change PIN, Quit. I made whole this mainWindow in a function called ‘showMenu()’ which will help to call the homepage from everywhere in the future! And as well as, iam very lazy to type name, pin and conform each time i debugging or running the website again and again so i currently initialized each values."}, {"post_id": 52093, "ts": "2026-08-22T05:12:08Z", "hours": 0.6936, "text": "Devlog 2 - Frame 3 & Frame 4 Today, iam continue making frames one by one! So i added frame 3 which is the fill form of the user account with Form name, account number, initial balance amount and 4 digit PIN and conforming again PIN and a submit button.. I thought that the account number must random which is more attractive and realistic. otherwise the user need to enter something boring numbers. So i created function ‘AccountNum()’ which collect two type of digits, i mean i thought that there is a professional look in the account number So first bank code (“ANK”) then a 4 digit random number between 1000 and 1019 which is a model of user branch number and other 4 digit is section 1000 to 9999 which is unique for each user. Btw i added a perfect if else condition for the submit button on the form to make sure that the user entered all the values and made perfect. In frame 4, it is notification loading which will summarise the data the user entered in the fill form. It will hide automatically in 3 seconds."}, {"post_id": 51740, "ts": "2026-08-21T15:57:20Z", "hours": 0.3803, "text": "In this project iam planning to create a virtual simulation of ATM! using HTML, CSS and JavaScript, From BluePrint/Scratch I had plan for this project in my mind for few months. But now its the suitable time for that! On my free time, i planned the project roughly and noted everything and created my own blueprint with about 18 frames and i written whole plan as algorithm (As in my own words and shortform :) ). Devlog 1 - Frame 1 & Frame 2 Today i created files such as script.js, style.css and index.html and also a folder ‘frames’. I thought it would be easy to create frames one by one as matching to my blue print, so i decided to create each file as each frame then join together which make debugging and styling more easier. But my first time ever i coding by this approach. Btw, i completed first 2 frames which are both welcoming animation first is a warning animation like “Use desktop for better experience” and second is main welcoming to the project i also made animation with suitable hiding using a function welcomeLoad()"}]...
|
Title: ANK Bank - A virtual ATM by @najil_kilayil Title: ANK Bank - A virtual ATM by @najil_kilayil | Stardance
Devlogs:
In this project iam planning to create a virtual simulation of ATM! using HTML, CSS and JavaScript, From BluePrint/Scratch I had plan for this project in my mind for few months. But now its the suitable time for that! On my free time, i planned the project roughly and noted everything and created my own blueprint with about 18 frames and i written whole plan as algorithm (As in my own words and shortform :) ). Devlog 1 - Frame 1 & Frame 2 Today i created files such as script.js, style.css and index.html and also a folder ‘frames’. I thought it would be easy to create frames one by one as matching to my blue print, so i decided to create each file as each frame then join together which make debugging and styling more easier. But my first time ever i coding by this approach. Btw, i completed first 2 frames which are both welcoming animation first is a warning animation like “Use desktop for better experience” and second is main welcoming to the project i also made animation with suitable hiding using a function welcomeLoad()
Devlog 2 - Frame 3 & Frame 4 Today, iam continue making frames one by one! So i added frame 3 which is the fill form of the user account with Form name, account number, initial balance amount and 4 digit PIN and conforming again PIN and a submit button.. I thought that the account number must random which is more attractive and realistic. otherwise the user need to enter something boring numbers. So i created function ‘AccountNum()’ which collect two type of digits, i mean i thought that there is a professional look in the account number So first bank code (“ANK”) then a 4 digit random number between 1000 and 1019 which is a model of user branch number and other 4 digit is section 1000 to 9999 which is unique for each user. Btw i added a perfect if else condition for the submit button on the form to make sure that the user entered all the values and made perfect. In frame 4, it is notification loading which will summarise the data the user entered in the fill form. It will hide automatically in 3 seconds.
Devlog 3 - Frame 5 Now iam working on Frame 5, which is the real interface of the ATM. At first i converted this whole page into main-section and sub-section with 3:2 width. In main-section i would like to display the text and options in ATM as main window, and in sub-section it only for keypad to enter values and numbers… So i created two section at frame5. In main window there is no need of keypad i hide sub-section. And also added to welcome with name of the user and below that i added account number then it will shows the buttons of function which are user can choose the options such as Balance, Deposit, Withdraw, Change PIN, Quit. I made whole this mainWindow in a function called ‘showMenu()’ which will help to call the homepage from everywhere in the future! And as well as, iam very lazy to type name, pin and conform each time i debugging or running the website again and again so i currently initialized each values.
Devlog 4 - Frame 6 & Frame 7 In frame 6 , It is pin entering window which will allow or disallow the user for the next action based on the correct PIN or not! I am working on the balance btn, that for i created a function called ‘optBal()’ which will trigger when the user clicks on the balance button from the home page. On optBal() added Dialpad in sub-section to display it. I got an idea put this Dialpad function in a another function with a parameter, which may help to remove static coding for the future PIN entering window for other button actions. So i created a another function with two parameters one is to focus the which input is and another is which number is user pressed on Dialpad - ‘pinInputFun(Xinput, num)’ This is function is only tigger when the user clicks buttons on the dial pad! In frame 7 , It is the main window that shows the balance amount to the user. btw this window only shows when the user enter PIN correctly. For that in the pinInputFun() inside that another function called checkPin(), i added a another if condition if the user enters the password correctly it checks that which input it was because i thought use the pinInputFun() for all the Pin entering window, so the function need understand which function is to be triggered next. So that if the input is balance input then show the function showBal(). In showBal(), i designed simply without any much styling because now it is testing phase. btw i added a button with action showMenu() which will move to homepage!
Devlog 5 - Frame 8 & Frame 9 In Frame 8 , it is the entering amount window of the deposit option but before accessing that need to verify the PIN so PIN entering screen (frame 6) before frame 8. created function optDepo() to view the keypad when user clicks deposit button from homepage. When user enters the PIN correctly it direct towards the exact frame 8 which is the window for the user can enter the amount to be deposited. So i created the dial with a function called moneyInputFun() with two parameters as same as the function pinInputFun(), thus moneyInputFun() helps the user to enter the amount using the Dialpad, In this window i also added a condition that only allows the user to enter x100 otherwise it shows an error for which i added, event dispatch when every button clicks, it may checks the error condition for each letter is clicks.! In frame 9 , It is the window that shows after the user enter the deposit money which shows the successful window that shows the amount that the user deposited and also the shows the balance amount. At last added button that direct towards the main menu After all deposit option is completed!
Devlog 6 - Frame 10 & Frame 11 & Frame 12 & Frame 13 In frame 10 , when the user clicks on withdraw button from the home page menu. First it will direct towards a PIN entering page (frame 6). Then if the user enters the PIN correctly then frame 10 will show up! In this frame the user can select few buttons with amount and also user can enter when the user clicks on custom button then it will show up a input that can user enter custom amount using the Dialpad. And added a same condition error as well as the deposit amount section. In frame 11 , It is just a loading frame with the text processing. I added this frame to add a time between the processing of the ATM! In frame 12 , In this frame will show up when the user withdraw the amount successfully. In this page it shows the amount user withdrawn and the balance after that and as well as there is button to back to the home page. In frame 13 , Similarly in this frame it will show up when withdraw is failed. I created a function called customAmountWindow() which will trigger when the user clicks on the button ‘other’ from the withdraw window. When this function triggers it show frame 10. And also created another function called withdrawAmount() with one parameter. It will check that the user entered amount is less than or equal to the current balance using if-else condition. If the user entered amount is greater than that of the current balance it will show up the frame 13 otherwise it will show the frame 12. Both frames had the back to home button. I also added this function trigger when the user using the buttons at frame 10 for fixed amount. Now withdraw section is Completed!
Devlog 7 - Frame 14 & Frame 16 In frame 14 , It is the window that shows the user when the user select Change PIN option from home page. Then the user need to enter the current PIN (frame 6) then it will show up the frame 14. There the user needs to enter new 4 digit PIN as well as need to conform that! In frame 16 , it is shows when the New pin and conform PIN are matching, This windows shows the user that PIN has been changed successfully with a button that direct to home page menu. In here i created a function optPIN() which will direct to enter the current PIN and then it direct to changePinWindo() it will shows up the frame 14 with a dial pad the user can enter new PIN using the dial pad. Then created changePinInputFun() with one parameter which will the clicked number will enter in the first input box. After the 4 digits in the first input box it will direct to next input box. After both input boxes attain 4 digit and matching digits it will show up the changePinSuccess() (frame 16). Otherwise users can also click the update button from the frame 14, that will trigger updatePIN(), it will do the same thing! After all PIN changing option is completed!
Devlog 8 - Frame 17 & Frame 18 In frame 17 , It will just a loading screen with text quiting… In frame 18 , It is page that will shows after frame 17. And It is the last frame of this project! when the user clicks on quit button from homepage menu it will trigger the function optQuit(), then it will show up the frame 17 for 2.5 second then it will show frame 18 as the last frame! After all i created a another function called loadingWindow() which is the frame 11. I called this function everywhere as a processing windows as loading screen for 2 second. Now the project has been completed but it just looks like a template and only backend project, i need to wokr on CSS file to make this project more attractive!
Devlog 9 Created README.md file with i included the brief description. And also mentioned that need more to work on CSS! And also i included the use of each and main functions using table in md file . It is my first time ever using table in md file Also mentioned the details of each frame as in a table!
Lets continue on this project more! I decided to change the colours and themes into a single UI design. I choose dark blue colour and planned to remove bright colours such as yellow, green etc which makes the user more distraction from the website (not suitable for ATM Simulation). So lets redesign the whole webpage frame by frame again Devlog 10 - Frame 1 & Frame 2 & Frame 3 & Frame 4 First of all, i created a var css function of :root of colors i used in the website for making easy to reuse the color all over the website. In All over the website , I changed the white background into dark navy blue colour and sky-blue colour for basic normal text. And as well as i selected some font from google fonts . And i added a font name ‘Inter’ to the body for making the default font-family thought out the webpage. In frame 1 , I broke one line text into two line text and also removed the black background into default website background. And also changed the default font-family into ‘Segoe UI’ font-family which i had connected from google fonts. In frame 2 , I made the letters into uppercase which made the website heading more attractive and branding look! And as well as i changed the font into ‘Space Grotesk’. In frame 3 , I added a card effect to the whole section with a slight decreasing the darkness to the background colour. Changed the default input box colour into another colour that matches to the background and also given the colour to the border of input box when the user focus on that input box and also added :disabled condition to ensure and make identification to the user that it is un-editable by making the darkness in background colour of the input box. And also i added a fixed margin between texts and input boxes. Then i changed the submit button’s background colour into the default colour of the normal text which i saved in the :root function with white text. Btw, i also changed the text such as balance into initial balance and pin into security pin etc.. In frame 4 , As per the feedback i found that i made a lot of spelling mistaken in this frame. So i changed them into correct. Then i added the same background that i used in the frame 3 for the card. Then i added a successful tick mark icon at the top with green background with only using div tag. Then i changed the heading to ‘Account Created Successfully’ with a line break at before the text ‘Successfully’ which i had added span tag between them to change the colour of that word into green which gives more branding feel to the user! Then i added another sub-text below the heading. Then i created two cards one with holder name and another with account number. At last changed the animation that from appearing left and hiding to right into hiding and showing at right with ease-in-out function and also changed the animation time from 3s into 1.2s which made the animation more faster and furious!
Devlog 11 - Frame 5 & Frame 6 & Frame 7 In these days, i made a lot of changes in the project. I started to make the project more attractive and i need to be show up this project as 100% simulation design of ATM Machine. So i decided to use font-family of inter and selected a dark-shade background and theme for the whole project though out the entire project! In frame 5 , As we know this frame is the main frame and important frame which is showing the main options and homepage of this simulation. For that i changed the text interface into more useful and attractive. Currently the text at the top is just “Welcome, {username}” below that “{accountnumber}” just these only, which gives a normal and booring look and not much branding look. I need to make sure that to look and design like a branding project! For that i changed the text into like these “Welcome Back, {username}” then “{accountnumber}” below that i added another text “What would you like to do?”. At last for these texts i added different colour pattern and size according to text importance! then i spend time to work on the section of buttons, first of all i changed the texts from “Balance” into “Check Balance”, “Deposit” to “Deposit Money”, “Withdraw” to “Withdraw money” and “Quit” into “Exit”. As well as i changed the button background colour and border colours and removes the default border-radius and also added hovering animation which made the buttons more like a ATM. In frame 6 , I added another text below the current text and also changed the input box size and colour as well as the border and background colour and given the same button effects that of the main menu buttons (in frame 5). At there i added few more features - I updated pinInputFun() which is the user enters input with length of 4 letters then the dial-pad’s “Check” button will automatically highlights which the user can understand it time to enter that button and check the PIN. Then also removed the alert notification into that when the user enters wrong password the input password’s colour will change into red and then back to normal after 2 seconds. In frame 7 , I added another text below the current text and changed the button caption. And also designed the texts in different font size and font colour. and Addded the button style as in frame 5. NB: Tried out a lot of animations and styling ways to occur this output which wasted me a much time to spend on it and need to remove into trash :)
Devlog 12 - Remaining frames Today i decided to work all the remaining frames, which is almost 10+ frames. But it seems to be easy because i already setted the theme and colour palette now i just need to change accordingly. In frame 8 , I changed the font-size and colour of the heading and also changed the almost everything that of input field. In frame 9 , there are 2 main heading 2 big digits text and a button. first of all, i changed the colours and text font-size of all 4 texts into different ones. and made the button as other buttons with text “Back to Menu”. In frame 10 , There one heading and 6 buttons. i made the buttons as same as others and made the “Other” button with another text colour and border colour if the user clicks on that it will appear an input field and as well as dialpad. In frame 11 , Just created and made a animation which is changeing the opacity, and letterspacing as well as scale of the text which makes more interesting for the user as it will give a sign that it is under processing… In frame 12 , this frame is styled as everything same as that of the frame 9. In frame 13 , this frame is also same as that of frame 9 but there is some changes in font size and colour of text since it is for failure that for used red-shade colour text. In frame 14 , In this frame made the input section and text more styled adn also removed the outline of the input box if the user focus on the input box. In frame 16 , It is just a text with green coloured as indicating successful and a button with caption ‘Back to Menu’. In frame 17 , It is text with ‘Quitting…’ i added animation for that text which is changing its opacity, and motion of y-axis. In frame 18 , This is the last frame of this project it is as shows as the conclusion of the project. I added a span tag in-between the text for changeing colour of ‘ANK’ only into blue. After all these the basic styling is completed! Final Changed I noticed that it is very boring and showing separately that the default js alert() is function to change that i decided to make more attractive and simple one. So i created another div called ‘error_alert’ which is similarly show up the notification at top-right of the screen when there is any error or alert occurs. I added showing animation which is changed the x-axis and opacity of the div and as well as the hideing animation. For make this dynamically i created a new function called ‘errorAlert()’ with one parameter which is function as this div is displayed with the text that in parameter whenever the function is called. And also made that it need to hide automatically after 3 seconds with hideing animation. Then i changed the alert() into errorAlert({text}) which made more interesting for the website and ATM simulation. Solving Bugs I found i bug that in the section ‘change PIN’ there is a major bug which is like these, if the user enters ‘2222’ in the first input field and ‘1111’ in the second one then the user clicks on the update button it will update the PIN as ‘2222’ but the conform PIN and entered PIN are not same after a detailed look through my JS code i found the error at the function updatePIN() then i solved that bug. Iam proud that i solved this bug without help any resources.
Devlog 2.0 Today i am planning to make important change in the website. I found that, the website is looking bad and not working the UI properly in mobile screens. So i decided to make the website responsive and dynamic in mobile screens also as well as the desktop screens So let start to design the whole webpage again! Devlog 2.1 | Frame 1 - 5 First of all i made some research about making a webpage into a responsive one, and i found that we can simply edit the layout of the element according to screen width using @media function in CSS file. So i found that the maximum width of a mobile screen is 480px. So decided to adjust the @media function with screen width 480px. In frame 1, i doesn’t made any changes for the mobile screen. But in frame 2 i found that it doesn’t align the text exact that of the center of the screen height and width. And also find that the text typing animation is the issue regarding that! So i tried my maximum to solve that but unfortunately i couldn’t, So i decided to remove the animation in the mobile screen. In frame 3, Then i moved into next frame. I made the main div into 100% width and height that of the screen. Also made the input box into a little smaller than that of the 100% width. Similarly also changed the width of the button. In frame 4, I made everything exactly center to the whole screen. by making the layout position as absolute and then made top and left as 50% move. Solving Bugs and logical errors. I found a bug in the animation period on the mobile screen. It has been working perfectly until the animation between frames 3 & 4. I found that the fade-out animation of frame 3 is working perfectly but the fade-in animation of frame 4 is working but placing the frame at the very bottom-right side. After a huge think i created a id tag for a this special animation issue which has the issue for these two frames only. Then i connected them using JS now its working perfectly.
Devlog 2.2 - Frame 5 - 11 Today i started to continue the project after a two week break! So started to working hardly to submit my project. I am working on making the project mobile responsive. I completed everything under frame 4, Now working from frame 5… In frame 5 , I would like to make more attractive and user friendly. For that i made the main option and welcome text in full screen with height and width 100%. That’s all i made change in this frame, Btw i also changed the line-height, i felt that the texts in the frame 5 are feeling like congested, so i increased the line-height through it. In frame 6 , I found a logical error, whereas the Dialpad is not showing since i changed the subsection display into none before on mobile responsive. I think why should i solve this using CSS function such :has and :not, I need to hide the subsection on the main menu so i used the if the frame contains the id that #menu_option it has to hide the subsection and similarly if not make the height of the main section and subsection in 3:2 ratio with 100% width. Then i increased the gap between the Dialpad and as well as the width of the buttons. In frame 7 , Now i am facing i huge logical error again i have no idea and i failed that i already implemented method. As before i managed the logical error of showing subsection and main section just by using has and not function in CSS and that time it still hiding in the all frame, in ratio 3:2, whereas the subsection is showing where the Dialpad is doesn’t help. After a long try i found a solution from the google (redit) by replacing a line in the script code. I added a line of code which in the function ‘balWindow()’ first declaring the that in innerHTML of the subsection into empty then hide it now it would working without any error!… After all i made the text aligned center and also increased the width of the button… In frame 8 , It is really simple there is no any logical error just increased the width of input and also removed the padding of the whole content and so there changed only! In Frame 9 , I aligned all the text into center and also increased the width and margin of the button. In the frame file (‘frame9.html’), it looks like as we expected but in the main website (‘index.html’) it doesn’t seems good. Since the Dialpad is not hiding after onwards the frame 8, After a detailed observation i found that the Dialpad is never hiding even when the main menu’s frame is came again. Anyway i solved the error by doing the same way that i did in frame 7. In Frame 10 , In this frame i thought that to make the ‘other’ button into 100% and make the others into grid form. Since when we exclude the other button the number of buttons become odd and seems a bad alignment, So i added another button with amount 3000. Now the alignment working perfectly. My next issue in this frame was that when the user clicks on the other button the whole view will moves upward. So i made the height into auto then unfortunately its working i don’t know what is actually happing in my code!! In Frame 11 , i just hide the showing Dialpad i mean the subsection and made the main section into full screen. simply adding that subsection.innerHTML into empty in the function ‘loadingWindow()’
Devlog 2.3 - Frame 12 - 18 In Frame 12 , There is nothing extraordinary changes. Just aligned the whole texts into center and also increased the size of button as per made in other frames. In Frame 13 , I first made all texts into center then i feel like there are a lot space between the lines so tried solve that, I changed that by removing the margin top and margin bottom as well as the line spacing and line height. Btw i changed the button width as same others. In Frame 14 , In this frame i removed the default padding and margins and then restarted to arrange everything perfectly such as made to be aligned center and added margin top where was needed. Then also change the length of the button. In Frame 15 , There is no change which had removed this frame from main website. That for there is no change required but automatically it working perfectly on the mobile screens. In Frame 16 , Just aligned and made suitable change as per the same method that used in the previous frames. In Frame 17 , There is no change required since there is perfectly aligned already! In Frame 18 , It is very easy when sees but i tried to make it aligned as perfect centered it doesn’t working. I tried a lot of time and i found a cheap solution which had i adjust that using margin function! ##Now the UI design of the mobile responsive website is completed. But i found some bugs. Devlog 2.4 Now it’s time recheck that there is any bug or errors are occurring. First of all, i found a bug that only in desktop mode (in mobile screen it’s working perfectly) which is animation between two frames 3 and 4 are doesn’t working basic not showing. So i tried one by one each method and finally i found it! Then the animations is working perfectly. Then i would find any further bugs or errors in both screen. Then i noticed that the alert notification in mobile screen is seems to boring so i decide to change the fade-in and fade-out animation into transition of y axis from x axis. Now i think its time to reship the project!
Ships:
This is a ATM virtual simulation using JavaScript, HTML and CSS. I coded this from scratch by my own! I created a blueprint of this project on papers as roughly with 18 frames. So i just created each by each frame and connect together! In this project user can experience as same as that of a ATM in your browser (NB: Need to register each time you open the website). Now it’s time to ship this project but note that i would like share my JS and implementing logics only I spend time on CSS! I would like hear your response and like hear what should i change and suggest me what should i do in CSS, Iam totally confused about CSS styling this project
This is a ATM virtual simulation using JavaScript, HTML and CSS. I coded this from scratch by my own! I created a blueprint of this project on papers as roughly with 18 frames. So i just created each by each frame and connect together! You can experience the real ATM Machine in your Browser , note that it is just simulation. At first you need to fill the form to continue the the website and to enter the ATM. Then you can explore options such balance, deposit, withdraw, and as well as you can change the PIN. Note that it doesn’t connect with localStorage or any cloud storage that you need to fill and submit the form each time you visit the website, i will work on that to make it local storage available. And note that i changed the entire website testing colours theme into a dark-shaded theme which give a realistic experience of a ATM. Hope you will go through my devlogs and code as well as explore all the features in my website and feel to free make suggestions!
This is a ATM virtual simulation using JavaScript, HTML and CSS. I coded this from scratch by my own! I created a blueprint of this project on papers as roughly with 18 frames. So i just created each by each frame and connect together! This project is created on the mindset that may helpful for kids who can practice how the ATM works, Its just simulation. Anyway you need to fill a form to enter the page note that the all data in that form such your name and security it doesn’t saved or transferred to anywhere. It is just used for the name and pin for the better experience. User can check the balance, withdraw and deposit money and even user can change its own PIN! I tried to give by maximum effort for making the user experience better for that i added the animations, and also made responsive that user can experience the website from both devices - Desktop and as well as mobile phone. I hope you will try my website and explore every corner of the website in mobile and as well as in desktop, Btw feel free to give suggestions!...
|
1792824477.664222
|
1793688477.664222
|
|
69898
|
JT MUSE Website by @ahmadhassan | Stardance
|
ahmadhassan
|
0
|
2.17
|
0
|
[]
|
[{"post_id": 79834, "ts": "202 [{"post_id": 79834, "ts": "2026-10-15T15:59:21Z", "hours": 2.1708, "text": "This is a website for my school’s art event where there were several different catgeories including arts, media, literature, drama and dance etc. This website provided delegates with study guides and helped them register for the event. (couldnt log correct hours :( )"}]...
|
Title: JT MUSE Website by @ahmadhassan | Stardance Title: JT MUSE Website by @ahmadhassan | Stardance
Devlogs:
This is a website for my school’s art event where there were several different catgeories including arts, media, literature, drama and dance etc. This website provided delegates with study guides and helped them register for the event. (couldnt log correct hours :( )...
|
1792918154.354065
|
1793522954.354065
|
|
69874
|
Conjug by @Karim_xyz | Stardance
|
Karim_xyz
|
0
|
2.8
|
0
|
[]
|
[{"post_id": 79835, "ts": "202 [{"post_id": 79835, "ts": "2026-10-15T16:00:27Z", "hours": 2.8, "text": "commit initiale"}]...
|
Title: Conjug by @Karim_xyz | Stardance
Devlogs:
Title: Conjug by @Karim_xyz | Stardance
Devlogs:
commit initiale...
|
1792918120.1469934
|
1793522920.1469934
|
|
17720
|
octo pancakes by @ee | Stardance
|
ee
|
0
|
0.98
|
0
|
[]
|
[{"post_id": 7984, "ts": "2026 [{"post_id": 7984, "ts": "2026-06-13T09:59:12Z", "hours": 0.5403, "text": "ART! And other cool stuff! wowzas i did more than i thought i would, I added a lot more text message bubbles, and made some basic art for the octo pancakes! next up I need to finish up the art and finish up the text thing with some more context as of now, the text is just like “lemme send you a photo” then I just drew what the photo is which took me about 10 minutes and it’s just a basic pancake with tentacles"}, {"post_id": 7805, "ts": "2026-06-13T00:52:26Z", "hours": 0.4378, "text": "wowzas this’ll be fun! right now I just made some fun beginning stuff which is like an introduction, and a text message sequence which i think is cool. I’m gonna draw some octopus pancakes and make it look cool and have a story in the future. the idea is that there wil be octo-pancakes and i’m gonna like, make them stylish or something for the 26 minutes i uh basically learned css, added some thing about the title like what it was, and the messages which’ll become a full convo"}]...
|
Title: octo pancakes by @ee | Stardance
Devlogs:
Title: octo pancakes by @ee | Stardance
Devlogs:
wowzas this’ll be fun! right now I just made some fun beginning stuff which is like an introduction, and a text message sequence which i think is cool. I’m gonna draw some octopus pancakes and make it look cool and have a story in the future. the idea is that there wil be octo-pancakes and i’m gonna like, make them stylish or something for the 26 minutes i uh basically learned css, added some thing about the title like what it was, and the messages which’ll become a full convo
ART! And other cool stuff! wowzas i did more than i thought i would, I added a lot more text message bubbles, and made some basic art for the octo pancakes! next up I need to finish up the art and finish up the text thing with some more context as of now, the text is just like “lemme send you a photo” then I just drew what the photo is which took me about 10 minutes and it’s just a basic pancake with tentacles...
|
1792695259.2361028
|
1793300059.2361028
|
|
68446
|
LumyLamp by @itzdeep2 | Stardance
|
itzdeep2
|
2
|
13.0
|
57
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-16T07:23:30Z", "hours": 5.0, "multiplier": 6.23, "payout": 31, "blessing": "neutral", "text": "I updated the look from one signle page to multiple pages and added animated css, js…!!! i also made changes what people wanted and i want to thanks them for pointing out some mistakes. if any more feature you like me to add pls feel free to tell..!! Hope You Like it!!!", "repo": "https://github.com/itzdeep2/LumyDesk", "demo": "https://itzdeep2.github.io/LumyDesk/"}, {"ship_num": 2, "ts": "2026-10-09T14:26:32Z", "hours": 8.0, "multiplier": 2.83, "payout": 26, "blessing": "neutral", "text": "I made LumyDesk because I wanted one calm place to study instead of juggling five different apps. It has a pomodoro timer, a to-do list, notes, and a weekly planner where you drag your chapters onto a day. When you tick a chapter off, the calendar and progress graphs update by themselves. The theme also changes on its own depending on the time of day, and turns mint when you’re on a break. Built with plain HTML, CSS and JavaScript, plus Chart.js for the graphs. Everything saves in your browser. I used a little AI to debug and fix bug and also helped my recomend the colours. Thank You for Reviewing Have a Great Day….!!!!", "repo": "https://github.com/itzdeep2/LumyDesk", "demo": "https://itzdeep2.github.io/LumyDesk/"}]...
|
[{"post_id": 79840, "ts": "202 [{"post_id": 79840, "ts": "2026-10-15T16:23:55Z", "hours": 2.1797, "text": "done added calander, timer, todo, notes planner, progress all working…!!!!"}, {"post_id": 79552, "ts": "2026-10-14T15:58:34Z", "hours": 2.8597, "text": "updated the design but some of the buttons is not working and much more progress to make….!!! i will make the buttons work with a great animation and tons of more feature…!!! stay tuned!!!"}, {"post_id": 78074, "ts": "2026-10-09T14:12:14Z", "hours": 2.7003, "text": "added the calander, any many more themes colours with light and dark modes, progress tracker and graph…!!!"}, {"post_id": 78016, "ts": "2026-10-09T06:53:47Z", "hours": 0.7117, "text": "just added progress…!!!! now the graph and calander is left and to make the proegress work i have to implement something which will allow the user to mark a chapter or subject to be completed…!!"}, {"post_id": 77850, "ts": "2026-10-08T15:12:46Z", "hours": 1.0661, "text": "Added a study Planner with complete week plan with drag and drop feature just add the the subject and chapters name and drag it over to the week day to plan. More Feature Comming soon……!!!"}, {"post_id": 77820, "ts": "2026-10-08T12:29:51Z", "hours": 0.5883, "text": "added a Study Planner where we can add the subjects and plan which to study when but to make this system working all together the calander is needed so in next dev blog i will add it… Stay Tuned…..!!!!"}, {"post_id": 77810, "ts": "2026-10-08T11:44:13Z", "hours": 0.6367, "text": "Just added the notes tab with integrated storage so refresh do not delete anything. More Features Adding Soon….!!!"}, {"post_id": 77571, "ts": "2026-10-07T14:46:20Z", "hours": 1.9203, "text": "Added a pomodero Timer with focus, short break and long break embeded, To-do list as well. next i am working on notes and the storage issue which will be sort out soon. so Stay Tuned and any more feature you want just drop a comment or dm me in slack i will try to add that thank you….!!!!"}]...
|
Title: LumyLamp by @itzdeep2 | Stardance
Devlogs: Title: LumyLamp by @itzdeep2 | Stardance
Devlogs:
Added a pomodero Timer with focus, short break and long break embeded, To-do list as well. next i am working on notes and the storage issue which will be sort out soon. so Stay Tuned and any more feature you want just drop a comment or dm me in slack i will try to add that thank you….!!!!
Just added the notes tab with integrated storage so refresh do not delete anything. More Features Adding Soon….!!!
added a Study Planner where we can add the subjects and plan which to study when but to make this system working all together the calander is needed so in next dev blog i will add it… Stay Tuned…..!!!!
Added a study Planner with complete week plan with drag and drop feature just add the the subject and chapters name and drag it over to the week day to plan. More Feature Comming soon……!!!
just added progress…!!!! now the graph and calander is left and to make the proegress work i have to implement something which will allow the user to mark a chapter or subject to be completed…!!
added the calander, any many more themes colours with light and dark modes, progress tracker and graph…!!!
updated the design but some of the buttons is not working and much more progress to make….!!! i will make the buttons work with a great animation and tons of more feature…!!! stay tuned!!!
done added calander, timer, todo, notes planner, progress all working…!!!!
Ships:
I made LumyDesk because I wanted one calm place to study instead of juggling five different apps. It has a pomodoro timer, a to-do list, notes, and a weekly planner where you drag your chapters onto a day. When you tick a chapter off, the calendar and progress graphs update by themselves. The theme also changes on its own depending on the time of day, and turns mint when you’re on a break. Built with plain HTML, CSS and JavaScript, plus Chart.js for the graphs. Everything saves in your browser. I used a little AI to debug and fix bug and also helped my recomend the colours. Thank You for Reviewing Have a Great Day….!!!!
I updated the look from one signle page to multiple pages and added animated css, js…!!! i also made changes what people wanted and i want to thanks them for pointing out some mistakes. if any more feature you like me to add pls feel free to tell..!! Hope You Like it!!!...
|
1793065813.76221
|
1793152213.76221
|
|
69783
|
Game website by @raspi | Stardance
|
raspi
|
0
|
2.67
|
0
|
[]
|
[{"post_id": 79843, "ts": "202 [{"post_id": 79843, "ts": "2026-10-15T16:26:51Z", "hours": 2.665, "text": "Website cleanup, me and my friend had semi built this website a while back and so i deided to clean it up, fix its errors and post it here, currently fixed the background errors and game mechanics issus"}]...
|
Title: Game website by @raspi | Stardance
Devlogs Title: Game website by @raspi | Stardance
Devlogs:
Website cleanup, me and my friend had semi built this website a while back and so i deided to clean it up, fix its errors and post it here, currently fixed the background errors and game mechanics issus...
|
1792860454.059729
|
1793465254.059729
|
|
69655
|
Wooper desktop pet by @mohithkumar | Stardance
|
mohithkumar
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-18T07:41:13Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is Wooper desktop pet, If u don’t know what’s a Wooper is, its a really cute Pokémon. I designed the sprites in https://www.pixilart.com/ as its easy to draw stuffs there. AI is used to create Gravity when clicked and used to create the follow the mouse feature. The challenging thing was to come up with a proper idea on what to create then i finally settled with wooper, features: Can sleep in ur desktop Can eat Can be thrown.. Can be jealous… Can be blasted…? These are shower thoughts that came randomly. I really like the way it came out at last.", "repo": "https://github.com/mohithkumar-kry/Desktop-pet-", "demo": "https://mohithkumar-kry.itch.io/wooper-pet"}]...
|
[{"post_id": 79845, "ts": "202 [{"post_id": 79845, "ts": "2026-10-15T16:31:10Z", "hours": 1.2658, "text": "I worked on Wooper pet , which is a Pokémon. I created the sprites using the pixilart.com which took fairly enough time. Not a huge project but defiantly cute."}]...
|
Title: Wooper desktop pet by @mohithkumar | Starda Title: Wooper desktop pet by @mohithkumar | Stardance
Devlogs:
I worked on Wooper pet , which is a Pokémon. I created the sprites using the pixilart.com which took fairly enough time. Not a huge project but defiantly cute.
Ships:
This is Wooper desktop pet, If u don’t know what’s a Wooper is, its a really cute Pokémon. I designed the sprites in https://www.pixilart.com/ as its easy to draw stuffs there. AI is used to create Gravity when clicked and used to create the follow the mouse feature. The challenging thing was to come up with a proper idea on what to create then i finally settled with wooper, features: Can sleep in ur desktop Can eat Can be thrown.. Can be jealous… Can be blasted…? These are shower thoughts that came randomly. I really like the way it came out at last....
|
1793008328.2714849
|
1793094728.2714849
|
|
65436
|
Arc Clock by @L0stsky | Stardance
|
L0stsky
|
0
|
11.36
|
0
|
[]
|
[{"post_id": 79850, "ts": "202 [{"post_id": 79850, "ts": "2026-10-15T16:47:42Z", "hours": 0.3836, "text": "YOOOOOOOOOOOOO SO I spent some time Making 2 More Variant for the PCB which will decide how the Case and the Clock Turns out, and I need YOU GUYS to vote on which is the Best One. So Heres some IMP points : For the 1st Pic, the Case would Be Inspired by the NEW Arc Reactors For the 2nd Pic, the Case would be Designed on the Basis of the Old OG arc Reactor (My Choice btw it’d Look Awesome)"}, {"post_id": 77011, "ts": "2026-10-05T11:12:46Z", "hours": 8.8383, "text": "THE PCB IS FRICKING DONE!!!! It took me a while tbh and idk why my switches wont render…. So added some Decos and Some Border cuz why not. Btw the front Silkscreen Ill make when i make the case!!"}, {"post_id": 73996, "ts": "2026-09-26T14:23:36Z", "hours": 0.9667, "text": "So I Completed the Schematic (Hopefully) . I’ve added the ladder system to make space for pins and added a touch sensor and a Dht11."}, {"post_id": 73636, "ts": "2026-09-25T15:40:23Z", "hours": 1.1669, "text": "So I am working on a Clock that resembles the Iron Man Arc Reactor , it would have the normal clock features (duhh) and also a mini jarvis on the screen (not AI cuz the board cant handle rn tho i might make later is possible). So i mostly stuck to the tutorial except adding my own Battery system, battery charge indicator, a switch. Now im thinking on Using the Esp32 wroom board that I have cuz ill get a LOT more GPIO pins and also it has two cores so maybe i’d add more features like weather etc."}]...
|
Title: Arc Clock by @L0stsky | Stardance
Devlogs: Title: Arc Clock by @L0stsky | Stardance
Devlogs:
So I am working on a Clock that resembles the Iron Man Arc Reactor , it would have the normal clock features (duhh) and also a mini jarvis on the screen (not AI cuz the board cant handle rn tho i might make later is possible). So i mostly stuck to the tutorial except adding my own Battery system, battery charge indicator, a switch. Now im thinking on Using the Esp32 wroom board that I have cuz ill get a LOT more GPIO pins and also it has two cores so maybe i’d add more features like weather etc.
So I Completed the Schematic (Hopefully) . I’ve added the ladder system to make space for pins and added a touch sensor and a Dht11.
THE PCB IS FRICKING DONE!!!! It took me a while tbh and idk why my switches wont render…. So added some Decos and Some Border cuz why not. Btw the front Silkscreen Ill make when i make the case!!
YOOOOOOOOOOOOO SO I spent some time Making 2 More Variant for the PCB which will decide how the Case and the Clock Turns out, and I need YOU GUYS to vote on which is the Best One. So Heres some IMP points : For the 1st Pic, the Case would Be Inspired by the NEW Arc Reactors For the 2nd Pic, the Case would be Designed on the Basis of the Old OG arc Reactor (My Choice btw it’d Look Awesome)...
|
1793087467.0751426
|
1793692267.0751426
|
|
69905
|
webos1 by @raspi | Stardance
|
raspi
|
0
|
0.26
|
0
|
[]
|
[{"post_id": 79852, "ts": "202 [{"post_id": 79852, "ts": "2026-10-15T16:50:36Z", "hours": 0.2558, "text": "I started with the guide’s first two ideas: a personal welcome screen and a desktop with a clock. Instead of copying the sample look. Next: turn the welcome screen into a reusable draggable window and add real apps to the shelf."}]...
|
Title: webos1 by @raspi | Stardance
Devlogs:
I st Title: webos1 by @raspi | Stardance
Devlogs:
I started with the guide’s first two ideas: a personal welcome screen and a desktop with a clock. Instead of copying the sample look. Next: turn the welcome screen into a reusable draggable window and add real apps to the shelf....
|
1792918162.4403303
|
1793522962.4403303
|
|
65148
|
Overbot -self-balancing robot +v2.0 PCB and full r Overbot -self-balancing robot +v2.0 PCB and full robot!!!! by @MaxMadeGG | Stardance...
|
MaxMadeGG
|
0
|
14.45
|
0
|
[]
|
[{"post_id": 79855, "ts": "202 [{"post_id": 79855, "ts": "2026-10-15T16:56:55Z", "hours": 0.7003, "text": "Ok so it works so now printing full half"}, {"post_id": 79806, "ts": "2026-10-15T14:07:58Z", "hours": 1.4336, "text": "Hey! The perfboard version works! So now i did the model of the robot that might be named Chickbot finally instead of Overbot…anyway it’s not finished the model, now printing a test of it"}, {"post_id": 79359, "ts": "2026-10-13T17:05:35Z", "hours": 2.1169, "text": "😭 😭 😭 POV: you decide to make all on a perfboard because 1. 3 ESP32 are dead 2. two versions of your custom PCB don’t work 3. you become crazy … then you decide to make all on a perfboard 1. you start doing it 2. you solder for a week and then … you finish … but one encoder doesn’t want to work you try to fix it but then nothing works on bus 0 T_T this becomes very very frustrating 😭 https://youtube.com/shorts/Bv5i3sjUlMk?si=PIeCnRF1LWGG5C7 _"}, {"post_id": 79086, "ts": "2026-10-12T16:29:00Z", "hours": 1.7833, "text": "Oh yeah i’m back buddy and the PCB is almost done! just the encoders to wire and then…wohoo"}, {"post_id": 75614, "ts": "2026-09-30T15:43:30Z", "hours": 2.15, "text": "Again unsoldering everithing from the PCB 😭because the ESP32 doens’t want to boot so i decided to let go these 💩PCB’s and make all on a perf board…i hope it will work🙏"}, {"post_id": 74881, "ts": "2026-09-28T14:25:02Z", "hours": 0.6167, "text": "Fixed some wiring…now charging the battery"}, {"post_id": 74853, "ts": "2026-09-28T13:24:39Z", "hours": 1.2669, "text": "Ok ok so finished the body and put it to print…i also changed the robot name from QuadCat to Overbot because it doesn’t look like a cat anymore and it’s kinda over scoped this project so that’s why Overbot :D"}, {"post_id": 74353, "ts": "2026-09-27T07:00:00Z", "hours": 0.6844, "text": "The odd frame is almost done but now i have to go so i will finish later"}, {"post_id": 74054, "ts": "2026-09-26T16:31:23Z", "hours": 0.8003, "text": "So i’m at a place where i don’t have a 3D printer but i have a laptop so i was making the components that i have in the physical life into fusion 360 that i can see more how to make the shell and i also decided to make just a odd frame for now and then make the beatuiful stuff…i didn’t have time to make the frame T-T so i will finish it tomorrow"}, {"post_id": 73678, "ts": "2026-09-25T17:53:38Z", "hours": 2.9, "text": "Hi after a long time :D anyway the ESP32 that i destroy due to a stupid mistake a new has finally arrived so i started soldering all permanently…hope it’s not a mistake T_T and will finish tomorrow because now i’m kinda tired and i start making stupid mistakes 😅"}]...
|
Title: Overbot -self-balancing robot +v2.0 PCB and Title: Overbot -self-balancing robot +v2.0 PCB and full robot!!!! by @MaxMadeGG | Stardance
Devlogs:
Hi after a long time :D anyway the ESP32 that i destroy due to a stupid mistake a new has finally arrived so i started soldering all permanently…hope it’s not a mistake T_T and will finish tomorrow because now i’m kinda tired and i start making stupid mistakes 😅
So i’m at a place where i don’t have a 3D printer but i have a laptop so i was making the components that i have in the physical life into fusion 360 that i can see more how to make the shell and i also decided to make just a odd frame for now and then make the beatuiful stuff…i didn’t have time to make the frame T-T so i will finish it tomorrow
The odd frame is almost done but now i have to go so i will finish later
Ok ok so finished the body and put it to print…i also changed the robot name from QuadCat to Overbot because it doesn’t look like a cat anymore and it’s kinda over scoped this project so that’s why Overbot :D
Fixed some wiring…now charging the battery
Again unsoldering everithing from the PCB 😭because the ESP32 doens’t want to boot so i decided to let go these 💩PCB’s and make all on a perf board…i hope it will work🙏
Oh yeah i’m back buddy and the PCB is almost done! just the encoders to wire and then…wohoo
😭 😭 😭 POV: you decide to make all on a perfboard because 1. 3 ESP32 are dead 2. two versions of your custom PCB don’t work 3. you become crazy … then you decide to make all on a perfboard 1. you start doing it 2. you solder for a week and then … you finish … but one encoder doesn’t want to work you try to fix it but then nothing works on bus 0 T_T this becomes very very frustrating 😭 https://youtube.com/shorts/Bv5i3sjUlMk?si=PIeCnRF1LWGG5C7 _
Hey! The perfboard version works! So now i did the model of the robot that might be named Chickbot finally instead of Overbot…anyway it’s not finished the model, now printing a test of it
Ok so it works so now printing full half...
|
1793083984.3740225
|
1793688784.3740225
|
|
69861
|
Custom Clock by @ArnavVerma | Stardance
|
ArnavVerma
|
0
|
0.96
|
0
|
[]
|
[{"post_id": 79856, "ts": "202 [{"post_id": 79856, "ts": "2026-10-15T16:59:17Z", "hours": 0.9572, "text": "Guys I have completed the schematic and 90% pcb design of my alarm clock"}]...
|
Title: Custom Clock by @ArnavVerma | Stardance
De Title: Custom Clock by @ArnavVerma | Stardance
Devlogs:
Guys I have completed the schematic and 90% pcb design of my alarm clock...
|
1792878639.4212253
|
1793483439.4212253
|
|
46825
|
Comet dryer by @Plomyk | Stardance
|
Plomyk
|
0
|
82.99
|
0
|
[]
|
[{"post_id": 79864, "ts": "202 [{"post_id": 79864, "ts": "2026-10-15T17:27:27Z", "hours": 9.5903, "text": "Devblog 9 I made the modeled and printed all the parts! Designing the filament stand took longer than I originally thought it would, and I ended up having to completly remake it, as there turned out to be a bit of issues with my original design. Mainly that: It was too large, and would not fit in my container I decided (for now) not to rotate the spools while drying It likely break under the load of 2 spools, because of a weak spot Why not rotate the spools? Among other than taking up a lot of space, the motors would either be too pricy, large or had way too high RPM, which would be inefficient to slow down. It was hard to find ones that would be readily available, and even then they would arrive too late for me to finish in time Next changes: I will now move onto assembling everything together! Since my last devblog, I also found out, that there is another issue with my PCB. Somehow, I did not fill the zone connecting the trace to the heater pads. While I was able to fix my board manually, I will have to fix this before shipping"}, {"post_id": 75008, "ts": "2026-09-28T20:49:36Z", "hours": 8.845, "text": "Devblog 8 I finally finished the software! The largest change is the new annealing menu. I also just spent over an hour trying to fix a bug that turned out to just be caused by the function being run before one parameter was set. Changes since last devblog: Added the annealing menu Fixed a ton of bugs I run into while making it Cleaned up the code from debug features Next changes: I need to make an enclosure now, after that it will be just mounting the components together, and prepairing it for SHIPPING"}, {"post_id": 74461, "ts": "2026-09-27T12:52:19Z", "hours": 10.1153, "text": "Devblog 7 I soldered all the components on the PCB! And of course after finishing it, I learned that i should have added gate resistors. I then went to unsolder the mosfets and add the resistors, which somehow took me 3 HOURS. Also added support for a fan and motor to rotate the filament so it dries evenly Changes since last devblog: Soldered the PCB Added support for a fan and motor Made a github repository for the project Fixed a bug where scrolling in the settings menu wouldn’t always work Next changes I will add the annealing menu, and after that the software part of the project should be done. Next i will move on to designing the enclosure"}, {"post_id": 70348, "ts": "2026-09-19T00:35:30Z", "hours": 7.2689, "text": "Devblog 6 I finished the PCB and the Color theme selection menu! I had to make the PCB fit in a 100x100mm square to avoid extra charges, and rewrite the Color theme selection menu. I changed the whole menu because the previous one was really buggy and didn’t really look good. I also finally using git correctly, as I did not really understand how to use it before, and have just been stating changes without making any commits. Changes since last devblog: Finished the PCB Rewrote the color selection menu Started using git correctly Next changes I will add the annealing menu and some QOL features, while I wait for the PCB to arrive next week I made a gif to show the color themes, but for some reason it breaks when i upload it ):"}, {"post_id": 65484, "ts": "2026-09-10T17:27:05Z", "hours": 9.4367, "text": "Devblog 5 Almost finished the PCB! I decided to make the components attach from both sides, so that there is only one pcb needed, otherwise the display and rotary encoder would have to be on a seperate board Changes since last devblog: Made a design for the PCB Did some work on the theme selection menu Why is this not the final version? The design I made turned out to be 10mm to wide, causing the price of the pcb to increase by almost 5x somehow… So I will have to change the design to be more vertical. I wish I knew about this before wiring everything and fixing 137 DRC errors and warnings Theme selection menu The theme selection menu is bugged currently, will probably have to change how I had it planned, because the theme previews are a bit too small currently"}, {"post_id": 60410, "ts": "2026-09-02T18:27:46Z", "hours": 9.0603, "text": "Devblog 4 I added 13 different color themes to the display! (It is not fully finished yet, I still need to add a selection menu). Now you can customize the colors to something else if you prefer it from the default colors! Also made the filament drying menu. And fixed quite a bit of bugs that i found while making the changes Changes since last devblog: Added a safety feature, preventing you from starting if the temperature sensor initialization fails Added a menu that displays the current statistics while drying filament Added 13 color themes Updated the UI code to be a lot more variable controlled, instead of hard coded Bugs fixed: Fixed some of the buttons flickering when selecting or unselecting Fixed the remaining drying time : Made it go down instead of changing randomally Fixed an issue where it would pass by in slow motion instead of pausing And probably some other bugs i forgot about… Future changes / things i plan to add: Add a menu for selecting the color theme Add an option to anneal 3d print (this will probably only slightly help with PLA, since the temperature required for other materials is way higher) Make a PCB (?)! The features of this project are probably mostly in place now, so this seems like a good next step. I may also keep the 3D printable PCB (see Devblog 2) as an alternative in case you cannot get a PCB manufactured (I selected a different theme for each picture)"}, {"post_id": 54510, "ts": "2026-08-25T15:16:11Z", "hours": 18.2872, "text": "Devblog 3 I did not know that time past 10 hours between devblogs doesn’t count…. well there goes the last 2 days when i probably did the most work on this project ): I am still working on the UI, since I tried to make it actually good. I have finished a large part of it already, so only the last 2 (currently planed) pages are left. I will probably try to polish it up a lot more than I originally thought I would (as I just realised that stardance ends in september, not in august, so I don’t need to rush it as much), hopefully that will help recover some of the time I lost. What has changed since the last devblog: I have finished the main menu Finished the screen where you select from filament presets or put put your own custom drying settings Made 15 different presets for things possible to dry Begun working on the screen visible while drying Fixed a lot of bugs I encountered while adding new things to the code For now, I will keep working on expanding and polishing the UI further"}, {"post_id": 52259, "ts": "2026-08-22T11:17:21Z", "hours": 6.2414, "text": "Devblog 2 I have done quite a bit since last devblog, mostly trying to design and make a plastic PCB (Just a board to hold the components, without traces) Why not actually make a PCB? The reasoning mostly comes down to it taking too much time. Having never made a PCB before, I would need to learn the software. Not only that, even if I had the PCB already designed, it would have been extremally expensive to order shipping quick enough, for me to be able to do the rest of this project before Stardance ends. (And this scenario assumes I would get the PCB right first try) What else have i been working on? I was able to make a circuit for controlling the 12v components with a 3.3v signal from the MCU Started working on the enclosure for the electronics and wiring Made a prototype of how I want the menu to look Made the text not flash when being overriden Added a temperature and humidity sensor What next? That is pretty much most of what I’ve done. The next part I plan to do is making the menu run on the controller. Probably also slight upgrades to the PCB and some work on the enclosure"}, {"post_id": 49178, "ts": "2026-08-17T20:22:39Z", "hours": 4.1439, "text": "Devblog 1 I was able got the display and rotary encoder to work! This took quite a long time because the encoder was causing issues. I tried to read it’s position with interruptions, but i couldn’t get that to work. Debugging this and trying to get the button on the encoder not to register multiple times when pressed probably slowed me down the most. The next thing I want to figure out is how to control the rest of the components (which will be 12v) with the 3.3v microcontroller"}]...
|
Title: Comet dryer by @Plomyk | Stardance
Devlogs Title: Comet dryer by @Plomyk | Stardance
Devlogs:
Devblog 1 I was able got the display and rotary encoder to work! This took quite a long time because the encoder was causing issues. I tried to read it’s position with interruptions, but i couldn’t get that to work. Debugging this and trying to get the button on the encoder not to register multiple times when pressed probably slowed me down the most. The next thing I want to figure out is how to control the rest of the components (which will be 12v) with the 3.3v microcontroller
Devblog 2 I have done quite a bit since last devblog, mostly trying to design and make a plastic PCB (Just a board to hold the components, without traces) Why not actually make a PCB? The reasoning mostly comes down to it taking too much time. Having never made a PCB before, I would need to learn the software. Not only that, even if I had the PCB already designed, it would have been extremally expensive to order shipping quick enough, for me to be able to do the rest of this project before Stardance ends. (And this scenario assumes I would get the PCB right first try) What else have i been working on? I was able to make a circuit for controlling the 12v components with a 3.3v signal from the MCU Started working on the enclosure for the electronics and wiring Made a prototype of how I want the menu to look Made the text not flash when being overriden Added a temperature and humidity sensor What next? That is pretty much most of what I’ve done. The next part I plan to do is making the menu run on the controller. Probably also slight upgrades to the PCB and some work on the enclosure
Devblog 3 I did not know that time past 10 hours between devblogs doesn’t count…. well there goes the last 2 days when i probably did the most work on this project ): I am still working on the UI, since I tried to make it actually good. I have finished a large part of it already, so only the last 2 (currently planed) pages are left. I will probably try to polish it up a lot more than I originally thought I would (as I just realised that stardance ends in september, not in august, so I don’t need to rush it as much), hopefully that will help recover some of the time I lost. What has changed since the last devblog: I have finished the main menu Finished the screen where you select from filament presets or put put your own custom drying settings Made 15 different presets for things possible to dry Begun working on the screen visible while drying Fixed a lot of bugs I encountered while adding new things to the code For now, I will keep working on expanding and polishing the UI further
Devblog 4 I added 13 different color themes to the display! (It is not fully finished yet, I still need to add a selection menu). Now you can customize the colors to something else if you prefer it from the default colors! Also made the filament drying menu. And fixed quite a bit of bugs that i found while making the changes Changes since last devblog: Added a safety feature, preventing you from starting if the temperature sensor initialization fails Added a menu that displays the current statistics while drying filament Added 13 color themes Updated the UI code to be a lot more variable controlled, instead of hard coded Bugs fixed: Fixed some of the buttons flickering when selecting or unselecting Fixed the remaining drying time : Made it go down instead of changing randomally Fixed an issue where it would pass by in slow motion instead of pausing And probably some other bugs i forgot about… Future changes / things i plan to add: Add a menu for selecting the color theme Add an option to anneal 3d print (this will probably only slightly help with PLA, since the temperature required for other materials is way higher) Make a PCB (?)! The features of this project are probably mostly in place now, so this seems like a good next step. I may also keep the 3D printable PCB (see Devblog 2) as an alternative in case you cannot get a PCB manufactured (I selected a different theme for each picture)
Devblog 5 Almost finished the PCB! I decided to make the components attach from both sides, so that there is only one pcb needed, otherwise the display and rotary encoder would have to be on a seperate board Changes since last devblog: Made a design for the PCB Did some work on the theme selection menu Why is this not the final version? The design I made turned out to be 10mm to wide, causing the price of the pcb to increase by almost 5x somehow… So I will have to change the design to be more vertical. I wish I knew about this before wiring everything and fixing 137 DRC errors and warnings Theme selection menu The theme selection menu is bugged currently, will probably have to change how I had it planned, because the theme previews are a bit too small currently
Devblog 6 I finished the PCB and the Color theme selection menu! I had to make the PCB fit in a 100x100mm square to avoid extra charges, and rewrite the Color theme selection menu. I changed the whole menu because the previous one was really buggy and didn’t really look good. I also finally using git correctly, as I did not really understand how to use it before, and have just been stating changes without making any commits. Changes since last devblog: Finished the PCB Rewrote the color selection menu Started using git correctly Next changes I will add the annealing menu and some QOL features, while I wait for the PCB to arrive next week I made a gif to show the color themes, but for some reason it breaks when i upload it ):
Devblog 7 I soldered all the components on the PCB! And of course after finishing it, I learned that i should have added gate resistors. I then went to unsolder the mosfets and add the resistors, which somehow took me 3 HOURS. Also added support for a fan and motor to rotate the filament so it dries evenly Changes since last devblog: Soldered the PCB Added support for a fan and motor Made a github repository for the project Fixed a bug where scrolling in the settings menu wouldn’t always work Next changes I will add the annealing menu, and after that the software part of the project should be done. Next i will move on to designing the enclosure
Devblog 8 I finally finished the software! The largest change is the new annealing menu. I also just spent over an hour trying to fix a bug that turned out to just be caused by the function being run before one parameter was set. Changes since last devblog: Added the annealing menu Fixed a ton of bugs I run into while making it Cleaned up the code from debug features Next changes: I need to make an enclosure now, after that it will be just mounting the components together, and prepairing it for SHIPPING
Devblog 9 I made the modeled and printed all the parts! Designing the filament stand took longer than I originally thought it would, and I ended up having to completly remake it, as there turned out to be a bit of issues with my original design. Mainly that: It was too large, and would not fit in my container I decided (for now) not to rotate the spools while drying It likely break under the load of 2 spools, because of a weak spot Why not rotate the spools? Among other than taking up a lot of space, the motors would either be too pricy, large or had way too high RPM, which would be inefficient to slow down. It was hard to find ones that would be readily available, and even then they would arrive too late for me to finish in time Next changes: I will now move onto assembling everything together! Since my last devblog, I also found out, that there is another issue with my PCB. Somehow, I did not fill the zone connecting the trace to the heater pads. While I was able to fix my board manually, I will have to fix this before shipping...
|
1792489854.2670753
|
1793094654.2670753
|
|
68933
|
in-locker by @Ggiver | Stardance
|
Ggiver
|
0
|
1.62
|
0
|
[]
|
[{"post_id": 79870, "ts": "202 [{"post_id": 79870, "ts": "2026-10-15T17:55:31Z", "hours": 0.6192, "text": "I have just added the “pomodoro” functionality to my project. For those who don’t know, the pomodoro technique is a studying technique which consists in studying for a set amount of time (or more) and then taking a short break, multiple times. I just added this in sessions of 6+ minutes of locking in, then 3- minutes of pause time. Hopefully, this will help me get better grades at school ;)"}, {"post_id": 79754, "ts": "2026-10-15T08:55:20Z", "hours": 1.0033, "text": "I have just finished the version 0.1 of in-locker. This device allows users to stop any distractions to focus on a project (“lock in”) for a set amount of time. When they spend more time than the mandatory displayed time, they enter “overtime”, where the device tracks the additional time they spent locked in. I bet this will be super useful for winter arc 🗿"}]...
|
Title: in-locker by @Ggiver | Stardance
Devlogs:
Title: in-locker by @Ggiver | Stardance
Devlogs:
I have just finished the version 0.1 of in-locker. This device allows users to stop any distractions to focus on a project (“lock in”) for a set amount of time. When they spend more time than the mandatory displayed time, they enter “overtime”, where the device tracks the additional time they spent locked in. I bet this will be super useful for winter arc 🗿
I have just added the “pomodoro” functionality to my project. For those who don’t know, the pomodoro technique is a studying technique which consists in studying for a set amount of time (or more) and then taking a short break, multiple times. I just added this in sessions of 6+ minutes of locking in, then 3- minutes of pause time. Hopefully, this will help me get better grades at school ;)...
|
1793127203.688174
|
1793732003.688174
|
|
5550
|
PelagoHaven by @Kokoio01 | Stardance
|
Kokoio01
|
0
|
63.28
|
0
|
[]
|
[{"post_id": 79871, "ts": "202 [{"post_id": 79871, "ts": "2026-10-15T17:58:24Z", "hours": 11.0725, "text": "A devlog? So I am still in the middle of coding the Option Creator but it is making good progress. I have already finished the complex script to searilize the option data and cache it in sqlite and am now at creating the ui for it. The Ui is also making some progress, I already have rendering of the most basic option types implemented and am now trying to make the rest of the UI functional (you cant edit the options currently). Currently we have implemented: Toggle (and DefaultOnToggle) Text Input (FreeText) Select (Choice) Range Range with Options (NamedRange) So 6/20 different option types… Bye!"}, {"post_id": 77417, "ts": "2026-10-06T21:42:23Z", "hours": 10.4872, "text": "What happened? You ask? I finished the new Library tab! So what actually differentiates this one from the old one? Instead of a two column design, we now use cards for each world and can therefore show vastly more worlds in less space, also the cards are the right size to later support grid art! The backend works completely different: the old one read manifest files to get its data, this one asks the runtime directly! Caching in a DB, so loads are really fast! This also provides the basis for the following new Option Creator, which I will work on next! Bye!"}, {"post_id": 76823, "ts": "2026-10-04T18:30:05Z", "hours": 9.0603, "text": "Its been a long time, but i made a decission that I think is correct, but is sort of a scarry one, I decided to start over from scratch again. Reason for this move is that the old architecture built around PyInstaller wasnt really a way i could continue foward, as it had too much Problems and while I probably could have switched that out, I decided to just start over. So what happend in the new Version? I added well almost the complete bootstrap flow, so the App now downloads a python runtime and the archipelago source code and installs all dependencies automatically! I will now continue working on reimplementing the basic layout and the option editor Bye!"}, {"post_id": 44023, "ts": "2026-08-09T15:05:52Z", "hours": 7.7142, "text": "Here we are again, it’s been a bit of time, so what has happened? The option editor was updated to actually work (wuhhhhhh), we now handle rendering the options and allow editing of these options, supported option types are: Toggle Range Named Range Choice (Select). Text Choice (Combobox) List Text The editor also now allows selecting the apworld you want to edit and adding new ones (this was hardcoded before). Up next is a bit of styling work on the option editor, the room setup screen, and maybe getting started with generation of the YAML files. I too need to again take a look at the option extraction, as I ran into multiple errors with extracting options, ranging from missing deps to other errors. Bye!"}, {"post_id": 41472, "ts": "2026-08-05T18:11:50Z", "hours": 9.8719, "text": "So, it’s time for another devlog. So, what has happened? As I talked about in the last devlog, I got the program added to the .apworld file format in the Windows Explorer, so that one can install apworlds just by double pressing. I also made a lot of progress on handling the options creator, originally I wanted to use PyO3 for integrating with the official Archipelago runtime, which I realised isn’t that great of an idea as shipping a Python interpreter with it is kind of a pain. So I ended up using PyInstaller to create an executable of the runtime + my wrapper and bundling that executable with the application. This executable now allows me to read the options from an apworld, which I am using to recreate the options creator in a more intuitive way by bundling the seed generation and room creation all in one flow, so a user can in one flow create all configurations, configure their room, generate their seed and upload it to a webhost of their choosing. From that flow, I already have some basics of the slot configuration set up, as well as, of course, the option reader. Next up I will try to complete the slot configuration and try myself at the seed generation, as well as the room configuration UI. Bye!"}, {"post_id": 24377, "ts": "2026-07-07T22:00:43Z", "hours": 12.2931, "text": "So, well… This took a bit longer than expected, but here we are again. Over the last days, I managed to make some big progress on the launcher, to the point that it now has a World Manager. (For context, a world is basically a game, or, to be more specific, the piece of software that tells Archipelago how a game works and how it should generate the items.) Writing this World Manager was way more difficult than originally thought, since I personally am neither an expert on Archipelago nor an expert on Tauri. It also didn’t help that the manifest file “archipelago.json” isn’t really a standard, as every world has different values and keys available, even the builtin worlds don’t have a consistent schema here. So, what actually is new? Some basic settings for selecting the path of your Archipelago Folder The Library tab to view installed Worlds An APWorld Installation flow The ability to remove Worlds Next I will have to look what I do, in terms of the world management I would really like to add the program to the Windows file picker, so opening the APWorld files would open this launcher instead of the official one. I also now need to more focus on the core part of the project, the Generation side, there I currently don’t have a plan how to do that yet, as I need to read a lot of Python for that, I will probably end up using PyO3, but I will have to look. Bye!"}, {"post_id": 2587, "ts": "2026-06-05T05:42:19Z", "hours": 2.7783, "text": "Hi there, I have been working on making a basic Layout and getting those pesky traffic light buttons to look good, this is what i ended up on. Yeah also setup my Tauri dev enviroment but thats the boring stuff"}]...
|
Title: PelagoHaven by @Kokoio01 | Stardance
Devlo Title: PelagoHaven by @Kokoio01 | Stardance
Devlogs:
Hi there, I have been working on making a basic Layout and getting those pesky traffic light buttons to look good, this is what i ended up on. Yeah also setup my Tauri dev enviroment but thats the boring stuff
So, well… This took a bit longer than expected, but here we are again. Over the last days, I managed to make some big progress on the launcher, to the point that it now has a World Manager. (For context, a world is basically a game, or, to be more specific, the piece of software that tells Archipelago how a game works and how it should generate the items.) Writing this World Manager was way more difficult than originally thought, since I personally am neither an expert on Archipelago nor an expert on Tauri. It also didn’t help that the manifest file “archipelago.json” isn’t really a standard, as every world has different values and keys available, even the builtin worlds don’t have a consistent schema here. So, what actually is new? Some basic settings for selecting the path of your Archipelago Folder The Library tab to view installed Worlds An APWorld Installation flow The ability to remove Worlds Next I will have to look what I do, in terms of the world management I would really like to add the program to the Windows file picker, so opening the APWorld files would open this launcher instead of the official one. I also now need to more focus on the core part of the project, the Generation side, there I currently don’t have a plan how to do that yet, as I need to read a lot of Python for that, I will probably end up using PyO3, but I will have to look. Bye!
So, it’s time for another devlog. So, what has happened? As I talked about in the last devlog, I got the program added to the .apworld file format in the Windows Explorer, so that one can install apworlds just by double pressing. I also made a lot of progress on handling the options creator, originally I wanted to use PyO3 for integrating with the official Archipelago runtime, which I realised isn’t that great of an idea as shipping a Python interpreter with it is kind of a pain. So I ended up using PyInstaller to create an executable of the runtime + my wrapper and bundling that executable with the application. This executable now allows me to read the options from an apworld, which I am using to recreate the options creator in a more intuitive way by bundling the seed generation and room creation all in one flow, so a user can in one flow create all configurations, configure their room, generate their seed and upload it to a webhost of their choosing. From that flow, I already have some basics of the slot configuration set up, as well as, of course, the option reader. Next up I will try to complete the slot configuration and try myself at the seed generation, as well as the room configuration UI. Bye!
Here we are again, it’s been a bit of time, so what has happened? The option editor was updated to actually work (wuhhhhhh), we now handle rendering the options and allow editing of these options, supported option types are: Toggle Range Named Range Choice (Select). Text Choice (Combobox) List Text The editor also now allows selecting the apworld you want to edit and adding new ones (this was hardcoded before). Up next is a bit of styling work on the option editor, the room setup screen, and maybe getting started with generation of the YAML files. I too need to again take a look at the option extraction, as I ran into multiple errors with extracting options, ranging from missing deps to other errors. Bye!
Its been a long time, but i made a decission that I think is correct, but is sort of a scarry one, I decided to start over from scratch again. Reason for this move is that the old architecture built around PyInstaller wasnt really a way i could continue foward, as it had too much Problems and while I probably could have switched that out, I decided to just start over. So what happend in the new Version? I added well almost the complete bootstrap flow, so the App now downloads a python runtime and the archipelago source code and installs all dependencies automatically! I will now continue working on reimplementing the basic layout and the option editor Bye!
What happened? You ask? I finished the new Library tab! So what actually differentiates this one from the old one? Instead of a two column design, we now use cards for each world and can therefore show vastly more worlds in less space, also the cards are the right size to later support grid art! The backend works completely different: the old one read manifest files to get its data, this one asks the runtime directly! Caching in a DB, so loads are really fast! This also provides the basis for the following new Option Creator, which I will work on next! Bye!
A devlog? So I am still in the middle of coding the Option Creator but it is making good progress. I have already finished the complex script to searilize the option data and cache it in sqlite and am now at creating the ui for it. The Ui is also making some progress, I already have rendering of the most basic option types implemented and am now trying to make the rest of the UI functional (you cant edit the options currently). Currently we have implemented: Toggle (and DefaultOnToggle) Text Input (FreeText) Select (Choice) Range Range with Options (NamedRange) So 6/20 different option types… Bye!...
|
1792500701.894872
|
1793105501.894872
|
|
15414
|
Alttre os by @Alttre | Stardance
|
Alttre
|
1
|
1.31
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T07:18:51Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created alttre.os, a modern, premium Web OS mockup built from scratch using React, Vite, and Framer Motion. 🚀 What did you make? Fully functional draggable and resizable window manager. Customizable Taskbar styles (Classic and Dock Layout) with a live Setup Screen. Premium glassmorphism UI with interactive live wallpaper engines (3D Particles & Fluid physics). A collection of built-in apps: A 3D STL File Viewer, 3D Studio Editor, Python IDE, Notepad, terminal, Lofi music player, Live Weather, Paint, games (Snake, Memory, TicTacToe), and a simulated InstaClone. ⚡️ What was challenging? Implementing smooth, absolute window dragging and custom resizing overlays without breaking embedded iframe components (like the 3D canvas and terminal). Handling viewport height scaling (dvh resets) in nested iframe environments (especially preventing bottom Dock cutoff in dashboard previews). Building the virtual file system (VFS) to share data state smoothly between apps like Notepad and Devlog. 🌟 What are you proud of? The premium, fluid, and highly polished glassmorphism design system. Designing a separate, completely modular preview system for the setup screen layout options. The ultra-responsive desktop feel and smooth custom cursor effects. 🔍 How to test it: Complete the setup screen to customize your OS username, wallpaper, cursor, and taskbar style (Classic or Dock). Use the menu on the top-left to launch applications. Open the “Stardance Devlog” app to see the progress log, and try resizing/dragging the windows to test out the multitasking window manager!", "repo": "https://github.com/Alttrest/web-os", "demo": "https://alttre-os.vercel.app/"}]...
|
[{"post_id": 7991, "ts": "2026 [{"post_id": 7991, "ts": "2026-06-13T10:24:06Z", "hours": 0.3092, "text": "Ifix the screen eror and make a better readme"}, {"post_id": 7332, "ts": "2026-06-12T07:13:00Z", "hours": 0.4847, "text": "I Posted 2 Devlog but ı cant ship my projecet ı write this for a test pls somene help me and ı want say aout somethinf my project ı finished eveythıng .add games resıble windeows editorsand ı fixed dock prewiew bug"}, {"post_id": 6892, "ts": "2026-06-11T15:37:03Z", "hours": 0.4419, "text": "ı aded a stl wiewer and 3d wiewer ı add a python editor based monaca editor ı thınk ıts enought but u have a ıdea ı can make ıt and ı fıunıshed the filesystem ı see some bugs about window system localhost before deployment update and ı fix them"}, {"post_id": 6856, "ts": "2026-06-11T14:45:05Z", "hours": 0.4764, "text": "ı am tryıng add a folder mechanic for my os and ı want make a pdf doc editor with stl wiewer"}]...
|
Title: Alttre os by @Alttre | Stardance
Devlogs:
Title: Alttre os by @Alttre | Stardance
Devlogs:
ı am tryıng add a folder mechanic for my os and ı want make a pdf doc editor with stl wiewer
ı aded a stl wiewer and 3d wiewer ı add a python editor based monaca editor ı thınk ıts enought but u have a ıdea ı can make ıt and ı fıunıshed the filesystem ı see some bugs about window system localhost before deployment update and ı fix them
I Posted 2 Devlog but ı cant ship my projecet ı write this for a test pls somene help me and ı want say aout somethinf my project ı finished eveythıng .add games resıble windeows editorsand ı fixed dock prewiew bug
Ifix the screen eror and make a better readme
Ships:
I created alttre.os, a modern, premium Web OS mockup built from scratch using React, Vite, and Framer Motion. 🚀 What did you make? Fully functional draggable and resizable window manager. Customizable Taskbar styles (Classic and Dock Layout) with a live Setup Screen. Premium glassmorphism UI with interactive live wallpaper engines (3D Particles & Fluid physics). A collection of built-in apps: A 3D STL File Viewer, 3D Studio Editor, Python IDE, Notepad, terminal, Lofi music player, Live Weather, Paint, games (Snake, Memory, TicTacToe), and a simulated InstaClone. ⚡️ What was challenging? Implementing smooth, absolute window dragging and custom resizing overlays without breaking embedded iframe components (like the 3D canvas and terminal). Handling viewport height scaling (dvh resets) in nested iframe environments (especially preventing bottom Dock cutoff in dashboard previews). Building the virtual file system (VFS) to share data state smoothly between apps like Notepad and Devlog. 🌟 What are you proud of? The premium, fluid, and highly polished glassmorphism design system. Designing a separate, completely modular preview system for the setup screen layout options. The ultra-responsive desktop feel and smooth custom cursor effects. 🔍 How to test it: Complete the setup screen to customize your OS username, wallpaper, cursor, and taskbar style (Classic or Dock). Use the menu on the top-left to launch applications. Open the “Stardance Devlog” app to see the progress log, and try resizing/dragging the windows to test out the multitasking window manager!...
|
1793051593.2759306
|
1793137993.2759306
|
|
61531
|
Ducks Can Fly Too! by @Choc0latesauce | Stardance
|
Choc0latesauce
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T18:13:51Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my first ever proper game, I hope I did Ok!! Here’s a description: Ducks Can Fly Too! 🦆 My surreal adventure about ducks and appreciating their ability to fly! - Created for Haven Jumpstart Game Mechanics / Features: Flappy bird style flying mechanics Dynamic animations Energy system Energy pickups Enemies Traps Interactable NPCs Dynamic parallax backgrounds Dynamic music system What I Learnt: Almost everything to do with my project, I learnt from scratch. I had made basic Godot games before but hadn’t gotten past making a basic character script and tile map level. I am pretty experienced with python which helped with coding GD script a little. It was so much fun to learn everything though! How do I play? Controls: Space to jump, D to move right, A to move left and E to interact Play from the releases tab! General Info: The game is very short at the moment! Plan to do more though! There is an ending, please keep going even if you find certain parts hard! :3 IN VERY EARLY DEVELOPMENT!", "repo": "https://github.com/Choc0latesauce/Ducks-Can-Fly-Too", "demo": "https://choc0fr.itch.io/ducks"}]...
|
[{"post_id": 79947, "ts": "202 [{"post_id": 79947, "ts": "2026-10-15T18:11:39Z", "hours": 0.3194, "text": "Gained a few extra mins from doing some final polish, this was a lot of fun to make and I’m looking forward to continuing it in the future! Hope you enjoy!"}, {"post_id": 73048, "ts": "2026-09-24T08:32:50Z", "hours": 4.5411, "text": "The first playable build is complete and is up on itch! I’ve added more interact-able npcs, a whole new underground level, more lore, new biomes and fan traps. I started making this game as my haven jumpstart project but am going to continue working on it as there’s still so much more I want to do. (especially polishing it more)"}, {"post_id": 70870, "ts": "2026-09-19T22:04:42Z", "hours": 5.7614, "text": "Been hard at work! Improved the levels, added an interactable npc, enemies, energy pickups, easter eggs and more!! I’m having a lot of fun learning as this is my first time actually putting effort into getting to grips with godot . Gone for a surreal mix of photorealistic imagery and pixel art"}, {"post_id": 67384, "ts": "2026-09-13T14:09:23Z", "hours": 3.4561, "text": "Almost done with the basics required for the game! Added in new flappy bird style jumping, dynamic camera movement, parallax backgrounds, animations, and energy system and ui, new tile sets, etc etc. I can’t wait to add some actual objectives next! I’m having a lot of fun"}, {"post_id": 66880, "ts": "2026-09-12T20:35:33Z", "hours": 0.7856, "text": "Following the haven jumpstart guide as a basis for the game and am about to move on from it, gotten basic movement and some admittedly creepy placeholder textures in place."}]...
|
Title: Ducks Can Fly Too! by @Choc0latesauce | Sta Title: Ducks Can Fly Too! by @Choc0latesauce | Stardance
Devlogs:
Following the haven jumpstart guide as a basis for the game and am about to move on from it, gotten basic movement and some admittedly creepy placeholder textures in place.
Almost done with the basics required for the game! Added in new flappy bird style jumping, dynamic camera movement, parallax backgrounds, animations, and energy system and ui, new tile sets, etc etc. I can’t wait to add some actual objectives next! I’m having a lot of fun
Been hard at work! Improved the levels, added an interactable npc, enemies, energy pickups, easter eggs and more!! I’m having a lot of fun learning as this is my first time actually putting effort into getting to grips with godot . Gone for a surreal mix of photorealistic imagery and pixel art
The first playable build is complete and is up on itch! I’ve added more interact-able npcs, a whole new underground level, more lore, new biomes and fan traps. I started making this game as my haven jumpstart project but am going to continue working on it as there’s still so much more I want to do. (especially polishing it more)
Gained a few extra mins from doing some final polish, this was a lot of fun to make and I’m looking forward to continuing it in the future! Hope you enjoy!
Ships:
This is my first ever proper game, I hope I did Ok!! Here’s a description: Ducks Can Fly Too! 🦆 My surreal adventure about ducks and appreciating their ability to fly! - Created for Haven Jumpstart Game Mechanics / Features: Flappy bird style flying mechanics Dynamic animations Energy system Energy pickups Enemies Traps Interactable NPCs Dynamic parallax backgrounds Dynamic music system What I Learnt: Almost everything to do with my project, I learnt from scratch. I had made basic Godot games before but hadn’t gotten past making a basic character script and tile map level. I am pretty experienced with python which helped with coding GD script a little. It was so much fun to learn everything though! How do I play? Controls: Space to jump, D to move right, A to move left and E to interact Play from the releases tab! General Info: The game is very short at the moment! Plan to do more though! There is an ending, please keep going even if you find certain parts hard! :3 IN VERY EARLY DEVELOPMENT!...
|
1793008246.1996763
|
1793094646.1996763
|
|
21987
|
off-road autonomous robot by @leila | Stardance
|
leila
|
0
|
173.99
|
0
|
[]
|
[{"post_id": 79978, "ts": "202 [{"post_id": 79978, "ts": "2026-08-13T00:00:00Z", "hours": 7.0, "text": "ok so from here on we just started placing the robots at different places trying to show what they could do if the washboard didnt always destroy their runs Exhibition 1: Team Big Fish and THE HILL … for our first exhibition, the other team set up the robot before the hill and took some stabs and speeding their way over it. in the end, none of the attempts made it, but i have video of the third one where they got so close that one of the wheels drove onto the other side of the hill and kept the robot there, until their driver let go of the throttle and let it down. it was super cool!! Exhibition 2: Team 10 and THE HOOK finally it was time for my teammates magnum opus of the past two weeks to be revealed and truly tested, and that of course was THE CLIMB!!!! and by the climb i mean a big pink plastic hook on the end of a measuring tape roll taken out of its case that we lovingly call “the bomb” (because it WILL explode if not handled properly). like i said a while ago though, the climb didnt have enough force to pull up the robot, but thats fine! theres still partial points for hooking, so all this exhibition really was was the hook rising at an almost comedically slow pace, before i carefully drove the robot over to the bar (as to not fold over the tape from the velocity) and gingerly brought the hook down on it. and everybody clapped! Exhibition 3: Team Big Fish and THE DUNK aka they used their shooter. it was super cool actually! they have a whole system with conveyor belt squeezing balls forward from above a slanted metal sheet, with flywheels at the end that can block balls for storage purposes until the gate is opened and the conveyor belts are forwarded to shoot them! it was suprisingly good and consistent, shooting from behind the second-to-last line. i wish we could do that… its okay they dont have a climb so we’re better and that was pretty much it! this experience has been so incredibly helpful for my learning and for me in general, and it really was(😢) one of the most fun times of my life. i dont even think i could near catalogue how much fun i had and how many things i learned. i really cant put it into words. thank you lucas, carlos, jade, maanya, patrick, alfonso, and trina for making this what it was, and of course thank you big zrl for sponsoring my attendance. if you’re reviewing this project, i recommend looking at devlogs further down if you’re missing context. the photos should hopefully help see the progression as well (if i can get those uploaded…) i leave you with 3 photos: the state of the robot right before i turned it off for the last time, the absolute state of our whiteboard after we used for brainstorming, and a last minute photo of the hallway i knew i would never walk again. happy hack clubbing!"}, {"post_id": 79977, "ts": "2026-08-12T00:00:00Z", "hours": 7.0, "text": "ladies, gentlemen, and my beautiful enbies * ITS TIME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *(ok so i admit this entry was written days later cause i had to go to school next day so my memory is foggy but! its still cool :3) basically the first half of the day (before everyone came in) was spent finalizing somethings we’d waved off earlier, like cable management and wiring in general, especially the motor wires were dangerously close to the suspension rods and a bunch of other things like that power and attaching the battery, since we really needed to keep the batteries charged properly to prevent the pi being underpowered and the battery needed to be held on with something a little less flimsy than straight up velcro 😭 THE GOD DAMN SET SCREWS HOLY TUNA THESE THINGS WILL NOT STAY TIGHT NO MATTER WHAT WE ARE NEVER GOING UP THAT HILL AGAIN ISTG (subtle foreshadowing) keeping the kill switch always accessible from the top and attaching it with a little more than tape and prayers making sure the wheels are attached properly and wont jut out weirdly as it has in the past, throwing the driving off balance as it getting the climb to actually work which is lowk a lost cause but we ball praying theres something we can do about the intake situation 😭🙏 among much more of course, the time eventually came when people started arriving (like alfonso, shoutout my goat) including a whole lot of parents. we started by showing them our robots as we made some final tweaks, like making sure the pi wouldnt fall off of our beautiful, incredibly complex attachment scheme (velcro mounting strips) until it finally happened… COMPETITION START‼️ so the way this ended up going is that each team alternated runs, usually getting progressively further (keyword usually …) Run 1: Team Big Fish (not us) their first run didn’t go too bad!! their ball intake was suprisingly functional (and by suprisingly i mean at all) (better than us tho) and they were almost able to get around the cones autonomously without hitting one! however, when it came to the washboard, it didnt really work out… their bot very quickly got stuck on a pipe and was ill equipped to unstuck itself, ending the first run. Run 2: Team 10 (US!!!!!!!!‼️!!!!!) also not too bad somehow!!!!!!!!!! of course there was no ball intake so we just drove over them, but we were able to slowly but surely get past the slalom with wide margins and very very slow turns in place. as for the washboard though, our run wasnt much better… i took the robot off of the ramp at the start rather fast, making sure to turn up the throttle limit in the hopes it would get us over a few obstacles. spoiler alert: it didnt. we pretty quickly just crashed into a full cinder block, bending the sheet metal base and unsurprisingly making it hard to continue the run! but whatever it was not too bad for a first attempt Run 3: Team Big Fish this one was probably their best! the ball intake was great, and they were able to carry them all through a perfect no-hit slalom! unfortunately, a similar fate to last time met them at the washboard. third times the charm hopefully… Run 4: Team 10 although the robot was slightly banged up now, it was still totally good to go! this slalom attempt was not nearly as graceful, and that certainly applies to the washboard too: i turned up the throttle limit more on the ramp and really just sent it, only to get stuck on top of that cinderblock instead of past it. fun stuff!"}, {"post_id": 79976, "ts": "2026-08-11T00:00:00Z", "hours": 7.0, "text": "and i call it frickmas cause THE COMPETITIONS TOMORROW OMG OMG OMG OMG OK SO here’s what on the agenda: making sure the set screws dont destroy themselves on the field getting the climb attached and making sure it maintains enough torque to actually pull the robot figuring out some sort of system for intake lining up all the suspension to prevent it from getting stuck, damaging the metal, or crapping out on the washboard section making sure the pi mount, buck converter, code, suspension actuation, and every other subsystem actually work testing!!! lots of testing of all of everything!!!!!!! for the first one, my partner had already spent so long on the set screws so some testing was all it took to see that they were fine, and that was enough cause they were not really going to get any better. my other partner finally got around to actually finishing up the climb and attaching it to the front of the bot. good news: it hooks! bad news: it doesn’t even remotely pull back! luckily, the rules still gove points for hook but no lift, so we decided to leave it there since his effort could be best spent elsewhere with this little time left the intake system was determined to be pretty much a dud by the end of the day, cause of course cardboard couldn’t really carry anything, and we didn’t have time to design something better since the last system fully failed lining up the suspension was pretty easy, just took a bit of manual adjustment and a good amount of testing on the field each of these were kind of annoying to address but i have a feeling itll be rather important at the end of the day (which is basically how long until handling all the wiring and subsystems took us) lastly for the testing, we just drove like a bunch of times! honestly the runs went like okayish ig, we rarely made it past the washboard and of course NEVER made it over the hill ever since we did it first a couple weeks ago. otherwise though, the robot was stable the entire time and didnt have any weird glitches or hardware malfunctions (thank god we taped down the battery this time) so we were good(ish) to go! below is basically what our final robot is gonna look like (minus the climb)"}, {"post_id": 79974, "ts": "2026-08-10T00:00:00Z", "hours": 7.0, "text": "OKAY it is time to get down to business we do NOT have much time. first order of business was looking at the TPU wheels reflect printed! they had come in while i was gone, and compared to our flywheels they were actually suprisingly good (although they lowk had their heads blown shmoove off (the tops were weirdly disconnected and ripped off)). most of all, our wheels were much too stiff and theirs were relatively soft, so we decided to go with theirs. we’d also gotten metal parts back from lucas; unfortunately, lucas’ parts were cut kinda incorrectly and for whatever reason the machine shop didn’t make them!! so, i spent today primarily trying to figure out how to do intake while one partner was working on (OF COURSE) retightening and loctite-ing the set screws and the other partner was working on finishing/testing the climb with a smaller motor he bought online over my hiatus. and by figuring out the intake, i mean taping a cardboard box to the bottom of the robot and letting it flap down while desperately PRAYING that the balls go in. i was also driving around a bunch trying to figure out why the robot was still really struggling to take turns, especially on the foam. eventually i had the insight that the friction on the wheels was simply too much, and Lucas came up with the idea of wrapping tape around the wheels to reduce it!! after that it was insane how well it drove and took turns, especially off of the foam floor. i lowk drove it around for like 45 mins straight it was so insanely fun to see something we made acting like a real machine, cause it was driving at a quality i could actually expect in like a real product! it was so cool and gratifying :3 of course i forgot to get a picture of video of it, which i have a feeling im gonna regret…"}, {"post_id": 79971, "ts": "2026-08-04T00:00:00Z", "hours": 7.0, "text": "okay so like i said last entry ill be leaving for three days, which means that i had to finish up some things today! i decided at this point that we were not going to able to mount a plate in the front for the intake (rip that idea and the whole bunch of filament we wasted on it 😭) so i spent the entire day pivoting on that idea and making the articulated suspension!!!! this was a really cool idea i talked with carlos about for like an hour, although we were thinking about only servos for suspension. this time around, i modified those servo mounts to place the head of of the edge of the main plate and used a bit of kevlar string Trina donated (ty Trina!) and tied it to the servo head and around the wheels hub. this means that when the servo is drawn up, the string pulls on the wheel, compresses the spring, and brings the robot down. for context, there is an 8 inch height requirement* that we had yet to succesfully get under. by that i mean the robot was like 11in. so, to get around that, these servo mounts could effectively deactivate the suspension at will, not only making driving more stable in the ball collection phase, but also actually getting under the height requirement! (since it was only a starting height requirement, we were allowed to expand after) anyways i made one mount, tested it, it didnt fully work, designed another and printed two of them, codexed while that was printing, tested one (it worked perfectly), printed 2 more, codexed the code for different states and positions for the servos and configuration stuff ofc, assembled the rest, tested all 4 of them out at the same time, actually tied good knots, and it was done by the end of the day!! im really proud of finishing this subsytem in one day before i left, it was suprisingly fun to see the robot dancing and doing pushups as it drove. and honestly, i think today really gave me that feeling of how incredible it is to see something like this just come to life, the way i feel when i make progress on a good coding project. i lowk want a 3d printer now… maybe that radish jam money could really come in handy……."}, {"post_id": 79970, "ts": "2026-08-03T00:00:00Z", "hours": 7.0, "text": "i am gonna be gone wednesday, thursday, and friday this week due to my schools orientation happening right before CalTech’s WiSTEM (which i am indeed going to :3), both of which are on weekdays. thus, with the intake challenge pushed even further to this wednesday (marking a full week delay), i will need to spend some time getting our existing systems to a good place and helping my partners with whatever they need over today and tomorrow before im gone. that being said, we did very little locking in today (hence calling it the dawn) because we had both a speaker and a tour!! Will Heltsley, former VP of Propulsion of SpaceX and an insanely knowledgable engineer, talked to us about different engineering concepts and some strategies for finding a stable job and a community of like-minded nerds that are fun to work beside. i asked a few questions about working with teams (because this program has shown me that it’ll be a very valuable skill to learn), especially since Will has done everything from working on a 3-person team to managing a group of 350 engineers. he was really helpful!! we also got to tour another startup, Forge Atomics, and it was awesome to see the inner workings of a company that is just getting of the ground! they had a really cool concept and i loved their mission, which in talking to one of the co-founders (Rex the goat) i learned was one of the most important things in finding a team that is going to work well: your missions need to align. also i learned from both mentors that, unless you plan on doing something research heavy like quantum computing, you should NOT get a PhD. guess what i want to do!"}, {"post_id": 79969, "ts": "2026-07-31T00:00:00Z", "hours": 7.0, "text": "okay this day was an experience fs. the start of the day was relatively normal, i was working a bit on ball detection while my partners assembled the intake/outtake thingy, and all of a sudden the pi turns off . this happened before when the power draw was low and peripherals were connected, so i just took out the camera and turned it on. yup, works fine. ok so lets plug the camera in while its on and it turns off . odd, looks like its probably some random bug or connection issue, so i just unplugged it, reseated it, and restarted the Pi. and it doesnt even turn on. ok, well theres another port. idk whats going on, but maybe thatll fix it? nothing. theres spare cables, lets try those ig? nope. ok what the hell the camera must be broken, so lets try a spare camera. doesnt turn on. ok what the actual ****???? lets try it on their robot and then theirs doesnt turn on either . at this point i am positively destroyed and fuming, luckily we have some very good food coming from a place nearby called the melt, so hopefully having a nice gooey cheesesteak can help me calm down, lock in, and figure out whats going on. big mistake. an hour passes. the adults have put on a movie, a fast and furious movie. you dont feel delirious, nor subdued, but simply off. its almost as if you are both more aware of your environment and slowly less aware of yourself. an hour passes. the car noises are still going. focus was a lost cause. one adult is stretching on the floor. the other is sitting at a table, still watching. you’re on the floor too. you’re not getting anything done. it was a lost cause anyways. an hour passes. carlos is sleeping on the slanted wooden plank of the hill. jade is lying on the floor and staring straight up. somehow your partner is locked in. the car noises continue. you are two inches away from meeting God, before you start laughing. shes laughing too, as well as your partner. presumably at carlos. sanity was a lost cause, and you lost it four and a half hours ago. cant believe its somehow 3:30. long story short, we slowly went insane with tokyo drift in the background as i pulled my hair out from the pi frying our cameras and the movie making it hard to focus, while one of my partners locked in to an unprecedented level, one just watched the movie casually, and the rest of us went crazy for no particular reason at all. this was a wild day (hence why im writing this the day after) never eating at the melt again bruh 😭"}, {"post_id": 79968, "ts": "2026-07-30T00:00:00Z", "hours": 7.0, "text": "I FORGOT TO PUT THE PRINT PLATE IN THE PRINTER YESTERDAY GOD DAMN IT 😭😭😭😭😭 its fine. ok so today was generally pretty mundane BUT!!! WE DROVE UP THE HILL LITERALLY ONCE!!!!! just on a whim my partner decided to go full power up the hill after my other partner had just loctited every set screw to see if we could make it, and we did!!!!!!!!!!!!!!!!!!!!!! …….unfortunately……… nobody filmed it…………………………….. -# god damn it…………………………. it was really cool though! i think it represents that we’re really nearing a functionally useful robot and that were actually overcoming the challenges that have plagued us for like weeks anyways heres a picture of our bot looking super duper cool"}, {"post_id": 79967, "ts": "2026-07-29T00:00:00Z", "hours": 7.0, "text": "so my GOATED teammate whose shall not be named figured out the TPU problem: the printer just wasnt strong enough to feed it in! i honestly have some doubt that that was THE problem, considering how easy the solution is (just unspool a bunch of filament onto the ground), but whatever we ball‼️ anyways the first third of today was spent working on that servo mount and arms CAD file i mentioned before as my partners finished up cutting the shafts and legs for the new tensioners. i also got the tensioners printed, but that was pretty quick since its just a few ~1x0.5” pieces the second third was spent doing the assembly for all the pieces, since we had to take apart each leg completely, and then go down the assembly line to put it together. i was responsible for putting on the tensioners and then the motors with these really handy alligator clips Carlos graciously gave us that allowed me to get short screws into holes that were far into the leg. then, once the motor is attached, my partner would attach the wheel and get the belt on there. i think he used some like dark magic cause the belt was really hard to get on before it was tensioned, idek how he did it now… my other partner would then put on the insert, bearings, and shaft for attaching the leg to the chassis. once we were done, we all spent some time getting the legs on the chassis but we didnt finish. i rushed to start the flywheel TPU print we designed a while ago before we left and spent the rest of the day on… THE SPACE X TOUR!!!!!!!!!!!!!!!!!!!!!!!!!! we got to go to spacex and have a little tour with one of patricks friends!!!!!!!!!! it was really really really cool, the facility was huge and we such a bunch of fuel tanks, satellites, an engine actively being built, and a phased antenna array. that last thing nerdsniped me so hard, and because Simon (one of our “tour guides”) was an engineer that worked on the Starlink user terminals (which also had the same type of antenna array as the Starlink satellites) i was able to ask a bunch of questions about it. apparently, they both have a bunch of antenna put together and arranged such that, by controlling the phase of the signal coming through each of the ~50 antennae, can focus on a narrow beam of EMF waves and effectively filter out signal to only a specific Starlink satellite in the sky. super cool!!!! no photo(s) cause we weren’t allowed to take any but its chill"}, {"post_id": 79966, "ts": "2026-07-28T00:00:00Z", "hours": 7.0, "text": "the TPU arrived! guess what though: it lowk doesnt work with the X1c (our printer)!!!!!!! we refined the design for the flywheel a bit, but after figuring out the TPU settings in the printer, our test prints didn’t work at all. at some point, it just seems to run out of filament (usually before the first layer finishes) and leaves these dots of plastic where its supposed to be entirely filled in. no TPU ig!! my teammates spent most of the day figuring out where to cut holes for the tensioner and then actually drilling those holes for the eventual assembly (prob tomorrow). it looked really sucky cause the hacksaw is time-consuming and lowk rather annoying, especially when we need to cut 3 shafts into like 12 pieces, so thank you teammates that was very nice 🙏 i spent the whole rest of the day on the CAD for the articulated arms that we’re gonna have in front and on top of the entire robot, and i designed a servo mount that’ll keep the servos attached to the robot at the exact height we need them to be to make a plate that hits the ground, settles at a nice angle, holds the flywheels, and all the while still fits on the print bed. i tried to print one of those mounts but after like 5 prints that failed on the first layer, the only succesful print ran out of filament on the second to last layer 😭 its lowk chill though cause it looks kinda cool so im gonna keep it attached is the lowk awesome lowk cooked servo mount that i lowk made and printed lowk"}, {"post_id": 79965, "ts": "2026-07-27T00:00:00Z", "hours": 7.0, "text": "GUESS WHAT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! the belt is skipping. turns out the belt needs to be tensioned to not yknow skip horribly. any real torque that the wheel experiences back on it, including the torque inherently present in turning with tank drive (which is really high cause we have really grippy wheels and their laid out in a rectangle), makes the belt slip on the teeth and not drive the tire at all, leaving the motor spinning but the robot not moving. basically, we’re gonna need a tensioner to slot into the legs. in other news, we still have to get intake/outtake working by friday hopefully. i’ve ordered TPU filament online and got on of my teammates to start on a design for a flywheel that has a PLA hub and TPU tire, maybe we’ll print it tomorrow? although one good thing about this is that the robot looks super cool awesome now (source: see below)"}, {"post_id": 79964, "ts": "2026-07-24T00:00:00Z", "hours": 7.0, "text": "the parts came! literally all of today was spent assembling the drive system as my partners were drilling the holes and cutting the shafts for the wheels, pivots, and spring dowels. we’ve unfortunately found out that the belt drives skip kind of a lot, so hopefully this doesn’t cause issues with driving under torque when we get to that… (i swear if this is foreshadowing) we also went out to Reflect Orbital today!! seeing the mirrors was incredibly cool, and the material they made it out of felt really interesting. something about its very small thickness (2.8 microns!!) made it feel like it was barely on your finger if you weren’t looking at it. In addition, I talked to one of the software engineers (shoutout Alfonso) about how they get the software done, including things like: Double buffering updates (seemingly called ABing) to make sure that no update permanently breaks the system Using the Yocto project to make a custom Linux kernel for their embedded systems Monolithic applications vs. a more service based approach that also goes hand in hand with… Error handling and making sure that something like an illegal instruction won’t crash your expensive space satellite Testing with the ground-sat (all of the components on the real satellite connected together on a table in a room) and an approach that involves uploading the changed code to the ground-sat every night and running a whole test suite to make sure none of the changes broke anything and that they (hopefully) achieved what they were written for overall it was pretty damn cool you should check out Reflect :3 below is one of the legs, and as you can see theres a whole belt going from the motor to the wheel!"}, {"post_id": 79963, "ts": "2026-07-23T00:00:00Z", "hours": 7.0, "text": "guess what THE BEARINGS AND SHAFTS GOT DELAYED!!!! YAAAAAAAAAAAYYYYY its fine. we spent today CADing and printing new designs for both the leg inserts and one piece of the rod-ends, and i think they’re in a pretty good place (for not having the actual components needed). I also did some testing with the ball/cone detection and came to the conclusion that it simply sucks and just isn’t good enough, so I got Codex to give me suggestions for an overhaul and I picked which approach would be the best to go for. The demo it produced for me using new shape detection and differentiating objects from its surroundings (in camera space) was so bad that I’ve decided on a completely different approach altogether: ML!! I got it to do another overhaul that would add a mode to the existing code that allowed camera snapshots to be taken and put in a folder with a press of a button on the controller. Then, it made a tool that could be run on my laptop that would bring the images up one by one, I would mark balls and cones on there, and then that data would be used to train an ONNX model (with ROCM acceleration on my Radeon 890M iGPU, of course) that could then be uploaded onto the Pi and ran as the new detection backend!! we’ll see if it works, cause I did all this at the end of the day and had no time to gather training data (of course i came up with this after two days of having very little to do)."}, {"post_id": 79949, "ts": "2026-07-22T00:00:00Z", "hours": 8.0169, "text": "7/21 - EVERYTHING GOT DELAYED VERY BAD NEWS: every single thing we needed to order for the drive train and suspension got delayed by a day 😭 anyways completely unrelated but the second competition is being moved to thursday, cause we cant drive through the course with literally 0 suspension the first 2 hours of today was spent rushing out an onshape sketch to get our metal legs cut by Lucas cause he (reasonably enough) wanted the drawing by 11 before he left the shop. i had to remember how to do drawings, with a lottt of help from carlos. unfortunately, i forgot the holes for the spring on the top so we’ll have to figure that eventually. i also forgot to put holes that would make screwing in the motor remotely possible but lucas the GOAT put those in for us. could not appreciate it more we might be lowk cooked now, cause the bearings say they’re gonna arrive thursday night so we may not even have the robot driving again until next week 😭😭 that being said we ball‼️ also ill be posting a devlog every weekday now cause i need to journal every day anyways attached below are 2 of the legs we got cut with the motors on them"}, {"post_id": 79948, "ts": "2026-07-22T00:00:00Z", "hours": 0.5692, "text": "7/22 - not much we can do about it much of today was spent moping about how everything would be arriving tonight (and of course the belts are arriving tomorrow night, one of the parts that is literally necessary to drive the thing at all). so much of today was spent just trying to design, cad, and otherwise figure out details for the legs before we actually had the components necessary to make them. i spent some time with one of my teammates figuring out where specifically the springs for the legs are gonna go, and he made a quick 3d printed rod-end that’ll hold in the shaft that acts as the spring dowel. we also planned out where we could put the legs’ pivot point on the chassis and just generally planned every element of assembly that we could. this also involved figuring out last second that i had no idea how we were gonna mount the springs and chassis on the leg at all and that my teammates didn’t know too much either, but its cool we figured it out and started the print by the end of the day 👍 attached: us figuring out where we’re gonna mount both the leg and the spring on the chassis and me drawing the top view of all the drive train stuff going on inside the leg (ignore my horrible handwriting its the board i swear)"}, {"post_id": 79960, "ts": "2026-07-20T00:00:00Z", "hours": 7.0, "text": "almost all of today was spent discussing and weighing different suspension designs and drive train implementations, culminating us in finally buying some parts and basically finishing out our $1000 budget from the start of the program to the end of this week. we settled on the 4 independent legs early, so the options were between: mounting the motor on the chassis on the same pivot point as the leg itself mounting the motor on the chassis and using a u-joint articulated axle mounting the motor high up on the leg and using a belt drive eventually we arrived on that last option because the other ones didnt really pose a benefit that was worth the complexity they would introduce (especially the first one) towards the end of the day, we ordered all the parts we needed to install it hopefully over tomorrow and wednesday also! we finished printing the finalized(…) wheel design so now we have four rigidly attached and bead-locked wheels+tires!! turns out the robot is like significantly faster than we thought so uhhh throttle limit is gonna have to be pretty low for a bit. below is a sample of our mad drawings (mostly mine 😭) trying to figure out how the hell this thing is gonna work"}, {"post_id": 79959, "ts": "2026-07-17T00:00:00Z", "hours": 7.0, "text": "my day was spent entirely on programming two things: the controls - i (codex) spent a bunch of time setting up: the tank controls to individually drive each motor making the motor channels and configuration set in environment variables, and making a shell script that loads those environment variables from a shell script, enters the py venv, and runs the program adding different modes/states to the program and a radial menu to switch between them (all in a TUI by the way) adding a throttle limit and button presses to change it on the fly adding a button to start driving and making it so that every unrecognized button press stops it as a safety measure it wasnt alllll codex tho, i came up with the all ideas for these and usually gave rather specific details for how i wanted them implemented i also worked on the ball detection , which mostly involved sitting down and just adjusting parameters until the detection was like maybe almost passable, adding (asking codex to) add new parameters when the existing ones didn’t encompass the mistaks the detector was making. needless to say this lowk took a while but we’re in a good place rn i think!!! we have a moving robot with some kinda maybe working ball detection, which is like half of the first phase (the easiest part). so were slightly cooked but still yay it works!!"}, {"post_id": 79958, "ts": "2026-07-16T00:00:00Z", "hours": 7.0, "text": "ok sooooo turned out the wheels actually highkey sucked. the shaft was circular, so of course the motor didn’t rotate it well (its a d-shaft motor so its shaft output has a chunk taken out of it), but even once we added the d-shaft it just turned the hole circular by itself anyways 😭 luckily Lucas told us about these things called shaft hubs that dig in to the shaft with set screws and provide screw holes perpendicular to the shaft that can be a lot better at transferring the rotational power without yknow slipping. so we bought those on amazon ofc! but still the assembly went really well!! all the ports worked together, including the motor holes on the legs, and we were able to put the pi on top and connect all the electronics, eventually getting the motors actually moving while in the air by the end of the day! (with a lot lot of codexing ofc) this is what the robot btw!! its super duper duper cool isnt it :3"}, {"post_id": 79957, "ts": "2026-07-15T00:00:00Z", "hours": 7.0, "text": "by that i mean we cut holes in a cardboard box, screwed the motors into them, stuck the wheels on, and codexed like no tomorrow until the motors somehow worked (THANK YOU SO MUCH LUCAS and also gpt luna), but our stupid dingy two-wheeled cardboard box actually moved! baby steps i swear ok but more important we’ve actually designed a metal base for the robot!! its literally a flat metal sheet with holes cut in it + 2 bent sheet metal pieces with motor holes cut out in them but! we learned about onshape a bunch more, the process of sheet metal modeling, and especially how to work with a machine shop. you heard that right, we’re getting our parts sent to a machine shop!!!! im really excited to see this piece come to life after we bumbled around on an onshape tab for like 3 hours trying to design it, i have a feeling its gonna be really cool. oh also were getting it tomorrow afternoon yay!!!! attached is that slightly cooked “robot”"}, {"post_id": 79956, "ts": "2026-07-14T00:00:00Z", "hours": 7.0, "text": "luckily the tires were able to arrive this morning, so Jade (one of the adults at the program) brought them in and we got to designing + 3d printing wheels for them! luckily we have full access to a bambu lab x1 carbon here, so we took some lessons from Carlos (one of the mentors) in Onshape and tried to design a preliminary wheel. of course it didnt fit cause we have no idea how to use calipers seemingly, but the second attempt actually worked pretty well! you could try to turn the tire and stop the wheel, and it wouldnt move unless you put a lot of force. we left a shaft hole in it ofc so we can put it on the motors when we recieve them tomorrow. very awesome very cool!!"}, {"post_id": 79950, "ts": "2026-07-14T00:00:00Z", "hours": 4.4017, "text": "so i may have forgotten to make a project when we started this a week ago but! the motors and camera are all connected successfully to the pi and it has a gh repo set up with a Codex’d ball/cone detector that automatically drives the motors (or manually with a usb xbox controller clone). all we need now is for the sheet metal chassis we designed friday to arrive and the bidirectional ESCs we ordered to replace the small and kinda inconsistent generic ESCs we have now"}, {"post_id": 79955, "ts": "2026-07-13T00:00:00Z", "hours": 7.0, "text": "we’ve finally formed our real groups! i got placed with two dudes, one my age and the other surprisingly young for the caliber of challenge we had ahead we also got $1000 to spend at our discretion for the next two weeks!!!!!🤑!!!!!!! we immediately made an amazon account and ordered some fundamental stuff, like: a controller! i just bought a cheap usb xbox controller clone, since we dont really need quality but we do need a reliable connection that works on startup. most importantly, motors!!!! this took a lot lot lot of deliberation (the whole day basically) and talking to our motors, but we eventually decided on these Maxynos planetary gear motors cause they have really good torque, theyre not too expensive, and we can easily buy some ESCs to connect to them. speaking off… ESCs and power distribution cables: this constisted of the motor speed controllers that were very specifically bought for their XT60 plugs, and then 3 splitter cables (2 2-way and 1 3-way) to distribute the power to each of the 4 motors and the pi as well. battery: at the advice of Lucas, one of our mentors who clearly knows a lot about projects like this, recommended Spektrum smart batteries so we bought a few of those + a brand smart charger for both teams 5V converter: to feed battery power to the Pi without literally kabooming it up (and to connect it in the first place). tires: we spent a lot of time on this decision! once again, lucas came in clutch suggesting rc car crawlers wheels because they have a lot of friction but also are very bendy. plus they have listed dimensions and a lip to attach a “bead-locked” wheel to, so we can just design our own wheel and put it in once it arrives and that was the day! whole lot of money spent for sure but its fineeeeeee (probably) (hopefully)"}, {"post_id": 79954, "ts": "2026-07-10T00:00:00Z", "hours": 7.0, "text": "one of my partners had already been working on a ball detection demo over the last couple of days that worked with their laptop camera, so i (Codex) took some time to add a picamera2 backend along with the existing opencv2 one and getting the code actually uploaded to the pi. there were a bunch of issues with libraries and venvs and maintaining stable input and output to and from the pi, but eventually we got some kind of a demo working. we had to plug in the pi’s power supply in the corner of the room and partially covered by like 20 chairs, but the ball detection kind of almost maybe worked a bit! one problem was that they made the program assuming manual mouse input for initially cataloging the different colored balls under those lighting conditions, but that had to be removed because there was no good way to have mouse input and realtime monitor output for the pi *and we certainly wouldn’t have that on the course itself)"}, {"post_id": 79953, "ts": "2026-07-09T00:00:00Z", "hours": 7.0, "text": "the start of the day was spent with all of us drawing our ideas for how we’d design a robot that could complete the course and then discussing what we drew, which was pretty helpful since i changed my design a few times based on what other people drew. i spent some time trying to get the IMX708 camera they bought to connect, which of course took the entire day 😭 the problem was that i was plugging it into port zero but the line in /boot/firmware/config.txt was dtoverlay=imx708 . of course it was supposed to be include cam0 to specify it was plugged into port 0 and not the apparent default of port 1(?!?). but whatever, i got the camera plugged in and showing stills by the end of the day"}, {"post_id": 79952, "ts": "2026-07-08T00:00:00Z", "hours": 7.0, "text": "finished setting up the Pis (finally), despite the train of issues that tried to stop us: the first problem was that the college wifi required sign in, so setting it up headless wasnt working. i tried to use lynx , but the website required js on its sign-in page(??) so i couldnt do that. i tried to use my tether (basically a hotspot but without hotspot data) but wpa_supplicant wasn’t authenticating properly. i tried to use my real hotspot, but the wifi didn’t work with that either. on a whim i switched to 2.4GHz and WPA2 and it worked magically? of course rpi connect still didn’t work and ssh wasn’t allowed over my hotspot for some reason so i just had them buy us a monitor, reformatted with a desktop installed, and plugged in a usb mouse and keyboard to authenticate manually. of course ssh is blocked on the school wifi (what im using now), but rpi connect works enough. that was pretty much the entire day though, the only other thing i did was getting a git repository set up on the pi"}, {"post_id": 79951, "ts": "2026-07-07T00:00:00Z", "hours": 7.0, "text": "we met each other, got a look at the course, and all drove the RC car through it one at a time. we also made accounts and signed up for Onshape and ChatGPT Plus, then Patrick showed us how to use Codex since that’s how we’ll be “coding” the entire project. another classmate and i then proceeded to spend the rest of the day setting up the Raspberry Pis that we’re going to use as our robots’ brains (we didn’t finish that day) attaached is a picture of that rc car"}]...
|
Title: off-road autonomous robot by @leila | Stard Title: off-road autonomous robot by @leila | Stardance
Devlogs:
we met each other, got a look at the course, and all drove the RC car through it one at a time. we also made accounts and signed up for Onshape and ChatGPT Plus, then Patrick showed us how to use Codex since that’s how we’ll be “coding” the entire project. another classmate and i then proceeded to spend the rest of the day setting up the Raspberry Pis that we’re going to use as our robots’ brains (we didn’t finish that day) attaached is a picture of that rc car
finished setting up the Pis (finally), despite the train of issues that tried to stop us: the first problem was that the college wifi required sign in, so setting it up headless wasnt working. i tried to use lynx , but the website required js on its sign-in page(??) so i couldnt do that. i tried to use my tether (basically a hotspot but without hotspot data) but wpa_supplicant wasn’t authenticating properly. i tried to use my real hotspot, but the wifi didn’t work with that either. on a whim i switched to 2.4GHz and WPA2 and it worked magically? of course rpi connect still didn’t work and ssh wasn’t allowed over my hotspot for some reason so i just had them buy us a monitor, reformatted with a desktop installed, and plugged in a usb mouse and keyboard to authenticate manually. of course ssh is blocked on the school wifi (what im using now), but rpi connect works enough. that was pretty much the entire day though, the only other thing i did was getting a git repository set up on the pi
the start of the day was spent with all of us drawing our ideas for how we’d design a robot that could complete the course and then discussing what we drew, which was pretty helpful since i changed my design a few times based on what other people drew. i spent some time trying to get the IMX708 camera they bought to connect, which of course took the entire day 😭 the problem was that i was plugging it into port zero but the line in /boot/firmware/config.txt was dtoverlay=imx708 . of course it was supposed to be include cam0 to specify it was plugged into port 0 and not the apparent default of port 1(?!?). but whatever, i got the camera plugged in and showing stills by the end of the day
one of my partners had already been working on a ball detection demo over the last couple of days that worked with their laptop camera, so i (Codex) took some time to add a picamera2 backend along with the existing opencv2 one and getting the code actually uploaded to the pi. there were a bunch of issues with libraries and venvs and maintaining stable input and output to and from the pi, but eventually we got some kind of a demo working. we had to plug in the pi’s power supply in the corner of the room and partially covered by like 20 chairs, but the ball detection kind of almost maybe worked a bit! one problem was that they made the program assuming manual mouse input for initially cataloging the different colored balls under those lighting conditions, but that had to be removed because there was no good way to have mouse input and realtime monitor output for the pi *and we certainly wouldn’t have that on the course itself)
we’ve finally formed our real groups! i got placed with two dudes, one my age and the other surprisingly young for the caliber of challenge we had ahead we also got $1000 to spend at our discretion for the next two weeks!!!!!🤑!!!!!!! we immediately made an amazon account and ordered some fundamental stuff, like: a controller! i just bought a cheap usb xbox controller clone, since we dont really need quality but we do need a reliable connection that works on startup. most importantly, motors!!!! this took a lot lot lot of deliberation (the whole day basically) and talking to our motors, but we eventually decided on these Maxynos planetary gear motors cause they have really good torque, theyre not too expensive, and we can easily buy some ESCs to connect to them. speaking off… ESCs and power distribution cables: this constisted of the motor speed controllers that were very specifically bought for their XT60 plugs, and then 3 splitter cables (2 2-way and 1 3-way) to distribute the power to each of the 4 motors and the pi as well. battery: at the advice of Lucas, one of our mentors who clearly knows a lot about projects like this, recommended Spektrum smart batteries so we bought a few of those + a brand smart charger for both teams 5V converter: to feed battery power to the Pi without literally kabooming it up (and to connect it in the first place). tires: we spent a lot of time on this decision! once again, lucas came in clutch suggesting rc car crawlers wheels because they have a lot of friction but also are very bendy. plus they have listed dimensions and a lip to attach a “bead-locked” wheel to, so we can just design our own wheel and put it in once it arrives and that was the day! whole lot of money spent for sure but its fineeeeeee (probably) (hopefully)
so i may have forgotten to make a project when we started this a week ago but! the motors and camera are all connected successfully to the pi and it has a gh repo set up with a Codex’d ball/cone detector that automatically drives the motors (or manually with a usb xbox controller clone). all we need now is for the sheet metal chassis we designed friday to arrive and the bidirectional ESCs we ordered to replace the small and kinda inconsistent generic ESCs we have now
luckily the tires were able to arrive this morning, so Jade (one of the adults at the program) brought them in and we got to designing + 3d printing wheels for them! luckily we have full access to a bambu lab x1 carbon here, so we took some lessons from Carlos (one of the mentors) in Onshape and tried to design a preliminary wheel. of course it didnt fit cause we have no idea how to use calipers seemingly, but the second attempt actually worked pretty well! you could try to turn the tire and stop the wheel, and it wouldnt move unless you put a lot of force. we left a shaft hole in it ofc so we can put it on the motors when we recieve them tomorrow. very awesome very cool!!
by that i mean we cut holes in a cardboard box, screwed the motors into them, stuck the wheels on, and codexed like no tomorrow until the motors somehow worked (THANK YOU SO MUCH LUCAS and also gpt luna), but our stupid dingy two-wheeled cardboard box actually moved! baby steps i swear ok but more important we’ve actually designed a metal base for the robot!! its literally a flat metal sheet with holes cut in it + 2 bent sheet metal pieces with motor holes cut out in them but! we learned about onshape a bunch more, the process of sheet metal modeling, and especially how to work with a machine shop. you heard that right, we’re getting our parts sent to a machine shop!!!! im really excited to see this piece come to life after we bumbled around on an onshape tab for like 3 hours trying to design it, i have a feeling its gonna be really cool. oh also were getting it tomorrow afternoon yay!!!! attached is that slightly cooked “robot”
ok sooooo turned out the wheels actually highkey sucked. the shaft was circular, so of course the motor didn’t rotate it well (its a d-shaft motor so its shaft output has a chunk taken out of it), but even once we added the d-shaft it just turned the hole circular by itself anyways 😭 luckily Lucas told us about these things called shaft hubs that dig in to the shaft with set screws and provide screw holes perpendicular to the shaft that can be a lot better at transferring the rotational power without yknow slipping. so we bought those on amazon ofc! but still the assembly went really well!! all the ports worked together, including the motor holes on the legs, and we were able to put the pi on top and connect all the electronics, eventually getting the motors actually moving while in the air by the end of the day! (with a lot lot of codexing ofc) this is what the robot btw!! its super duper duper cool isnt it :3
my day was spent entirely on programming two things: the controls - i (codex) spent a bunch of time setting up: the tank controls to individually drive each motor making the motor channels and configuration set in environment variables, and making a shell script that loads those environment variables from a shell script, enters the py venv, and runs the program adding different modes/states to the program and a radial menu to switch between them (all in a TUI by the way) adding a throttle limit and button presses to change it on the fly adding a button to start driving and making it so that every unrecognized button press stops it as a safety measure it wasnt alllll codex tho, i came up with the all ideas for these and usually gave rather specific details for how i wanted them implemented i also worked on the ball detection , which mostly involved sitting down and just adjusting parameters until the detection was like maybe almost passable, adding (asking codex to) add new parameters when the existing ones didn’t encompass the mistaks the detector was making. needless to say this lowk took a while but we’re in a good place rn i think!!! we have a moving robot with some kinda maybe working ball detection, which is like half of the first phase (the easiest part). so were slightly cooked but still yay it works!!
almost all of today was spent discussing and weighing different suspension designs and drive train implementations, culminating us in finally buying some parts and basically finishing out our $1000 budget from the start of the program to the end of this week. we settled on the 4 independent legs early, so the options were between: mounting the motor on the chassis on the same pivot point as the leg itself mounting the motor on the chassis and using a u-joint articulated axle mounting the motor high up on the leg and using a belt drive eventually we arrived on that last option because the other ones didnt really pose a benefit that was worth the complexity they would introduce (especially the first one) towards the end of the day, we ordered all the parts we needed to install it hopefully over tomorrow and wednesday also! we finished printing the finalized(…) wheel design so now we have four rigidly attached and bead-locked wheels+tires!! turns out the robot is like significantly faster than we thought so uhhh throttle limit is gonna have to be pretty low for a bit. below is a sample of our mad drawings (mostly mine 😭) trying to figure out how the hell this thing is gonna work
7/22 - not much we can do about it much of today was spent moping about how everything would be arriving tonight (and of course the belts are arriving tomorrow night, one of the parts that is literally necessary to drive the thing at all). so much of today was spent just trying to design, cad, and otherwise figure out details for the legs before we actually had the components necessary to make them. i spent some time with one of my teammates figuring out where specifically the springs for the legs are gonna go, and he made a quick 3d printed rod-end that’ll hold in the shaft that acts as the spring dowel. we also planned out where we could put the legs’ pivot point on the chassis and just generally planned every element of assembly that we could. this also involved figuring out last second that i had no idea how we were gonna mount the springs and chassis on the leg at all and that my teammates didn’t know too much either, but its cool we figured it out and started the print by the end of the day 👍 attached: us figuring out where we’re gonna mount both the leg and the spring on the chassis and me drawing the top view of all the drive train stuff going on inside the leg (ignore my horrible handwriting its the board i swear)
7/21 - EVERYTHING GOT DELAYED VERY BAD NEWS: every single thing we needed to order for the drive train and suspension got delayed by a day 😭 anyways completely unrelated but the second competition is being moved to thursday, cause we cant drive through the course with literally 0 suspension the first 2 hours of today was spent rushing out an onshape sketch to get our metal legs cut by Lucas cause he (reasonably enough) wanted the drawing by 11 before he left the shop. i had to remember how to do drawings, with a lottt of help from carlos. unfortunately, i forgot the holes for the spring on the top so we’ll have to figure that eventually. i also forgot to put holes that would make screwing in the motor remotely possible but lucas the GOAT put those in for us. could not appreciate it more we might be lowk cooked now, cause the bearings say they’re gonna arrive thursday night so we may not even have the robot driving again until next week 😭😭 that being said we ball‼️ also ill be posting a devlog every weekday now cause i need to journal every day anyways attached below are 2 of the legs we got cut with the motors on them
guess what THE BEARINGS AND SHAFTS GOT DELAYED!!!! YAAAAAAAAAAAYYYYY its fine. we spent today CADing and printing new designs for both the leg inserts and one piece of the rod-ends, and i think they’re in a pretty good place (for not having the actual components needed). I also did some testing with the ball/cone detection and came to the conclusion that it simply sucks and just isn’t good enough, so I got Codex to give me suggestions for an overhaul and I picked which approach would be the best to go for. The demo it produced for me using new shape detection and differentiating objects from its surroundings (in camera space) was so bad that I’ve decided on a completely different approach altogether: ML!! I got it to do another overhaul that would add a mode to the existing code that allowed camera snapshots to be taken and put in a folder with a press of a button on the controller. Then, it made a tool that could be run on my laptop that would bring the images up one by one, I would mark balls and cones on there, and then that data would be used to train an ONNX model (with ROCM acceleration on my Radeon 890M iGPU, of course) that could then be uploaded onto the Pi and ran as the new detection backend!! we’ll see if it works, cause I did all this at the end of the day and had no time to gather training data (of course i came up with this after two days of having very little to do).
the parts came! literally all of today was spent assembling the drive system as my partners were drilling the holes and cutting the shafts for the wheels, pivots, and spring dowels. we’ve unfortunately found out that the belt drives skip kind of a lot, so hopefully this doesn’t cause issues with driving under torque when we get to that… (i swear if this is foreshadowing) we also went out to Reflect Orbital today!! seeing the mirrors was incredibly cool, and the material they made it out of felt really interesting. something about its very small thickness (2.8 microns!!) made it feel like it was barely on your finger if you weren’t looking at it. In addition, I talked to one of the software engineers (shoutout Alfonso) about how they get the software done, including things like: Double buffering updates (seemingly called ABing) to make sure that no update permanently breaks the system Using the Yocto project to make a custom Linux kernel for their embedded systems Monolithic applications vs. a more service based approach that also goes hand in hand with… Error handling and making sure that something like an illegal instruction won’t crash your expensive space satellite Testing with the ground-sat (all of the components on the real satellite connected together on a table in a room) and an approach that involves uploading the changed code to the ground-sat every night and running a whole test suite to make sure none of the changes broke anything and that they (hopefully) achieved what they were written for overall it was pretty damn cool you should check out Reflect :3 below is one of the legs, and as you can see theres a whole belt going from the motor to the wheel!
GUESS WHAT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! the belt is skipping. turns out the belt needs to be tensioned to not yknow skip horribly. any real torque that the wheel experiences back on it, including the torque inherently present in turning with tank drive (which is really high cause we have really grippy wheels and their laid out in a rectangle), makes the belt slip on the teeth and not drive the tire at all, leaving the motor spinning but the robot not moving. basically, we’re gonna need a tensioner to slot into the legs. in other news, we still have to get intake/outtake working by friday hopefully. i’ve ordered TPU filament online and got on of my teammates to start on a design for a flywheel that has a PLA hub and TPU tire, maybe we’ll print it tomorrow? although one good thing about this is that the robot looks super cool awesome now (source: see below)
the TPU arrived! guess what though: it lowk doesnt work with the X1c (our printer)!!!!!!! we refined the design for the flywheel a bit, but after figuring out the TPU settings in the printer, our test prints didn’t work at all. at some point, it just seems to run out of filament (usually before the first layer finishes) and leaves these dots of plastic where its supposed to be entirely filled in. no TPU ig!! my teammates spent most of the day figuring out where to cut holes for the tensioner and then actually drilling those holes for the eventual assembly (prob tomorrow). it looked really sucky cause the hacksaw is time-consuming and lowk rather annoying, especially when we need to cut 3 shafts into like 12 pieces, so thank you teammates that was very nice 🙏 i spent the whole rest of the day on the CAD for the articulated arms that we’re gonna have in front and on top of the entire robot, and i designed a servo mount that’ll keep the servos attached to the robot at the exact height we need them to be to make a plate that hits the ground, settles at a nice angle, holds the flywheels, and all the while still fits on the print bed. i tried to print one of those mounts but after like 5 prints that failed on the first layer, the only succesful print ran out of filament on the second to last layer 😭 its lowk chill though cause it looks kinda cool so im gonna keep it attached is the lowk awesome lowk cooked servo mount that i lowk made and printed lowk
so my GOATED teammate whose shall not be named figured out the TPU problem: the printer just wasnt strong enough to feed it in! i honestly have some doubt that that was THE problem, considering how easy the solution is (just unspool a bunch of filament onto the ground), but whatever we ball‼️ anyways the first third of today was spent working on that servo mount and arms CAD file i mentioned before as my partners finished up cutting the shafts and legs for the new tensioners. i also got the tensioners printed, but that was pretty quick since its just a few ~1x0.5” pieces the second third was spent doing the assembly for all the pieces, since we had to take apart each leg completely, and then go down the assembly line to put it together. i was responsible for putting on the tensioners and then the motors with these really handy alligator clips Carlos graciously gave us that allowed me to get short screws into holes that were far into the leg. then, once the motor is attached, my partner would attach the wheel and get the belt on there. i think he used some like dark magic cause the belt was really hard to get on before it was tensioned, idek how he did it now… my other partner would then put on the insert, bearings, and shaft for attaching the leg to the chassis. once we were done, we all spent some time getting the legs on the chassis but we didnt finish. i rushed to start the flywheel TPU print we designed a while ago before we left and spent the rest of the day on… THE SPACE X TOUR!!!!!!!!!!!!!!!!!!!!!!!!!! we got to go to spacex and have a little tour with one of patricks friends!!!!!!!!!! it was really really really cool, the facility was huge and we such a bunch of fuel tanks, satellites, an engine actively being built, and a phased antenna array. that last thing nerdsniped me so hard, and because Simon (one of our “tour guides”) was an engineer that worked on the Starlink user terminals (which also had the same type of antenna array as the Starlink satellites) i was able to ask a bunch of questions about it. apparently, they both have a bunch of antenna put together and arranged such that, by controlling the phase of the signal coming through each of the ~50 antennae, can focus on a narrow beam of EMF waves and effectively filter out signal to only a specific Starlink satellite in the sky. super cool!!!! no photo(s) cause we weren’t allowed to take any but its chill
I FORGOT TO PUT THE PRINT PLATE IN THE PRINTER YESTERDAY GOD DAMN IT 😭😭😭😭😭 its fine. ok so today was generally pretty mundane BUT!!! WE DROVE UP THE HILL LITERALLY ONCE!!!!! just on a whim my partner decided to go full power up the hill after my other partner had just loctited every set screw to see if we could make it, and we did!!!!!!!!!!!!!!!!!!!!!! …….unfortunately……… nobody filmed it…………………………….. -# god damn it…………………………. it was really cool though! i think it represents that we’re really nearing a functionally useful robot and that were actually overcoming the challenges that have plagued us for like weeks anyways heres a picture of our bot looking super duper cool
okay this day was an experience fs. the start of the day was relatively normal, i was working a bit on ball detection while my partners assembled the intake/outtake thingy, and all of a sudden the pi turns off . this happened before when the power draw was low and peripherals were connected, so i just took out the camera and turned it on. yup, works fine. ok so lets plug the camera in while its on and it turns off . odd, looks like its probably some random bug or connection issue, so i just unplugged it, reseated it, and restarted the Pi. and it doesnt even turn on. ok, well theres another port. idk whats going on, but maybe thatll fix it? nothing. theres spare cables, lets try those ig? nope. ok what the hell the camera must be broken, so lets try a spare camera. doesnt turn on. ok what the actual ****???? lets try it on their robot and then theirs doesnt turn on either . at this point i am positively destroyed and fuming, luckily we have some very good food coming from a place nearby called the melt, so hopefully having a nice gooey cheesesteak can help me calm down, lock in, and figure out whats going on. big mistake. an hour passes. the adults have put on a movie, a fast and furious movie. you dont feel delirious, nor subdued, but simply off. its almost as if you are both more aware of your environment and slowly less aware of yourself. an hour passes. the car noises are still going. focus was a lost cause. one adult is stretching on the floor. the other is sitting at a table, still watching. you’re on the floor too. you’re not getting anything done. it was a lost cause anyways. an hour passes. carlos is sleeping on the slanted wooden plank of the hill. jade is lying on the floor and staring straight up. somehow your partner is locked in. the car noises continue. you are two inches away from meeting God, before you start laughing. shes laughing too, as well as your partner. presumably at carlos. sanity was a lost cause, and you lost it four and a half hours ago. cant believe its somehow 3:30. long story short, we slowly went insane with tokyo drift in the background as i pulled my hair out from the pi frying our cameras and the movie making it hard to focus, while one of my partners locked in to an unprecedented level, one just watched the movie casually, and the rest of us went crazy for no particular reason at all. this was a wild day (hence why im writing this the day after) never eating at the melt again bruh 😭
i am gonna be gone wednesday, thursday, and friday this week due to my schools orientation happening right before CalTech’s WiSTEM (which i am indeed going to :3), both of which are on weekdays. thus, with the intake challenge pushed even further to this wednesday (marking a full week delay), i will need to spend some time getting our existing systems to a good place and helping my partners with whatever they need over today and tomorrow before im gone. that being said, we did very little locking in today (hence calling it the dawn) because we had both a speaker and a tour!! Will Heltsley, former VP of Propulsion of SpaceX and an insanely knowledgable engineer, talked to us about different engineering concepts and some strategies for finding a stable job and a community of like-minded nerds that are fun to work beside. i asked a few questions about working with teams (because this program has shown me that it’ll be a very valuable skill to learn), especially since Will has done everything from working on a 3-person team to managing a group of 350 engineers. he was really helpful!! we also got to tour another startup, Forge Atomics, and it was awesome to see the inner workings of a company that is just getting of the ground! they had a really cool concept and i loved their mission, which in talking to one of the co-founders (Rex the goat) i learned was one of the most important things in finding a team that is going to work well: your missions need to align. also i learned from both mentors that, unless you plan on doing something research heavy like quantum computing, you should NOT get a PhD. guess what i want to do!
okay so like i said last entry ill be leaving for three days, which means that i had to finish up some things today! i decided at this point that we were not going to able to mount a plate in the front for the intake (rip that idea and the whole bunch of filament we wasted on it 😭) so i spent the entire day pivoting on that idea and making the articulated suspension!!!! this was a really cool idea i talked with carlos about for like an hour, although we were thinking about only servos for suspension. this time around, i modified those servo mounts to place the head of of the edge of the main plate and used a bit of kevlar string Trina donated (ty Trina!) and tied it to the servo head and around the wheels hub. this means that when the servo is drawn up, the string pulls on the wheel, compresses the spring, and brings the robot down. for context, there is an 8 inch height requirement* that we had yet to succesfully get under. by that i mean the robot was like 11in. so, to get around that, these servo mounts could effectively deactivate the suspension at will, not only making driving more stable in the ball collection phase, but also actually getting under the height requirement! (since it was only a starting height requirement, we were allowed to expand after) anyways i made one mount, tested it, it didnt fully work, designed another and printed two of them, codexed while that was printing, tested one (it worked perfectly), printed 2 more, codexed the code for different states and positions for the servos and configuration stuff ofc, assembled the rest, tested all 4 of them out at the same time, actually tied good knots, and it was done by the end of the day!! im really proud of finishing this subsytem in one day before i left, it was suprisingly fun to see the robot dancing and doing pushups as it drove. and honestly, i think today really gave me that feeling of how incredible it is to see something like this just come to life, the way i feel when i make progress on a good coding project. i lowk want a 3d printer now… maybe that radish jam money could really come in handy…….
OKAY it is time to get down to business we do NOT have much time. first order of business was looking at the TPU wheels reflect printed! they had come in while i was gone, and compared to our flywheels they were actually suprisingly good (although they lowk had their heads blown shmoove off (the tops were weirdly disconnected and ripped off)). most of all, our wheels were much too stiff and theirs were relatively soft, so we decided to go with theirs. we’d also gotten metal parts back from lucas; unfortunately, lucas’ parts were cut kinda incorrectly and for whatever reason the machine shop didn’t make them!! so, i spent today primarily trying to figure out how to do intake while one partner was working on (OF COURSE) retightening and loctite-ing the set screws and the other partner was working on finishing/testing the climb with a smaller motor he bought online over my hiatus. and by figuring out the intake, i mean taping a cardboard box to the bottom of the robot and letting it flap down while desperately PRAYING that the balls go in. i was also driving around a bunch trying to figure out why the robot was still really struggling to take turns, especially on the foam. eventually i had the insight that the friction on the wheels was simply too much, and Lucas came up with the idea of wrapping tape around the wheels to reduce it!! after that it was insane how well it drove and took turns, especially off of the foam floor. i lowk drove it around for like 45 mins straight it was so insanely fun to see something we made acting like a real machine, cause it was driving at a quality i could actually expect in like a real product! it was so cool and gratifying :3 of course i forgot to get a picture of video of it, which i have a feeling im gonna regret…
and i call it frickmas cause THE COMPETITIONS TOMORROW OMG OMG OMG OMG OK SO here’s what on the agenda: making sure the set screws dont destroy themselves on the field getting the climb attached and making sure it maintains enough torque to actually pull the robot figuring out some sort of system for intake lining up all the suspension to prevent it from getting stuck, damaging the metal, or crapping out on the washboard section making sure the pi mount, buck converter, code, suspension actuation, and every other subsystem actually work testing!!! lots of testing of all of everything!!!!!!! for the first one, my partner had already spent so long on the set screws so some testing was all it took to see that they were fine, and that was enough cause they were not really going to get any better. my other partner finally got around to actually finishing up the climb and attaching it to the front of the bot. good news: it hooks! bad news: it doesn’t even remotely pull back! luckily, the rules still gove points for hook but no lift, so we decided to leave it there since his effort could be best spent elsewhere with this little time left the intake system was determined to be pretty much a dud by the end of the day, cause of course cardboard couldn’t really carry anything, and we didn’t have time to design something better since the last system fully failed lining up the suspension was pretty easy, just took a bit of manual adjustment and a good amount of testing on the field each of these were kind of annoying to address but i have a feeling itll be rather important at the end of the day (which is basically how long until handling all the wiring and subsystems took us) lastly for the testing, we just drove like a bunch of times! honestly the runs went like okayish ig, we rarely made it past the washboard and of course NEVER made it over the hill ever since we did it first a couple weeks ago. otherwise though, the robot was stable the entire time and didnt have any weird glitches or hardware malfunctions (thank god we taped down the battery this time) so we were good(ish) to go! below is basically what our final robot is gonna look like (minus the climb)
ladies, gentlemen, and my beautiful enbies * ITS TIME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *(ok so i admit this entry was written days later cause i had to go to school next day so my memory is foggy but! its still cool :3) basically the first half of the day (before everyone came in) was spent finalizing somethings we’d waved off earlier, like cable management and wiring in general, especially the motor wires were dangerously close to the suspension rods and a bunch of other things like that power and attaching the battery, since we really needed to keep the batteries charged properly to prevent the pi being underpowered and the battery needed to be held on with something a little less flimsy than straight up velcro 😭 THE GOD DAMN SET SCREWS HOLY TUNA THESE THINGS WILL NOT STAY TIGHT NO MATTER WHAT WE ARE NEVER GOING UP THAT HILL AGAIN ISTG (subtle foreshadowing) keeping the kill switch always accessible from the top and attaching it with a little more than tape and prayers making sure the wheels are attached properly and wont jut out weirdly as it has in the past, throwing the driving off balance as it getting the climb to actually work which is lowk a lost cause but we ball praying theres something we can do about the intake situation 😭🙏 among much more of course, the time eventually came when people started arriving (like alfonso, shoutout my goat) including a whole lot of parents. we started by showing them our robots as we made some final tweaks, like making sure the pi wouldnt fall off of our beautiful, incredibly complex attachment scheme (velcro mounting strips) until it finally happened… COMPETITION START‼️ so the way this ended up going is that each team alternated runs, usually getting progressively further (keyword usually …) Run 1: Team Big Fish (not us) their first run didn’t go too bad!! their ball intake was suprisingly functional (and by suprisingly i mean at all) (better than us tho) and they were almost able to get around the cones autonomously without hitting one! however, when it came to the washboard, it didnt really work out… their bot very quickly got stuck on a pipe and was ill equipped to unstuck itself, ending the first run. Run 2: Team 10 (US!!!!!!!!‼️!!!!!) also not too bad somehow!!!!!!!!!! of course there was no ball intake so we just drove over them, but we were able to slowly but surely get past the slalom with wide margins and very very slow turns in place. as for the washboard though, our run wasnt much better… i took the robot off of the ramp at the start rather fast, making sure to turn up the throttle limit in the hopes it would get us over a few obstacles. spoiler alert: it didnt. we pretty quickly just crashed into a full cinder block, bending the sheet metal base and unsurprisingly making it hard to continue the run! but whatever it was not too bad for a first attempt Run 3: Team Big Fish this one was probably their best! the ball intake was great, and they were able to carry them all through a perfect no-hit slalom! unfortunately, a similar fate to last time met them at the washboard. third times the charm hopefully… Run 4: Team 10 although the robot was slightly banged up now, it was still totally good to go! this slalom attempt was not nearly as graceful, and that certainly applies to the washboard too: i turned up the throttle limit more on the ramp and really just sent it, only to get stuck on top of that cinderblock instead of past it. fun stuff!
ok so from here on we just started placing the robots at different places trying to show what they could do if the washboard didnt always destroy their runs Exhibition 1: Team Big Fish and THE HILL … for our first exhibition, the other team set up the robot before the hill and took some stabs and speeding their way over it. in the end, none of the attempts made it, but i have video of the third one where they got so close that one of the wheels drove onto the other side of the hill and kept the robot there, until their driver let go of the throttle and let it down. it was super cool!! Exhibition 2: Team 10 and THE HOOK finally it was time for my teammates magnum opus of the past two weeks to be revealed and truly tested, and that of course was THE CLIMB!!!! and by the climb i mean a big pink plastic hook on the end of a measuring tape roll taken out of its case that we lovingly call “the bomb” (because it WILL explode if not handled properly). like i said a while ago though, the climb didnt have enough force to pull up the robot, but thats fine! theres still partial points for hooking, so all this exhibition really was was the hook rising at an almost comedically slow pace, before i carefully drove the robot over to the bar (as to not fold over the tape from the velocity) and gingerly brought the hook down on it. and everybody clapped! Exhibition 3: Team Big Fish and THE DUNK aka they used their shooter. it was super cool actually! they have a whole system with conveyor belt squeezing balls forward from above a slanted metal sheet, with flywheels at the end that can block balls for storage purposes until the gate is opened and the conveyor belts are forwarded to shoot them! it was suprisingly good and consistent, shooting from behind the second-to-last line. i wish we could do that… its okay they dont have a climb so we’re better and that was pretty much it! this experience has been so incredibly helpful for my learning and for me in general, and it really was(😢) one of the most fun times of my life. i dont even think i could near catalogue how much fun i had and how many things i learned. i really cant put it into words. thank you lucas, carlos, jade, maanya, patrick, alfonso, and trina for making this what it was, and of course thank you big zrl for sponsoring my attendance. if you’re reviewing this project, i recommend looking at devlogs further down if you’re missing context. the photos should hopefully help see the progression as well (if i can get those uploaded…) i leave you with 3 photos: the state of the robot right before i turned it off for the last time, the absolute state of our whiteboard after we used for brainstorming, and a last minute photo of the hallway i knew i would never walk again. happy hack clubbing!...
|
1792752594.3365576
|
1793357394.3365576
|
|
52506
|
Particle simulation (Vulkan Compute Shaders + C++) Particle simulation (Vulkan Compute Shaders + C++) by @Knaj | Stardance...
|
Knaj
|
1
|
33.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T19:12:22Z", "hours": 33.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Particle Simulation, semi-finished. At last I’ve done it, this a mini-dream come true. I’ve finally “mastered” Vulkan compute shaders and got better at using C++ and GLSL. The program spawns 2000 particles (a very humble number, so I can run it on almost any machine) and simulates their gravity and collisions. In my very humble opinion, it’s quite impressive.", "repo": "https://github.com/Knajp/ParticleSimulation", "demo": "https://github.com/Knajp/ParticleSimulation/releases/tag/1.0.0"}]...
|
[{"post_id": 79981, "ts": "202 [{"post_id": 79981, "ts": "2026-10-15T18:46:09Z", "hours": 7.6886, "text": "The end? Probably not, but it sounds cool and is a Minecraft reference. Anyway, as you can see, I (sadly along with the help of an LLM, since I’m not the best at physics (i promise I only used it to explain the physics part and fix some insanely weird bugs)) implemented the collision system. What it took So, to achieve this and not make my computer burn down, I used a spatial grid. The way this one worked is: I added 2 buffers, one for cell heads, and other for next particles Created a linked list using those, with the last one pointing to index -1. Then, using some nonsense calculations, for every particle I checked every particle in their own cell and the 8 surrounding ones. That way I didn’t have to make a literal billion if statements per second. Then I fiddled around with making the particles stop moving on their own, and bim bam boom, I’ve got a nice layer of particles at the bottom. What’s next? I probably won’t finish this during stardance, but I’ll add some mouse interactions so the simulation isn’t so stagnant, and that should probably be it. Attachments In the attachments you’ve got a simulation of 2,000 and 100,000 particles, and a screenshot of the final result."}, {"post_id": 76212, "ts": "2026-10-02T18:03:56Z", "hours": 9.3442, "text": "Not a nothingburger anymore! Just a regular burger now, though. As you can see, the particles are there. And there’s many of them. Three thousand if I remember correctly. I can’t lie, implementing this took a lot and made me experiment with a lot of new things and especially modern Vulkan. What it took So, in my last devlog I said that the particles were in memory. They in fact were not, because my compute invocation was broken. But as you might imagine by now, I fixed that. What was wrong is that I was calling vkDispatch(cb, [actual number of dispatches], 0, 0) . Since x * 0 * 0 = 0 , the total number of calls was, you guessed it - zero. Changed it to vkDispatch(..., 1, 1) and it worked like a charm. Then I had issues with displaying the stuff (passing uninitialized values to the shaders), and also making the particles round. Overall, a nice challenging part of the project."}, {"post_id": 70047, "ts": "2026-09-18T11:08:06Z", "hours": 8.6511, "text": "A very big nothingburger. Yup. Despite working on this devlog for about 9 hours, I’ve made no visible progress. There’s still no window displaying anything (there is one on traditional DEs, but it won’t work on Hyprland for some unknown reason). However, it’s not as simple as it sounds, since I had to be working on something, right? Right. That thing being the base for the particle simulation – The compute pipeline, the compute shader, the compute everything. Additionally, I’ve finished the renderer init. Now the program launches without any issues! Somehow. Lol. The obvious next step is to actually get something rendering, and since the particles, or at least potential particles should be in their SSBO by now, I think I should be able to make a humble hundred-thousand-vertex draw call and be good! In theory, of course. How it will turn out in practice, we will see. And because as I said, I don’t have any visual output yet, you can have another picture of the terminal output as a treat."}, {"post_id": 61481, "ts": "2026-09-04T12:47:12Z", "hours": 7.3406, "text": "Devlog #1 Project Setup This was supposed to be covered a separate devlog, however posting the devlog failed and I simply gave up. Anyhow, I set up the project in quite a simple way, hoping to minimize the amount of bloat in the vendor directory. The project uses C++, Vulkan (my two beloved technologies) and CMake, which is a first for me. Renderer base So far, I’ve made use of GLFW to create a window and then used Vulkan to create a window surface and prepare the swapchain. What the swapchain in plain terms is that it makes sure you dont have to wait for the next frame to be rendered with a blank screen. Next Steps The next obvious step would be a graphics pipeline, however this time I’m thinking of going straight into rendering particles instead of the regular triangle. That would require a different (possibly instanced) . graphics pipeline, more sophisticated shaders and of course, a compute pipeline, learning which is the very point of this project. -# ignore assert failed please"}]...
|
Title: Particle simulation (Vulkan Compute Shaders Title: Particle simulation (Vulkan Compute Shaders + C++) by @Knaj | Stardance
Devlogs:
Devlog #1 Project Setup This was supposed to be covered a separate devlog, however posting the devlog failed and I simply gave up. Anyhow, I set up the project in quite a simple way, hoping to minimize the amount of bloat in the vendor directory. The project uses C++, Vulkan (my two beloved technologies) and CMake, which is a first for me. Renderer base So far, I’ve made use of GLFW to create a window and then used Vulkan to create a window surface and prepare the swapchain. What the swapchain in plain terms is that it makes sure you dont have to wait for the next frame to be rendered with a blank screen. Next Steps The next obvious step would be a graphics pipeline, however this time I’m thinking of going straight into rendering particles instead of the regular triangle. That would require a different (possibly instanced) . graphics pipeline, more sophisticated shaders and of course, a compute pipeline, learning which is the very point of this project. -# ignore assert failed please
A very big nothingburger. Yup. Despite working on this devlog for about 9 hours, I’ve made no visible progress. There’s still no window displaying anything (there is one on traditional DEs, but it won’t work on Hyprland for some unknown reason). However, it’s not as simple as it sounds, since I had to be working on something, right? Right. That thing being the base for the particle simulation – The compute pipeline, the compute shader, the compute everything. Additionally, I’ve finished the renderer init. Now the program launches without any issues! Somehow. Lol. The obvious next step is to actually get something rendering, and since the particles, or at least potential particles should be in their SSBO by now, I think I should be able to make a humble hundred-thousand-vertex draw call and be good! In theory, of course. How it will turn out in practice, we will see. And because as I said, I don’t have any visual output yet, you can have another picture of the terminal output as a treat.
Not a nothingburger anymore! Just a regular burger now, though. As you can see, the particles are there. And there’s many of them. Three thousand if I remember correctly. I can’t lie, implementing this took a lot and made me experiment with a lot of new things and especially modern Vulkan. What it took So, in my last devlog I said that the particles were in memory. They in fact were not, because my compute invocation was broken. But as you might imagine by now, I fixed that. What was wrong is that I was calling vkDispatch(cb, [actual number of dispatches], 0, 0) . Since x * 0 * 0 = 0 , the total number of calls was, you guessed it - zero. Changed it to vkDispatch(..., 1, 1) and it worked like a charm. Then I had issues with displaying the stuff (passing uninitialized values to the shaders), and also making the particles round. Overall, a nice challenging part of the project.
The end? Probably not, but it sounds cool and is a Minecraft reference. Anyway, as you can see, I (sadly along with the help of an LLM, since I’m not the best at physics (i promise I only used it to explain the physics part and fix some insanely weird bugs)) implemented the collision system. What it took So, to achieve this and not make my computer burn down, I used a spatial grid. The way this one worked is: I added 2 buffers, one for cell heads, and other for next particles Created a linked list using those, with the last one pointing to index -1. Then, using some nonsense calculations, for every particle I checked every particle in their own cell and the 8 surrounding ones. That way I didn’t have to make a literal billion if statements per second. Then I fiddled around with making the particles stop moving on their own, and bim bam boom, I’ve got a nice layer of particles at the bottom. What’s next? I probably won’t finish this during stardance, but I’ll add some mouse interactions so the simulation isn’t so stagnant, and that should probably be it. Attachments In the attachments you’ve got a simulation of 2,000 and 100,000 particles, and a screenshot of the final result.
Ships:
Particle Simulation, semi-finished. At last I’ve done it, this a mini-dream come true. I’ve finally “mastered” Vulkan compute shaders and got better at using C++ and GLSL. The program spawns 2000 particles (a very humble number, so I can run it on almost any machine) and simulates their gravity and collisions. In my very humble opinion, it’s quite impressive....
|
1793051264.7320654
|
1793137664.7320654
|
|
62333
|
Time-Bridge by @AidenHammy | Stardance
|
AidenHammy
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T20:05:18Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I finally shipped TimeBridge, a Chrome extension I built to solve a problem I have every single day. Doing mental math for timezone scheduling while typing in chat apps. Not just for me but every remote worker knows the pain. You type “let’s call tomorrow at 3pm” in Slack. Then you stop, open a new tab, plug it into a timezone converter, figure out what time that is in Tokyo and come back to type it. Undoubtedly it does break your flow. TimeBridge fixes this by living right inside your chat box. Instead of bouncing between Slack and a timezone converter, TimeBridge uses natural language processing to read what you’re typing. When it sees a time phrase, it quietly drops a little clock icon next to your text box. You click it and it tells you what time that is for your contacts. Why it’s different: Passive UI: It doesn’t shout at you. Well, don’t take it literally. It’s just a quiet 26px clock icon you can click or ignore. Real language: Understands phrases like “next Tuesday at noon” or “in 2 hours” using natural language parsing. Privacy-first: It doesn’t run on every website. It defaults to an allowlist (Slack, WhatsApp, Gmail) that you control.", "repo": "https://github.com/AidenHammy/timeBridge", "demo": "https://github.com/AidenHammy/timeBridge/releases/tag/v1.0.0"}]...
|
[{"post_id": 79991, "ts": "202 [{"post_id": 79991, "ts": "2026-10-15T19:59:39Z", "hours": 0.7172, "text": "Logging the leftover time that got caught up during the project maintenance and finalization"}, {"post_id": 79980, "ts": "2026-10-15T18:42:52Z", "hours": 1.4169, "text": "Devlog #3: Playing Nice (Allowlists & Passive UI) The core loop works. So you type a time, the badge pops up and it tells you what time it is for your contact. But after using it for a few days, two massive problems became obvious: it was running everywhere and it was too loud. Here’s how I fixed the extension to play nice with your browsing experience. Problem 1: The “Everywhere” Problem Originally, the manifest was set to <all_urls> . This meant the content script was injecting itself into every single page you visited. Your banking site, Reddit, random blogs. Even if the badge didn’t pop up, the event listeners were running on every text box on the internet which felt invasive and heavy. So I added an enabledSites list to chrome.storage.local . The extension now defaults to only running on whatsapp.com, slack.com and mail.google.com. I also updated the popup UI. If you want to add a new site (like discord.com), you can either type it manually in the popup or just hit the “+ Add current site” button which grabs the URL of the tab you’re currently looking at. The content script listens to storage changes so if you add a site, the extension instantly activates on that tab and no reload is required. Problem 2: The Noise Problem The badge was a full card which activated whenever you typed a time or date, a giant dark tooltip would expand below your text box. If you were just typing a normal message that happened to include a time, the UI was visually shouting at you. SO I shrunk the UI down to a tiny 26x26 pixel clock icon (🕐). It still appears when you type a time phrase but it stays out of your way. If you actually want to see the conversion, you click the icon and the full panel expands. If you click away, it collapses back to the icon. It’s much less stressful to type with!"}, {"post_id": 79846, "ts": "2026-10-15T16:32:13Z", "hours": 2.755, "text": "Devlog #2: The Core Loop The skeleton is alive, the real-world quirks are patched and the timezone picker doesn’t suck anymore. But how does it actually feel to use? Here’s how it works. You add a contact and the extension detects the time for them right where you’re typing. Step 1: Telling TimeBridge who you know When you click the extension icon, the popup opens. That right there is your contact book. Before, I was using a native <select> dropdown for the timezones which meant scrolling through 418 IANA zones which was terrible. Now, it’s a custom search-as-you-type combobox. You just type a name (like “Jean”) then start typing a country, city or abbreviation in the timezone box. If you type “Europe” the combobox instantly surfaces the available results because of the alias map I added. It still needs to be refined since it doesn’t yet contain ALL of the timezones. Also when you hit Enter and click “Add Contact”, it saves to chrome.storage.local , Jean now shows up in your list with her current local time updating live. Step 2: Typing in the wild Now you head over to Gmail, Slack web or Twitter, anywhere with a text box. You start typing a message, lets say “Let’s sync tomorrow at 3pm” Behind the scenes, it works like this: The Listener: A content script is running on the page. It’s using a single delegated document.addEventListener in the capture phase. This means it catches your typing whether you’re in a plain , a rich text with nested formatting spans or even a contact form embedded in an iframe. The Debounce: It doesn’t parse on every single keystroke (that would lag the browser). It uses a 250ms debounce. When you pause typing for a quarter of a second, it grabs the text. The Parser: It passes that text to chrono-node, the parsing library I bundled. Chrono looks at the phrase “tomorrow at 3pm” and figures out what “tomorrow” actually is based on today’s date and spits out an actual Date object. Step 3: The Badge If Chrono finds a time, the extension builds a floating, dark-colored tooltip (the badge) and injects it right below the text box you’re typing in. The badge does three things: It shows you the exact phrase it detected: “tomorrow at 3pm” It grabs the last contact you used (in this case, Jean) and automatically converts that 3pm time into her local time, displaying it right there. It gives you a dropdown. If you actually meant to schedule this with a different contact, you can switch the dropdown right in the badge and it recalculates the time instantly. One of the most annoying things to figure out was what happens when you hit Enter. On Slack or WhatsApp, Enter sends the message and clears the text box immediately. Because of my 250ms debounce, the extension was occasionally showing the badge after the message was already sent, making it float over an empty text box. The fix was adding a specific keydown listener. If you hit enter (without shift), the extension kills the debounce timer and hides the badge instantly which means no more ghost badges"}, {"post_id": 79289, "ts": "2026-10-13T10:33:20Z", "hours": 2.2542, "text": "Devlog #1: Getting TimeBridge Off the Ground Spent the weekend building the first version of TimeBridge, a small Chrome extension aimed at making timezone coordination less of a headache. The idea is to detect time references as you type and eventually let you convert them to your contacts’ local times without doing the math yourself. I started with two core features. A popup contact book that saves names and timezones using chrome.storage.local and a live text parser powered by chrono-node . The popup displays contacts’ local times while the parser detects phrases like “let’s call tomorrow at 3pm” using a debounced content script. I also used the browser’s native Intl.supportedValuesOf(\"timeZone\") API to populate the timezone list instead of maintaining one manually and bundled only the English parser to bring its size down from around 400 KB to 100 KB but getting everything to run turned out to be its own challenge. Chrome refused to load the extension because the bundled parser file was missing and regenerating it exposed an empty package.json that caused npm to throw an EJSONPARSE error. After fixing the dependencies, rebuilding the bundle with esbuild and correcting the script order in the manifest, the extension finally loaded. I also had to enable file URL access in Chrome before my local test page would work with the content script. The skeleton is alive and well, the contacts persist, local times update and time expressions are detected as I type. There’s no UI for the parser yet so everything still goes to the console"}]...
|
Title: Time-Bridge by @AidenHammy | Stardance
Dev Title: Time-Bridge by @AidenHammy | Stardance
Devlogs:
Devlog #1: Getting TimeBridge Off the Ground Spent the weekend building the first version of TimeBridge, a small Chrome extension aimed at making timezone coordination less of a headache. The idea is to detect time references as you type and eventually let you convert them to your contacts’ local times without doing the math yourself. I started with two core features. A popup contact book that saves names and timezones using chrome.storage.local and a live text parser powered by chrono-node . The popup displays contacts’ local times while the parser detects phrases like “let’s call tomorrow at 3pm” using a debounced content script. I also used the browser’s native Intl.supportedValuesOf("timeZone") API to populate the timezone list instead of maintaining one manually and bundled only the English parser to bring its size down from around 400 KB to 100 KB but getting everything to run turned out to be its own challenge. Chrome refused to load the extension because the bundled parser file was missing and regenerating it exposed an empty package.json that caused npm to throw an EJSONPARSE error. After fixing the dependencies, rebuilding the bundle with esbuild and correcting the script order in the manifest, the extension finally loaded. I also had to enable file URL access in Chrome before my local test page would work with the content script. The skeleton is alive and well, the contacts persist, local times update and time expressions are detected as I type. There’s no UI for the parser yet so everything still goes to the console
Devlog #2: The Core Loop The skeleton is alive, the real-world quirks are patched and the timezone picker doesn’t suck anymore. But how does it actually feel to use? Here’s how it works. You add a contact and the extension detects the time for them right where you’re typing. Step 1: Telling TimeBridge who you know When you click the extension icon, the popup opens. That right there is your contact book. Before, I was using a native <select> dropdown for the timezones which meant scrolling through 418 IANA zones which was terrible. Now, it’s a custom search-as-you-type combobox. You just type a name (like “Jean”) then start typing a country, city or abbreviation in the timezone box. If you type “Europe” the combobox instantly surfaces the available results because of the alias map I added. It still needs to be refined since it doesn’t yet contain ALL of the timezones. Also when you hit Enter and click “Add Contact”, it saves to chrome.storage.local , Jean now shows up in your list with her current local time updating live. Step 2: Typing in the wild Now you head over to Gmail, Slack web or Twitter, anywhere with a text box. You start typing a message, lets say “Let’s sync tomorrow at 3pm” Behind the scenes, it works like this: The Listener: A content script is running on the page. It’s using a single delegated document.addEventListener in the capture phase. This means it catches your typing whether you’re in a plain , a rich text with nested formatting spans or even a contact form embedded in an iframe. The Debounce: It doesn’t parse on every single keystroke (that would lag the browser). It uses a 250ms debounce. When you pause typing for a quarter of a second, it grabs the text. The Parser: It passes that text to chrono-node, the parsing library I bundled. Chrono looks at the phrase “tomorrow at 3pm” and figures out what “tomorrow” actually is based on today’s date and spits out an actual Date object. Step 3: The Badge If Chrono finds a time, the extension builds a floating, dark-colored tooltip (the badge) and injects it right below the text box you’re typing in. The badge does three things: It shows you the exact phrase it detected: “tomorrow at 3pm” It grabs the last contact you used (in this case, Jean) and automatically converts that 3pm time into her local time, displaying it right there. It gives you a dropdown. If you actually meant to schedule this with a different contact, you can switch the dropdown right in the badge and it recalculates the time instantly. One of the most annoying things to figure out was what happens when you hit Enter. On Slack or WhatsApp, Enter sends the message and clears the text box immediately. Because of my 250ms debounce, the extension was occasionally showing the badge after the message was already sent, making it float over an empty text box. The fix was adding a specific keydown listener. If you hit enter (without shift), the extension kills the debounce timer and hides the badge instantly which means no more ghost badges
Devlog #3: Playing Nice (Allowlists & Passive UI) The core loop works. So you type a time, the badge pops up and it tells you what time it is for your contact. But after using it for a few days, two massive problems became obvious: it was running everywhere and it was too loud. Here’s how I fixed the extension to play nice with your browsing experience. Problem 1: The “Everywhere” Problem Originally, the manifest was set to <all_urls> . This meant the content script was injecting itself into every single page you visited. Your banking site, Reddit, random blogs. Even if the badge didn’t pop up, the event listeners were running on every text box on the internet which felt invasive and heavy. So I added an enabledSites list to chrome.storage.local . The extension now defaults to only running on whatsapp.com, slack.com and mail.google.com. I also updated the popup UI. If you want to add a new site (like discord.com), you can either type it manually in the popup or just hit the “+ Add current site” button which grabs the URL of the tab you’re currently looking at. The content script listens to storage changes so if you add a site, the extension instantly activates on that tab and no reload is required. Problem 2: The Noise Problem The badge was a full card which activated whenever you typed a time or date, a giant dark tooltip would expand below your text box. If you were just typing a normal message that happened to include a time, the UI was visually shouting at you. SO I shrunk the UI down to a tiny 26x26 pixel clock icon (🕐). It still appears when you type a time phrase but it stays out of your way. If you actually want to see the conversion, you click the icon and the full panel expands. If you click away, it collapses back to the icon. It’s much less stressful to type with!
Logging the leftover time that got caught up during the project maintenance and finalization
Ships:
I finally shipped TimeBridge, a Chrome extension I built to solve a problem I have every single day. Doing mental math for timezone scheduling while typing in chat apps. Not just for me but every remote worker knows the pain. You type “let’s call tomorrow at 3pm” in Slack. Then you stop, open a new tab, plug it into a timezone converter, figure out what time that is in Tokyo and come back to type it. Undoubtedly it does break your flow. TimeBridge fixes this by living right inside your chat box. Instead of bouncing between Slack and a timezone converter, TimeBridge uses natural language processing to read what you’re typing. When it sees a time phrase, it quietly drops a little clock icon next to your text box. You click it and it tells you what time that is for your contacts. Why it’s different: Passive UI: It doesn’t shout at you. Well, don’t take it literally. It’s just a quiet 26px clock icon you can click or ignore. Real language: Understands phrases like “next Tuesday at noon” or “in 2 hours” using natural language parsing. Privacy-first: It doesn’t run on every website. It defaults to an allowlist (Slack, WhatsApp, Gmail) that you control....
|
1793008249.3437996
|
1793094649.3437996
|
|
69616
|
Bears OS by @HELLOPI | Stardance
|
HELLOPI
|
0
|
4.48
|
0
|
[]
|
[{"post_id": 79993, "ts": "202 [{"post_id": 79993, "ts": "2026-10-15T20:25:09Z", "hours": 2.6817, "text": "A very good improvement from the previous period. learned some cool stuff about JS too. simply put the coding journey is really fun and a bit challenging at times but not bigger than the reward of figuring it out."}, {"post_id": 79642, "ts": "2026-10-14T20:00:54Z", "hours": 1.7958, "text": "On the way trying to make my first web OS."}]...
|
Title: Bears OS by @HELLOPI | Stardance
Devlogs:
Title: Bears OS by @HELLOPI | Stardance
Devlogs:
On the way trying to make my first web OS.
A very good improvement from the previous period. learned some cool stuff about JS too. simply put the coding journey is really fun and a bit challenging at times but not bigger than the reward of figuring it out....
|
1792857245.6645677
|
1793462045.6645677
|
|
25723
|
ADeck by @Aashish | Stardance
|
Aashish
|
0
|
28.98
|
0
|
[]
|
[{"post_id": 79999, "ts": "202 [{"post_id": 79999, "ts": "2026-10-15T20:45:17Z", "hours": 0.9408, "text": "worked on the tft rotation feature added 4 rotation modes like monitor orientation and connected the web app controls to the physical tft fixed the layout issues at 180 and 270 degrees so the icons and labels align properly fixed the web preview so it actually rotates with the selected orientation instead of looking the same and moved the rotate button below the background colour section to keep the ui clean i was gonna work on the remaining 3 themes next but felt like this feature was more imp rn so worked on it first"}, {"post_id": 79827, "ts": "2026-10-15T15:41:57Z", "hours": 1.3206, "text": "changed the key colours to custom background colours instead of separate box colours so the app icons blend in better. now the key bg automatically picks the dominant colour of the selected app icon, like orange for brave, so the colours actually match the apps added the first theme called space with a dark bg and floating stars tweaked the star animations to make them smoother and more natural, fixed stars getting stuck together and slightly increased their count cleaned up the theme preview by removing unnecessary labels and fixing the heading sizes. still got 3 more themes to build, will update them as i work on them"}, {"post_id": 79626, "ts": "2026-10-14T18:59:21Z", "hours": 1.6972, "text": "resized tft display app icons , themes and codecleanup made the icons on the physical tft a bit bigger so they’re easier to recognize and use at a glance. they might look a lil pixelated up close bczz of the display resolution, but the goal was to make them more usable cleaned up the code in a few places and removing unnecessary comments and organizing things that had become a bit messy while developing also added the theme selection and save ui to the web app with 4 preset themes planned for now. the idea is that whichever theme you select should also show up on the physical display. the web side is done, but the actual theme implementation is still in progress. starting with a nothing-inspired black and white theme, while the other themes are still being planned and i have also added a subtle, minimal animation on click, so it feels more responsive and gives you that little visual feedback that the click actually registered. Looks pretty good tbh"}, {"post_id": 68832, "ts": "2026-09-15T20:32:47Z", "hours": 1.4953, "text": "the installed app picker is now connected with the physical tft display so when an app is selected, its windows icon can be used on that specific adeck key and the icon data is now going through the web app, python backend and arduino firmware instead of being only part of the web side so the actual logo can be rendered on the display added the icon data flow from the selected app config to the backend and then to the arduino, converted the windows icons into a tft compatible format and added the firmware side code to receive and draw the icon on the correct key tested the icon rendering with different installed apps and checked that each icon stays with its selected key while normal commands like git and npm still use the normal command flow still need to polish the app part so the logos look better and text below them fits properly and the box colors and backgrounds look cleaner on the display"}, {"post_id": 60451, "ts": "2026-09-02T19:45:49Z", "hours": 1.0867, "text": "added automatic installed app detection to the adeck app which makes setting up app shortcuts much easier now since adeck can find installed apps from the pc and most of the setup happens automatically before this i had to find and paste exe paths manually, so i added an installed apps list to make this easier i kept installed apps separate from normal commands like git and npm so both dont get mixed together and the app list was getting pretty long, so i also added search to quickly find the app i want after getting it working i tested it with different apps and also checked normal commands to make sure both still work properly now when i select an app, its name and launch path are added to the selected key automatically"}, {"post_id": 60235, "ts": "2026-09-02T13:57:15Z", "hours": 0.6928, "text": "now i can install ADeck from the browser and use it more like a normal desktop app instead of opening the project files manually every time bczz i made adeck into an actual installable web app instead of having to open the html files manually every time added the web app manifest so ADeck can be installed like a normal app added the adeck app icons in different sizes including the maskable one added the service worker for the installed web app and connected the new setup with the existing adeck web interface without changing the main layout tested the installed version and checked that it opens as its own app instead of just another browser tab and also checked the existing profiles, settings and hardware preview after installing it so the old stuff still works"}, {"post_id": 60169, "ts": "2026-09-02T11:52:23Z", "hours": 1.275, "text": "cut minimise and open added and fixed the app relaunch option in settings, Now we can choose what happens when the same app is pressed again, either open another window, minimize or restore the same app, or close it I also made sure this only applies to app opening commands. Things like git commands and other normal commands still work the same way Tested all three options and the app now behaves correctly based on the selected setting"}, {"post_id": 58818, "ts": "2026-08-31T12:24:04Z", "hours": 6.3956, "text": "worked on the local backend this update was mainly about taking the web app i made earlier and actually connecting it with the ADeck board and my pc. the web part was already getting pretty complete with profiles, slots, themes and local storage so now i started working on the python side and making the whole thing actually work with the board made the main deck.py file for the local python backend connected the web app with the uno r4 wifi through the serial connection and added auto detection for the board and its COM port so i dont have to keep changing the port manually added the firmware install part using Arduino CLI so the board can be setup from the project itself added the ping pong check so the backend can make sure the correct adeck firmware is actually responding added saving of the profiles and button settings on the pc so the data stays there even after restarting connected the save button with the real TFT so changing a label or color in the web app also changes it on the physical adeck added command support so now a button on the adeck can run things on my pc and tested this with vs code, Notepad, Calculator and Paint, also i had a small problem where the apps were opening in the background instead of coming in front. had to change the windows command launching part in deck.py and test it again with different apps made adeck_control.py for controlling the backend from the terminal and added the small ADeck-Control.bat menu where i can use options like 1 start, **2 **check system, 3 install or repair, 4 firmware, 5 logs, 6 stop, 7 errors and 8 status fixed the problem where starting adeck again while it was already running was causing another backend to start and show an error changed the setup so it checks if ADeck is already healthy and reuses it instead of starting another one and added the Setup ADeck.bat and Start ADeck.bat files so setup and normal starting can be done without typing all the python commands every time added test_reliability.py and used it to check the main startup and recovery cases tested stopping and starting the backend again and also tested removing and reconnecting the board and added .gitignore so things like .venv , .build and other generated files dont get pushed to github there were quite a few small problems while connecting everything together but now the web app, python backend, pc commands and the physical adeck are all working together. the next part will be more testing and adding more things on top of this sorry for those irritating lines on the TFT display🥀🥲 i guess some moisture messed it up a bit and thats why those lines showed up"}, {"post_id": 55520, "ts": "2026-08-27T13:01:17Z", "hours": 2.4714, "text": "i mostly worked on fixing those small things which were making ADeck feel more like a website than an actual app replaced the normal browser popups with custom ones for creating renaming and deleting profiles. now everything opens inside the adeck ui itself and matches the rest of the design much better and also fixed a small annoying thing where clicking anywhere outside the popup was closing it even if i was typing something. now it only closes when i actually press cancel or complete the action worked more on the profile system and duplicate profile stuff. also fixed the alerts bczz before if multiple actions happened the alerts could stack on each other. now only one alert stays there and when a new one comes the old one goes away first with a small simple animation dark mode needed some work too bczz light mode was looking pretty good but some parts in dark mode were feeling kinda weird and uncomfortable. fixed the contrast in those areas and also removed a lot of unnecessary yellow accent lines. now they are only used in places where they actually need to be changed Day and Night to Light and Dark and made the theme change a little smoother instead of instantly switching like befor cleaned up the color section too. there was an extra dropdown showing the same colors again which was honestly looking useless so removed that and kept the cleaner color list. also added a custom color picker so now im not limited to only the few preset colors also changed the display label from the old short 2.4 inch TFT text to the proper 2.4-inch TFT LCD Display ILI9341 name so it matches the actual hardware properly now"}, {"post_id": 48488, "ts": "2026-08-16T21:10:59Z", "hours": 2.7536, "text": "it was just a blank dashed wireframe box before but now i mapped out the colored 6-slot hardware grid in the dom to match the physical deck. major update this time is local storage logic bczz losing data on every refresh was getting anoying. getting the dom elements to talk to each other and sync state purely in vanilla js is coming together interactive 6-slot grid: swapped the empty black TFT placeholder with an actual css grid of 6 keys. whatever u set in the editor like colors (slate or signal) and labels instantly renders here dynamic slot editor: hooked up basic click events so if u tap a button like slot 03 it gets an active class. the right inspector panel dynamically updates to show u are editing that specific key’s command and hex code wrote basic data persistence using localStorage.setItem and JSON.stringify() . so when u hit + to add a profile or edit a key it pushes to the state array and saves it locally added top nav & status bar, actual pages for Settings and About. the topbar nw has a working day/night toggle and a live clock ticking via setInterval. bottom status bar finally tracks the active profile and save status instead of being static text added a raw css variable based theme switcher. hooked up the day/night button in the topbar to flip the data-theme attribute on the body so it switches between light and dark modes instantly still got work left to do on the python bridge side but the web config layout is getting there tbh."}, {"post_id": 47097, "ts": "2026-08-14T18:51:33Z", "hours": 2.1056, "text": "finally started making the ui feel like an actual tool instead of just a basic prototype added the top menu with Dashboard Profiles Settings and About and changed the hardware preview from the old empty box to a proper 6 slot layout added the right side editor where i can edit the selected slot and also added profile search and buttons for rename duplicate export import and delete added the bottom status bar to show save status profile and other basic info and the day mode and device status part in the top but yeaahh, still have few things left to do"}, {"post_id": 46506, "ts": "2026-08-13T19:42:21Z", "hours": 1.4283, "text": "before it was just a blank dashed wireframe box but now i actually mapped out the 6-slot hardware grid in the dom to match the physical deck the major update this time is the local storage logic bczz losing data n every refresh was getting annoying. wrote simple loadState() and saveState() functions using localStorage.setItem and JSON.stringify() , so now when u hit the +new profile button it actually pushes to the state array and saves it permanetly and also added the third panel on the right for the action editor. hoked up basic click events so if u tap a button like slot 05 it gets an active class and the right panel dynamically updates to show u are editing that specific slot. getting the dom elements to talk to each other and sync state purely in vanilla js is actually working out perfectly"}, {"post_id": 46387, "ts": "2026-08-13T15:44:57Z", "hours": 2.1756, "text": "so moving away from the hardware headache for a bit and starting the actual web app configurator for Adeck decided to keep it completely vanilla with just html css and js instead of bloating it with react or anything heavy. first goal was just getting the basic ui skeleton ready so it doesn’t look like a blank screen built the main dashboard using a standard css grid layout to divide it into zone-a for the profiles list and zone-b for the hardware preview set up basic css variables for the themes and threw in the doto font which is heavily Nothing inspired so the whole interface feels raw and industrial right from the start wrote the initial js boilerplate with a simple state object tracking things like activeProfileId and activeSlotIndex and hooked up some basic dom refs using document.getElementById() just to make sure the base is solid btw right now this is just a super basic placeholder layout… still got a ton of work left to do on this page"}, {"post_id": 30641, "ts": "2026-07-18T11:34:32Z", "hours": 0.92, "text": "thought the hardware phase was over but my old TFT screen died 🤡 so i had to order a replacement. it looked exactly the same from outside but internally it behaved completely differently. because of that the whole project got delayed for a bit and i had to go back into hardware debugging again instead of continuing the software side got a replacement that looked identical but touch refused to work. turns out these cheap screens have different internal wiring depending on the batch. wrote a diagnostic script and figured out the pins were different. had to swap XP and YM to digital pins 8 and 9 and route XM and YP to analog A2 and A3 to wake it up once it was alive it started reading garbage noise with the Z axis pressure hitting crazy numbers like -13681 . added strict MINPRESSURE 5 and MAXPRESSURE 3500 limits in the C++ code to filter out the fake inputs.then realized the manufacturer slapped the touch digitizer upside down. tapping top left opened the bottom right app. just inverted the coordinates in the Arduino map() function and flipped the Y axis completely through software.i have also pushed all the changes made for the new display in this commit if you want to compare what changed after replacing the hardware you can check it here Commit after recalibrating everything on the new display the hardware is finally back to the same stage as before. now the touch feels accurate again the bridge is stable and i can finally continue building the actual UI instead of fighting the hardware 😭"}, {"post_id": 22169, "ts": "2026-07-04T14:22:08Z", "hours": 1.3522, "text": "today was mostly about connecting the hardware with the PC and making the whole bridge actually usable. the UI side was already working but getting Arduino and Python to talk properly and now the deck can actually trigger apps on the computer instead of just opening test screens. fixed a weird glitch where apps were automatically closing or returning back to the home screen after a few seconds even when i was not touching anything increased the touch sensitivity by tuning the MINPRESSURE value so random touches are ignored and only proper presses get detected built the first working Arduino to Python bridge so touch events from the TFT can directly control apps on the PC nd fixed touch mapping and serial communication bkzz wrong apps were opening due to incorrect touch coordinates and unstable data tested different app launch methods for Windows until browser apps desktop apps and installed apps all started opening correctly from the touchscreen now the deck can actually trigger apps on the computer instead of just opening test screens. (by the way ignore that poor flickering display recording🙃)"}, {"post_id": 15858, "ts": "2026-06-25T19:44:38Z", "hours": 0.8653, "text": "started building the main touchscreen interface using the same Arduino UNO R4 WiFi and 2.4 inch TFT display setup that i already used before. instead of jumping into the PC side first i wanted to get the hardware feeling right because if touch detection itself is not reliable then the whole project falls apart. so i first made a simple landscape UI with six app tiles and started testing how every touch was actually getting mapped on the screen. the biggest issue was touch calibration. the display was rendering everything perfectly but the resistive touch layer was returning different raw values than expected. while mapping p.x and p.y using the map() function and checking each app boundary with the apps[i].x, apps[i].y, bw and bh values i noticed the touch coordinates were not lining up with the actual grid. because of that pressing one app was opening another one and some buttons only responded with extra pressure. spent most of the time tuning the MINPRESSURE threshold recalibrating the raw touch range and matching the mapped coordinates with the display rotation until every touch area finally started responding to the correct app."}]...
|
Title: ADeck by @Aashish | Stardance
Devlogs:
sta Title: ADeck by @Aashish | Stardance
Devlogs:
started building the main touchscreen interface using the same Arduino UNO R4 WiFi and 2.4 inch TFT display setup that i already used before. instead of jumping into the PC side first i wanted to get the hardware feeling right because if touch detection itself is not reliable then the whole project falls apart. so i first made a simple landscape UI with six app tiles and started testing how every touch was actually getting mapped on the screen. the biggest issue was touch calibration. the display was rendering everything perfectly but the resistive touch layer was returning different raw values than expected. while mapping p.x and p.y using the map() function and checking each app boundary with the apps[i].x, apps[i].y, bw and bh values i noticed the touch coordinates were not lining up with the actual grid. because of that pressing one app was opening another one and some buttons only responded with extra pressure. spent most of the time tuning the MINPRESSURE threshold recalibrating the raw touch range and matching the mapped coordinates with the display rotation until every touch area finally started responding to the correct app.
today was mostly about connecting the hardware with the PC and making the whole bridge actually usable. the UI side was already working but getting Arduino and Python to talk properly and now the deck can actually trigger apps on the computer instead of just opening test screens. fixed a weird glitch where apps were automatically closing or returning back to the home screen after a few seconds even when i was not touching anything increased the touch sensitivity by tuning the MINPRESSURE value so random touches are ignored and only proper presses get detected built the first working Arduino to Python bridge so touch events from the TFT can directly control apps on the PC nd fixed touch mapping and serial communication bkzz wrong apps were opening due to incorrect touch coordinates and unstable data tested different app launch methods for Windows until browser apps desktop apps and installed apps all started opening correctly from the touchscreen now the deck can actually trigger apps on the computer instead of just opening test screens. (by the way ignore that poor flickering display recording🙃)
thought the hardware phase was over but my old TFT screen died 🤡 so i had to order a replacement. it looked exactly the same from outside but internally it behaved completely differently. because of that the whole project got delayed for a bit and i had to go back into hardware debugging again instead of continuing the software side got a replacement that looked identical but touch refused to work. turns out these cheap screens have different internal wiring depending on the batch. wrote a diagnostic script and figured out the pins were different. had to swap XP and YM to digital pins 8 and 9 and route XM and YP to analog A2 and A3 to wake it up once it was alive it started reading garbage noise with the Z axis pressure hitting crazy numbers like -13681 . added strict MINPRESSURE 5 and MAXPRESSURE 3500 limits in the C++ code to filter out the fake inputs.then realized the manufacturer slapped the touch digitizer upside down. tapping top left opened the bottom right app. just inverted the coordinates in the Arduino map() function and flipped the Y axis completely through software.i have also pushed all the changes made for the new display in this commit if you want to compare what changed after replacing the hardware you can check it here Commit after recalibrating everything on the new display the hardware is finally back to the same stage as before. now the touch feels accurate again the bridge is stable and i can finally continue building the actual UI instead of fighting the hardware 😭
so moving away from the hardware headache for a bit and starting the actual web app configurator for Adeck decided to keep it completely vanilla with just html css and js instead of bloating it with react or anything heavy. first goal was just getting the basic ui skeleton ready so it doesn’t look like a blank screen built the main dashboard using a standard css grid layout to divide it into zone-a for the profiles list and zone-b for the hardware preview set up basic css variables for the themes and threw in the doto font which is heavily Nothing inspired so the whole interface feels raw and industrial right from the start wrote the initial js boilerplate with a simple state object tracking things like activeProfileId and activeSlotIndex and hooked up some basic dom refs using document.getElementById() just to make sure the base is solid btw right now this is just a super basic placeholder layout… still got a ton of work left to do on this page
before it was just a blank dashed wireframe box but now i actually mapped out the 6-slot hardware grid in the dom to match the physical deck the major update this time is the local storage logic bczz losing data n every refresh was getting annoying. wrote simple loadState() and saveState() functions using localStorage.setItem and JSON.stringify() , so now when u hit the +new profile button it actually pushes to the state array and saves it permanetly and also added the third panel on the right for the action editor. hoked up basic click events so if u tap a button like slot 05 it gets an active class and the right panel dynamically updates to show u are editing that specific slot. getting the dom elements to talk to each other and sync state purely in vanilla js is actually working out perfectly
finally started making the ui feel like an actual tool instead of just a basic prototype added the top menu with Dashboard Profiles Settings and About and changed the hardware preview from the old empty box to a proper 6 slot layout added the right side editor where i can edit the selected slot and also added profile search and buttons for rename duplicate export import and delete added the bottom status bar to show save status profile and other basic info and the day mode and device status part in the top but yeaahh, still have few things left to do
it was just a blank dashed wireframe box before but now i mapped out the colored 6-slot hardware grid in the dom to match the physical deck. major update this time is local storage logic bczz losing data on every refresh was getting anoying. getting the dom elements to talk to each other and sync state purely in vanilla js is coming together interactive 6-slot grid: swapped the empty black TFT placeholder with an actual css grid of 6 keys. whatever u set in the editor like colors (slate or signal) and labels instantly renders here dynamic slot editor: hooked up basic click events so if u tap a button like slot 03 it gets an active class. the right inspector panel dynamically updates to show u are editing that specific key’s command and hex code wrote basic data persistence using localStorage.setItem and JSON.stringify() . so when u hit + to add a profile or edit a key it pushes to the state array and saves it locally added top nav & status bar, actual pages for Settings and About. the topbar nw has a working day/night toggle and a live clock ticking via setInterval. bottom status bar finally tracks the active profile and save status instead of being static text added a raw css variable based theme switcher. hooked up the day/night button in the topbar to flip the data-theme attribute on the body so it switches between light and dark modes instantly still got work left to do on the python bridge side but the web config layout is getting there tbh.
i mostly worked on fixing those small things which were making ADeck feel more like a website than an actual app replaced the normal browser popups with custom ones for creating renaming and deleting profiles. now everything opens inside the adeck ui itself and matches the rest of the design much better and also fixed a small annoying thing where clicking anywhere outside the popup was closing it even if i was typing something. now it only closes when i actually press cancel or complete the action worked more on the profile system and duplicate profile stuff. also fixed the alerts bczz before if multiple actions happened the alerts could stack on each other. now only one alert stays there and when a new one comes the old one goes away first with a small simple animation dark mode needed some work too bczz light mode was looking pretty good but some parts in dark mode were feeling kinda weird and uncomfortable. fixed the contrast in those areas and also removed a lot of unnecessary yellow accent lines. now they are only used in places where they actually need to be changed Day and Night to Light and Dark and made the theme change a little smoother instead of instantly switching like befor cleaned up the color section too. there was an extra dropdown showing the same colors again which was honestly looking useless so removed that and kept the cleaner color list. also added a custom color picker so now im not limited to only the few preset colors also changed the display label from the old short 2.4 inch TFT text to the proper 2.4-inch TFT LCD Display ILI9341 name so it matches the actual hardware properly now
worked on the local backend this update was mainly about taking the web app i made earlier and actually connecting it with the ADeck board and my pc. the web part was already getting pretty complete with profiles, slots, themes and local storage so now i started working on the python side and making the whole thing actually work with the board made the main deck.py file for the local python backend connected the web app with the uno r4 wifi through the serial connection and added auto detection for the board and its COM port so i dont have to keep changing the port manually added the firmware install part using Arduino CLI so the board can be setup from the project itself added the ping pong check so the backend can make sure the correct adeck firmware is actually responding added saving of the profiles and button settings on the pc so the data stays there even after restarting connected the save button with the real TFT so changing a label or color in the web app also changes it on the physical adeck added command support so now a button on the adeck can run things on my pc and tested this with vs code, Notepad, Calculator and Paint, also i had a small problem where the apps were opening in the background instead of coming in front. had to change the windows command launching part in deck.py and test it again with different apps made adeck_control.py for controlling the backend from the terminal and added the small ADeck-Control.bat menu where i can use options like 1 start, **2 **check system, 3 install or repair, 4 firmware, 5 logs, 6 stop, 7 errors and 8 status fixed the problem where starting adeck again while it was already running was causing another backend to start and show an error changed the setup so it checks if ADeck is already healthy and reuses it instead of starting another one and added the Setup ADeck.bat and Start ADeck.bat files so setup and normal starting can be done without typing all the python commands every time added test_reliability.py and used it to check the main startup and recovery cases tested stopping and starting the backend again and also tested removing and reconnecting the board and added .gitignore so things like .venv , .build and other generated files dont get pushed to github there were quite a few small problems while connecting everything together but now the web app, python backend, pc commands and the physical adeck are all working together. the next part will be more testing and adding more things on top of this sorry for those irritating lines on the TFT display🥀🥲 i guess some moisture messed it up a bit and thats why those lines showed up
cut minimise and open added and fixed the app relaunch option in settings, Now we can choose what happens when the same app is pressed again, either open another window, minimize or restore the same app, or close it I also made sure this only applies to app opening commands. Things like git commands and other normal commands still work the same way Tested all three options and the app now behaves correctly based on the selected setting
now i can install ADeck from the browser and use it more like a normal desktop app instead of opening the project files manually every time bczz i made adeck into an actual installable web app instead of having to open the html files manually every time added the web app manifest so ADeck can be installed like a normal app added the adeck app icons in different sizes including the maskable one added the service worker for the installed web app and connected the new setup with the existing adeck web interface without changing the main layout tested the installed version and checked that it opens as its own app instead of just another browser tab and also checked the existing profiles, settings and hardware preview after installing it so the old stuff still works
added automatic installed app detection to the adeck app which makes setting up app shortcuts much easier now since adeck can find installed apps from the pc and most of the setup happens automatically before this i had to find and paste exe paths manually, so i added an installed apps list to make this easier i kept installed apps separate from normal commands like git and npm so both dont get mixed together and the app list was getting pretty long, so i also added search to quickly find the app i want after getting it working i tested it with different apps and also checked normal commands to make sure both still work properly now when i select an app, its name and launch path are added to the selected key automatically
the installed app picker is now connected with the physical tft display so when an app is selected, its windows icon can be used on that specific adeck key and the icon data is now going through the web app, python backend and arduino firmware instead of being only part of the web side so the actual logo can be rendered on the display added the icon data flow from the selected app config to the backend and then to the arduino, converted the windows icons into a tft compatible format and added the firmware side code to receive and draw the icon on the correct key tested the icon rendering with different installed apps and checked that each icon stays with its selected key while normal commands like git and npm still use the normal command flow still need to polish the app part so the logos look better and text below them fits properly and the box colors and backgrounds look cleaner on the display
resized tft display app icons , themes and codecleanup made the icons on the physical tft a bit bigger so they’re easier to recognize and use at a glance. they might look a lil pixelated up close bczz of the display resolution, but the goal was to make them more usable cleaned up the code in a few places and removing unnecessary comments and organizing things that had become a bit messy while developing also added the theme selection and save ui to the web app with 4 preset themes planned for now. the idea is that whichever theme you select should also show up on the physical display. the web side is done, but the actual theme implementation is still in progress. starting with a nothing-inspired black and white theme, while the other themes are still being planned and i have also added a subtle, minimal animation on click, so it feels more responsive and gives you that little visual feedback that the click actually registered. Looks pretty good tbh
changed the key colours to custom background colours instead of separate box colours so the app icons blend in better. now the key bg automatically picks the dominant colour of the selected app icon, like orange for brave, so the colours actually match the apps added the first theme called space with a dark bg and floating stars tweaked the star animations to make them smoother and more natural, fixed stars getting stuck together and slightly increased their count cleaned up the theme preview by removing unnecessary labels and fixing the heading sizes. still got 3 more themes to build, will update them as i work on them
worked on the tft rotation feature added 4 rotation modes like monitor orientation and connected the web app controls to the physical tft fixed the layout issues at 180 and 270 degrees so the icons and labels align properly fixed the web preview so it actually rotates with the selected orientation instead of looking the same and moved the rotate button below the background colour section to keep the ui clean i was gonna work on the remaining 3 themes next but felt like this feature was more imp rn so worked on it first...
|
1792785192.6882958
|
1793389992.6882958
|