|
55343
|
Refracted by @mayoinasu | Stardance
|
mayoinasu
|
1
|
27.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T07:58:04Z", "hours": 27.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my first puzzle game named Refracted! This is also the first time I have made a game with sprites created by my friend, so I get really excited and want to make it perfect. The hardest challenge when making this game is basically the box. TBH, at first I wanted to make the box able to rotate in 8 directions, while the tutorials that I found on YouTube only do 4 directions. At first, I thought I could change it easily, but it turns out impossible to do. I have to admit that for doing the box thing, I have to ask Claude AI to help me make it into 8 directions, and after I changed a lot of it, it still hasn’t worked. I finally gave up on making it 8 directions, which makes it harder for me to design the level. Another things that hard for me is making the hint. I’m actually having some story in my head about the lore, but when I made it into a hint, it just got blurred. Also, to make the player have to open all the hints in the corridor before doing the next level, I have to make a lot of conditionals, which I know. I think there are better options for doing this, but I’m still a beginner. I’m still using conditionals too much, but I finally made everything work! Also, by adding the BGM, sound effects, making the checkpoints thing, etc. There are many things that I just tried in this game! If you want to play this game, all you need to do is rotate the boxes to refract the light into another box until it reaches the sensor. But, you also need to do it fast! because there’s a hunger bar. Since our character is a human, she needs food to keep going. So, rotate the box, eat, and find the hint about what’s going on!", "repo": "https://github.com/mayoinasu/refracted", "demo": "https://mayoinasu.itch.io/refracted"}]...
|
[{"post_id": 73020, "ts": "202 [{"post_id": 73020, "ts": "2026-09-24T07:11:46Z", "hours": 2.8347, "text": "I’m finally able to make the fading and checkpoint! So, after player’s hungerbar is empty, the screen will faded and player will be revived on their last checkpoint!"}, {"post_id": 71228, "ts": "2026-09-20T14:18:13Z", "hours": 2.1244, "text": "So, I just finished making the hunger bar recover after the player eats food in the game. It’s still a bit delayed, but I hope I can fix it. At least, it works."}, {"post_id": 66638, "ts": "2026-09-12T14:22:26Z", "hours": 1.6164, "text": "I’m adding a hunger bar that decreases over time and also affects the player’s speed. Not only that, but I’m also fixing some of the bugs that appear (failing to change scenes). But for now, it works! I’ll add the audio after this, hoping that it will work well!"}, {"post_id": 61632, "ts": "2026-09-04T16:56:29Z", "hours": 5.3703, "text": "Atp, I just learned that making a level is hard, especially when your game is heavily focused on puzzles. I also confused with how I can make variety of level with a same mechanic"}, {"post_id": 61399, "ts": "2026-09-04T09:13:03Z", "hours": 3.815, "text": "I just realized my typo in this project: “censor” was supposed to be “sensor”, but at least I’m consistent, so it works nicely. 2. I’m finished making the first corridor! So, in my game, each level will be separated by a corridor, which will give a bit of a hint about the mystery. And I still have 4 other corridors to make!"}, {"post_id": 61240, "ts": "2026-09-04T02:28:41Z", "hours": 3.755, "text": "I’m finished making a censor in my game, so after the light is detected by the censor, it will open the door"}, {"post_id": 60819, "ts": "2026-09-03T13:21:38Z", "hours": 7.6197, "text": "For the main focus of my game (puzzle), I am finally able to create this mechanic! So you have to rotate the box to control the light"}]...
|
Title: Refracted by @mayoinasu | Stardance
Devlog Title: Refracted by @mayoinasu | Stardance
Devlogs:
For the main focus of my game (puzzle), I am finally able to create this mechanic! So you have to rotate the box to control the light
I’m finished making a censor in my game, so after the light is detected by the censor, it will open the door
I just realized my typo in this project: “censor” was supposed to be “sensor”, but at least I’m consistent, so it works nicely. 2. I’m finished making the first corridor! So, in my game, each level will be separated by a corridor, which will give a bit of a hint about the mystery. And I still have 4 other corridors to make!
Atp, I just learned that making a level is hard, especially when your game is heavily focused on puzzles. I also confused with how I can make variety of level with a same mechanic
I’m adding a hunger bar that decreases over time and also affects the player’s speed. Not only that, but I’m also fixing some of the bugs that appear (failing to change scenes). But for now, it works! I’ll add the audio after this, hoping that it will work well!
So, I just finished making the hunger bar recover after the player eats food in the game. It’s still a bit delayed, but I hope I can fix it. At least, it works.
I’m finally able to make the fading and checkpoint! So, after player’s hungerbar is empty, the screen will faded and player will be revived on their last checkpoint!
Ships:
This is my first puzzle game named Refracted! This is also the first time I have made a game with sprites created by my friend, so I get really excited and want to make it perfect. The hardest challenge when making this game is basically the box. TBH, at first I wanted to make the box able to rotate in 8 directions, while the tutorials that I found on YouTube only do 4 directions. At first, I thought I could change it easily, but it turns out impossible to do. I have to admit that for doing the box thing, I have to ask Claude AI to help me make it into 8 directions, and after I changed a lot of it, it still hasn’t worked. I finally gave up on making it 8 directions, which makes it harder for me to design the level. Another things that hard for me is making the hint. I’m actually having some story in my head about the lore, but when I made it into a hint, it just got blurred. Also, to make the player have to open all the hints in the corridor before doing the next level, I have to make a lot of conditionals, which I know. I think there are better options for doing this, but I’m still a beginner. I’m still using conditionals too much, but I finally made everything work! Also, by adding the BGM, sound effects, making the checkpoints thing, etc. There are many things that I just tried in this game! If you want to play this game, all you need to do is rotate the boxes to refract the light into another box until it reaches the sensor. But, you also need to do it fast! because there’s a hunger bar. Since our character is a human, she needs food to keep going. So, rotate the box, eat, and find the hint about what’s going on!...
|
1793145138.4244764
|
1793231538.4244764
|
|
61256
|
keltime v3 by @desibanana | Stardance
|
desibanana
|
2
|
27.0
|
106
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-28T04:17:31Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hey reader! :D This website works the best on a laptop with a Chrome browser, though most pages are mobile-friendly. This is keltime.nekoweb.org- my personal website project that I have grown to include many more things than just an “about me” page or a portfolio (which I have always found a little… vanilla). With HTML, CSS, and JS, I have tried to discover personal taste and expression to make something beautiful. Since the last time I shipped, I have added a few more webpages to explore, cleaned up some code in the background, and added a lot more yapping and a whole new /links page. Coding this website was time consuming and difficult. A page would take hours to perfect and get out even when the code seemed so simple. I was left frustrated many times because there were things that I couldn’t perfect or understand. One of these was CSS Grids, which I used a little for the listography page of my website. I am the most proud of the calendar display on the top righthand corner of the main page of my website. It looks so gorgeous! I coded it myself using JS. It was difficult to understand how the code worked, but I was able to pull through with the help of an old StackOverflow post (lol). I hope you enjoy looking around my “pride and joy”! With much love, Ellie", "repo": "https://github.com/moldy-banana/keltime-v3", "demo": "https://keltime.nekoweb.org"}, {"ship_num": 2, "ts": "2026-09-22T03:59:52Z", "hours": 11.0, "multiplier": 9.85, "payout": 106, "blessing": "neutral", "text": "Hi, this is my personal website’s 3rd version! Visit me: keltime.nekoweb.org After going through so much trial and error with v2, I had a vague idea of what I wanted for the landing page and for the main page of this version. However, I couldn’t make up my mind for the visual aesthetic of the pages, and thus took a long time researching and studying other people’s code. The most challenging part was implementing the calendar “date” you see at the top right corner. This was a baby made from javascript using arrays and the Date() function. I had a lot of trouble getting the code to actually update in real time. I really value the “physical” part of websites, which mainly includes the hovering and clicking actions of the site. Headers, the calendar, images, etc. mostly all have hover animations. Next, I plan on implementing a satisfying “clicking” sound when things are clicked. Overall, I’m definitely the most proud of my main page’s calendar date script that shows the date, day, month, and year in real time. Thank you so much for reading!", "repo": "https://github.com/moldy-banana/keltime-v3", "demo": "https://keltime.nekoweb.org"}]...
|
[{"post_id": 83172, "ts": "202 [{"post_id": 83172, "ts": "2026-10-27T04:04:33Z", "hours": 1.6325, "text": "Regular site maintenance visit me at keltime.nekoweb.org I messed around with the code and nothing came to fruition :( have a button and a good day!"}, {"post_id": 82781, "ts": "2026-10-25T20:22:10Z", "hours": 1.9119, "text": "write a list I made a “listography” for my website using grids. Because of this, this page is basically mobile friendly!! yay!"}, {"post_id": 80551, "ts": "2026-10-18T04:27:22Z", "hours": 1.2758, "text": "site map visit me: keltime.nekoweb.org song rec: Bobby - Phoebe Bridgers I’ve always procrastinated making a site map. I have one now. WOW!! I couldn’t get the “tree” to work for all of the links for a good 10 minutes. I figured out that using the element can make every white space count, so everything could be spaced correctly."}, {"post_id": 80429, "ts": "2026-10-17T16:44:17Z", "hours": 5.1844, "text": "Linking up! + new diary post 🔗 📝 visit my website: keltime.nekoweb.org New links page for website I’ve collected along the way. It was surprisingly difficult to get everything in line for how simple this page looks. I had trouble with the “luminaries” section because the flexbox wasn’t working my way. It’s still a little jank. Otherwise, I finished a diary entry and did some other maintanaince around the site."}, {"post_id": 78206, "ts": "2026-10-09T23:37:01Z", "hours": 1.055, "text": "reviewing them albums + QOL💿 visit me at: keltime.nekoweb.org ➡️ Today we added FOUR new album reviews! WOW!!! On the menu: Lost Weekend - Phoebe Bridgers, Do That Again - Malcolm Todd, Pylon - beabadoobee, and You Seem Pretty Sad For A Girl So In Love - Olivia Rodrigo. QOL in the /music page? I was afraid the text walls were hogging and bloating up the whole page, so I set them to overflow-y: scroll; . I would love if the scrollbars would only show on hover and not interfere with the text, but I haven’t figured that out yet."}, {"post_id": 77998, "ts": "2026-10-09T04:14:02Z", "hours": 3.7631, "text": "🎇 where’d all the time go? got caught up writing a blog post about music videos read the post at: keltime.nekoweb.org/blog I recently consumed many music videos from Audrey Hobert and Malcolm Todd. They’re good. 10/10 would watch again. I mainly wrote and analysed Eve’s new music video and its lyrics. The song is called AIYOU , and if you like emotional/indie/jpop I would recommend you listen."}, {"post_id": 76307, "ts": "2026-10-03T04:32:51Z", "hours": 1.2058, "text": "🕸️ web your rings and ring your webs 💍 visit me at keltime.nekoweb.org ! autumn song recs: Chest Pain (I Love) - Malcom Todd + Cico Buff - Cocteau Twins + 休日 - The Charm Park after being super busy im back!! to add a designated page for my webrings instead of just dumping them in my links page (which I will also redo)- this is the basic structure for now while i’ll add some decorations soon 🇹🇩"}, {"post_id": 74756, "ts": "2026-09-28T04:48:27Z", "hours": 0.3667, "text": "🐛 bug fixes bugs fix bugs 🐛 visit me at: https://keltime.nekoweb.org ! Song Rec(s): Malcom In The Middle - Malcom Todd and Motion Sickness - Phoebe Bridgers Fixed minor bugs in the website- such as the guestbook link not working (accidentally wrote the link with a “www.” prefix) and the link to my site button (destroyed my button displayed on other sites that hotlinked)"}, {"post_id": 72067, "ts": "2026-09-22T03:19:46Z", "hours": 4.3222, "text": "v3 main home page completed!! what joy :’D visit me at keltime.nekoweb.org now!! 🐦 After much deliberation and headache, I was able to push through and finish up the rest of the home page… the images can be hovered over to change their color filters. ⭐ An issue with the /about page has been fixed. Before, the main container would slide out of place on smaller screens, something I didn’t notice until a few days ago. Now after changing the css from “row wrap” to “row nowrap”, the issue is resolved."}, {"post_id": 70795, "ts": "2026-09-19T19:38:58Z", "hours": 5.0167, "text": "Working on the main home page of v3… Progress has been really slow, but I have implemented a navigation bar with a dropdown menu, a working day-date display (with javascript date) and added a marquee with marquee3k on github + an image of joke bear… how cute! I’m actually so done tho idk what to do with the big gaping empty hole but at least everything looks aight…"}, {"post_id": 66410, "ts": "2026-09-12T07:14:04Z", "hours": 1.4264, "text": "incredibly indecisive happenings over a new v3 layout I started work on this landing page but it does not match my vision at all. I’ll try something different tomorrow. The empty space on the right needs to be filled somehow."}]...
|
Title: keltime v3 by @desibanana | Stardance
Devl Title: keltime v3 by @desibanana | Stardance
Devlogs:
incredibly indecisive happenings over a new v3 layout I started work on this landing page but it does not match my vision at all. I’ll try something different tomorrow. The empty space on the right needs to be filled somehow.
Working on the main home page of v3… Progress has been really slow, but I have implemented a navigation bar with a dropdown menu, a working day-date display (with javascript date) and added a marquee with marquee3k on github + an image of joke bear… how cute! I’m actually so done tho idk what to do with the big gaping empty hole but at least everything looks aight…
v3 main home page completed!! what joy :’D visit me at keltime.nekoweb.org now!! 🐦 After much deliberation and headache, I was able to push through and finish up the rest of the home page… the images can be hovered over to change their color filters. ⭐ An issue with the /about page has been fixed. Before, the main container would slide out of place on smaller screens, something I didn’t notice until a few days ago. Now after changing the css from “row wrap” to “row nowrap”, the issue is resolved.
🐛 bug fixes bugs fix bugs 🐛 visit me at: https://keltime.nekoweb.org ! Song Rec(s): Malcom In The Middle - Malcom Todd and Motion Sickness - Phoebe Bridgers Fixed minor bugs in the website- such as the guestbook link not working (accidentally wrote the link with a “www.” prefix) and the link to my site button (destroyed my button displayed on other sites that hotlinked)
🕸️ web your rings and ring your webs 💍 visit me at keltime.nekoweb.org ! autumn song recs: Chest Pain (I Love) - Malcom Todd + Cico Buff - Cocteau Twins + 休日 - The Charm Park after being super busy im back!! to add a designated page for my webrings instead of just dumping them in my links page (which I will also redo)- this is the basic structure for now while i’ll add some decorations soon 🇹🇩
🎇 where’d all the time go? got caught up writing a blog post about music videos read the post at: keltime.nekoweb.org/blog I recently consumed many music videos from Audrey Hobert and Malcolm Todd. They’re good. 10/10 would watch again. I mainly wrote and analysed Eve’s new music video and its lyrics. The song is called AIYOU , and if you like emotional/indie/jpop I would recommend you listen.
reviewing them albums + QOL💿 visit me at: keltime.nekoweb.org ➡️ Today we added FOUR new album reviews! WOW!!! On the menu: Lost Weekend - Phoebe Bridgers, Do That Again - Malcolm Todd, Pylon - beabadoobee, and You Seem Pretty Sad For A Girl So In Love - Olivia Rodrigo. QOL in the /music page? I was afraid the text walls were hogging and bloating up the whole page, so I set them to overflow-y: scroll; . I would love if the scrollbars would only show on hover and not interfere with the text, but I haven’t figured that out yet.
Linking up! + new diary post 🔗 📝 visit my website: keltime.nekoweb.org New links page for website I’ve collected along the way. It was surprisingly difficult to get everything in line for how simple this page looks. I had trouble with the “luminaries” section because the flexbox wasn’t working my way. It’s still a little jank. Otherwise, I finished a diary entry and did some other maintanaince around the site.
site map visit me: keltime.nekoweb.org song rec: Bobby - Phoebe Bridgers I’ve always procrastinated making a site map. I have one now. WOW!! I couldn’t get the “tree” to work for all of the links for a good 10 minutes. I figured out that using the element can make every white space count, so everything could be spaced correctly.
write a list I made a “listography” for my website using grids. Because of this, this page is basically mobile friendly!! yay!
Regular site maintenance visit me at keltime.nekoweb.org I messed around with the code and nothing came to fruition :( have a button and a good day!
Ships:
Hi, this is my personal website’s 3rd version! Visit me: keltime.nekoweb.org After going through so much trial and error with v2, I had a vague idea of what I wanted for the landing page and for the main page of this version. However, I couldn’t make up my mind for the visual aesthetic of the pages, and thus took a long time researching and studying other people’s code. The most challenging part was implementing the calendar “date” you see at the top right corner. This was a baby made from javascript using arrays and the Date() function. I had a lot of trouble getting the code to actually update in real time. I really value the “physical” part of websites, which mainly includes the hovering and clicking actions of the site. Headers, the calendar, images, etc. mostly all have hover animations. Next, I plan on implementing a satisfying “clicking” sound when things are clicked. Overall, I’m definitely the most proud of my main page’s calendar date script that shows the date, day, month, and year in real time. Thank you so much for reading!
Hey reader! :D This website works the best on a laptop with a Chrome browser, though most pages are mobile-friendly. This is keltime.nekoweb.org- my personal website project that I have grown to include many more things than just an “about me” page or a portfolio (which I have always found a little… vanilla). With HTML, CSS, and JS, I have tried to discover personal taste and expression to make something beautiful. Since the last time I shipped, I have added a few more webpages to explore, cleaned up some code in the background, and added a lot more yapping and a whole new /links page. Coding this website was time consuming and difficult. A page would take hours to perfect and get out even when the code seemed so simple. I was left frustrated many times because there were things that I couldn’t perfect or understand. One of these was CSS Grids, which I used a little for the listography page of my website. I am the most proud of the calendar display on the top righthand corner of the main page of my website. It looks so gorgeous! I coded it myself using JS. It was difficult to understand how the code worked, but I was able to pull through with the help of an old StackOverflow post (lol). I hope you enjoy looking around my “pride and joy”! With much love, Ellie...
|
1793209694.65006
|
1793296094.65006
|
|
65243
|
Phronova Framework by @AuraMonster | Stardance
|
AuraMonster
|
1
|
27.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-05T17:28:40Z", "hours": 27.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Phronova Ship What is Phronova? Phronova is a Lua (not Luau, that is Roblox) Framework meant to assist you with Website and Desktop development (Like React, Tauri, Next.JS, Dioxus, etc.). Why would I use this? To make websites or desktop apps of course! And if you prefer Lua, then this is for you. I want to know more. Check the Github repository.", "repo": "https://github.com/mdmutahhar24-pixel/Phronova", "demo": "https://github.com/mdmutahhar24-pixel/Phronova/releases/tag/Phronova"}]...
|
[{"post_id": 76261, "ts": "202 [{"post_id": 76261, "ts": "2026-10-02T23:31:05Z", "hours": 2.6839, "text": "Fifth and Final Devlog of Phronova (Framework) New Features: Debug Default template page finished CLI Installation implementation Ship will be soon"}, {"post_id": 75919, "ts": "2026-10-01T16:42:42Z", "hours": 5.8544, "text": "Fourth Devlog of Phronova (Framework) Change of Plans: At first, I was planning Phronova to be a full-stack framework, however, I got an idea for a more interesting project. So therefore, Phronova will start out as a frontend framework, but will later include backend. New Features: Tailwind Template Bootstrap Template Custom CSS Template Debug Terminal Restyled In Progress: Website/App that comes up when you run dev Future Plans: Installer stuff for Desktop App mode. Public CLI for creating Phronova projects"}, {"post_id": 75202, "ts": "2026-09-29T14:02:33Z", "hours": 7.1086, "text": "Third Devlog of Phronova (Framework) New Features: Desktop Renderer Web Renderer/Socket Styles/CSS In Progress: Terminal styling and template select Tailwind and Bootstrap integration (Depending on template) Lua side of frontend Future Features (Subject to change): Phronova’s own version of CSS Routing (Maybe, still not sure) Hot refresh/reload (All it does is automatically refresh the page for you the moment you make changes to your file)"}, {"post_id": 74090, "ts": "2026-09-26T17:22:38Z", "hours": 5.6708, "text": "Second Devlog of Phronova (Framework) New Features: Desktop App WebView2 finished (Cannot show image due to me being in the middle of debugging; Also uses C++ and not Lua for this one) In Progress: Debug Connecting Lua and C++ parts together Future Features (subject to change): Website renderer More Features JavaScript Translation Routing/Custom Backend More"}, {"post_id": 73620, "ts": "2026-09-25T14:29:21Z", "hours": 5.9831, "text": "First Devlog of Phronova (Framework) What is Phronova? Phronova is a framework for Lua (Not Luau, that is Roblox suff), for Web development and Desktop application development, similar to React, Tauri, and other frameworks. New Features: You can create project through terminal You can run project through terminal Custom command for the above features (using batch files) Layout and planning complete Can now convert Lua -> HTML In Progress: WebView/Renderer Planned Features (subject to change): Desktop app integration More commands, features, etc. Custom Backend support (so this will be a full-stack framework)"}]...
|
Title: Phronova Framework by @AuraMonster | Starda Title: Phronova Framework by @AuraMonster | Stardance
Devlogs:
First Devlog of Phronova (Framework) What is Phronova? Phronova is a framework for Lua (Not Luau, that is Roblox suff), for Web development and Desktop application development, similar to React, Tauri, and other frameworks. New Features: You can create project through terminal You can run project through terminal Custom command for the above features (using batch files) Layout and planning complete Can now convert Lua -> HTML In Progress: WebView/Renderer Planned Features (subject to change): Desktop app integration More commands, features, etc. Custom Backend support (so this will be a full-stack framework)
Second Devlog of Phronova (Framework) New Features: Desktop App WebView2 finished (Cannot show image due to me being in the middle of debugging; Also uses C++ and not Lua for this one) In Progress: Debug Connecting Lua and C++ parts together Future Features (subject to change): Website renderer More Features JavaScript Translation Routing/Custom Backend More
Third Devlog of Phronova (Framework) New Features: Desktop Renderer Web Renderer/Socket Styles/CSS In Progress: Terminal styling and template select Tailwind and Bootstrap integration (Depending on template) Lua side of frontend Future Features (Subject to change): Phronova’s own version of CSS Routing (Maybe, still not sure) Hot refresh/reload (All it does is automatically refresh the page for you the moment you make changes to your file)
Fourth Devlog of Phronova (Framework) Change of Plans: At first, I was planning Phronova to be a full-stack framework, however, I got an idea for a more interesting project. So therefore, Phronova will start out as a frontend framework, but will later include backend. New Features: Tailwind Template Bootstrap Template Custom CSS Template Debug Terminal Restyled In Progress: Website/App that comes up when you run dev Future Plans: Installer stuff for Desktop App mode. Public CLI for creating Phronova projects
Fifth and Final Devlog of Phronova (Framework) New Features: Debug Default template page finished CLI Installation implementation Ship will be soon
Ships:
Phronova Ship What is Phronova? Phronova is a Lua (not Luau, that is Roblox) Framework meant to assist you with Website and Desktop development (Like React, Tauri, Next.JS, Dioxus, etc.). Why would I use this? To make websites or desktop apps of course! And if you prefer Lua, then this is for you. I want to know more. Check the Github repository....
|
1793213713.5188909
|
1793300113.5188909
|
|
68214
|
oops! by @Al_Lee | Stardance
|
Al_Lee
|
1
|
27.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T09:11:42Z", "hours": 27.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Doodle Jump, and Rise inspired game, about a crow jumping on clouds and shooting obstacles to protect his daughter’s balloon from popping. I found RigidBody2D’s in Godot very challenging, as they had different ways to move than character and area2d’s. I had to rely on Ai to learn and make the code for that part, but once I got 1 rigid body done, most of them I did myself after learning from Ai. I’m proud of stepping out of my comfort zone, and making a unique game instead of a generic platformer. For people testing my project, PLEASE read the controls, and know that the game takes a few attempts to beat.", "repo": "https://github.com/alchoilee-lgtm/Oops", "demo": "https://inzpire.itch.io/oops"}]...
|
[{"post_id": 81204, "ts": "202 [{"post_id": 81204, "ts": "2026-10-20T08:44:28Z", "hours": 5.5825, "text": "Final Game Done I did a lot I think, mostly bug fixing. I made the player have more health, added music, and sound effects. The Yap: I spent a lot of time testing the game on web, because I KEPT FORGETTING TO DO THAT ONE THING. Also for some reason, the particles for player shoot and bomb explosion were being green in the web version, so my fix to this was to make there be NO hue variation. Hue Variation is how much the colour of the particle can vary from the set colour. Also the bird enemies rotation was messsed up, so I had to do some flip_v and flip_h to fix that Also, my friend said the game was TOO HARD, so I made the balloon have some more health. That wasn’t the move, cuz now you could beat the game WITHOUT EVEN SHOOTING…. Anyway I ended up only adding 10 more health instead of the intial 30. Also I added some Hit and Shoot sound effects from JSFXR, which sounds really good, but I dont really know if it is too loud or too soft."}, {"post_id": 79005, "ts": "2026-10-12T09:52:41Z", "hours": 4.065, "text": "Finished the story and like all the art Quick Summary Made story slides Made title screen Made a bunch of art for my game Adjusted difficulty THE YAP: That art took me like most of the day, even though it says it only took me 4 hours. This is because I have no idea how to connect Hackatime to Scratch, which is what I use for my art (pls tell me if you know). I know that scratch is a pretty bad art editor, but I have no idea how to use other engines. A downside of this is that when I import my SVG’s (the file type that scratch uses for Vector mode art), I need to increase the scale of it in the import tab. I neeed to to this for EVERY SINGLE PIECE OF ART I MAKE!!!! Also every time I update art, I need to do it again. Also Scratch’s built in Text doesnt show on Godot for some reason, so I need to A) go to google drawings and type my text in a text box, B) import it as an SVG file C) load it into scratch, and D) if the formatting doesnt work, repeat the process The art isnt the only tiring thing, as I need to make timers for each of my dialogue tell it when to run, because for some reason, I decided to VOICE ACT it… For example, for my first line of text “there was once a happy family of crows, free of troubles and doubts” (i think its something like that) I need to make a timer, attach it to my Sprite2D (it contains the slide art), and set a timer for when to run. I need to do this process for every single piece of dialogue, and I have like 10. It sounds pretty horrible too, but I’ll probably add a toggle for it cuz I spent so long on it. The menu also went through a iteration, cuz at first, I was gonna put a play button on my balloon, and I was gonna make the balloon fly away when clicked. I soon realized (after making it) that it looks ugly so I opted for a space bar approach instead In the next devlog, I’ll make a win screen and death screen, as well as that toggle for story and a skip for the story. Anyways, cya in the next one :D"}, {"post_id": 78857, "ts": "2026-10-11T19:48:04Z", "hours": 1.8739, "text": "Woops Well, I finished up the main game, although I might need to add more difficulty lol I just need to add: -Main Menu -Art -Story -Music In other words, I have like 10 more hours worth of coding left to do More Yap: I tried to make a balance scale with a bunch of obstacles on top, So I attached this long thin RigidBody2D to a StaticBody2D with a Pin Joint, but only after I added it, I realized that For the balance to work, it needs to be in the middle of the balloons path… And it cant move… Thats basically just a instakill machine, so I scrapped the idea. I also added a lot of Linear Drag to the Obstacles at (37 seconds) so that it wouldnt be as easy. Now, you need to hit the middle of the obstacles for it to be cleared, otherwise the balloon gets COOKED I might also need a way of getting ammo, as its too OP just to spam bullets. Oh yeah, and the attack at 18 seconds is unavoidable right now, so I will probably make the attack slower or make the attack spawn at slower intervals, or maybe both lol."}, {"post_id": 78536, "ts": "2026-10-11T03:48:53Z", "hours": 6.0222, "text": "OOps! Made the player a Crow, and made art for him Made some cloud art for the platforms Made some balloon art Also, Balloons take damage now In addition, I added a new “bomb” attack Oh yeah I added a progress bar for how high up you are, and a health bar for the Balloons"}, {"post_id": 78162, "ts": "2026-10-09T20:34:05Z", "hours": 9.5539, "text": "New Game called “oops” The story is about this crow girl who accidently lets go of her helium balloon, so you. as the dad, have jump on the clouds, and shoot off any obstacles that could pop it. I haven’t made any art so its all made out of the godot icon lol, but the premise of the game is basically “do doodle jump while protecting your balloon. I spent a lot of time getting the idea down, but I think it is pretty good :)"}]...
|
Title: oops! by @Al_Lee | Stardance
Devlogs:
New Title: oops! by @Al_Lee | Stardance
Devlogs:
New Game called “oops” The story is about this crow girl who accidently lets go of her helium balloon, so you. as the dad, have jump on the clouds, and shoot off any obstacles that could pop it. I haven’t made any art so its all made out of the godot icon lol, but the premise of the game is basically “do doodle jump while protecting your balloon. I spent a lot of time getting the idea down, but I think it is pretty good :)
OOps! Made the player a Crow, and made art for him Made some cloud art for the platforms Made some balloon art Also, Balloons take damage now In addition, I added a new “bomb” attack Oh yeah I added a progress bar for how high up you are, and a health bar for the Balloons
Woops Well, I finished up the main game, although I might need to add more difficulty lol I just need to add: -Main Menu -Art -Story -Music In other words, I have like 10 more hours worth of coding left to do More Yap: I tried to make a balance scale with a bunch of obstacles on top, So I attached this long thin RigidBody2D to a StaticBody2D with a Pin Joint, but only after I added it, I realized that For the balance to work, it needs to be in the middle of the balloons path… And it cant move… Thats basically just a instakill machine, so I scrapped the idea. I also added a lot of Linear Drag to the Obstacles at (37 seconds) so that it wouldnt be as easy. Now, you need to hit the middle of the obstacles for it to be cleared, otherwise the balloon gets COOKED I might also need a way of getting ammo, as its too OP just to spam bullets. Oh yeah, and the attack at 18 seconds is unavoidable right now, so I will probably make the attack slower or make the attack spawn at slower intervals, or maybe both lol.
Finished the story and like all the art Quick Summary Made story slides Made title screen Made a bunch of art for my game Adjusted difficulty THE YAP: That art took me like most of the day, even though it says it only took me 4 hours. This is because I have no idea how to connect Hackatime to Scratch, which is what I use for my art (pls tell me if you know). I know that scratch is a pretty bad art editor, but I have no idea how to use other engines. A downside of this is that when I import my SVG’s (the file type that scratch uses for Vector mode art), I need to increase the scale of it in the import tab. I neeed to to this for EVERY SINGLE PIECE OF ART I MAKE!!!! Also every time I update art, I need to do it again. Also Scratch’s built in Text doesnt show on Godot for some reason, so I need to A) go to google drawings and type my text in a text box, B) import it as an SVG file C) load it into scratch, and D) if the formatting doesnt work, repeat the process The art isnt the only tiring thing, as I need to make timers for each of my dialogue tell it when to run, because for some reason, I decided to VOICE ACT it… For example, for my first line of text “there was once a happy family of crows, free of troubles and doubts” (i think its something like that) I need to make a timer, attach it to my Sprite2D (it contains the slide art), and set a timer for when to run. I need to do this process for every single piece of dialogue, and I have like 10. It sounds pretty horrible too, but I’ll probably add a toggle for it cuz I spent so long on it. The menu also went through a iteration, cuz at first, I was gonna put a play button on my balloon, and I was gonna make the balloon fly away when clicked. I soon realized (after making it) that it looks ugly so I opted for a space bar approach instead In the next devlog, I’ll make a win screen and death screen, as well as that toggle for story and a skip for the story. Anyways, cya in the next one :D
Final Game Done I did a lot I think, mostly bug fixing. I made the player have more health, added music, and sound effects. The Yap: I spent a lot of time testing the game on web, because I KEPT FORGETTING TO DO THAT ONE THING. Also for some reason, the particles for player shoot and bomb explosion were being green in the web version, so my fix to this was to make there be NO hue variation. Hue Variation is how much the colour of the particle can vary from the set colour. Also the bird enemies rotation was messsed up, so I had to do some flip_v and flip_h to fix that Also, my friend said the game was TOO HARD, so I made the balloon have some more health. That wasn’t the move, cuz now you could beat the game WITHOUT EVEN SHOOTING…. Anyway I ended up only adding 10 more health instead of the intial 30. Also I added some Hit and Shoot sound effects from JSFXR, which sounds really good, but I dont really know if it is too loud or too soft.
Ships:
I made a Doodle Jump, and Rise inspired game, about a crow jumping on clouds and shooting obstacles to protect his daughter’s balloon from popping. I found RigidBody2D’s in Godot very challenging, as they had different ways to move than character and area2d’s. I had to rely on Ai to learn and make the code for that part, but once I got 1 rigid body done, most of them I did myself after learning from Ai. I’m proud of stepping out of my comfort zone, and making a unique game instead of a generic platformer. For people testing my project, PLEASE read the controls, and know that the game takes a few attempts to beat....
|
1793119823.499869
|
1793206223.499869
|
|
59284
|
Eaglescout by @maxicode | Stardance
|
maxicode
|
0
|
26.99
|
0
|
[]
|
[{"post_id": 67559, "ts": "202 [{"post_id": 67559, "ts": "2026-09-13T18:13:49Z", "hours": 9.095, "text": "i made the report submission menu"}, {"post_id": 64013, "ts": "2026-09-08T03:48:05Z", "hours": 17.8983, "text": "you’re probably wondering why the first devlog of this project is so long. it’s because i spent far too long wrangling typescript+cloudflare workers+openapi+dart+flutter into submission, not helped by the fact that i’ve never used flutter (oops). anyways i finally finished an initial api design for dynamic data definition and scouting reports. i also made form and competition editing menus in flutter, including a custom timezone picker that also took far too long :(."}]...
|
Title: Eaglescout by @maxicode | Stardance
Devlog Title: Eaglescout by @maxicode | Stardance
Devlogs:
you’re probably wondering why the first devlog of this project is so long. it’s because i spent far too long wrangling typescript+cloudflare workers+openapi+dart+flutter into submission, not helped by the fact that i’ve never used flutter (oops). anyways i finally finished an initial api design for dynamic data definition and scouting reports. i also made form and competition editing menus in flutter, including a custom timezone picker that also took far too long :(.
i made the report submission menu...
|
1792792227.4939973
|
1793397027.4939973
|
|
25760
|
ProxieSuite by @Tulis | Stardance
|
Tulis
|
0
|
26.98
|
0
|
[]
|
[{"post_id": 83887, "ts": "202 [{"post_id": 83887, "ts": "2026-10-28T20:22:36Z", "hours": 4.9708, "text": "Devlog #9 Getting back to this project! Hello after a long time, as Stardance is ending this is the perfect time to return back to this project! Most my features are finished, and are being polished right now: banning temp banning permissions vpn protection See you in the next one!"}, {"post_id": 30301, "ts": "2026-07-17T19:13:18Z", "hours": 3.1058, "text": "Devlog #8 What I cooked up with all that time? I updated Velocity-API version which resulted in Java Version bump (and a lot of pain) I added banning (for the whole server network) Updated proxie command I finally learned Brigadier command and it all makes sense Added a bunch of APIs Added PlayerSession so everything is snappy and doesn’t require constant lookups in DB Finished premium and offline login modules On what I will focus next? Making the bans better Ping protection A bunch of random utilities for sure Hope to see you in the next devlog!"}, {"post_id": 29694, "ts": "2026-07-16T19:36:38Z", "hours": 1.7783, "text": "Devlog #7 What have I done? I finished premium logon for 1.19.3 and below (it is kinda funky so I will continue working on that) as shown in the video I added PlayerCache so now everything related to player and DB is only fetched once Logging in for offline-mode players is much faster due to changes in hashing I migrated for now from UUIDs to usernames in PlayerState due to UUID being absent on versions 1.19.3 and below (what a pescy versions for devs XD) What I will focus on now? improving premium logon improving english I18N and style of the plugin protection agains bots and malicious pings Hope to see you in the next devlog!"}, {"post_id": 29588, "ts": "2026-07-16T16:56:34Z", "hours": 1.5994, "text": "Devlog #6 What have I been doing? I figured out that doing my own “YAML-like” structure for making commands is not a great idea and I should just use build-in stuff that is already great (Brigadier in Velocity API), so now I can move to logging in for versions 1.19.3 and below. Some other news? I switched to Linux full time! Unless I hope I will be able to stay here . So now all my heartbeats are from a linux mashine :) Hope to see you in the next update"}, {"post_id": 27118, "ts": "2026-07-12T12:01:39Z", "hours": 3.6547, "text": "Devlog #5 I finally won the battle with permissions (only on the plugin side) I made a cool command schema in YAML similar to what Spigot API has but with autocompletions and permissions based on arguments. I am making this to make the arguments i18n-able (I dunno tho if it is a good idea) Now everything is ultra-secure Or I hope so -_-! I will deploy this on my server with friends as they are beautiful bug hunters. It fully works with luckperms as this is what I used to test this, and now its time to make my own provider My DB choice I am wondering whether I should use MySQL or H2 by default (as LuckPerms does) it would make it a lot smoother for end user but much harder for me :( What I will be working on now? make a permissions provider make the /proxie command fix some bugs I was fighting with this dumb issue for too long , but now I can continue!"}, {"post_id": 26601, "ts": "2026-07-11T15:00:02Z", "hours": 2.9953, "text": "Devlog #4 What I implemented? I rewrote I18N for command suggestions (auto completion) and syntax, it is MUCH clearer now I researched some options for my plugin, I plan adding social links and configurable Tab Started working on proxiesuite command (reloading, administrating and configuring) On what I will focus now? I will continue working on the proxiesuite command Continue working on login See you in the next devlog! (this one is a little bit shorter)"}, {"post_id": 17659, "ts": "2026-06-28T15:20:15Z", "hours": 1.8533, "text": "Devlog #3 What I implemented? I finished login and register for offline-mode users, now I will focus on versions 1.19.3 and below! Added some jokes Made i18n much more readable, now I use it with commands Made some utilities for commands such as auto completion with i18n, auto usage with i18n On what I will focus now? Logging in for versions 1.19.3 (It works but I need to add some info for people to know what to do, also premium login ) Protection against scanners Simple protections against bots Admin commands I created a Github repo!"}, {"post_id": 17503, "ts": "2026-06-28T09:55:32Z", "hours": 5.3417, "text": "Devlog #2 Hi! It’s been some hours and I can proudly say that my i18n system is fully working now! I have a clean config with comments so you can enable/disable diffrent modules. VPN protections fully works now and is also configurable. What I will be working on next Right now I am working on logging system - online mode logging works fully and I am working on logging for offline-mode players, and version 1.19.3 and below. VPN protection I optimised the VPN protection bringing down the time per 100 000 quers from 600ms to 80ms :O! This means that one “check” now is 0,0008ms instead of 0,006ms and I eliminated most CPU spikes and some random queries that took like 2s (unacceptable I know :P) Some utilities I added easy scripts to run the dev. Also I crashed out on Intellij Idea Ultimate and fully switched to Zed for Java development. I used this masterpiece of an editor for a long time - but only for quick editing and Python, but this project showed me that is more than TASTY for Java too! Also, I love that it uses the Eclipse engine - it reminded me when I was a child (9 yrs old) and just started with Java <3. Hope to see you in the next Devlog!"}, {"post_id": 16809, "ts": "2026-06-27T09:17:33Z", "hours": 1.6794, "text": "Devlog #1 What is ProxieSuite? ProxieSuite will be a complete plugin for velocity suiting all your needs from a simple server with friends to whole minigame networks (fully open-source with my other plugins in the future) Features ProxieSuite will be packed with a whole set of features needed to run the server such as: logging in: for offline-mode players using a password also supporting online-mode users, skiping logging in! shield against port scanners and server terminators (such as Mountains of Math) my plan is to hide your server COMPLETLY to scanners, not just block them (make sure they don’t recognise you as a minecraft server) shield against VPNs and Proxies to avoid abuse parties (/party for playing with multiple friends at once!) syncing messaging with multiple servers (player count, joining and leaving messages) advertisments on chat (auto messages) some utilities with MOTD and useful when changing domains These are some features that I mean to implement at the start, also extending in the future! Why this plugin? I love making plugins for minecraft (Spigot, Paper and Velocity!) and I have a small “server network” to play minigames with my friends. I decided to make a “production-ready” plugin for this purpose (I have my plugin for security for example, but it is janky and really badly written) What I have now? Right now I finished implementing a robust config.yaml, a basis for my project! Hope to see you in next Devlogs!"}]...
|
Title: ProxieSuite by @Tulis | Stardance
Devlogs: Title: ProxieSuite by @Tulis | Stardance
Devlogs:
Devlog #1 What is ProxieSuite? ProxieSuite will be a complete plugin for velocity suiting all your needs from a simple server with friends to whole minigame networks (fully open-source with my other plugins in the future) Features ProxieSuite will be packed with a whole set of features needed to run the server such as: logging in: for offline-mode players using a password also supporting online-mode users, skiping logging in! shield against port scanners and server terminators (such as Mountains of Math) my plan is to hide your server COMPLETLY to scanners, not just block them (make sure they don’t recognise you as a minecraft server) shield against VPNs and Proxies to avoid abuse parties (/party for playing with multiple friends at once!) syncing messaging with multiple servers (player count, joining and leaving messages) advertisments on chat (auto messages) some utilities with MOTD and useful when changing domains These are some features that I mean to implement at the start, also extending in the future! Why this plugin? I love making plugins for minecraft (Spigot, Paper and Velocity!) and I have a small “server network” to play minigames with my friends. I decided to make a “production-ready” plugin for this purpose (I have my plugin for security for example, but it is janky and really badly written) What I have now? Right now I finished implementing a robust config.yaml, a basis for my project! Hope to see you in next Devlogs!
Devlog #2 Hi! It’s been some hours and I can proudly say that my i18n system is fully working now! I have a clean config with comments so you can enable/disable diffrent modules. VPN protections fully works now and is also configurable. What I will be working on next Right now I am working on logging system - online mode logging works fully and I am working on logging for offline-mode players, and version 1.19.3 and below. VPN protection I optimised the VPN protection bringing down the time per 100 000 quers from 600ms to 80ms :O! This means that one “check” now is 0,0008ms instead of 0,006ms and I eliminated most CPU spikes and some random queries that took like 2s (unacceptable I know :P) Some utilities I added easy scripts to run the dev. Also I crashed out on Intellij Idea Ultimate and fully switched to Zed for Java development. I used this masterpiece of an editor for a long time - but only for quick editing and Python, but this project showed me that is more than TASTY for Java too! Also, I love that it uses the Eclipse engine - it reminded me when I was a child (9 yrs old) and just started with Java <3. Hope to see you in the next Devlog!
Devlog #3 What I implemented? I finished login and register for offline-mode users, now I will focus on versions 1.19.3 and below! Added some jokes Made i18n much more readable, now I use it with commands Made some utilities for commands such as auto completion with i18n, auto usage with i18n On what I will focus now? Logging in for versions 1.19.3 (It works but I need to add some info for people to know what to do, also premium login ) Protection against scanners Simple protections against bots Admin commands I created a Github repo!
Devlog #4 What I implemented? I rewrote I18N for command suggestions (auto completion) and syntax, it is MUCH clearer now I researched some options for my plugin, I plan adding social links and configurable Tab Started working on proxiesuite command (reloading, administrating and configuring) On what I will focus now? I will continue working on the proxiesuite command Continue working on login See you in the next devlog! (this one is a little bit shorter)
Devlog #5 I finally won the battle with permissions (only on the plugin side) I made a cool command schema in YAML similar to what Spigot API has but with autocompletions and permissions based on arguments. I am making this to make the arguments i18n-able (I dunno tho if it is a good idea) Now everything is ultra-secure Or I hope so -_-! I will deploy this on my server with friends as they are beautiful bug hunters. It fully works with luckperms as this is what I used to test this, and now its time to make my own provider My DB choice I am wondering whether I should use MySQL or H2 by default (as LuckPerms does) it would make it a lot smoother for end user but much harder for me :( What I will be working on now? make a permissions provider make the /proxie command fix some bugs I was fighting with this dumb issue for too long , but now I can continue!
Devlog #6 What have I been doing? I figured out that doing my own “YAML-like” structure for making commands is not a great idea and I should just use build-in stuff that is already great (Brigadier in Velocity API), so now I can move to logging in for versions 1.19.3 and below. Some other news? I switched to Linux full time! Unless I hope I will be able to stay here . So now all my heartbeats are from a linux mashine :) Hope to see you in the next update
Devlog #7 What have I done? I finished premium logon for 1.19.3 and below (it is kinda funky so I will continue working on that) as shown in the video I added PlayerCache so now everything related to player and DB is only fetched once Logging in for offline-mode players is much faster due to changes in hashing I migrated for now from UUIDs to usernames in PlayerState due to UUID being absent on versions 1.19.3 and below (what a pescy versions for devs XD) What I will focus on now? improving premium logon improving english I18N and style of the plugin protection agains bots and malicious pings Hope to see you in the next devlog!
Devlog #8 What I cooked up with all that time? I updated Velocity-API version which resulted in Java Version bump (and a lot of pain) I added banning (for the whole server network) Updated proxie command I finally learned Brigadier command and it all makes sense Added a bunch of APIs Added PlayerSession so everything is snappy and doesn’t require constant lookups in DB Finished premium and offline login modules On what I will focus next? Making the bans better Ping protection A bunch of random utilities for sure Hope to see you in the next devlog!
Devlog #9 Getting back to this project! Hello after a long time, as Stardance is ending this is the perfect time to return back to this project! Most my features are finished, and are being polished right now: banning temp banning permissions vpn protection See you in the next one!...
|
1793231622.8589873
|
1793836422.8589873
|
|
21462
|
Personal Language Trainer by @Larz | Stardance
|
Larz
|
0
|
26.92
|
0
|
[]
|
[{"post_id": 61289, "ts": "202 [{"post_id": 61289, "ts": "2026-09-04T04:14:06Z", "hours": 7.1583, "text": "DEV LOG 3: Personal Language Trainer development has been slow because of me researching a bunch on linguistics what’s new? updates on the user database to include more specifications of words used updates on text processor being a pure classifier rather than heavily filtering the input initiating a scoring system to determine the importance of each word. a whole lot of testing with other NLP libraries. That’s pretty much it the other days are mostly filled with research in minor updates that slowly refactor the code but mostly everything stays the same."}, {"post_id": 53723, "ts": "2026-08-24T12:05:11Z", "hours": 9.0719, "text": "DEV LOG 2: Personal Language Trainer It’s been a few days after my last dev log and I managed to redo and fix multiple things. what’s new? Updates on text processing: removed tier0 bucket reconfigured how the words get filtered and process Updates on database: initialized the database with ‘sqlite3’ three tables are created: ‘words’, ‘sentences’ and ‘words_sentence_links’ ‘words’ record all the words inputted. (if new it will increment an id and count) ‘sentences’ record all sentences with no counts ‘word_sentence_links’ contain word and sentence ids and has the purpose to show which word is present inside a sentence. Testing: I also added some minor things like an entire dedicated test script to test the program. There are also test cases in both audio and text to test recording and transcribing. That’s pretty much it, It still looks boring so I have screenshots of the tests and the database"}, {"post_id": 48755, "ts": "2026-08-17T09:00:02Z", "hours": 10.6878, "text": "DEV LOG 1: Personal Language Trainer This is the start of my project Personal Language Trainer. Initializing Created the transcribing component of the code using OpenAI’s open sourced model whisper. Created the text processor for the words transcribed to prepare it for the database. I used spaCy an NLP to clear unwanted words from the transcript of each sentence. The text processor contains a filter that will take valid words for communication then, put them into tiers so that it would be easier to calculate which type of words should be prioritized based of importance and usage. That’s all for today I don’t really have much for a demo other than a screenshot (it doesn’t look really interesting tbh)."}]...
|
Title: Personal Language Trainer by @Larz | Starda Title: Personal Language Trainer by @Larz | Stardance
Devlogs:
DEV LOG 1: Personal Language Trainer This is the start of my project Personal Language Trainer. Initializing Created the transcribing component of the code using OpenAI’s open sourced model whisper. Created the text processor for the words transcribed to prepare it for the database. I used spaCy an NLP to clear unwanted words from the transcript of each sentence. The text processor contains a filter that will take valid words for communication then, put them into tiers so that it would be easier to calculate which type of words should be prioritized based of importance and usage. That’s all for today I don’t really have much for a demo other than a screenshot (it doesn’t look really interesting tbh).
DEV LOG 2: Personal Language Trainer It’s been a few days after my last dev log and I managed to redo and fix multiple things. what’s new? Updates on text processing: removed tier0 bucket reconfigured how the words get filtered and process Updates on database: initialized the database with ‘sqlite3’ three tables are created: ‘words’, ‘sentences’ and ‘words_sentence_links’ ‘words’ record all the words inputted. (if new it will increment an id and count) ‘sentences’ record all sentences with no counts ‘word_sentence_links’ contain word and sentence ids and has the purpose to show which word is present inside a sentence. Testing: I also added some minor things like an entire dedicated test script to test the program. There are also test cases in both audio and text to test recording and transcribing. That’s pretty much it, It still looks boring so I have screenshots of the tests and the database
DEV LOG 3: Personal Language Trainer development has been slow because of me researching a bunch on linguistics what’s new? updates on the user database to include more specifications of words used updates on text processor being a pure classifier rather than heavily filtering the input initiating a scoring system to determine the importance of each word. a whole lot of testing with other NLP libraries. That’s pretty much it the other days are mostly filled with research in minor updates that slowly refactor the code but mostly everything stays the same....
|
1792723889.1850271
|
1793328689.1850271
|
|
29373
|
Solarium by @vrplays | Stardance
|
vrplays
|
1
|
26.9
|
131
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-10T22:08:23Z", "hours": 13.0, "multiplier": 9.86, "payout": 131, "blessing": "neutral", "text": "Solarium is an operating system built from scratch. This means it isn’t built off ANYTHING. Not Linux, not anything like that, just code. Currently, it’s in an early phase, but as time goes on, more content will be added. Please give this a good rating! I spent a long time getting this to work without bugs. Currently, Solarium features several terminal commands that you can use. It mainly serves to show what the OS is capable of right now. There’s also a couple visual features, like a boot logo and multiple fonts! Please realize that despite the lack of content, I still spent so much time working on this project! As of shipping this, 13 hours of time! There will be more ships in the future, but in the meantime, this is what I have as of right now. Enjoy!", "repo": "https://github.com/VR2011/Solarium/", "demo": "https://github.com/VR2011/Solarium/releases"}]...
|
[{"post_id": 37978, "ts": "202 [{"post_id": 37978, "ts": "2026-07-31T01:55:34Z", "hours": 9.27, "text": "Not an update, but just a devlog. You guys might’ve wondered where I’ve been. I’ve been pretty busy over the past few weeks, having travelled to other states multiple times recently. I wasn’t able to get time to work on the OS, but whenever I do, I spent most of the time getting it to work on my Mac. I’ve spent way too long on this, and I hope it’s over soon. I’ll likely publish an update once I get this fixed. But for now, know that I am still working on this! (However I’ll be gone again in a few weeks once again…) I’m either gonna finish up some terminal features, or move on to a GUI. I’m gonna plan to stay away from hardware support for a bit. In the meantime, enjoy what I have so far! (If you notice, you’ll see that this is the same image as my banner. For some reason my ship got declined because of a new rule(?) where the banner must be the project and not a logo…)"}, {"post_id": 27736, "ts": "2026-07-13T15:42:26Z", "hours": 4.6336, "text": "Version 2.0 I’m back. Seems that my project still hasn’t been shipped yet, but that’s alright. Solarium has gotten a lot of bug fixes, and the fonts now look more polished. I also changed the video display so the output looks much better now! In addition to minor changes, Solarium now works on real hardware! You can help contribute to the OS Support list by going to the repo, and opening a PR with your changes. You can also just ping me in Slack or leave a comment here with the same details, and I can add it. I also added a screenshot showing the OS working on my Chromebook!"}, {"post_id": 26121, "ts": "2026-07-10T18:38:50Z", "hours": 5.4814, "text": "Devlog 1.2 Much longer than the devlogs I’ve sent here. I added a lot more stuff compared to the previous devlog, which was more bugfixes than actual content. There’s now a boot logo that appears for a few seconds before going back to the terminal! In addition, there’s now fonts! You can use the help command for more info. Alongside the actual OS, I’m going to start trying to implement support for actual hardware. It only works on VMs, so real hardware is going to be interesting."}, {"post_id": 24176, "ts": "2026-07-07T16:05:17Z", "hours": 3.9842, "text": "Devlog 1.1 Not gonna lie, this sucked. I spent a long time getting arrow keys to work. Luckily, I was finally able to figure it out. I also changed some stuff backend, but a few things on the front end. Also added this cool thing; the first instance of color! Isn’t that cool? Anyway, I’ll work on new stuff later, maybe some more commands."}, {"post_id": 20397, "ts": "2026-07-01T23:58:11Z", "hours": 3.8125, "text": "Devlog 1.0 Well, this is going to be something. Solarium is an operating system. From scratch. It is not Linux, it is not based off anything else. Right now, it’s just a terminal that has a few commands, and well, that’s pretty much it. What do you expect from a first version? What do you think of this?"}]...
|
Title: Solarium by @vrplays | Stardance
Devlogs:
Title: Solarium by @vrplays | Stardance
Devlogs:
Devlog 1.0 Well, this is going to be something. Solarium is an operating system. From scratch. It is not Linux, it is not based off anything else. Right now, it’s just a terminal that has a few commands, and well, that’s pretty much it. What do you expect from a first version? What do you think of this?
Devlog 1.1 Not gonna lie, this sucked. I spent a long time getting arrow keys to work. Luckily, I was finally able to figure it out. I also changed some stuff backend, but a few things on the front end. Also added this cool thing; the first instance of color! Isn’t that cool? Anyway, I’ll work on new stuff later, maybe some more commands.
Devlog 1.2 Much longer than the devlogs I’ve sent here. I added a lot more stuff compared to the previous devlog, which was more bugfixes than actual content. There’s now a boot logo that appears for a few seconds before going back to the terminal! In addition, there’s now fonts! You can use the help command for more info. Alongside the actual OS, I’m going to start trying to implement support for actual hardware. It only works on VMs, so real hardware is going to be interesting.
Version 2.0 I’m back. Seems that my project still hasn’t been shipped yet, but that’s alright. Solarium has gotten a lot of bug fixes, and the fonts now look more polished. I also changed the video display so the output looks much better now! In addition to minor changes, Solarium now works on real hardware! You can help contribute to the OS Support list by going to the repo, and opening a PR with your changes. You can also just ping me in Slack or leave a comment here with the same details, and I can add it. I also added a screenshot showing the OS working on my Chromebook!
Not an update, but just a devlog. You guys might’ve wondered where I’ve been. I’ve been pretty busy over the past few weeks, having travelled to other states multiple times recently. I wasn’t able to get time to work on the OS, but whenever I do, I spent most of the time getting it to work on my Mac. I’ve spent way too long on this, and I hope it’s over soon. I’ll likely publish an update once I get this fixed. But for now, know that I am still working on this! (However I’ll be gone again in a few weeks once again…) I’m either gonna finish up some terminal features, or move on to a GUI. I’m gonna plan to stay away from hardware support for a bit. In the meantime, enjoy what I have so far! (If you notice, you’ll see that this is the same image as my banner. For some reason my ship got declined because of a new rule(?) where the banner must be the project and not a logo…)
Ships:
Solarium is an operating system built from scratch. This means it isn’t built off ANYTHING. Not Linux, not anything like that, just code. Currently, it’s in an early phase, but as time goes on, more content will be added. Please give this a good rating! I spent a long time getting this to work without bugs. Currently, Solarium features several terminal commands that you can use. It mainly serves to show what the OS is capable of right now. There’s also a couple visual features, like a boot logo and multiple fonts! Please realize that despite the lack of content, I still spent so much time working on this project! As of shipping this, 13 hours of time! There will be more ships in the future, but in the meantime, this is what I have as of right now. Enjoy!...
|
1793252950.4308138
|
1793339350.4308138
|
|
7225
|
Universe Data Booklet by @S_U_Wasi | Stardance
|
S_U_Wasi
|
2
|
26.88
|
216
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T19:37:05Z", "hours": 7.0, "multiplier": 9.05, "payout": 62, "blessing": "neutral", "text": "What I have built is known as Universe Data Booklet. As it’s name suggest it is a website which contains data on exoplanets and near earth asteroids. Previously it contains only data and analysis. But currently (After recent updates) there are many more features. To know about all the features please read my devlog or directly visit the website. While shipping this right now, I currently have many new ideas to add in this and I will definitely add those in future (Means coming soon). I cannot make Universe Data Booklet in one day or a week. I need time to create it. My vision regarding this project is very wide. I want that my project will help both learners and curious minds. During the development of this project I got into a problem. For latest near earth asteroids, I must have to use API. But I cannot put API on a completely open source project. That is why I have used public API. But public api has data fetch limits. Since the project is in it’s early state, not many users will visit. but I was thinking about future. That is why I came up with an idea, where I will use the Public API but it will never hit the limit (The smart caching). In my new development structure, the site will fetch data only once in 30 days (Data is fetched on the first visit after 30 days). Then that data is saved as cache and all other users get data from that one cache. By doing this data is fetched only once even if thousands of users visit at once. This solves the rate limit. but I need the latest data (at least 30 days). That is why the site fetch data once after 30 day. The program check the cache folder and if the data there is older than 30 days then the site fetches new data on the first visit and saves it. Now another storage problem arise. To solve that my site was programmed in such a way that it will store cache for 90 days and any cache data with are older than 90 days will be deleted. Thus I have solved the issue regarding the near Earth asteroids. I uses public api for near earth asteroids (Because asteroids data get change quickly). I uses csv file for exoplanets data (It is a manually saved data from authentic source) Thank You for giving Universe Data Booklet a try.", "repo": "https://github.com/MDSUWasi/Universe-Data-Booklet", "demo": "https://wasi100.pythonanywhere.com/"}, {"ship_num": 2, "ts": "2026-06-20T18:56:29Z", "hours": 11.0, "multiplier": 13.38, "payout": 154, "blessing": "neutral", "text": "Here is my Universe Data Booklet. As the mane suggest, this is a site which contains data about exoplanets and asteroids. Asteroids: Here I have used real asteroids data (Which is obtained through API ). Currently it contains data about asteroid which is near to our planet (Earth) Exoplanets: Exoplanets data is added manually inside the source code. So, exoplanets data can be viewed without any need of API. I have used API in asteroids but not in exoplanets because asteroids moves and changes around the Earth. And I want to work on current data. But exoplantes doesn’t change for a long time. So, there is no need of live API for that. There is a chart view in my site which shows the chat comparison between exoplanets/ asteroids mass. I have used public free API (I know about the limitations). I have solved that problem too. My site will only fetch data once in 30 days and saved it in cache. And through out the month the site will use that cache data. And again gives an API call after 31 days. Means, there will be only API call but many users can use my site. This also brings storage issue in my site. I have also fixed that. The cache data which are older than 90 days will be automatically removed. That’s all for now. I am also thinking for future update in this site too. Thank You.", "repo": "https://github.com/MDSUWasi/Universe-Data-Booklet", "demo": "https://wasi100.pythonanywhere.com/"}]...
|
[{"post_id": 78904, "ts": "202 [{"post_id": 78904, "ts": "2026-10-12T00:13:01Z", "hours": 1.5658, "text": "Another night-day another Problem . Yesterday I went to the source code to add a new theme and structure in Universe Data Booklet. Then I saw a bug in by server.py (backend). But I thought that I will just fix it after working on the theme. Then I worked on theme. Then during test time, I saw something scary (I will not tell what was that). Then I started fixing the theme, that caused bugs of js and css and them what! I never thought this would cause this much trouble. After some time, There was multiple tabs and tasks running into my PC (And which goes heavy on RAM). And What after My Virtual Development Environment got crashed and corrupt. And from night 11 AM to still now (6 AM) I am still fixing my environment otherwise all of my effort will be gone (I will lost my entire new source code)."}, {"post_id": 77832, "ts": "2026-10-08T13:27:04Z", "hours": 1.4394, "text": "New member I am glade to welcome Solar System as the new member on Universe Data Booklet . New Update! Now Universe Data Booklet have data on Planets, Exoplanets, Asteroids and Satellites (Including the artificial one). Now Universe Data Booklet can show image. But this feature is limited. I am thinking to thinking to increase (Just thinking for now) The above listed updates are just announcement for now. I haven’t released them yet, but going to in next few days. Since I took help from AI, I need to edit, debug and make some changes including reviewing and reviewing the code before releasing. Thank You"}, {"post_id": 77090, "ts": "2026-10-05T16:53:14Z", "hours": 0.9247, "text": "Upcoming Update Announcement In the next update there are huge changes coming. Some of them are shown below. A detailed description on exoplanets and asteroids: Now users can see a very detailed graphical data. This is because I have increased the number of data source. I have decreased the data fetch limit from 30 days to 7 days. So, starting from next release, all data provided in Universe Data Booklet will be re-new on the very first visit of each week unless there any issue pop up. Next work will be on Images for exoplanets and asteroids. This might be a tricky part because there are a lots of data and images for every data might be a problem. Let me check first. This is a new implementation idea I just thought. I will add this feature if I can successfully manage to find a way to add real images without disturbing the functionality and smoothness. All the thing I have mentioned above (except point 3) have been already implemented. I just have to review the source code twice again before release. Point 3 is on the way of implementation but not confirmed whether be released or not. If everything goes will. I will release this After my Exam is over. Thank You"}, {"post_id": 65478, "ts": "2026-09-10T17:09:51Z", "hours": 2.3808, "text": "Update Universe Data Booklet got a new update. And the updated version is currently online . On the previous version there are some typing errors and inconsistencies in the code, page and README. That is why I have revised and fix those. Now, I think user can relate the main page with the README. For new features. There 2 new features currently online. One is a game and another is a assistant. But both of those feature needs huge update soon. Currently I the game is 2D and Have no visual. The assistant currently cannot understand natural language. In the recent version the assistant can only answer if the name of asteroid or exoplanet available in the data are written as it is. And Currently I have no intention on adding LLM in it. My Future Plan for Universe Data Booklet I will design the assistant such a way that it will catch keywords on prompt and answer based on those keyword. The current Habitability Scanner is just like normal search and it doesn’t show much data on habitability (But it wasn’t made for that). I am thinking to work on this and will try to add more data. Since it is data booklet type. I think the current version have too much basic data. That is why I am thinking to add more data source and combine everything together. I am also thinking about a Wiki for Universe Data Booklet. After all those work. I think I will take some break from backend and frontend coding and work on Graphics (For game part, and icon). I also want to change it from 2D to 3D. Some new or updated idea may spark during the work on above. So, everything is changeable."}, {"post_id": 59722, "ts": "2026-09-01T17:22:43Z", "hours": 2.5711, "text": "I think I am going to ship Universe Data Booklet 3rd Time. Universe Data Booklet (UDB) is now on version 10.0.0.0.0 (It is also the second ship). From the first day of to now, UDB has improved a lot. Initially it was suppose to only display raw data in a graphical window. But as time passed new idea came to my mind and I add those in it. Currently UDB has many feature and I am going to add some more and make my 3rd ship of UDB before 30 September (Because I want to release it during ongoing Stardance). Overview on upcomming new updates: Changes on existing features. A universe explore game A Chat Bot (Used as alternative of search feature). Currently I am working on above 3. I may also add some more new feature if any new idea arrive."}, {"post_id": 44164, "ts": "2026-08-09T18:55:38Z", "hours": 0.9736, "text": "Today. I am going (I already have deployed. Go and check out if you want) to deploy the version 10.0.0.0.0 of Universe Data Booklet on Web and The first stable release. Currently Universe Data Booklet Have 3D Solar System Near Earth Asteroid View 3D Galactic exoplanet view 3D Map view Graph analysis (Difference of mass in bar diagram) Quiz Mode Flash Cards Guess Mode Research Mode I have updated the data row (Currently those are click-able) 4 different theme in 2 different structure. For more info see the README in the source code"}, {"post_id": 42726, "ts": "2026-08-07T16:20:15Z", "hours": 2.8481, "text": "Some new changes: Now, 3D vies have 2 different modes for exoplanets (A galaxy like simulation) and Asteroids (The solar system type simulation. Solar system because all data on asteroids are present for near Earth asteroids). Now, Universe Data Booklet have study (Flashcards, Quiz, Compare etc.) and research section (Specific details key point study). There are more updates. To see all of them and Try please wait until 10 August (I will deploy the site and Update it that day.). But the source is available in the repository. Those who are interested can give it a try directly from source code (But the source code is in early state and un-stable. So, I can not guarantee anything )."}, {"post_id": 41796, "ts": "2026-08-06T06:41:55Z", "hours": 1.5689, "text": "New Announcement: According to previous reviews and my own updates I have upgraded the Universe Data Booklet. New updates include: Now, users can download the data in good formate as PDF. There is new 3D view included. A new map included to get a visual map for both asteroids and exoplanets. A little bit change to chart view. Now, user can see the charts, 3D view and Map as a pop up (This was a issue in previous ship, and thanks to the reviews that I can fix them) Now the data row is click-able for selective view. There is a search bar for searching the exact asteroid and exoplanet by name The good thing is, user do not have to remember the full name for asteroids and exoplanets, only a partial correct name is enough New Features are currently written and available in the GitHub repository. I haven’t deployed those yet. Because I have some checking left (Including security and deployment issues). That is why the current site is not updated yet. I will deploy and release the update on 10 August 2026."}, {"post_id": 35261, "ts": "2026-07-26T15:46:56Z", "hours": 1.4956, "text": "I have upgraded the CSS, some of HTML (To introduce Hamburger) and some of JS. Initially I thought to give it a color matching with my portfolio, but that color doesn’t look good on it. That is why I used the current one (I have seen several other sites on this same color and I liked this)."}, {"post_id": 12689, "ts": "2026-06-20T18:44:22Z", "hours": 0.7319, "text": "I have added data about exoplanets (saved locally) and asteroids (data achieved using API). Additional to those, there is a graph view for asteroids and exoplanets, where, along x-axis there is exoplanets/ asteroids name and along y-axis there is the mass."}, {"post_id": 12400, "ts": "2026-06-20T07:20:52Z", "hours": 2.1811, "text": "Interface of my data booklet is ready."}, {"post_id": 5442, "ts": "2026-06-09T06:41:44Z", "hours": 4.4633, "text": "Previously I was thinking about making a universe data booklet with 20% universe data. But now I am thinking about increasing that limit."}, {"post_id": 3397, "ts": "2026-06-06T09:45:13Z", "hours": 4.1061, "text": "I am developing a universe Data Booklet for our Galaxy (up to a certain limit)"}]...
|
Title: Universe Data Booklet by @S_U_Wasi | Starda Title: Universe Data Booklet by @S_U_Wasi | Stardance
Devlogs:
I am developing a universe Data Booklet for our Galaxy (up to a certain limit)
Previously I was thinking about making a universe data booklet with 20% universe data. But now I am thinking about increasing that limit.
Interface of my data booklet is ready.
I have added data about exoplanets (saved locally) and asteroids (data achieved using API). Additional to those, there is a graph view for asteroids and exoplanets, where, along x-axis there is exoplanets/ asteroids name and along y-axis there is the mass.
I have upgraded the CSS, some of HTML (To introduce Hamburger) and some of JS. Initially I thought to give it a color matching with my portfolio, but that color doesn’t look good on it. That is why I used the current one (I have seen several other sites on this same color and I liked this).
New Announcement: According to previous reviews and my own updates I have upgraded the Universe Data Booklet. New updates include: Now, users can download the data in good formate as PDF. There is new 3D view included. A new map included to get a visual map for both asteroids and exoplanets. A little bit change to chart view. Now, user can see the charts, 3D view and Map as a pop up (This was a issue in previous ship, and thanks to the reviews that I can fix them) Now the data row is click-able for selective view. There is a search bar for searching the exact asteroid and exoplanet by name The good thing is, user do not have to remember the full name for asteroids and exoplanets, only a partial correct name is enough New Features are currently written and available in the GitHub repository. I haven’t deployed those yet. Because I have some checking left (Including security and deployment issues). That is why the current site is not updated yet. I will deploy and release the update on 10 August 2026.
Some new changes: Now, 3D vies have 2 different modes for exoplanets (A galaxy like simulation) and Asteroids (The solar system type simulation. Solar system because all data on asteroids are present for near Earth asteroids). Now, Universe Data Booklet have study (Flashcards, Quiz, Compare etc.) and research section (Specific details key point study). There are more updates. To see all of them and Try please wait until 10 August (I will deploy the site and Update it that day.). But the source is available in the repository. Those who are interested can give it a try directly from source code (But the source code is in early state and un-stable. So, I can not guarantee anything ).
Today. I am going (I already have deployed. Go and check out if you want) to deploy the version 10.0.0.0.0 of Universe Data Booklet on Web and The first stable release. Currently Universe Data Booklet Have 3D Solar System Near Earth Asteroid View 3D Galactic exoplanet view 3D Map view Graph analysis (Difference of mass in bar diagram) Quiz Mode Flash Cards Guess Mode Research Mode I have updated the data row (Currently those are click-able) 4 different theme in 2 different structure. For more info see the README in the source code
I think I am going to ship Universe Data Booklet 3rd Time. Universe Data Booklet (UDB) is now on version 10.0.0.0.0 (It is also the second ship). From the first day of to now, UDB has improved a lot. Initially it was suppose to only display raw data in a graphical window. But as time passed new idea came to my mind and I add those in it. Currently UDB has many feature and I am going to add some more and make my 3rd ship of UDB before 30 September (Because I want to release it during ongoing Stardance). Overview on upcomming new updates: Changes on existing features. A universe explore game A Chat Bot (Used as alternative of search feature). Currently I am working on above 3. I may also add some more new feature if any new idea arrive.
Update Universe Data Booklet got a new update. And the updated version is currently online . On the previous version there are some typing errors and inconsistencies in the code, page and README. That is why I have revised and fix those. Now, I think user can relate the main page with the README. For new features. There 2 new features currently online. One is a game and another is a assistant. But both of those feature needs huge update soon. Currently I the game is 2D and Have no visual. The assistant currently cannot understand natural language. In the recent version the assistant can only answer if the name of asteroid or exoplanet available in the data are written as it is. And Currently I have no intention on adding LLM in it. My Future Plan for Universe Data Booklet I will design the assistant such a way that it will catch keywords on prompt and answer based on those keyword. The current Habitability Scanner is just like normal search and it doesn’t show much data on habitability (But it wasn’t made for that). I am thinking to work on this and will try to add more data. Since it is data booklet type. I think the current version have too much basic data. That is why I am thinking to add more data source and combine everything together. I am also thinking about a Wiki for Universe Data Booklet. After all those work. I think I will take some break from backend and frontend coding and work on Graphics (For game part, and icon). I also want to change it from 2D to 3D. Some new or updated idea may spark during the work on above. So, everything is changeable.
Upcoming Update Announcement In the next update there are huge changes coming. Some of them are shown below. A detailed description on exoplanets and asteroids: Now users can see a very detailed graphical data. This is because I have increased the number of data source. I have decreased the data fetch limit from 30 days to 7 days. So, starting from next release, all data provided in Universe Data Booklet will be re-new on the very first visit of each week unless there any issue pop up. Next work will be on Images for exoplanets and asteroids. This might be a tricky part because there are a lots of data and images for every data might be a problem. Let me check first. This is a new implementation idea I just thought. I will add this feature if I can successfully manage to find a way to add real images without disturbing the functionality and smoothness. All the thing I have mentioned above (except point 3) have been already implemented. I just have to review the source code twice again before release. Point 3 is on the way of implementation but not confirmed whether be released or not. If everything goes will. I will release this After my Exam is over. Thank You
New member I am glade to welcome Solar System as the new member on Universe Data Booklet . New Update! Now Universe Data Booklet have data on Planets, Exoplanets, Asteroids and Satellites (Including the artificial one). Now Universe Data Booklet can show image. But this feature is limited. I am thinking to thinking to increase (Just thinking for now) The above listed updates are just announcement for now. I haven’t released them yet, but going to in next few days. Since I took help from AI, I need to edit, debug and make some changes including reviewing and reviewing the code before releasing. Thank You
Another night-day another Problem . Yesterday I went to the source code to add a new theme and structure in Universe Data Booklet. Then I saw a bug in by server.py (backend). But I thought that I will just fix it after working on the theme. Then I worked on theme. Then during test time, I saw something scary (I will not tell what was that). Then I started fixing the theme, that caused bugs of js and css and them what! I never thought this would cause this much trouble. After some time, There was multiple tabs and tasks running into my PC (And which goes heavy on RAM). And What after My Virtual Development Environment got crashed and corrupt. And from night 11 AM to still now (6 AM) I am still fixing my environment otherwise all of my effort will be gone (I will lost my entire new source code).
Ships:
Here is my Universe Data Booklet. As the mane suggest, this is a site which contains data about exoplanets and asteroids. Asteroids: Here I have used real asteroids data (Which is obtained through API ). Currently it contains data about asteroid which is near to our planet (Earth) Exoplanets: Exoplanets data is added manually inside the source code. So, exoplanets data can be viewed without any need of API. I have used API in asteroids but not in exoplanets because asteroids moves and changes around the Earth. And I want to work on current data. But exoplantes doesn’t change for a long time. So, there is no need of live API for that. There is a chart view in my site which shows the chat comparison between exoplanets/ asteroids mass. I have used public free API (I know about the limitations). I have solved that problem too. My site will only fetch data once in 30 days and saved it in cache. And through out the month the site will use that cache data. And again gives an API call after 31 days. Means, there will be only API call but many users can use my site. This also brings storage issue in my site. I have also fixed that. The cache data which are older than 90 days will be automatically removed. That’s all for now. I am also thinking for future update in this site too. Thank You.
What I have built is known as Universe Data Booklet. As it’s name suggest it is a website which contains data on exoplanets and near earth asteroids. Previously it contains only data and analysis. But currently (After recent updates) there are many more features. To know about all the features please read my devlog or directly visit the website. While shipping this right now, I currently have many new ideas to add in this and I will definitely add those in future (Means coming soon). I cannot make Universe Data Booklet in one day or a week. I need time to create it. My vision regarding this project is very wide. I want that my project will help both learners and curious minds. During the development of this project I got into a problem. For latest near earth asteroids, I must have to use API. But I cannot put API on a completely open source project. That is why I have used public API. But public api has data fetch limits. Since the project is in it’s early state, not many users will visit. but I was thinking about future. That is why I came up with an idea, where I will use the Public API but it will never hit the limit (The smart caching). In my new development structure, the site will fetch data only once in 30 days (Data is fetched on the first visit after 30 days). Then that data is saved as cache and all other users get data from that one cache. By doing this data is fetched only once even if thousands of users visit at once. This solves the rate limit. but I need the latest data (at least 30 days). That is why the site fetch data once after 30 day. The program check the cache folder and if the data there is older than 30 days then the site fetches new data on the first visit and saves it. Now another storage problem arise. To solve that my site was programmed in such a way that it will store cache for 90 days and any cache data with are older than 90 days will be deleted. Thus I have solved the issue regarding the near Earth asteroids. I uses public api for near earth asteroids (Because asteroids data get change quickly). I uses csv file for exoplanets data (It is a manually saved data from authentic source) Thank You for giving Universe Data Booklet a try....
|
1793141540.050979
|
1793227940.050979
|
|
22550
|
Olympus by @nithilgadde | Stardance
|
nithilgadde
|
1
|
26.88
|
503
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-24T01:51:24Z", "hours": 26.0, "multiplier": 19.33, "payout": 503, "blessing": "neutral", "text": "Hey everyone! I made Olympus, a small game engine for Python that lets you build tiny pixel games on a 128x128 screen with 16 colors, kind of like PICO-8. The twist is I built it from scratch. No pygame, no pyxel. The screen is just a numpy grid of color numbers, and I hand-wrote all the drawing myself: the lines, the circles, the sprite blitting, a little pixel font, even the sound. SDL2 only opens the window and reads the keyboard, it does none of the actual drawing. The hardest parts were the ones you don’t see. My filled circles came out with weird spikes poking off the sides until I rewrote them with a proper midpoint algorithm. Then turning it into a real installable library nearly broke me: wrong Python versions, a locked-down pip, and an upload token that kept getting rejected. I learned a lot more about packaging than I planned to. What I’m proudest of is that it’s actually real. You can install the library by going to the ‘Try project’ or ‘See source code’, both have proper instructions on how to install the library. Then, you can start building games! There is proper documentation in the ‘Wiki’ tab in the Github Repo (click See source code). Happy making! (The Demo is a copy of Snake using the Olympus Engine)", "repo": "https://github.com/nithilgadde/Olympus", "demo": "https://pypi.org/project/olympus-engine/"}]...
|
[{"post_id": 34068, "ts": "202 [{"post_id": 34068, "ts": "2026-07-24T15:02:51Z", "hours": 0.8831, "text": "Devlog #9: Starting to Fly Again Hello everyone! I’m finally making another devlog for Olympus. I took a break because I went on vacation and I didn’t feel motivated to start coding again. But now, I’m ready to show you the new things I’ve created. When I was looking at the code, I realized that I never added functionality to export a game. If you wanted to share your game with someone, you would have to send them your entire code and then make them install Python, Olympus, and it’s a huge deal just to play your game. So, I’ve implemented a game exporter! How it works So I used PyInstaller to make this work. Basically, when you export your game, PyInstalled will “freeze” your program. This means that it will trace every import your game makes, gathers all of your assets (your code, the Python interpreter, olympus, numpy, Pillow, PySDL2) and then packs it into one self-contained bundle. And that’s your game! What’s Next? Honesty, I have no idea. I’m planning on adding mouse implementation but it depends on what I’m feeling like doing. See you later! Below is a simple snake game that I created and it was created and exported by Olympus Engine."}, {"post_id": 14810, "ts": "2026-06-24T01:37:11Z", "hours": 0.7514, "text": "Devlog #8: The Ship has Sailed? Hey everyone! Stardance says that I have a certain amount of time logged and that if I ship and don’t make a devlog for that time, I’m gonna lose it. So, I’ll make a quick devlog: README.md: I created a nice README.md for the GitHub Repo. I also added a wiki, so that it will be very easy for anyone to learn Olympus. Turned into a Python Package This is my first time uploading a Python Package to PyPi, the official provider for Python packages, so this was a new experience. However, there are lots of documentation online that made it very easy. So, Olympus is now an official Python library! You can check it out when i ship the project. Welp, that’s it. I hope to see you next time!"}, {"post_id": 14579, "ts": "2026-06-23T19:01:45Z", "hours": 7.7639, "text": "Devlog #7: We’ve Reached the Peak! Hello everyone! Welcome back to another devlog. I’m happy to announce that my game engine, Olympus, is finally finished! Here’s what I added. Sound This part took about 1 - 2 hours to implement. Because the game engine is a 16-bit game engine, this means that we can only play sounds that are 16-bit. You can create your own sounds using the game engine, but you can also upload your own sounds. The program works by converting your sounds into a 16-bit audio that the game engine can render. Sprite Editor This part took foreverrrrr. Basically, instead of manually typing out sprites for your game, I wanted a editor where you could draw the sprites and then export them. This took forever because I didn’t know how to export your sprites into actual array code that would turn into a sprite. However, I was able to just reuse my code that render sprites from a list into the sprite editor and add functionality that would turn the blank spaces in the canvas into a ‘.’ (blank space) and all the squares that are drawn into an ‘x’ (the actual sprite pixels). I was also able to add saving and onion skinning. What’s Next? I’ll be turning Olympus into a Python library so everyone can install it. Then, I will ship the project. See you next time!"}, {"post_id": 14065, "ts": "2026-06-23T01:24:29Z", "hours": 4.1719, "text": "Devlog #6: Sights on the Peak! Hey everyone! Welcome back to another devlog. Today, we are one giant step forward in finishing the game engine: tilemaps and animations. Tilemaps: The whole level is a grid of letters. I draw my maps as plain text: W is a wall, C is a coin, ’. ‘is empty space (These are just the examples that I’m using for the demos). So a level is literally a block of text I type out, like ASCII art of the room. The engine turns each letter into a tile. It walks the grid square by square, and for each letter it looks up a matching 8×8 picture and stamps it at that spot. A ‘W’ becomes a wall tile, a ’. ‘draw nothing. This is all easy on paper but when actually trying to create it, it was hell. The amount of bugs that would come wouldn’t stop and I actually was very close to giving up for the day. But, I persisted, and after over 20+ Google Tabs, I was able to work it out. Animations: Even though I thought this would be the hardest thing to implement, this one was the easiest feature to implement imo. It’s a flipbook of sprites. A walk animation is just a list of frames, the same little pixel sprites I already made. Flip through them fast and the legs look like they’re moving. A timer controls the speed. If I swapped frames every single frame of the game (60 times a second) it’d be a blur, so I count ticks and only switch to the next frame every few ticks. That one number tunes how fast the walk looks. When it reaches the last frame it loops back to the first, so it cycles forever. It only animates when it should. While you hold an arrow, I advance the frames so the hero walks. When you let go, I reset to the standing pose so he doesn’t moonwalk in place. What’s Next? This engine is veryyy close to being finished! I just need to add sounds and this engine should be complete! After I finish the engine, I will ship the engine. See you next time! Also, if you want to know what the tilemap in the demo looks like in code, here it is: LEVEL = [ \"WWWWWWWWWWWWWWWW\", \"W...........................................................W\", \"W.................WWW.......................C....W\", \"W............................................WWW..W\", \"W..C......................................................W\", \"W.......................WW...........................W\", \"W.....................WW............C...............W\", \"W..........................................................W\", \"W..................WWWW........................W\", \"W.............................C...........................W\", \"W.............................C...........................W\", \"W.........................WWWW.................W\", \"W..........................................................W\", \"W........................C...............C..............W\", \"W..........................................................W\", \"WWWWWWWWWWWWWWWW\", ] ``` The formatting is messed up as the original is in Python, but I hope you get the gist!"}, {"post_id": 13496, "ts": "2026-06-22T02:53:30Z", "hours": 6.105, "text": "Devlog #5: The Writing’s on the Wall. Hey everyone! Welcome back to another devlog for my game engine made in Python: Olympus. Today, I added the hardest things to implement: text and collisions. Text: This is the one I struggled with the most. I wanted text while having the 16-bit style that I was going for. I tried displaying text using the SDL2 functions, but it didn’t give me the effect I was looking for. So, I had to make my own. And, it was tough. It didn’t help that I had no idea what I was doing, but it also didn’t help that I had many bugs. However, I was able to figure it out. I was able to do this by making each letter a tiny picture made of pixels and store all of the characters in a lookup table. Collisions: Collisions was easy when looking at it. Check of the walls or an object is colliding. if it is, do something. Otherwise, don’t let the player go into it. But boy, was it hard to implement. I spent a good 3 hours just trying to figure out how to do this. But, eventually, I figured it out. It works as the collisions check if two boxes overlap only if they overlap left-to-right AND up-and-down. If there is a gap, then they aren’t touching. You can see both the text and the collisions in effect in the little demo I made below. What’s Next? I have a feeling that we are very close to being finished with this game engine, but I’m probably getting my hopes up. Next up, adding animations and tilemaps so that you can create levels. That’s it for me. see you later!"}, {"post_id": 13275, "ts": "2026-06-21T18:58:22Z", "hours": 2.5392, "text": "Devlog #4: If Looks could Kill Hey everyone! Welcome back to another devlog! Today, I’ve finally implemented sprites into the game engine: Olympus. This way, you can make your character look like anything! How do the sprites actually work? I made my own sprite format, where each sprite is just rows of text where each character is a color and a dot means transparent. This is the coolest part as the engine will think the dots are transparent and there won’t be a big black box dragging the sprite around. And, if I wanted to flip the sprite around, I could just reverse the rows with numpy. There was a stupid bug where I kept getting a Screen object has no attribute spr error, an I couldn’t find out why. But, I realized that I wrote the method in the wrong file. But, after fixing that error, the program worked! What’s Next? Next up, we are adding text. Every game engine needs text and next up, we are adding that. See you next time!"}, {"post_id": 12855, "ts": "2026-06-21T01:40:19Z", "hours": 1.7486, "text": "Devlog #3: Let there be Movement! Hey everyone! In this devlog, I added movement to our game engine: Olympus! New functions! I created two new functions: btn() and btnp() . btn() is for when the key on your keyboard will be held down. This can be used for movement. btnp() is for when the key is only going to be pressed once. This can be used for actions such as jumping, shooting, or confirming something in the game. How does the movement work? An objects position is two variables: px and py . px is the x-axis (left and right) and py is the y-axis (up and down). If you remember from algebra, when you subtract your initial position in the x-axis, you move to the left and when you add your initial position in the x-axis, you move right. The same applys for the y-axis. If you subtract, you move down. If you add, you go up. So, we check the keys using the btn() function. So, if btn(LEFT) == True when the left arrow is held, it will subtract from px on whatever value you want and it will move the character that way. What’s next? That’s it for today’s devlog. Tomorrow, I hope to finally implement sprites into the game, so you can add custom models instead of using just circles and squares. See you later!"}, {"post_id": 12274, "ts": "2026-06-20T01:13:08Z", "hours": 2.2489, "text": "Devlog #2: Adding Elements One Shape at a Time! Hey everyone, devlog #2! This week I added the first real drawing tools to the engine: lines,rectangles, and circles, all from scratch, no graphics library. Here’s how each shape works: Lines Lines use the Bresenham algorithm, which is an algorithm which finds the best way to create a straight line between two points. At first, I tried using the built-in SDL2 Line function, but it would produce choppy lines that wouldn’t be a straight, full line (see screenshot below). But, after implementing the Bresenham algorithm, it worked perfectly! Lines can be called using the line() function. Rectangles For Rectangles, I created two new functions. rectfill() and rect() . For rectfill() , I just hand to numpy to fill a whole block at once. For rect() , I just use the line() function 4 times to create the rectangle. Circles Circles use the midpoint method. The circles gave me the most trouble. My filled circle used different math than the outline, so it grew these weird single-pixel spikes around the edge (before pic). The fix was making the fill reuse the exact same midpoint math as the outline, so they finally match (after pic). What’s Next? In order for a game to work, we need the player to control something. So, the next step is adding movement. See you in the next devlog!"}, {"post_id": 12060, "ts": "2026-06-19T17:46:51Z", "hours": 1.0283, "text": "Devlog #1: The Start of a Long Climb! Hey everyone! Starting a new project: Olympus, a little game engine like PICO-8, built from scratch in Python. What I’ve Done So Far: So far I’ve got a window opening and my 16-color palette working. The annoying part was SDL2. I’m using it raw through ctypes, so it wants C-style byte strings and pointers everywhere, and I spent way too long just getting a blank window to show up without crashing. It works now though in the screenshot below. What’s Next? Next up: drawing actual shapes onto it. I’ve already tried implementing lines in the screenshot below, but it isn’t working currently. Hopefully in the next devlog, I can get it to work!"}]...
|
Title: Olympus by @nithilgadde | Stardance
Devlog Title: Olympus by @nithilgadde | Stardance
Devlogs:
Devlog #1: The Start of a Long Climb! Hey everyone! Starting a new project: Olympus, a little game engine like PICO-8, built from scratch in Python. What I’ve Done So Far: So far I’ve got a window opening and my 16-color palette working. The annoying part was SDL2. I’m using it raw through ctypes, so it wants C-style byte strings and pointers everywhere, and I spent way too long just getting a blank window to show up without crashing. It works now though in the screenshot below. What’s Next? Next up: drawing actual shapes onto it. I’ve already tried implementing lines in the screenshot below, but it isn’t working currently. Hopefully in the next devlog, I can get it to work!
Devlog #2: Adding Elements One Shape at a Time! Hey everyone, devlog #2! This week I added the first real drawing tools to the engine: lines,rectangles, and circles, all from scratch, no graphics library. Here’s how each shape works: Lines Lines use the Bresenham algorithm, which is an algorithm which finds the best way to create a straight line between two points. At first, I tried using the built-in SDL2 Line function, but it would produce choppy lines that wouldn’t be a straight, full line (see screenshot below). But, after implementing the Bresenham algorithm, it worked perfectly! Lines can be called using the line() function. Rectangles For Rectangles, I created two new functions. rectfill() and rect() . For rectfill() , I just hand to numpy to fill a whole block at once. For rect() , I just use the line() function 4 times to create the rectangle. Circles Circles use the midpoint method. The circles gave me the most trouble. My filled circle used different math than the outline, so it grew these weird single-pixel spikes around the edge (before pic). The fix was making the fill reuse the exact same midpoint math as the outline, so they finally match (after pic). What’s Next? In order for a game to work, we need the player to control something. So, the next step is adding movement. See you in the next devlog!
Devlog #3: Let there be Movement! Hey everyone! In this devlog, I added movement to our game engine: Olympus! New functions! I created two new functions: btn() and btnp() . btn() is for when the key on your keyboard will be held down. This can be used for movement. btnp() is for when the key is only going to be pressed once. This can be used for actions such as jumping, shooting, or confirming something in the game. How does the movement work? An objects position is two variables: px and py . px is the x-axis (left and right) and py is the y-axis (up and down). If you remember from algebra, when you subtract your initial position in the x-axis, you move to the left and when you add your initial position in the x-axis, you move right. The same applys for the y-axis. If you subtract, you move down. If you add, you go up. So, we check the keys using the btn() function. So, if btn(LEFT) == True when the left arrow is held, it will subtract from px on whatever value you want and it will move the character that way. What’s next? That’s it for today’s devlog. Tomorrow, I hope to finally implement sprites into the game, so you can add custom models instead of using just circles and squares. See you later!
Devlog #4: If Looks could Kill Hey everyone! Welcome back to another devlog! Today, I’ve finally implemented sprites into the game engine: Olympus. This way, you can make your character look like anything! How do the sprites actually work? I made my own sprite format, where each sprite is just rows of text where each character is a color and a dot means transparent. This is the coolest part as the engine will think the dots are transparent and there won’t be a big black box dragging the sprite around. And, if I wanted to flip the sprite around, I could just reverse the rows with numpy. There was a stupid bug where I kept getting a Screen object has no attribute spr error, an I couldn’t find out why. But, I realized that I wrote the method in the wrong file. But, after fixing that error, the program worked! What’s Next? Next up, we are adding text. Every game engine needs text and next up, we are adding that. See you next time!
Devlog #5: The Writing’s on the Wall. Hey everyone! Welcome back to another devlog for my game engine made in Python: Olympus. Today, I added the hardest things to implement: text and collisions. Text: This is the one I struggled with the most. I wanted text while having the 16-bit style that I was going for. I tried displaying text using the SDL2 functions, but it didn’t give me the effect I was looking for. So, I had to make my own. And, it was tough. It didn’t help that I had no idea what I was doing, but it also didn’t help that I had many bugs. However, I was able to figure it out. I was able to do this by making each letter a tiny picture made of pixels and store all of the characters in a lookup table. Collisions: Collisions was easy when looking at it. Check of the walls or an object is colliding. if it is, do something. Otherwise, don’t let the player go into it. But boy, was it hard to implement. I spent a good 3 hours just trying to figure out how to do this. But, eventually, I figured it out. It works as the collisions check if two boxes overlap only if they overlap left-to-right AND up-and-down. If there is a gap, then they aren’t touching. You can see both the text and the collisions in effect in the little demo I made below. What’s Next? I have a feeling that we are very close to being finished with this game engine, but I’m probably getting my hopes up. Next up, adding animations and tilemaps so that you can create levels. That’s it for me. see you later!
Devlog #6: Sights on the Peak! Hey everyone! Welcome back to another devlog. Today, we are one giant step forward in finishing the game engine: tilemaps and animations. Tilemaps: The whole level is a grid of letters. I draw my maps as plain text: W is a wall, C is a coin, ’. ‘is empty space (These are just the examples that I’m using for the demos). So a level is literally a block of text I type out, like ASCII art of the room. The engine turns each letter into a tile. It walks the grid square by square, and for each letter it looks up a matching 8×8 picture and stamps it at that spot. A ‘W’ becomes a wall tile, a ’. ‘draw nothing. This is all easy on paper but when actually trying to create it, it was hell. The amount of bugs that would come wouldn’t stop and I actually was very close to giving up for the day. But, I persisted, and after over 20+ Google Tabs, I was able to work it out. Animations: Even though I thought this would be the hardest thing to implement, this one was the easiest feature to implement imo. It’s a flipbook of sprites. A walk animation is just a list of frames, the same little pixel sprites I already made. Flip through them fast and the legs look like they’re moving. A timer controls the speed. If I swapped frames every single frame of the game (60 times a second) it’d be a blur, so I count ticks and only switch to the next frame every few ticks. That one number tunes how fast the walk looks. When it reaches the last frame it loops back to the first, so it cycles forever. It only animates when it should. While you hold an arrow, I advance the frames so the hero walks. When you let go, I reset to the standing pose so he doesn’t moonwalk in place. What’s Next? This engine is veryyy close to being finished! I just need to add sounds and this engine should be complete! After I finish the engine, I will ship the engine. See you next time! Also, if you want to know what the tilemap in the demo looks like in code, here it is: LEVEL = [ "WWWWWWWWWWWWWWWW", "W...........................................................W", "W.................WWW.......................C....W", "W............................................WWW..W", "W..C......................................................W", "W.......................WW...........................W", "W.....................WW............C...............W", "W..........................................................W", "W..................WWWW........................W", "W.............................C...........................W", "W.............................C...........................W", "W.........................WWWW.................W", "W..........................................................W", "W........................C...............C..............W", "W..........................................................W", "WWWWWWWWWWWWWWWW", ] ``` The formatting is messed up as the original is in Python, but I hope you get the gist!
Devlog #7: We’ve Reached the Peak! Hello everyone! Welcome back to another devlog. I’m happy to announce that my game engine, Olympus, is finally finished! Here’s what I added. Sound This part took about 1 - 2 hours to implement. Because the game engine is a 16-bit game engine, this means that we can only play sounds that are 16-bit. You can create your own sounds using the game engine, but you can also upload your own sounds. The program works by converting your sounds into a 16-bit audio that the game engine can render. Sprite Editor This part took foreverrrrr. Basically, instead of manually typing out sprites for your game, I wanted a editor where you could draw the sprites and then export them. This took forever because I didn’t know how to export your sprites into actual array code that would turn into a sprite. However, I was able to just reuse my code that render sprites from a list into the sprite editor and add functionality that would turn the blank spaces in the canvas into a ‘.’ (blank space) and all the squares that are drawn into an ‘x’ (the actual sprite pixels). I was also able to add saving and onion skinning. What’s Next? I’ll be turning Olympus into a Python library so everyone can install it. Then, I will ship the project. See you next time!
Devlog #8: The Ship has Sailed? Hey everyone! Stardance says that I have a certain amount of time logged and that if I ship and don’t make a devlog for that time, I’m gonna lose it. So, I’ll make a quick devlog: README.md: I created a nice README.md for the GitHub Repo. I also added a wiki, so that it will be very easy for anyone to learn Olympus. Turned into a Python Package This is my first time uploading a Python Package to PyPi, the official provider for Python packages, so this was a new experience. However, there are lots of documentation online that made it very easy. So, Olympus is now an official Python library! You can check it out when i ship the project. Welp, that’s it. I hope to see you next time!
Devlog #9: Starting to Fly Again Hello everyone! I’m finally making another devlog for Olympus. I took a break because I went on vacation and I didn’t feel motivated to start coding again. But now, I’m ready to show you the new things I’ve created. When I was looking at the code, I realized that I never added functionality to export a game. If you wanted to share your game with someone, you would have to send them your entire code and then make them install Python, Olympus, and it’s a huge deal just to play your game. So, I’ve implemented a game exporter! How it works So I used PyInstaller to make this work. Basically, when you export your game, PyInstalled will “freeze” your program. This means that it will trace every import your game makes, gathers all of your assets (your code, the Python interpreter, olympus, numpy, Pillow, PySDL2) and then packs it into one self-contained bundle. And that’s your game! What’s Next? Honesty, I have no idea. I’m planning on adding mouse implementation but it depends on what I’m feeling like doing. See you later! Below is a simple snake game that I created and it was created and exported by Olympus Engine.
Ships:
Hey everyone! I made Olympus, a small game engine for Python that lets you build tiny pixel games on a 128x128 screen with 16 colors, kind of like PICO-8. The twist is I built it from scratch. No pygame, no pyxel. The screen is just a numpy grid of color numbers, and I hand-wrote all the drawing myself: the lines, the circles, the sprite blitting, a little pixel font, even the sound. SDL2 only opens the window and reads the keyboard, it does none of the actual drawing. The hardest parts were the ones you don’t see. My filled circles came out with weird spikes poking off the sides until I rewrote them with a proper midpoint algorithm. Then turning it into a real installable library nearly broke me: wrong Python versions, a locked-down pip, and an upload token that kept getting rejected. I learned a lot more about packaging than I planned to. What I’m proudest of is that it’s actually real. You can install the library by going to the ‘Try project’ or ‘See source code’, both have proper instructions on how to install the library. Then, you can start building games! There is proper documentation in the ‘Wiki’ tab in the Github Repo (click See source code). Happy making! (The Demo is a copy of Snake using the Olympus Engine)...
|
1793252873.6442547
|
1793339273.6442547
|
|
3519
|
Name That Nation by @brlin888 | Stardance
|
brlin888
|
2
|
26.85
|
262
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-17T21:15:15Z", "hours": 1.0, "multiplier": 7.33, "payout": 6, "blessing": "neutral", "text": "Hi everyone or whoever is reviewing this ship! This is my #2 ship for NameThatNation. To recap, NameThatNation is a game that allows the user to learn more about different countries through answering questions. Overall, for these couple of hours I continued to work on this project. Based on the comments from the people that reviewed on my last ship, I mainly worked on organizing the images in my panels better and adjusting the panels to be more visually appealing. If you want a better experience while playing the game, make sure to check out the settings panel where you can customize your gaming experience. For this ship, I recreated the images in my panels so that they fit the game better, so I am proud so say there was NO AI used in creating any of the images! Just a note that if you want to check out this game, make sure to go to releases or click on the “try project” button which will direct you towards the github releases. Ensure that you have download Java JDK because this entire project is coded entirely in JAVA which is an extremely technical language, so organization wise and how this game works is limited to some extent (harder to organize because need to manually run and check program each time to ensure object is placed where you want it to be and components are have a limited size by Java). Hope you have fun reviewing my ship!", "repo": "https://github.com/brlin888-create/Name-That-Nation", "demo": "https://github.com/brlin888-create/Name-That-Nation/releases/tag/v1.0.0"}, {"ship_num": 2, "ts": "2026-09-27T23:51:25Z", "hours": 18.0, "multiplier": 14.44, "payout": 256, "blessing": "neutral", "text": "Hi all, this is my ship for Name That Nation! Name That Nation is a game I thought of that tests and trains a person’s ability of naming countries based on the shape of the country (all 198 countries). The game is made completely using Java, all coded line by line, with some images being AI generated. The most challenging part of this project was actually making sure the project worked, because Java is a really technical language. One missing semicolon, and you have to go back and manually fix it. Additionally, since there are a lot of JButtons and components I had to add, the formatting depended on individually testing and organizing in order for the project to look visually aesthetic. Lastly, one of the biggest challenges was reading/writing from multiple files, since there was hundreds of country image files I had to organize, as well as ensuring that each country was actually accounted for. Overall, the testing through each individual panel allowed me to slowly build up this project as a whole. One interesting thing I added was incorporating powerups and achievements, that would incentive players to continuously play to achieve a higher score. Players can customize their gaming experience on background color, font size, difficulty, etc. in the settings panel. There are hints present, a timer present, and three lives, but by utilizing the powerups, this will boost the scores an individual can set. After gameplay, players can see what they scored wrong on, save their score to the txt file which includes (and sorts) all names, as well as see what achievements they have accomplished. This pretty much sums up my project as a whole, over 20+ hours (from image downloads to testing which was not accounted for in the Hackatime hours) as well as over 2400 lines of code. Hope whoever is reading this enjoys this project!!!", "repo": "https://github.com/brlin888-create/Name-That-Nation", "demo": "https://github.com/brlin888-create/Name-That-Nation/releases/tag/v1.0.0"}]...
|
[{"post_id": 82836, "ts": "202 [{"post_id": 82836, "ts": "2026-10-25T23:53:38Z", "hours": 6.9822, "text": "Hi all!!! Last week of stardance so I’m really grinding this project and trying to balance this with school work!!! Basically, I made the game look even better and improved functionality because I found some issues with the powerups. Basically, sometimes, they were activated even though the requirements aren’t met such as getting x-amount of questions right in a row. Additionally, I continued with improving the looks of the game such as making the powerups look pixelated too! I will probably do my ship in a day or two so it was fun doing this project (might do a 4th ship if I have time!)"}, {"post_id": 81153, "ts": "2026-10-20T03:59:17Z", "hours": 0.8692, "text": "Hi everyone, i am continuing to build on my project for NameThatNation! Mainly this time focusing on organization for website as well as implementing more features and polishing my readme! also if any of you guys know when a manuel review submission for a ship will get approved, please let me know!"}, {"post_id": 78454, "ts": "2026-10-10T20:37:00Z", "hours": 0.2667, "text": "Hi all, My project got rejected again… for using AI assets. After changing the images on canva and ensuring the game still works, hopefully this time my ship will go through. If you guys want to see the new changes made to my project, feel free to check out the github for Name That Nation. Hopefully @Amu or other shipwrights will consider these new changes made as it took me over 2 hrs+ to find images and individually change the assets that were AI generated. So now I am happy to say my project does not use a single AI generated image!"}, {"post_id": 77989, "ts": "2026-10-09T03:57:33Z", "hours": 0.3039, "text": "Hi all, I have made a few changes for my project in order to fulfill the shipping request so hopefully whoever reviews my ship takes this into consideration @Jack_ . Just some further instructions on how to run my code: since I am using java in my project especially libraries that call for java JFrame and JPanel, java must be INSTALLED on the device for whoever is playing the game. In my github releases, I have updated with more clear instructions on how to download java JDK based on your device, then compiling my code. This is the only way, as converting into an executable still won’t run the code as whoever has the code doesn’t have the java libraries specific for my game pre-loaded. Thank you for reading this and hopefully my ship goes through successfully (I haven’t gotten an update in like 5 days…)!"}, {"post_id": 75771, "ts": "2026-10-01T01:34:52Z", "hours": 0.255, "text": "Hi all, I thought my project would be finished but apparently there were some issues with shipping the project. To whoever is reading this or people that judge ships, I have edited my github to have a releases zip file which can be downloaded to test out my game. You may still see the youtube video still attached for my game demo, but you can now try out the game yourself in github by retrieving the required assets. Additionally, I added more clear instructions and descriptions on NameThatNation and its properties. Hopefully you guys go check it out and take into consideration when evaluating my ship!"}, {"post_id": 74676, "ts": "2026-09-27T23:41:08Z", "hours": 0.3425, "text": "Hi all, This will be the last devlog for Name That Nation. I am so excited for you guys to see what I have been able to accomplish throughout the summer. Since NameThatNation is coded in Java completely, it CANNOT be converted into a website. I have attached a video (took 2 hours to edit) to demonstrate how the game can be played, as well as attached the source code in github. The reason that it cannot be made into a website is that it reads and writes through specific files that is not possible on a website. Additionally, Java JPanel and JFrame is not compatible with websites, meaning that I would have to code the entire game again in another programming language in order for the game to function. Today I placed my finishing touches such as incorporating the achievements panel and added final touches/testings for the entire game. This game took over 20+ hours (not shown through Hackatime) because there was more time spent on individually downloading all 198 country images and organizing files to include all countries but maintain functionality. I hope this project finds you well and thanks for those that have been following along the journey!!! Hope you guys like my project!!!"}, {"post_id": 74328, "ts": "2026-09-27T05:36:03Z", "hours": 2.78, "text": "NameThatNation!!! Hi all, for those that have been following along, there has been significant progress throughout the game. I have finally been able to get the gamepanel to work. I added powerups and different features such as lives count, hints, and changing colors on JButtons which utilizes a button listener to detect if the button clicked is correct. Although this may look simple, this project has taken me over several hours to what you see today. Java is an easy language to learn, but to implement it to this level is extremely hard, as image reading, file reading, JButtons, JCheckboxes, etc. are extremely technical and one wrong step will cause the entire program to not function. Tomorrow, I will finish the last panels which are the Achievements panel, and leaderboard panels. After that I will, post a demo of the project (as java is not compatible with online user websites and I am using read/write from files), and do my final commit before I ship my project!!! Thank you for those that have been following along!"}, {"post_id": 68387, "ts": "2026-09-15T01:24:48Z", "hours": 0.5231, "text": "What is up everyone! If you haven’t checked my last devlog, my main issue is still converting my code to a website or mainly a way for you guys to play the game without downloading the source code. I add some improvements to the game, fixing a JButton error because all of the buttons kept on lighting up when I didn’t click any of them. I also added more countries to the country info panel, so I’m pretty sure I have all 198 countries for now in the game. Next up is still fixing the website issue and adding to the game! Stay tuned for more!!!!!!!!!!!!!!"}, {"post_id": 66733, "ts": "2026-09-12T16:56:45Z", "hours": 6.6714, "text": "I know I haven’t posted a dev log for a long time… but here is it after 2 months and what I have been working on!!! After completely the country info and instructions panel, I started to work on the game panel which was definitely one of the hardest panels to complete. This is because working in Java JFrame/JPanel requires a lot of technical code to allow buttons to be clicked and change color when an answer choice is correct. Other than this, I had to download EVERY SINGLE COUNTRY’s image and add it to a folder which took over 2 hours to do (not included in the 6 hours) because I couldn’t find a website that had all of them. Other than that, the project is going extremely smoothly and I am currently working on adding different powerups that can aid the person playing the game. My only concern is converting this JFrame/JPanel game onto a demo website because the game is currently reading files from on my computer such as the images and files for instructions etc. If you guys have any suggestions, please feel free to leave it in the chat!"}, {"post_id": 25118, "ts": "2026-07-09T03:48:31Z", "hours": 0.6564, "text": "Continued to work on the project! Short Dev Log Today! finished settings and still working on instructions panel started working on game panel game hard to implement need to locate specific coordinates follow for more!"}, {"post_id": 23809, "ts": "2026-07-06T23:37:24Z", "hours": 2.2889, "text": "Hey everyone! It’s been a massive day of coding on NameThatNation. If you’ve been following along, you know the goal: a game where you look at maps/images and guess the country before the timer runs out. Today, I wired up the core skeleton for the Settings Panel, Country Info Panel, and initialized the beast that is the Game Panel. Here is exactly what went down today: The Settings Panel: I wanted players to be able to customize their UI, but things got a little chaotic in the grid layouts. The RGB Sliders: Added JSlider controls for Red, Green, and Blue. Players can dynamically alter the theme color (info.setColor). The Continents Customization: Implemented checkboxes for all 7 continents. But I had to add a hard rule in the ButtonListener: You must choose at least 3 continents before you can leave. Why? Because guessing between just the USA and Canada is too easy everyone is going to get it right… Image Size Scrollbar: Added a JScrollBar allowing players to scale the image sizes. Scroll down or up. Difficulty JMenu: A nice dropdown menu (Font.BOLD, 30) to swap between Easy, Medium, and Hard. Current Visual Bug: The continent checkboxes currently text-render in a terrifying new Color(183, 9, 9) (deep blood red) alongside a red warning label. The Country Info Panel: Players need a place to study up, so I built the CountryInfoPanel. It utilizes a try-catch block inside a custom fileIn() method to read a massive text file: countriesContinentHard.txt. It dumps all that text into a non-editable, word-wrapping JTextArea wrapped in a JScrollPane so you can scroll through hundreds of countries. The Aesthetic: On the left side, it renders a nice big sprite of planet Earth (Earth.png), while the data scrolls smoothly on the right. The Game Panel (The Brain of the Operation) Finally, I started prototyping the actual gameplay panel. It’s not fully rendered yet, but the logic infrastructure is going to be a lot! I will continue to work on this panel this week and make sure to follow along the game making!!!"}, {"post_id": 21667, "ts": "2026-07-03T19:03:46Z", "hours": 1.4492, "text": "Dev Log: Name That Nation Implementation of Core UI Panels (Start, Instructions, & Settings) Overview: Successfully built and structured the primary navigational and configuration panels for NameThatNation. Implemented Java Swing components across three core areas: the StartPanel (handling user onboarding and core navigation), the InstructionsPanel (displaying gameplay mechanics in a scrollable format), and the SettingsPanel (giving users control over gameplay parameters like difficulty, map sizes, background colors, and continent selection). Key Implementations: StartPanelUser Onboarding: Added a JTextField for name entry along with strict data validation. If the field is empty or left as default, a warning message (noName JLabel) triggers in red text, blocking gameplay progression. Animated Background: Integrated a javax.swing.Timer alongside a modified paintComponent method to alternate every 0.5 seconds between three unique world images (World1.png to World3.png), creating a smooth looping animation of a rotating Earth.CardLayout Navigation: Configured centralized action listeners (buttons and exitListener) to pass state data to the parent container, cleanly swapping panels or closing the application altogether. InstructionsPanelLayout & Scrolling: Used a BorderLayout to organize an informative overview of rules, score tallies, powerups, and level details. Scroll Mechanics: Embedded a heavy block of instruction text into a non-editable JTextArea wrapped in a JScrollPane, forcing explicit vertical navigation while keeping horizontal scrolling locked. Visual Assets: Overlaid a game preview snapshot (Game.png) on top of a custom backdrop image to give players context before starting. SettingsPanelRGB Customization: Implemented three distinct JSlider inputs (Red, Green, Blue) bound to a ColorHandler listener. This updates the player’s canvas background dynamically via the shared Information state object. Game Parameters: Combined a JScrollBar to control image scale thresholds, a JMenuBar with JMenuItem nodes for changing the match difficulty (Easy, Medium, Hard), and an array of JCheckBox fields representing all seven continents. Challenges: Absolute Layout Positioning: Managing explicit component bounds (setBounds) in the null-layout StartPanel requires highly specific coordinates that can scale poorly if window sizes are dramatically altered later. Validation Multi-threading: Syncing state requirements—such as throwing warnings when fewer than 3 continents are selected or managing name checks—requires seamless communication between panel instances and the core Information holder class. Next Steps: Enforce Continent Validation: Active counters ensuring the validation warning dynamically locks or unlocks the “Back” button if the 3-continent minimum isn’t met. Integrate Game Logic: Establish properties inside the GamePanel constructor that ingest the finalized values set by the sliders, checkboxes, and scrollbars from the configuration stage."}, {"post_id": 20985, "ts": "2026-07-02T18:41:17Z", "hours": 3.0508, "text": "Working on a game to allow people to get better at identifying countries based on the shape (will have powerups, customized settings, etc.). This project will be done in java through vscode! Feel free to give any feedback or advice on what I should add to the game. I currently only have the JPanels working for the settings panel as well as the start panel with buttons. Stay tuned for more updates!!! Issues encountered and fixed: panel switching setting JButtons in settings panel layouts -> placing components in the right location"}]...
|
Title: Name That Nation by @brlin888 | Stardance
Title: Name That Nation by @brlin888 | Stardance
Devlogs:
Working on a game to allow people to get better at identifying countries based on the shape (will have powerups, customized settings, etc.). This project will be done in java through vscode! Feel free to give any feedback or advice on what I should add to the game. I currently only have the JPanels working for the settings panel as well as the start panel with buttons. Stay tuned for more updates!!! Issues encountered and fixed: panel switching setting JButtons in settings panel layouts -> placing components in the right location
Dev Log: Name That Nation Implementation of Core UI Panels (Start, Instructions, & Settings) Overview: Successfully built and structured the primary navigational and configuration panels for NameThatNation. Implemented Java Swing components across three core areas: the StartPanel (handling user onboarding and core navigation), the InstructionsPanel (displaying gameplay mechanics in a scrollable format), and the SettingsPanel (giving users control over gameplay parameters like difficulty, map sizes, background colors, and continent selection). Key Implementations: StartPanelUser Onboarding: Added a JTextField for name entry along with strict data validation. If the field is empty or left as default, a warning message (noName JLabel) triggers in red text, blocking gameplay progression. Animated Background: Integrated a javax.swing.Timer alongside a modified paintComponent method to alternate every 0.5 seconds between three unique world images (World1.png to World3.png), creating a smooth looping animation of a rotating Earth.CardLayout Navigation: Configured centralized action listeners (buttons and exitListener) to pass state data to the parent container, cleanly swapping panels or closing the application altogether. InstructionsPanelLayout & Scrolling: Used a BorderLayout to organize an informative overview of rules, score tallies, powerups, and level details. Scroll Mechanics: Embedded a heavy block of instruction text into a non-editable JTextArea wrapped in a JScrollPane, forcing explicit vertical navigation while keeping horizontal scrolling locked. Visual Assets: Overlaid a game preview snapshot (Game.png) on top of a custom backdrop image to give players context before starting. SettingsPanelRGB Customization: Implemented three distinct JSlider inputs (Red, Green, Blue) bound to a ColorHandler listener. This updates the player’s canvas background dynamically via the shared Information state object. Game Parameters: Combined a JScrollBar to control image scale thresholds, a JMenuBar with JMenuItem nodes for changing the match difficulty (Easy, Medium, Hard), and an array of JCheckBox fields representing all seven continents. Challenges: Absolute Layout Positioning: Managing explicit component bounds (setBounds) in the null-layout StartPanel requires highly specific coordinates that can scale poorly if window sizes are dramatically altered later. Validation Multi-threading: Syncing state requirements—such as throwing warnings when fewer than 3 continents are selected or managing name checks—requires seamless communication between panel instances and the core Information holder class. Next Steps: Enforce Continent Validation: Active counters ensuring the validation warning dynamically locks or unlocks the “Back” button if the 3-continent minimum isn’t met. Integrate Game Logic: Establish properties inside the GamePanel constructor that ingest the finalized values set by the sliders, checkboxes, and scrollbars from the configuration stage.
Hey everyone! It’s been a massive day of coding on NameThatNation. If you’ve been following along, you know the goal: a game where you look at maps/images and guess the country before the timer runs out. Today, I wired up the core skeleton for the Settings Panel, Country Info Panel, and initialized the beast that is the Game Panel. Here is exactly what went down today: The Settings Panel: I wanted players to be able to customize their UI, but things got a little chaotic in the grid layouts. The RGB Sliders: Added JSlider controls for Red, Green, and Blue. Players can dynamically alter the theme color (info.setColor). The Continents Customization: Implemented checkboxes for all 7 continents. But I had to add a hard rule in the ButtonListener: You must choose at least 3 continents before you can leave. Why? Because guessing between just the USA and Canada is too easy everyone is going to get it right… Image Size Scrollbar: Added a JScrollBar allowing players to scale the image sizes. Scroll down or up. Difficulty JMenu: A nice dropdown menu (Font.BOLD, 30) to swap between Easy, Medium, and Hard. Current Visual Bug: The continent checkboxes currently text-render in a terrifying new Color(183, 9, 9) (deep blood red) alongside a red warning label. The Country Info Panel: Players need a place to study up, so I built the CountryInfoPanel. It utilizes a try-catch block inside a custom fileIn() method to read a massive text file: countriesContinentHard.txt. It dumps all that text into a non-editable, word-wrapping JTextArea wrapped in a JScrollPane so you can scroll through hundreds of countries. The Aesthetic: On the left side, it renders a nice big sprite of planet Earth (Earth.png), while the data scrolls smoothly on the right. The Game Panel (The Brain of the Operation) Finally, I started prototyping the actual gameplay panel. It’s not fully rendered yet, but the logic infrastructure is going to be a lot! I will continue to work on this panel this week and make sure to follow along the game making!!!
Continued to work on the project! Short Dev Log Today! finished settings and still working on instructions panel started working on game panel game hard to implement need to locate specific coordinates follow for more!
I know I haven’t posted a dev log for a long time… but here is it after 2 months and what I have been working on!!! After completely the country info and instructions panel, I started to work on the game panel which was definitely one of the hardest panels to complete. This is because working in Java JFrame/JPanel requires a lot of technical code to allow buttons to be clicked and change color when an answer choice is correct. Other than this, I had to download EVERY SINGLE COUNTRY’s image and add it to a folder which took over 2 hours to do (not included in the 6 hours) because I couldn’t find a website that had all of them. Other than that, the project is going extremely smoothly and I am currently working on adding different powerups that can aid the person playing the game. My only concern is converting this JFrame/JPanel game onto a demo website because the game is currently reading files from on my computer such as the images and files for instructions etc. If you guys have any suggestions, please feel free to leave it in the chat!
What is up everyone! If you haven’t checked my last devlog, my main issue is still converting my code to a website or mainly a way for you guys to play the game without downloading the source code. I add some improvements to the game, fixing a JButton error because all of the buttons kept on lighting up when I didn’t click any of them. I also added more countries to the country info panel, so I’m pretty sure I have all 198 countries for now in the game. Next up is still fixing the website issue and adding to the game! Stay tuned for more!!!!!!!!!!!!!!
NameThatNation!!! Hi all, for those that have been following along, there has been significant progress throughout the game. I have finally been able to get the gamepanel to work. I added powerups and different features such as lives count, hints, and changing colors on JButtons which utilizes a button listener to detect if the button clicked is correct. Although this may look simple, this project has taken me over several hours to what you see today. Java is an easy language to learn, but to implement it to this level is extremely hard, as image reading, file reading, JButtons, JCheckboxes, etc. are extremely technical and one wrong step will cause the entire program to not function. Tomorrow, I will finish the last panels which are the Achievements panel, and leaderboard panels. After that I will, post a demo of the project (as java is not compatible with online user websites and I am using read/write from files), and do my final commit before I ship my project!!! Thank you for those that have been following along!
Hi all, This will be the last devlog for Name That Nation. I am so excited for you guys to see what I have been able to accomplish throughout the summer. Since NameThatNation is coded in Java completely, it CANNOT be converted into a website. I have attached a video (took 2 hours to edit) to demonstrate how the game can be played, as well as attached the source code in github. The reason that it cannot be made into a website is that it reads and writes through specific files that is not possible on a website. Additionally, Java JPanel and JFrame is not compatible with websites, meaning that I would have to code the entire game again in another programming language in order for the game to function. Today I placed my finishing touches such as incorporating the achievements panel and added final touches/testings for the entire game. This game took over 20+ hours (not shown through Hackatime) because there was more time spent on individually downloading all 198 country images and organizing files to include all countries but maintain functionality. I hope this project finds you well and thanks for those that have been following along the journey!!! Hope you guys like my project!!!
Hi all, I thought my project would be finished but apparently there were some issues with shipping the project. To whoever is reading this or people that judge ships, I have edited my github to have a releases zip file which can be downloaded to test out my game. You may still see the youtube video still attached for my game demo, but you can now try out the game yourself in github by retrieving the required assets. Additionally, I added more clear instructions and descriptions on NameThatNation and its properties. Hopefully you guys go check it out and take into consideration when evaluating my ship!
Hi all, I have made a few changes for my project in order to fulfill the shipping request so hopefully whoever reviews my ship takes this into consideration @Jack_ . Just some further instructions on how to run my code: since I am using java in my project especially libraries that call for java JFrame and JPanel, java must be INSTALLED on the device for whoever is playing the game. In my github releases, I have updated with more clear instructions on how to download java JDK based on your device, then compiling my code. This is the only way, as converting into an executable still won’t run the code as whoever has the code doesn’t have the java libraries specific for my game pre-loaded. Thank you for reading this and hopefully my ship goes through successfully (I haven’t gotten an update in like 5 days…)!
Hi all, My project got rejected again… for using AI assets. After changing the images on canva and ensuring the game still works, hopefully this time my ship will go through. If you guys want to see the new changes made to my project, feel free to check out the github for Name That Nation. Hopefully @Amu or other shipwrights will consider these new changes made as it took me over 2 hrs+ to find images and individually change the assets that were AI generated. So now I am happy to say my project does not use a single AI generated image!
Hi everyone, i am continuing to build on my project for NameThatNation! Mainly this time focusing on organization for website as well as implementing more features and polishing my readme! also if any of you guys know when a manuel review submission for a ship will get approved, please let me know!
Hi all!!! Last week of stardance so I’m really grinding this project and trying to balance this with school work!!! Basically, I made the game look even better and improved functionality because I found some issues with the powerups. Basically, sometimes, they were activated even though the requirements aren’t met such as getting x-amount of questions right in a row. Additionally, I continued with improving the looks of the game such as making the powerups look pixelated too! I will probably do my ship in a day or two so it was fun doing this project (might do a 4th ship if I have time!)
Ships:
Hi all, this is my ship for Name That Nation! Name That Nation is a game I thought of that tests and trains a person’s ability of naming countries based on the shape of the country (all 198 countries). The game is made completely using Java, all coded line by line, with some images being AI generated. The most challenging part of this project was actually making sure the project worked, because Java is a really technical language. One missing semicolon, and you have to go back and manually fix it. Additionally, since there are a lot of JButtons and components I had to add, the formatting depended on individually testing and organizing in order for the project to look visually aesthetic. Lastly, one of the biggest challenges was reading/writing from multiple files, since there was hundreds of country image files I had to organize, as well as ensuring that each country was actually accounted for. Overall, the testing through each individual panel allowed me to slowly build up this project as a whole. One interesting thing I added was incorporating powerups and achievements, that would incentive players to continuously play to achieve a higher score. Players can customize their gaming experience on background color, font size, difficulty, etc. in the settings panel. There are hints present, a timer present, and three lives, but by utilizing the powerups, this will boost the scores an individual can set. After gameplay, players can see what they scored wrong on, save their score to the txt file which includes (and sorts) all names, as well as see what achievements they have accomplished. This pretty much sums up my project as a whole, over 20+ hours (from image downloads to testing which was not accounted for in the Hackatime hours) as well as over 2400 lines of code. Hope whoever is reading this enjoys this project!!!
Hi everyone or whoever is reviewing this ship! This is my #2 ship for NameThatNation. To recap, NameThatNation is a game that allows the user to learn more about different countries through answering questions. Overall, for these couple of hours I continued to work on this project. Based on the comments from the people that reviewed on my last ship, I mainly worked on organizing the images in my panels better and adjusting the panels to be more visually appealing. If you want a better experience while playing the game, make sure to check out the settings panel where you can customize your gaming experience. For this ship, I recreated the images in my panels so that they fit the game better, so I am proud so say there was NO AI used in creating any of the images! Just a note that if you want to check out this game, make sure to go to releases or click on the “try project” button which will direct you towards the github releases. Ensure that you have download Java JDK because this entire project is coded entirely in JAVA which is an extremely technical language, so organization wise and how this game works is limited to some extent (harder to organize because need to manually run and check program each time to ensure object is placed where you want it to be and components are have a limited size by Java). Hope you have fun reviewing my ship!...
|
1793148561.1928487
|
1793234961.1928487
|
|
38506
|
Meow or Never by @asherm | Stardance
|
asherm
|
0
|
26.84
|
0
|
[]
|
[{"post_id": 35618, "ts": "202 [{"post_id": 35618, "ts": "2026-07-27T05:00:28Z", "hours": 16.6603, "text": "GMTK GAME JAM! Devlog 2! – A WHOLE lot of changes… Update: I have since submitted to the jam! Check it out here: https://itch.io/jam/gmtk-jam-2026/rate/4822820 I m making a game where a cat delivers a goodbye letter to his longtime cat friend who is moving away with his human. I decided to make the cat drive a makeshift cardboard car that he made at home and that breaks over time as the stakes get higher and the time runs out. What I did since last devlog… Created the entire terrain world to drive on (including a huge cliff near the center!) AND THEN RECREATED THE WHOLE THING AFTER IT GOT DELETED AND CORRUPTED BY GITHUB SOMEHOW Added Fog and the sky Got drifting working with tire trails Added log cabins (you spawn at one and try to make it to the other where you cat friend is!) Modeled the cats, location icon and navigation arrow Implemented navigation arrow that directs you to the destination Tweaked Driving Created the main menu, win and lose screens Make the name title thing (logo) Added music and a buncha other things"}, {"post_id": 34324, "ts": "2026-07-24T22:37:34Z", "hours": 10.1792, "text": "GMTK GAME JAM! Devlog 1! I have not touched game dev for like a year, but for some reason I decided to sign up for the GMTK Game Jam! I m making a game where a cat delivers a goodbye letter to his longtime cat friend who is moving away with his human. I decided to make the cat drive a makeshift cardboard car that he made at home and that breaks over time as the stakes get higher and the time runs out. So far, I have gotten a suspension car working to drive, steer and drift! I also added a arcade timer to the UI! Most of my time was spent bugfixing the suspension car as I have never done any 3d physics stuff before. I also modeled a makeshift cardboard car for the cat and some tires. Finally I added a cool pixelated effect that makes the game super arcadey! Check out some drifting!"}]...
|
Title: Meow or Never by @asherm | Stardance
Devlo Title: Meow or Never by @asherm | Stardance
Devlogs:
GMTK GAME JAM! Devlog 1! I have not touched game dev for like a year, but for some reason I decided to sign up for the GMTK Game Jam! I m making a game where a cat delivers a goodbye letter to his longtime cat friend who is moving away with his human. I decided to make the cat drive a makeshift cardboard car that he made at home and that breaks over time as the stakes get higher and the time runs out. So far, I have gotten a suspension car working to drive, steer and drift! I also added a arcade timer to the UI! Most of my time was spent bugfixing the suspension car as I have never done any 3d physics stuff before. I also modeled a makeshift cardboard car for the cat and some tires. Finally I added a cool pixelated effect that makes the game super arcadey! Check out some drifting!
GMTK GAME JAM! Devlog 2! – A WHOLE lot of changes… Update: I have since submitted to the jam! Check it out here: https://itch.io/jam/gmtk-jam-2026/rate/4822820 I m making a game where a cat delivers a goodbye letter to his longtime cat friend who is moving away with his human. I decided to make the cat drive a makeshift cardboard car that he made at home and that breaks over time as the stakes get higher and the time runs out. What I did since last devlog… Created the entire terrain world to drive on (including a huge cliff near the center!) AND THEN RECREATED THE WHOLE THING AFTER IT GOT DELETED AND CORRUPTED BY GITHUB SOMEHOW Added Fog and the sky Got drifting working with tire trails Added log cabins (you spawn at one and try to make it to the other where you cat friend is!) Modeled the cats, location icon and navigation arrow Implemented navigation arrow that directs you to the destination Tweaked Driving Created the main menu, win and lose screens Make the name title thing (logo) Added music and a buncha other things...
|
1792633746.599847
|
1793238546.599847
|
|
26461
|
ML for Meteorites by @tanish_parida | Stardance
|
tanish_parida
|
0
|
26.82
|
0
|
[]
|
[{"post_id": 56420, "ts": "202 [{"post_id": 56420, "ts": "2026-08-28T05:53:34Z", "hours": 26.1061, "text": "worked a lot on improving the models and making sure that there wasn’t any leakage, also started making a poster for a presentation"}, {"post_id": 17696, "ts": "2026-06-28T16:40:16Z", "hours": 0.7156, "text": "editing some of the code and running the models"}]...
|
Title: ML for Meteorites by @tanish_parida | Stard Title: ML for Meteorites by @tanish_parida | Stardance
Devlogs:
editing some of the code and running the models
worked a lot on improving the models and making sure that there wasn’t any leakage, also started making a poster for a presentation...
|
1792694955.7291873
|
1793299755.7291873
|
|
42081
|
Vulcan Custom CNC by @GurshanB | Stardance
|
GurshanB
|
0
|
26.79
|
0
|
[]
|
[{"post_id": 64292, "ts": "202 [{"post_id": 64292, "ts": "2026-09-08T16:05:33Z", "hours": 10.1511, "text": "Devlog 4: Negative Progress??? Overview It’s been a while since my last devlog, and quite a few things have changed (mostly taking apart or fixing things rather than anything new ). I took apart the old frame and components, going through the arduous process of cataloging all the parts and screws. There were a bunch of small interference fixes across CAD, such as ball screw misalignment and incorrect COTS parts dimensions I also went through and fixed. I had to make a few test jigs to verify if the corner brackets fit correctly before realizing the dimensions for the little triangle parts that stick out were way off . I also came across some designs for TPU bellows/dust covers and have been playing around with them, but can’t get my print settings right just yet. What’s New Old frame taken apart Fixed ball screw alignment on x and y axis Added additional screws to Gantry structure Adjusted cutouts for Gantry corner brackets CADed table (same as old design, but done on Onshape Continued reformatting and organizing documentation Test prints for 3DP Bellows I’ve been procrastinating working on electronics and dust collection for a while, and I’ll be getting to them soon–never trust my estimates–after I wrap up documentation and 3DP testing. What’s Next Completing research documentation Bellows tests Maybe electronics (likely 2 devlogs from now)"}, {"post_id": 40992, "ts": "2026-08-04T21:23:34Z", "hours": 4.8236, "text": "Devlog #3 The Frame is Done (Mostly) Overview I’ve just about got the frame all CADed and checked for interferences. Just need to add dust collection and limit switches! What’s New Finished the gantry, spindle mount and spoilboard CAD Added fasteners to CAD Updated most lengths to reflect the parts I have Everything gone pretty well, but as I was messing around with the dimensions of the new design, I realized I will likely have to by new aluminum extrusion :(. The ball screws mount closest to the motor sit on the inside of the plates rather than outside as they were before, so I can either add a spacer between the other mount (less rigid) or lengthen the frame (will cost around $100-$200). Welp… I will probably use a spacer for now. What’s Next Limit switches and dust shoe mounting Enclosure design Table + Electronics enclosure design Subsystem design documentation Hope to move to electronics and building soon. Cya!"}, {"post_id": 39589, "ts": "2026-08-02T17:49:41Z", "hours": 4.8672, "text": "Devlog #2: These Ball Screws are Gonna Haunt Me Overview I’ve been working on redesigning the basic frame, and I’ve just about got the Z-axis CAD and ball screw mounting done. I’ve got plans in mind for the rest of the frame, but till then, here’s what I’ve got to show. What’s New Wrapped up the Z-axis CAD, adding the motor and ball screw mounts Laid out the aluminum extrusion base All pretty basic until I got to designing the ball screws for the X and Y axes. A year ago, I foolishly bought the parts for this machine when working with my old design :(. The ball screws were way oversized due to the 3D-printed mount I made (Image attached), and the mount for the screw nut would require me to take apart the whole gantry (screws facing the wrong direction). Cause I don’t want to order new parts, I’ve made a solution using some offset plates; it took a little playing around (second image). What’s Next I’ll be getting back to documentation on my repo soon! Figuring out how to accommodate the ball screw length; they’re still too long for the size of rails I have."}, {"post_id": 39073, "ts": "2026-08-01T19:19:42Z", "hours": 6.9453, "text": "Devlog #1: Documentation and Getting Started on CAD Just got started CADing the Z-axis assembly of my CNC alongside some other COTS parts + documentation. Documentation has taken way longer than I expected :( CAD: BK-15 and BF-15 ball screw mounts (for some reason the parts I have don’t properly match models online, so I made them myself) Started the Z-axis CAD (still need to model the ball screws and motor, but got the rails and carriage done) Configurable linear rails Documentation: Started the documentation for my design process, with info on the general design and linear motion components (check repo for more info; hope to get more on there by my next devlog) I originally attempted this project over a year ago, but didn’t have enough experience and rushed into thing buying some of the wrong parts. Hoping to reuse most of the parts I already have! I attached a photo of my older, unfinished design (imported from Fusion)"}]...
|
Title: Vulcan Custom CNC by @GurshanB | Stardance
Title: Vulcan Custom CNC by @GurshanB | Stardance
Devlogs:
Devlog #1: Documentation and Getting Started on CAD Just got started CADing the Z-axis assembly of my CNC alongside some other COTS parts + documentation. Documentation has taken way longer than I expected :( CAD: BK-15 and BF-15 ball screw mounts (for some reason the parts I have don’t properly match models online, so I made them myself) Started the Z-axis CAD (still need to model the ball screws and motor, but got the rails and carriage done) Configurable linear rails Documentation: Started the documentation for my design process, with info on the general design and linear motion components (check repo for more info; hope to get more on there by my next devlog) I originally attempted this project over a year ago, but didn’t have enough experience and rushed into thing buying some of the wrong parts. Hoping to reuse most of the parts I already have! I attached a photo of my older, unfinished design (imported from Fusion)
Devlog #2: These Ball Screws are Gonna Haunt Me Overview I’ve been working on redesigning the basic frame, and I’ve just about got the Z-axis CAD and ball screw mounting done. I’ve got plans in mind for the rest of the frame, but till then, here’s what I’ve got to show. What’s New Wrapped up the Z-axis CAD, adding the motor and ball screw mounts Laid out the aluminum extrusion base All pretty basic until I got to designing the ball screws for the X and Y axes. A year ago, I foolishly bought the parts for this machine when working with my old design :(. The ball screws were way oversized due to the 3D-printed mount I made (Image attached), and the mount for the screw nut would require me to take apart the whole gantry (screws facing the wrong direction). Cause I don’t want to order new parts, I’ve made a solution using some offset plates; it took a little playing around (second image). What’s Next I’ll be getting back to documentation on my repo soon! Figuring out how to accommodate the ball screw length; they’re still too long for the size of rails I have.
Devlog #3 The Frame is Done (Mostly) Overview I’ve just about got the frame all CADed and checked for interferences. Just need to add dust collection and limit switches! What’s New Finished the gantry, spindle mount and spoilboard CAD Added fasteners to CAD Updated most lengths to reflect the parts I have Everything gone pretty well, but as I was messing around with the dimensions of the new design, I realized I will likely have to by new aluminum extrusion :(. The ball screws mount closest to the motor sit on the inside of the plates rather than outside as they were before, so I can either add a spacer between the other mount (less rigid) or lengthen the frame (will cost around $100-$200). Welp… I will probably use a spacer for now. What’s Next Limit switches and dust shoe mounting Enclosure design Table + Electronics enclosure design Subsystem design documentation Hope to move to electronics and building soon. Cya!
Devlog 4: Negative Progress??? Overview It’s been a while since my last devlog, and quite a few things have changed (mostly taking apart or fixing things rather than anything new ). I took apart the old frame and components, going through the arduous process of cataloging all the parts and screws. There were a bunch of small interference fixes across CAD, such as ball screw misalignment and incorrect COTS parts dimensions I also went through and fixed. I had to make a few test jigs to verify if the corner brackets fit correctly before realizing the dimensions for the little triangle parts that stick out were way off . I also came across some designs for TPU bellows/dust covers and have been playing around with them, but can’t get my print settings right just yet. What’s New Old frame taken apart Fixed ball screw alignment on x and y axis Added additional screws to Gantry structure Adjusted cutouts for Gantry corner brackets CADed table (same as old design, but done on Onshape Continued reformatting and organizing documentation Test prints for 3DP Bellows I’ve been procrastinating working on electronics and dust collection for a while, and I’ll be getting to them soon–never trust my estimates–after I wrap up documentation and 3DP testing. What’s Next Completing research documentation Bellows tests Maybe electronics (likely 2 devlogs from now)...
|
1793163037.00895
|
1793767837.00895
|
|
31188
|
HackroPad Ver. 1.0 by @UnLuckyDev | Stardance
|
UnLuckyDev
|
0
|
26.77
|
0
|
[]
|
[{"post_id": 37164, "ts": "202 [{"post_id": 37164, "ts": "2026-07-29T17:39:12Z", "hours": 1.3, "text": "I just have to submit my project and I’m good to go! However, I am getting some issues saying error 404 and my github repo isn’t public, though it is. Edit: Update! I fixed this isuse thx to @Brandt"}, {"post_id": 37064, "ts": "2026-07-29T15:16:13Z", "hours": 0.3764, "text": "Did a little bit of work on trying to get that .uf2 file, hopefully once the cloning is done it will work!"}, {"post_id": 34098, "ts": "2026-07-24T16:01:19Z", "hours": 1.5667, "text": "This is my third attempt at getting the firmware.uf2 build to work for my custom QMK macro pad. I’ve already fixed a few firmware issues along the way, including the OLED driver setting, some outdated config lines, and a README file that QMK wasn’t recognizing properly. Even after that, the build still isn’t fully cooperating, so I’m now on round four of debugging the firmware setup and QMK structure before I can finally get a working firmware.uf2 file."}, {"post_id": 33575, "ts": "2026-07-23T16:48:10Z", "hours": 2.7636, "text": "Devlog: Compiling a 3x3 Layout into QMK CoreProject: Hackropad Ver. 1.0Hardware: Custom 3x3 Layout (9 keys) + SSD1306 0.91” OLEDBrain: RP2040 Controller (.uf2 binary output)Method: Manual folder override using AI pairing tools. The host repository expected 17 keys, crashing our 9-key footprint. I dropped standard layout macros and wrote raw C-brackets inside keymap.c to bypass the validation parser. Standard qmk compile hung on a blank prompt. We switched to raw make hackpad:default to expose real-time background debugging logs. The global repository code kept forcing a 5x4 matrix over our 3x3 array. We injected #undef overrides into config.h to wipe the system memory: #undef MATRIX_ROWS #undef MATRIX_COLS #undef MATRIX_ROW_PINS #undef MATRIX_COL_PINS Pointer Signedness Check: The cat animation arrays threw a type-safety error. We swapped data types from unsigned char to plain const char PROGMEM to clear the validation gate. Build State: Fixed, cleaned environment, and ready for final firmware compilation."}, {"post_id": 33054, "ts": "2026-07-22T17:02:59Z", "hours": 3.4217, "text": "I was almost done shipping it but this time, I had some qmk config and file compiling issues. I am going to ask the #stardance-help channl in slack for assitance. I was using gemini to help me figuire out the issue, but it was of no help. Hopefully, I can finish by the end of the week!"}, {"post_id": 30204, "ts": "2026-07-17T16:22:19Z", "hours": 3.0106, "text": "I was working on fixing the screws placement, and making a github repo, harder than I thought it was. I just have to finish adding the CAD files to the github repo and then I submit! I’m really excited!"}, {"post_id": 29824, "ts": "2026-07-16T23:26:12Z", "hours": 0.9933, "text": "I think I finished the draft for the Hackropad CAD. I’m going to check everything one more time when I get the chance. I’m really excited to ship my project soon!"}, {"post_id": 29570, "ts": "2026-07-16T16:30:18Z", "hours": 1.7111, "text": "I finally almost finished the CAD for the HackroPad! I am really excited to go finish it off! I honestly think I would have finished this project faster if I used a software that wasn’t useless, AKA Fusion360. Also I just have to add the holes for the screws and I am good to go!"}, {"post_id": 28992, "ts": "2026-07-15T17:02:51Z", "hours": 1.6503, "text": "I tried to fix the CAD, but I am having issues with the plate. I might try an approach that doesn’t require a plate."}, {"post_id": 28925, "ts": "2026-07-15T15:13:28Z", "hours": 0.4836, "text": "Tried fixing the CAD, but I might switch to a different software because this is really confusing."}, {"post_id": 28909, "ts": "2026-07-15T14:43:42Z", "hours": 1.2667, "text": "I was trying to make the CAD for the hackropad, however I realized my edge.cuts on the pcb design was too complicated to CAD for. I decided to make it one big square so it would be easy. Now I am trying to extrude the base and create a cavity for the pcb to go in. I am struggling to create the cavity though."}, {"post_id": 25398, "ts": "2026-07-09T17:36:28Z", "hours": 0.3389, "text": "I was trying to fix the small triangle I made at the right hand side. I am close to fixing it, but I think I need to restart. However, now that I have a bit more experience with the software I think it’s actually pretty good, so I will continue using Fusion 360."}, {"post_id": 25323, "ts": "2026-07-09T15:23:14Z", "hours": 1.6561, "text": "I started the CAD after I finished the final PCB design. I’m using Fusion 360 for my CAD software, and personally I think it sucks, I had to go through a lot to just add a triangle (my project has a good amount of those). I might change my CAD Software to something else."}, {"post_id": 24831, "ts": "2026-07-08T17:23:37Z", "hours": 1.2861, "text": "I completely finished the PCB layout and schematics. Once I finish the CAD, and some code, I will ship my project and submit my project to get the materials."}, {"post_id": 24773, "ts": "2026-07-08T15:54:04Z", "hours": 1.4853, "text": "I was trying to do the pcb instead of the schematic because the schematic is finished. I need to fix the pcb but it should be no problem."}, {"post_id": 24722, "ts": "2026-07-08T14:21:45Z", "hours": 1.7022, "text": "I am working on fixing the PCB layout. I realized I made a few wiring errors. Now I think it needs a few more fixes like SW4."}, {"post_id": 24124, "ts": "2026-07-07T14:23:03Z", "hours": 1.7533, "text": "I am working the schematics for the pcb. I am a newbie so I was very confused at first but I slowly got the hang of it. Let me know how I can change this to make it better in the comments."}]...
|
Title: HackroPad Ver. 1.0 by @UnLuckyDev | Stardan Title: HackroPad Ver. 1.0 by @UnLuckyDev | Stardance
Devlogs:
I am working the schematics for the pcb. I am a newbie so I was very confused at first but I slowly got the hang of it. Let me know how I can change this to make it better in the comments.
I am working on fixing the PCB layout. I realized I made a few wiring errors. Now I think it needs a few more fixes like SW4.
I was trying to do the pcb instead of the schematic because the schematic is finished. I need to fix the pcb but it should be no problem.
I completely finished the PCB layout and schematics. Once I finish the CAD, and some code, I will ship my project and submit my project to get the materials.
I started the CAD after I finished the final PCB design. I’m using Fusion 360 for my CAD software, and personally I think it sucks, I had to go through a lot to just add a triangle (my project has a good amount of those). I might change my CAD Software to something else.
I was trying to fix the small triangle I made at the right hand side. I am close to fixing it, but I think I need to restart. However, now that I have a bit more experience with the software I think it’s actually pretty good, so I will continue using Fusion 360.
I was trying to make the CAD for the hackropad, however I realized my edge.cuts on the pcb design was too complicated to CAD for. I decided to make it one big square so it would be easy. Now I am trying to extrude the base and create a cavity for the pcb to go in. I am struggling to create the cavity though.
Tried fixing the CAD, but I might switch to a different software because this is really confusing.
I tried to fix the CAD, but I am having issues with the plate. I might try an approach that doesn’t require a plate.
I finally almost finished the CAD for the HackroPad! I am really excited to go finish it off! I honestly think I would have finished this project faster if I used a software that wasn’t useless, AKA Fusion360. Also I just have to add the holes for the screws and I am good to go!
I think I finished the draft for the Hackropad CAD. I’m going to check everything one more time when I get the chance. I’m really excited to ship my project soon!
I was working on fixing the screws placement, and making a github repo, harder than I thought it was. I just have to finish adding the CAD files to the github repo and then I submit! I’m really excited!
I was almost done shipping it but this time, I had some qmk config and file compiling issues. I am going to ask the #stardance-help channl in slack for assitance. I was using gemini to help me figuire out the issue, but it was of no help. Hopefully, I can finish by the end of the week!
Devlog: Compiling a 3x3 Layout into QMK CoreProject: Hackropad Ver. 1.0Hardware: Custom 3x3 Layout (9 keys) + SSD1306 0.91” OLEDBrain: RP2040 Controller (.uf2 binary output)Method: Manual folder override using AI pairing tools. The host repository expected 17 keys, crashing our 9-key footprint. I dropped standard layout macros and wrote raw C-brackets inside keymap.c to bypass the validation parser. Standard qmk compile hung on a blank prompt. We switched to raw make hackpad:default to expose real-time background debugging logs. The global repository code kept forcing a 5x4 matrix over our 3x3 array. We injected #undef overrides into config.h to wipe the system memory: #undef MATRIX_ROWS #undef MATRIX_COLS #undef MATRIX_ROW_PINS #undef MATRIX_COL_PINS Pointer Signedness Check: The cat animation arrays threw a type-safety error. We swapped data types from unsigned char to plain const char PROGMEM to clear the validation gate. Build State: Fixed, cleaned environment, and ready for final firmware compilation.
This is my third attempt at getting the firmware.uf2 build to work for my custom QMK macro pad. I’ve already fixed a few firmware issues along the way, including the OLED driver setting, some outdated config lines, and a README file that QMK wasn’t recognizing properly. Even after that, the build still isn’t fully cooperating, so I’m now on round four of debugging the firmware setup and QMK structure before I can finally get a working firmware.uf2 file.
Did a little bit of work on trying to get that .uf2 file, hopefully once the cloning is done it will work!
I just have to submit my project and I’m good to go! However, I am getting some issues saying error 404 and my github repo isn’t public, though it is. Edit: Update! I fixed this isuse thx to @Brandt...
|
1793184600.8616
|
1793789400.8616
|
|
26822
|
The Delarion by @Amnatis | Stardance
|
Amnatis
|
0
|
26.75
|
0
|
[]
|
[{"post_id": 71203, "ts": "202 [{"post_id": 71203, "ts": "2026-09-20T13:15:49Z", "hours": 5.7819, "text": "all done finally, well the pcb is ready and only thing left is to submit it for review, yipeeeee"}, {"post_id": 65439, "ts": "2026-09-10T16:00:01Z", "hours": 6.1236, "text": "Finally its finished, almost done everyhting prepped only the nozzel and extruder are left but will need to figure them on the fly ig, cause honestly i cant figure it how to mount"}, {"post_id": 43600, "ts": "2026-08-08T23:13:49Z", "hours": 6.1242, "text": "Entire plan changed well i was making an cartesisan system well there were some structural problems lagging, wrong tensions, just wasnt stable so i kept adding supports extra 2020 profiles and look what i got. a box shape which resembles much like coreXY, yes i know that still this can be made into a cartesian but talking to some freinds ove theese days made it clear not to invest in a cartesian system instead go with a belted core XY. now the biggest challenge is to figure out the belt mechanism like how it will move whether to run parallel or tangles really just messes my mind. well its roughly 4 in the am, Hopefully i dont get this belt mechanism nightmare while sleeping as its frustating"}, {"post_id": 30205, "ts": "2026-07-17T16:23:21Z", "hours": 2.2939, "text": "well spent bunch of time in finishing parts and researching regarding the pulley mechanism to moving the heatbed. But still i havnt figuired it out that which heat bed to use. there are plenty, many with proprietary connectors or requires custom elctronics(besides open source code for the controllers). Well i will make the base design add constraints and finilize the hotbed on the fly as i like. IF you have any idea which to use pls tell."}, {"post_id": 28988, "ts": "2026-07-15T16:52:07Z", "hours": 1.5833, "text": "Well the y axis gantry is almost complete. just a little tuning and it all should be good to go. it really took the time to just how to make this cause it will be handling all the load so it needed to be perfect hopefully it’s structurally stable and just doesnt collapse. and yeah i know that nema motor looks off from the mount. i just mounted the screws alittle off by 3-4 mm and yeah. in theory it should be perfect. hopefully"}, {"post_id": 28374, "ts": "2026-07-14T16:25:52Z", "hours": 1.4106, "text": "Just finished modelling a lead screw, lead screw atart and nema 17 motor mount along with the stepper position. i feel like its gonna be ass still to figure out stepper position. this is gonna be my tentative position."}, {"post_id": 27263, "ts": "2026-07-12T17:51:47Z", "hours": 0.6169, "text": "making a precision part at mm level precision is lowkey tough. especially when huggling throught theese datasheets. yes i left a tolerance of 2mm. it has to be 3d printed and its mine first stl so is it ok?"}, {"post_id": 26796, "ts": "2026-07-11T19:50:26Z", "hours": 0.8669, "text": "did some massive design changes. Though the changes may look minute but thoose are massive. the first pic is the new model and second is the old model. Well the old model had some structural flaws. mgn12 guids added masive weight, and the iron corners were too weak to handle the sag. so the frame woud be tipping like towards me. the new model solved that by changing the guides direction. added corner brackets which are much stronger. went for dual beams at the base to strenghten it. now i theory the front tipping sag shoud be eliminated. the main load bearing will now be done on the top canteleaver beam. now just need to designt the y axis holding brackets to hold it firmly. looks easy but is a tough job as i have to go through the entire mgn12 chineese documentation and also make the design applicable to lead screw which will drive theese motors"}, {"post_id": 23574, "ts": "2026-07-06T16:42:32Z", "hours": 1.2317, "text": "Why is ts tough, gotta say its my second cad session and theese are tough, hopefully i getr faster"}, {"post_id": 23002, "ts": "2026-07-05T18:18:46Z", "hours": 0.7169, "text": "1st time in CAD, took me longer than i thought. yeah progress is quite low but i had to research extensions plus beginner so hopefully next time its more productive"}]...
|
Title: The Delarion by @Amnatis | Stardance
Devlo Title: The Delarion by @Amnatis | Stardance
Devlogs:
1st time in CAD, took me longer than i thought. yeah progress is quite low but i had to research extensions plus beginner so hopefully next time its more productive
Why is ts tough, gotta say its my second cad session and theese are tough, hopefully i getr faster
did some massive design changes. Though the changes may look minute but thoose are massive. the first pic is the new model and second is the old model. Well the old model had some structural flaws. mgn12 guids added masive weight, and the iron corners were too weak to handle the sag. so the frame woud be tipping like towards me. the new model solved that by changing the guides direction. added corner brackets which are much stronger. went for dual beams at the base to strenghten it. now i theory the front tipping sag shoud be eliminated. the main load bearing will now be done on the top canteleaver beam. now just need to designt the y axis holding brackets to hold it firmly. looks easy but is a tough job as i have to go through the entire mgn12 chineese documentation and also make the design applicable to lead screw which will drive theese motors
making a precision part at mm level precision is lowkey tough. especially when huggling throught theese datasheets. yes i left a tolerance of 2mm. it has to be 3d printed and its mine first stl so is it ok?
Just finished modelling a lead screw, lead screw atart and nema 17 motor mount along with the stepper position. i feel like its gonna be ass still to figure out stepper position. this is gonna be my tentative position.
Well the y axis gantry is almost complete. just a little tuning and it all should be good to go. it really took the time to just how to make this cause it will be handling all the load so it needed to be perfect hopefully it’s structurally stable and just doesnt collapse. and yeah i know that nema motor looks off from the mount. i just mounted the screws alittle off by 3-4 mm and yeah. in theory it should be perfect. hopefully
well spent bunch of time in finishing parts and researching regarding the pulley mechanism to moving the heatbed. But still i havnt figuired it out that which heat bed to use. there are plenty, many with proprietary connectors or requires custom elctronics(besides open source code for the controllers). Well i will make the base design add constraints and finilize the hotbed on the fly as i like. IF you have any idea which to use pls tell.
Entire plan changed well i was making an cartesisan system well there were some structural problems lagging, wrong tensions, just wasnt stable so i kept adding supports extra 2020 profiles and look what i got. a box shape which resembles much like coreXY, yes i know that still this can be made into a cartesian but talking to some freinds ove theese days made it clear not to invest in a cartesian system instead go with a belted core XY. now the biggest challenge is to figure out the belt mechanism like how it will move whether to run parallel or tangles really just messes my mind. well its roughly 4 in the am, Hopefully i dont get this belt mechanism nightmare while sleeping as its frustating
Finally its finished, almost done everyhting prepped only the nozzel and extruder are left but will need to figure them on the fly ig, cause honestly i cant figure it how to mount
all done finally, well the pcb is ready and only thing left is to submit it for review, yipeeeee...
|
1793184705.0135474
|
1793789505.0135474
|
|
53223
|
cinematch by @rushabh69 | Stardance
|
rushabh69
|
1
|
26.74
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-25T05:34:13Z", "hours": 21.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "CineMatch is a movie recommendation engine I built on the MovieLens dataset (~100K ratings) — it compares five approaches (popularity baseline, user-based and item-based collaborative filtering, SVD matrix factorization, and a content+CF hybrid), gives cited “because you liked X, Y, Z” explanations, handles brand-new users with a cold-start fallback, has a similar-movies search, and shows a live model-comparison dashboard, all deployed on Streamlit with poster art from TMDB. The challenging parts were both ML and infra: my neighborhood models kept top-ranking obscure movies that one person rated 5 stars so precision was ~0.01 until I added support-based shrinkage (jumped to ~0.13), and I learned the hard way that the best-RMSE model isn’t the best recommender — SVD won on RMSE but the hybrid ranks best — plus the posters worked locally but the deploy fought me with SSL cert errors and random TLS connection resets that I fixed with certifi and a curl fallback. I’m proud that it’s not just “a recommender” but actually evaluates models honestly with real metrics (RMSE, MAE, precision@k, recall@k), explains its picks, handles cold start two ways, and is shipped live end-to-end with a clean UI. To test it, just open the live app at https://cinematch-c7yuqnyee7sy2f3im28wbv.streamlit.app/ (no setup) — pick any user ID for personalized recs with explanations, search a title under “Similar Movies” (try “Matrix”), use “New User” to simulate a cold start by picking a few movies you like, and check the “Model Comparison” page to see how the five models stack up; the first load takes a few seconds to warm up.", "repo": "https://github.com/rushabh69/cinematch", "demo": "https://sprightly-horse-f8df5b.netlify.app/"}]...
|
[{"post_id": 55400, "ts": "202 [{"post_id": 55400, "ts": "2026-08-27T06:30:15Z", "hours": 5.7367, "text": "got feedback that streamlit sleeps, so i moved cinematch off it. instead of a live server i precomputed all the recommendations, similar movies and posters into json (build_static.py), and wrote a small static frontend — index.html, style.css, app.js — that just loads those and shows the cards. now it’s a plain static site i can throw on netlify/pages for free with no sleeping. bonus: posters get baked in at build time so the whole tmdb ssl mess on windows goes away."}, {"post_id": 54268, "ts": "2026-08-25T04:59:57Z", "hours": 5.2047, "text": "wrapped up cinematch today. spent way too long fighting the movie posters lol - added tmdb api to show poster art instead of plain tables, worked instantly on my main machine but the vm kept throwing ssl cert errors and then random connection resets (10054). turned out the vm’s python couldnt verify https certs so fixed that with certifi, and then some antivirus/firewall thing was resetting python’s tls connections while curl worked fine, so i made it fall back to curl when urllib fails. finally got posters loading. also cleaned up so it gracefully shows placeholder cards if theres no api key. then deployed the whole thing to streamlit community cloud (free) so theres an actual live demo link now, added the tmdb key as a secret so its not exposed. so cinematch is officially done - 5 recommendation models compared, cited “because you liked x,y,z” explanations, cold start handling, similar movies, model comparison dashboard, poster art, tests passing, readme + report written, and deployed live. pretty happy with how it turned out."}, {"post_id": 54032, "ts": "2026-08-24T19:42:30Z", "hours": 7.1494, "text": "back on cinematch today, mostly turning the models into something you can actually use. wrapped everything behind a facade class so theres one clean api (get_recommendations, get_similar_movies, cold start fold-in, explanations) instead of poking at each model directly. then built a cli with subcommands - recommend, similar, search, newuser, compare etc - which made testing way faster. after that did the streamlit app, four tabs: personalized recs with the “because you liked x,y,z” reasons, a similar-movies search, a new-user cold start page, and a model comparison page with the rmse/precision charts. kinda satisfying seeing the numbers from the terminal turn into an actual clickable ui. small stuff slowed me down (forgot to activate the venv once, a typo’d argparse arg) but nothing major. everything pushed to github. next up is tests + cleaning the readme, then trying to deploy the streamlit app."}, {"post_id": 53699, "ts": "2026-08-24T11:32:18Z", "hours": 9.1169, "text": "spent basically the whole day on cinematch, my movie recommender built on the movielens data. got the data pipeline done first (cleaning, filtering out users/movies with under 5 ratings, per-user 80/20 split) then built 5 models to actually compare instead of just picking one - popularity baseline, user-based CF, item-based CF, SVD with the surprise library, and a hybrid mixing collaborative + content. most annoying part was my neighborhood models kept recommending random obscure movies that one person happened to rate 5 stars, precision was like 0.01. added some shrinkage so thinly-backed picks get pushed down and it jumped to ~0.13. also kind of learned the hard way that best RMSE doesnt mean best recommendations - SVD won on RMSE but the hybrid actually ranks better. threw in cold-start handling, a similar-movies feature and “because you liked x, y, z” explanations, then wrapped it all in a streamlit app. also fixed a dumb 248mb cache bug (dense matrices that shouldve been sparse, now ~34mb). 11 tests passing. pretty happy with it, gonna clean up the readme and try deploying tomorrow."}]...
|
Title: cinematch by @rushabh69 | Stardance
Devlog Title: cinematch by @rushabh69 | Stardance
Devlogs:
spent basically the whole day on cinematch, my movie recommender built on the movielens data. got the data pipeline done first (cleaning, filtering out users/movies with under 5 ratings, per-user 80/20 split) then built 5 models to actually compare instead of just picking one - popularity baseline, user-based CF, item-based CF, SVD with the surprise library, and a hybrid mixing collaborative + content. most annoying part was my neighborhood models kept recommending random obscure movies that one person happened to rate 5 stars, precision was like 0.01. added some shrinkage so thinly-backed picks get pushed down and it jumped to ~0.13. also kind of learned the hard way that best RMSE doesnt mean best recommendations - SVD won on RMSE but the hybrid actually ranks better. threw in cold-start handling, a similar-movies feature and “because you liked x, y, z” explanations, then wrapped it all in a streamlit app. also fixed a dumb 248mb cache bug (dense matrices that shouldve been sparse, now ~34mb). 11 tests passing. pretty happy with it, gonna clean up the readme and try deploying tomorrow.
back on cinematch today, mostly turning the models into something you can actually use. wrapped everything behind a facade class so theres one clean api (get_recommendations, get_similar_movies, cold start fold-in, explanations) instead of poking at each model directly. then built a cli with subcommands - recommend, similar, search, newuser, compare etc - which made testing way faster. after that did the streamlit app, four tabs: personalized recs with the “because you liked x,y,z” reasons, a similar-movies search, a new-user cold start page, and a model comparison page with the rmse/precision charts. kinda satisfying seeing the numbers from the terminal turn into an actual clickable ui. small stuff slowed me down (forgot to activate the venv once, a typo’d argparse arg) but nothing major. everything pushed to github. next up is tests + cleaning the readme, then trying to deploy the streamlit app.
wrapped up cinematch today. spent way too long fighting the movie posters lol - added tmdb api to show poster art instead of plain tables, worked instantly on my main machine but the vm kept throwing ssl cert errors and then random connection resets (10054). turned out the vm’s python couldnt verify https certs so fixed that with certifi, and then some antivirus/firewall thing was resetting python’s tls connections while curl worked fine, so i made it fall back to curl when urllib fails. finally got posters loading. also cleaned up so it gracefully shows placeholder cards if theres no api key. then deployed the whole thing to streamlit community cloud (free) so theres an actual live demo link now, added the tmdb key as a secret so its not exposed. so cinematch is officially done - 5 recommendation models compared, cited “because you liked x,y,z” explanations, cold start handling, similar movies, model comparison dashboard, poster art, tests passing, readme + report written, and deployed live. pretty happy with how it turned out.
got feedback that streamlit sleeps, so i moved cinematch off it. instead of a live server i precomputed all the recommendations, similar movies and posters into json (build_static.py), and wrote a small static frontend — index.html, style.css, app.js — that just loads those and shows the cards. now it’s a plain static site i can throw on netlify/pages for free with no sleeping. bonus: posters get baked in at build time so the whole tmdb ssl mess on windows goes away.
Ships:
CineMatch is a movie recommendation engine I built on the MovieLens dataset (~100K ratings) — it compares five approaches (popularity baseline, user-based and item-based collaborative filtering, SVD matrix factorization, and a content+CF hybrid), gives cited “because you liked X, Y, Z” explanations, handles brand-new users with a cold-start fallback, has a similar-movies search, and shows a live model-comparison dashboard, all deployed on Streamlit with poster art from TMDB. The challenging parts were both ML and infra: my neighborhood models kept top-ranking obscure movies that one person rated 5 stars so precision was ~0.01 until I added support-based shrinkage (jumped to ~0.13), and I learned the hard way that the best-RMSE model isn’t the best recommender — SVD won on RMSE but the hybrid ranks best — plus the posters worked locally but the deploy fought me with SSL cert errors and random TLS connection resets that I fixed with certifi and a curl fallback. I’m proud that it’s not just “a recommender” but actually evaluates models honestly with real metrics (RMSE, MAE, precision@k, recall@k), explains its picks, handles cold start two ways, and is shipped live end-to-end with a clean UI. To test it, just open the live app at https://cinematch-c7yuqnyee7sy2f3im28wbv.streamlit.app/ (no setup) — pick any user ID for personalized recs with explanations, search a title under “Similar Movies” (try “Matrix”), use “New User” to simulate a cold start by picking a few movies you like, and check the “Model Comparison” page to see how the five models stack up; the first load takes a few seconds to warm up....
|
1793130523.7834191
|
1793216923.7834191
|
|
33594
|
Autonomous Trash Drone by @randymo | Stardance
|
randymo
|
0
|
26.73
|
0
|
[]
|
[{"post_id": 71403, "ts": "202 [{"post_id": 71403, "ts": "2026-09-20T19:14:18Z", "hours": 1.6564, "text": "SO MUCH CODING DONE - did not get to record this sadly and took a long break but me and my friend are back at it now and we’re almost completely done with everything on his side(the 3d modeling) and my side(the coding). Below are 4/8 of the scripts that i’ve made so far."}, {"post_id": 32774, "ts": "2026-07-22T04:41:10Z", "hours": 6.6297, "text": "Devlog 4: Worked on actually coding the logic i explained in the previous devlog, coding went smooth with minimal issues. Only issue is if this will actually work when i am able to get funding for the actual hardware, I adjusted and researched a lot to make sure the code I’m creating would be compatible with the hardware I get. I also was able to create some extra logic ideas to patch up issues such as a system where it remembers areas it has already scanned and can use them to readjust and drifting that may have occurred with the data. Also was able to make it make decisions on where to fly and its overall flight direction although it still needs some adjusting for an accurate and efficient flight path. -Next time I work I’ll have to connect it to the flight script so It can actually command the flight controller to do stuff as well as finalize the flight paths. P.S. I also need to fix the drift correct system."}, {"post_id": 32584, "ts": "2026-07-21T21:08:01Z", "hours": 11.575, "text": "Devlog 3: We started working on our own custom SLAM from scratch for a roomba styled tracking system where the autonomous drone already knows where it has already searched The actual coding wasn’t completed very much but we fully understand how the whole system logic will work and what we have to code. To summarize it uses the flight controllers outputs like its yaw, position, and velocity to calculate an initial pose, then creates creates a grid of boxes that contain data to hold status like free, unknown, and blocked based off of the coordinates from our lidar data we converted. It then compares the map of lidar scans that moves based off the pose to the current scan, slowly making slight adjustments to find how much the drone actually moved in real life. This data is then used and converted into another grid that stores only where the drone has been and is used for the whole logic of not checking the same place over and over again."}, {"post_id": 29918, "ts": "2026-07-17T03:00:14Z", "hours": 5.0744, "text": "Devlog #2: Today focused on advancing both the software and mechanical portions of the autonomous trash collection drone. On the software side, the LiDAR subsystem was completed. The Python script for the RPLIDAR C1 was finalized, including initialization, communication with the sensor, and collection of scan data. The script now reads distance measurements and angles from the LiDAR, providing the foundation for future obstacle detection and avoidance logic. Time was also spent organizing the software architecture and researching the required Python libraries for each subsystem of the drone. The project dependencies were separated into categories for computer vision, sensor processing, flight control, and networking, and virtual development environments were configured and tested to prepare for future development. On the mechanical side, significant progress was made on the robotic gripper assembly. Most of the CAD modeling for the gripper arm was completed, including the overall geometry, servo mounting, gear layout, and finger mechanism. Existing component dimensions were reviewed to ensure compatibility with the DS3218 servo, bearings, and planned fasteners. The gripper design is now largely complete and serves as the primary end effector for the drone’s trash collection system. Overall, today’s work established a solid foundation for both the software and hardware systems. The LiDAR subsystem is now operational at the software level, the project’s development environments are organized for continued programming, and the gripper assembly has reached an advanced stage of mechanical design. These milestones prepare the project for integration of obstacle avoidance, object detection, and physical manipulation in future development sessions."}, {"post_id": 28502, "ts": "2026-07-14T19:54:24Z", "hours": 1.7919, "text": "Dev Log #1 – Today I continued working on the mechanical design of the autonomous trash-collecting drone, focusing on the robotic arm and gripper assembly. The main objective was to determine the overall dimensions of the arm, select appropriate hardware, and make design decisions before continuing the CAD model. During today’s work, I finalized the decision to use three DS3218 high-torque servos throughout the robotic arm, including the gripper. Although a smaller servo was considered for the claw, I decided to use the same servo for all three joints to simplify the design, reduce the number of different components, and make future maintenance easier. I also continued determining the dimensions of the upper arm, forearm, and gripper based on the expected payload and overall size of the drone. The arm will be constructed from CF PETG using a lightweight truss-style structure to maximize rigidity while minimizing weight. I researched the DS3218 servo output shaft and confirmed that it uses a 25T spline, which will be used for the servo-driven joints. I also standardized the hardware by selecting M3 machine screws for servo mounting and the majority of the structural connections throughout the arm. A large portion of today’s work focused on the gripper mechanism. After evaluating several concepts, I decided to use a three-gear synchronized design consisting of one servo-driven center gear and two mirrored gears connected to each finger so that both fingers open and close together. I also selected a 1:1 gear ratio and began determining appropriate gear sizes and the overall dimensions of the gripper housing to fit the DS3218 servo. In addition to the mechanical design, I estimated the overall weight of the drone using the currently selected components to ensure the chosen propulsion system should be capable of lifting both the aircraft and its expected payload. This estimate will continue to be refined as the CAD model progresses and additional components are finalized. The next stage of development will focus on continuing the CAD model of the gripper, finalizing the gear layout, finger dimensions, and mounting points, and completing the remaining mechanical details of the robotic arm before beginning assembly of the full system."}]...
|
Title: Autonomous Trash Drone by @randymo | Starda Title: Autonomous Trash Drone by @randymo | Stardance
Devlogs:
Dev Log #1 – Today I continued working on the mechanical design of the autonomous trash-collecting drone, focusing on the robotic arm and gripper assembly. The main objective was to determine the overall dimensions of the arm, select appropriate hardware, and make design decisions before continuing the CAD model. During today’s work, I finalized the decision to use three DS3218 high-torque servos throughout the robotic arm, including the gripper. Although a smaller servo was considered for the claw, I decided to use the same servo for all three joints to simplify the design, reduce the number of different components, and make future maintenance easier. I also continued determining the dimensions of the upper arm, forearm, and gripper based on the expected payload and overall size of the drone. The arm will be constructed from CF PETG using a lightweight truss-style structure to maximize rigidity while minimizing weight. I researched the DS3218 servo output shaft and confirmed that it uses a 25T spline, which will be used for the servo-driven joints. I also standardized the hardware by selecting M3 machine screws for servo mounting and the majority of the structural connections throughout the arm. A large portion of today’s work focused on the gripper mechanism. After evaluating several concepts, I decided to use a three-gear synchronized design consisting of one servo-driven center gear and two mirrored gears connected to each finger so that both fingers open and close together. I also selected a 1:1 gear ratio and began determining appropriate gear sizes and the overall dimensions of the gripper housing to fit the DS3218 servo. In addition to the mechanical design, I estimated the overall weight of the drone using the currently selected components to ensure the chosen propulsion system should be capable of lifting both the aircraft and its expected payload. This estimate will continue to be refined as the CAD model progresses and additional components are finalized. The next stage of development will focus on continuing the CAD model of the gripper, finalizing the gear layout, finger dimensions, and mounting points, and completing the remaining mechanical details of the robotic arm before beginning assembly of the full system.
Devlog #2: Today focused on advancing both the software and mechanical portions of the autonomous trash collection drone. On the software side, the LiDAR subsystem was completed. The Python script for the RPLIDAR C1 was finalized, including initialization, communication with the sensor, and collection of scan data. The script now reads distance measurements and angles from the LiDAR, providing the foundation for future obstacle detection and avoidance logic. Time was also spent organizing the software architecture and researching the required Python libraries for each subsystem of the drone. The project dependencies were separated into categories for computer vision, sensor processing, flight control, and networking, and virtual development environments were configured and tested to prepare for future development. On the mechanical side, significant progress was made on the robotic gripper assembly. Most of the CAD modeling for the gripper arm was completed, including the overall geometry, servo mounting, gear layout, and finger mechanism. Existing component dimensions were reviewed to ensure compatibility with the DS3218 servo, bearings, and planned fasteners. The gripper design is now largely complete and serves as the primary end effector for the drone’s trash collection system. Overall, today’s work established a solid foundation for both the software and hardware systems. The LiDAR subsystem is now operational at the software level, the project’s development environments are organized for continued programming, and the gripper assembly has reached an advanced stage of mechanical design. These milestones prepare the project for integration of obstacle avoidance, object detection, and physical manipulation in future development sessions.
Devlog 3: We started working on our own custom SLAM from scratch for a roomba styled tracking system where the autonomous drone already knows where it has already searched The actual coding wasn’t completed very much but we fully understand how the whole system logic will work and what we have to code. To summarize it uses the flight controllers outputs like its yaw, position, and velocity to calculate an initial pose, then creates creates a grid of boxes that contain data to hold status like free, unknown, and blocked based off of the coordinates from our lidar data we converted. It then compares the map of lidar scans that moves based off the pose to the current scan, slowly making slight adjustments to find how much the drone actually moved in real life. This data is then used and converted into another grid that stores only where the drone has been and is used for the whole logic of not checking the same place over and over again.
Devlog 4: Worked on actually coding the logic i explained in the previous devlog, coding went smooth with minimal issues. Only issue is if this will actually work when i am able to get funding for the actual hardware, I adjusted and researched a lot to make sure the code I’m creating would be compatible with the hardware I get. I also was able to create some extra logic ideas to patch up issues such as a system where it remembers areas it has already scanned and can use them to readjust and drifting that may have occurred with the data. Also was able to make it make decisions on where to fly and its overall flight direction although it still needs some adjusting for an accurate and efficient flight path. -Next time I work I’ll have to connect it to the flight script so It can actually command the flight controller to do stuff as well as finalize the flight paths. P.S. I also need to fix the drift correct system.
SO MUCH CODING DONE - did not get to record this sadly and took a long break but me and my friend are back at it now and we’re almost completely done with everything on his side(the 3d modeling) and my side(the coding). Below are 4/8 of the scripts that i’ve made so far....
|
1792691247.0073178
|
1793296047.0073178
|
|
42798
|
Jarvis by @Dhanush_Mundra | Stardance
|
Dhanush_Mundra
|
0
|
26.72
|
0
|
[]
|
[{"post_id": 67294, "ts": "202 [{"post_id": 67294, "ts": "2026-09-13T11:25:27Z", "hours": 5.6706, "text": "ok everyone, in these 5 hours I completely changed my code because my Jarvis was facing certain problems. to solve those problems I kind of rewrote the code, but still there are some issues but the code and the performance right now is crazy. I filtered the code by removing the unnecessary part to make the code less complex and yes I took a little bit of help from chat GPT because it is my second python project and I am a coder who is between the beginner and the amateur. So I have literally modified the whole code to reduce the number of problems and I am promising, in the next develop it would be complete."}, {"post_id": 48327, "ts": "2026-08-16T17:12:01Z", "hours": 6.5731, "text": "today was a very tiring day as I made many many many helper functions today and I hope to build more helper functions with more features to make my project next level. I as usual enjoyed this day also but a very tiring one also but no problem for my project I can do anything.The screenshot here covers very less functions but I made around 9 big functions and even more are left. it is going to be challenging but interesting"}, {"post_id": 45906, "ts": "2026-08-12T17:43:35Z", "hours": 2.8403, "text": "today was another interesting day as I added more helping functions as there are too many features I need too many helper functions. I enjoyed today making these functions as I got to know why to use functions and now my project is a function itself so it is now becoming very interesting and I am very happy seeing my progress. I look forward to an another successful day tomorrow"}, {"post_id": 44785, "ts": "2026-08-10T19:57:27Z", "hours": 1.0928, "text": "Today was another interesting day as I added many more helper functions to my project and I have to add more so it can take a whole week for me to make all the helper functions. finally now my Jarvis is looking like a real project. it has started to feel like an achievement, but my goal is to make it on an another level and for that I’ll give my best"}, {"post_id": 44181, "ts": "2026-08-09T19:28:50Z", "hours": 3.0133, "text": "Today was another interesting day as I added helper functions to my program that make my program run and are the wheels of my program. I enjoyed this as it cleared my concept of functions in python. see you next day."}, {"post_id": 42842, "ts": "2026-08-07T19:40:48Z", "hours": 1.7364, "text": "today was my Day-7 of completing the Jarvis project and today I added the feature of playing any video from YouTube. this is a useful feature as you would just have to speak and the video will be in front of you and would be start playing in just 1 click!! that’s amazing and today I enjoyed adding this feature. looking forward to add new amazing features in my project. if anybody has any idea please comment or DM on slack. signing off for today"}, {"post_id": 42141, "ts": "2026-08-06T18:59:07Z", "hours": 1.1911, "text": "Today was the Day-6 of completing my Jarvis project. I enjoyed this day also as I added the feature of sports news. Yesterday I added the feature of general news and today sports news. I am very much happy to see my progress in 6 days and now I look forward to an another successful day tomorrow"}, {"post_id": 41498, "ts": "2026-08-05T19:01:32Z", "hours": 1.1322, "text": "today was my Day-5 of completing Jarvis project and today was another amazing day. today I added the feature of general news through API of GNEWS. My vision of using API has now increased and I am very happy with my project till now and look forward to an another successful day."}, {"post_id": 40897, "ts": "2026-08-04T18:28:33Z", "hours": 3.4667, "text": "today was my Day-4 of completing my Jarvis project and it was an amazing day today as I added the weather feature with AI integration in it means it my Jarvis would also answer and my AI answer will also be given to the user making it beneficial for the user. I enjoyed the day. it was amazing t work with different websites and APIs I am very happy till now with my project."}, {"post_id": 40297, "ts": "2026-08-03T18:46:03Z", "hours": 0.0, "text": "Another day and another feature added!! today was another amazing day and this was my Day-3 of completing my Jarvis project. Today I added the feature of Date and Time and if someone wants to know about the date and time individually they can absolutely do it. At first I imported the date time module and with the help of that I printed the time and date"}, {"post_id": 39558, "ts": "2026-08-02T16:27:31Z", "hours": 0.0, "text": "today was a very interesting day as I added the feature of opening apps and opening websites. I created a dictionary in which I wrote the names of all the apps on my laptop and opened them. this was a very exciting day and I look forward to a successful new day ahead"}, {"post_id": 39008, "ts": "2026-08-01T17:32:29Z", "hours": 0.0, "text": "today I added listening and speaking functionality to my Jarvis. I learned how to use microphones and how to work with them. I enjoyed every single part of my project. I look forward to the new challenges ahead"}]...
|
Title: Jarvis by @Dhanush_Mundra | Stardance
Devl Title: Jarvis by @Dhanush_Mundra | Stardance
Devlogs:
today I added listening and speaking functionality to my Jarvis. I learned how to use microphones and how to work with them. I enjoyed every single part of my project. I look forward to the new challenges ahead
today was a very interesting day as I added the feature of opening apps and opening websites. I created a dictionary in which I wrote the names of all the apps on my laptop and opened them. this was a very exciting day and I look forward to a successful new day ahead
Another day and another feature added!! today was another amazing day and this was my Day-3 of completing my Jarvis project. Today I added the feature of Date and Time and if someone wants to know about the date and time individually they can absolutely do it. At first I imported the date time module and with the help of that I printed the time and date
today was my Day-4 of completing my Jarvis project and it was an amazing day today as I added the weather feature with AI integration in it means it my Jarvis would also answer and my AI answer will also be given to the user making it beneficial for the user. I enjoyed the day. it was amazing t work with different websites and APIs I am very happy till now with my project.
today was my Day-5 of completing Jarvis project and today was another amazing day. today I added the feature of general news through API of GNEWS. My vision of using API has now increased and I am very happy with my project till now and look forward to an another successful day.
Today was the Day-6 of completing my Jarvis project. I enjoyed this day also as I added the feature of sports news. Yesterday I added the feature of general news and today sports news. I am very much happy to see my progress in 6 days and now I look forward to an another successful day tomorrow
today was my Day-7 of completing the Jarvis project and today I added the feature of playing any video from YouTube. this is a useful feature as you would just have to speak and the video will be in front of you and would be start playing in just 1 click!! that’s amazing and today I enjoyed adding this feature. looking forward to add new amazing features in my project. if anybody has any idea please comment or DM on slack. signing off for today
Today was another interesting day as I added helper functions to my program that make my program run and are the wheels of my program. I enjoyed this as it cleared my concept of functions in python. see you next day.
Today was another interesting day as I added many more helper functions to my project and I have to add more so it can take a whole week for me to make all the helper functions. finally now my Jarvis is looking like a real project. it has started to feel like an achievement, but my goal is to make it on an another level and for that I’ll give my best
today was another interesting day as I added more helping functions as there are too many features I need too many helper functions. I enjoyed today making these functions as I got to know why to use functions and now my project is a function itself so it is now becoming very interesting and I am very happy seeing my progress. I look forward to an another successful day tomorrow
today was a very tiring day as I made many many many helper functions today and I hope to build more helper functions with more features to make my project next level. I as usual enjoyed this day also but a very tiring one also but no problem for my project I can do anything.The screenshot here covers very less functions but I made around 9 big functions and even more are left. it is going to be challenging but interesting
ok everyone, in these 5 hours I completely changed my code because my Jarvis was facing certain problems. to solve those problems I kind of rewrote the code, but still there are some issues but the code and the performance right now is crazy. I filtered the code by removing the unnecessary part to make the code less complex and yes I took a little bit of help from chat GPT because it is my second python project and I am a coder who is between the beginner and the amateur. So I have literally modified the whole code to reduce the number of problems and I am promising, in the next develop it would be complete....
|
1793188500.604216
|
1793793300.604216
|
|
4192
|
Artemis Hub by @PolarisSpace | Stardance
|
PolarisSpace
|
2
|
26.71
|
220
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T05:49:39Z", "hours": 7.0, "multiplier": 11.2, "payout": 78, "blessing": "neutral", "text": "This is my final ship for this project, I would encourage you to read my last shipment as I go in more detail of what the project is about. Basically, I built a central website hub that provides information on the Artemis Program. You can find certain information on my website within a few clicks what takes 4-8 clicks on the NASA website. Between the first ship to this one, I’ve mainly just been implementing some feedback I got from the first ship such as adding more text information in case someone doesn’t want to watch the videos, and adding random facts about the astronauts. I added dropdowns which display text which you can click to show, I made them drop down just to save space in the screen if it’s not being used. What took me a bit of time though was adding a script that would provide random information about each Artemis mission every time the page is loaded. That part took a little bit because I was running into an issue where facts for Artemis II would show but not Artemis III, it all had to do with text above overriding the text below. I just resolved this issue by adding the Arrays to the individual HTML files as they just shared the main.js file before.", "repo": "https://github.com/PolarisSpaceDev/ArtemisHub.github.io", "demo": "https://ursa-minor-studios.github.io/ArtemisHub.github.io/"}, {"ship_num": 2, "ts": "2026-07-12T02:00:28Z", "hours": 18.0, "multiplier": 7.99, "payout": 142, "blessing": "neutral", "text": "My project is called Artemis Hub, a static website that provides centralized information about the Artemis Program while showing our progress in building a moon base. It prevents people from navigating to multiple YouTube videos or the entire NASA site (I Frequently have to make multiple clicks to navigate that massive site), and just provides all that information on one page. Even to read information about Artemis II on the NASA site, you still have to view more than one page. So that’s the problem this project solves. To me the most challenging part of it was UI design, that’s what I spent most of my time on. I’m not very good at UI design, so this project allowed me to experiment with UI and I’m getting an idea of what works, doesn’t or what could be done better which will help me in future projects. I’ve also learned how to create a JavaScript countdown timer. For those testing the project, I am still working on responsive design, the site is navigable on mobile devices, but it’s a work in progress. This isn’t the final site, I still have more to do, but I’m doing a in-progress shipment. One thing I am proud of is getting the JavaScript countdown working, and the horizontal carousels made. I was too lazy to figure out how to make a carousel in JavaScript so I just used CSS to position each card and style the trackbar. I wasn’t sure if it was going to work, but it did.", "repo": "https://github.com/PolarisSpaceDev/ArtemisHub.github.io", "demo": "https://ursa-minor-studios.github.io/ArtemisHub.github.io/"}]...
|
[{"post_id": 78906, "ts": "202 [{"post_id": 78906, "ts": "2026-10-12T00:16:04Z", "hours": 1.7078, "text": "Made some progress on my Artemis website! Below is the changelog, but the highlight I have to share is the addition of a “Blogs” page that organizes blogs into rows. These blogs will be more detailed Artemis Updates. It’s the first blog structure I’ve done, so wanted to try it out. I also moved the left navigation bubble content to a bottom navigation bar. Removed Removed the bubble navbar on left side (Got moved to newely added bottom navbar) Added Bottom navigation bar Blog Page First Artemis Blog I would encourage you to look around the repository because I made some additions to it. I added badges at the top of the README file to neatly display some information about the website such as its version, programming languages, etc. Also added a CHANGELOG.md file so you can read every single change I’ve made to this website and read any future updates that are released. Created a Discussions tab at Top menu bar > Discussions so I can make announcements and updates about this project."}, {"post_id": 51420, "ts": "2026-08-21T03:36:32Z", "hours": 1.2047, "text": "Completed Artemis II page Completed the Artemis II page where I explained the flight profile, preparations, and its full flight timeline."}, {"post_id": 50781, "ts": "2026-08-20T04:49:37Z", "hours": 0.71, "text": "Artemis II Page Update! Devlog Formatting This is the first devlog that’s formatted nicely, I’ve been writing them on my phone and for some reason it doesn’t format there at all just displays as a large paragraph. But I’m writing this one on a computer allowing me to format paragraphs and headings. Artemis II page I’ve been working on the Artemis II page, I’m not quite finished but got the history of it and the preperations which explains the stacking timeline and the heatshield issue. Artemis I Timeline I added a timeline to the Artemis I page which you can see in the demo link. It shows major events that happened from stacking to reentry. Another thing I did was update the status of Artemis III below that countdown banner."}, {"post_id": 50607, "ts": "2026-08-19T20:21:50Z", "hours": 5.0447, "text": "Hello It’s been a little while since my last devlog but I plan to make them more frequently. This is my first log sincemy first shipment and Ive been spending thelasst 5 hours trying to implement the feedback I got. 1. Someone said it would be nice to see some facts about the astronauts, so I did something like that. I made an array that displays a random fact about the missions every time the page loads. This one took me a while to do because I was running into an issue where the Artemis I facts would display but not the subsequent ones. I went onto Stack Overflow and problem is resolved. 2. Someone said it would be nice to read texts about the missions rather thaan rely on videos because some people have different preferences for how they learn information. So what I did is created a series of dropdowns on the very bottom that tells you information aout the mission. I chose a dropdown format so they dont take up as much space on the page if its not being read."}, {"post_id": 26960, "ts": "2026-07-12T01:48:18Z", "hours": 1.1619, "text": "During this time, I have embedded two NASA simulations into the website for visualization. You can fine them by going to the Artemis II page and going to the moon base page under “Explore”. I also embedded some YouTube videos to #1 let people understand the idea of the Artemis Program and CLPS who aren’t familiar, and #2 you don’t have to search for multiple YouTube videos potentially on different channels. They all are here. And honestly, when you’re navigating a website, it’s more convenient to watch an embedded video than navigate to YouTube. The last thing I worked on a little bit was making the moon base section more mobile responsive. Still looks a little off, but better than it was before."}, {"post_id": 26647, "ts": "2026-07-11T16:13:29Z", "hours": 4.8525, "text": "Quite afew things have been added since my first devlog. So far I’ve worked a little bit on responsive design to make it more viewable on mobile. I also created a little bubble menu which allows you to transition between Hubs. I created a moon basepage which will provide centralized infirmation on our moon base plans specifically. I’m currently inn the process of implementing some of the simulations NASA created within my website through embedding."}, {"post_id": 17701, "ts": "2026-06-28T16:49:08Z", "hours": 6.7403, "text": "I did quite a few things during this 6 hours. First off, I moved the countdown to the top, andit sticks to the top. Secondly, I added a timeline to visually see each launch. The timeline I used is called JSTimrline which ises a spreadsheet you can embed to add a timeline. They also leave the option for you to create a JSON file ehich gives you more styling options. But I didn’t opt into that. Last thing, I’m leaarning how to use api’s. What you can see in the console is the bio for Cristina Koch provided by Launch Library II. I plan to create a bio for eaach of these astronauts only using the api, if the contents of the api change the web page should change automatically. Although I’m limited to 15 requests per hour which is annoying."}, {"post_id": 6291, "ts": "2026-06-10T16:00:06Z", "hours": 2.4675, "text": "I figured out how to make a countdown timer with JavaScript. This will count down the time left until the next Artemis launch. I also included a little tour of the website in the video. In the video I wait fir about 20 seconds to see that number hit 0. You can skip about 20 seconds if you don’t want to wait for that. Then the bottom of the countdown I will input the status of the Artemis mission. I don’t spend a whole lot of time with JavaScript which is why it took me 2 hours to do. Most of my time was figuring out the milliseconds to years, months, days, etc. I wanted it to show 2 days and 4 hours instead of something like 4000 hours. Another thing included in the video is a tour of some of my code. Let me know if you have any feedback."}, {"post_id": 4664, "ts": "2026-06-08T02:08:01Z", "hours": 2.5367, "text": "I’m creating a website that will provide centralized information about the Artemis Program. Demo is linked in the project for you to try out. I still need to make the website more responsive. What I did today was make the landing page for this website. This so far will include Artemis livestreams, videos, and information on specific missions. Deploying this on Github was a big pain because I needed to restructure the entire website directory, so GitHub could find my index.html file, stylesheet, and images. Let me know if you have any feedback, I’m probably going to make the carousels smaller."}]...
|
Title: Artemis Hub by @PolarisSpace | Stardance
D Title: Artemis Hub by @PolarisSpace | Stardance
Devlogs:
I’m creating a website that will provide centralized information about the Artemis Program. Demo is linked in the project for you to try out. I still need to make the website more responsive. What I did today was make the landing page for this website. This so far will include Artemis livestreams, videos, and information on specific missions. Deploying this on Github was a big pain because I needed to restructure the entire website directory, so GitHub could find my index.html file, stylesheet, and images. Let me know if you have any feedback, I’m probably going to make the carousels smaller.
I figured out how to make a countdown timer with JavaScript. This will count down the time left until the next Artemis launch. I also included a little tour of the website in the video. In the video I wait fir about 20 seconds to see that number hit 0. You can skip about 20 seconds if you don’t want to wait for that. Then the bottom of the countdown I will input the status of the Artemis mission. I don’t spend a whole lot of time with JavaScript which is why it took me 2 hours to do. Most of my time was figuring out the milliseconds to years, months, days, etc. I wanted it to show 2 days and 4 hours instead of something like 4000 hours. Another thing included in the video is a tour of some of my code. Let me know if you have any feedback.
I did quite a few things during this 6 hours. First off, I moved the countdown to the top, andit sticks to the top. Secondly, I added a timeline to visually see each launch. The timeline I used is called JSTimrline which ises a spreadsheet you can embed to add a timeline. They also leave the option for you to create a JSON file ehich gives you more styling options. But I didn’t opt into that. Last thing, I’m leaarning how to use api’s. What you can see in the console is the bio for Cristina Koch provided by Launch Library II. I plan to create a bio for eaach of these astronauts only using the api, if the contents of the api change the web page should change automatically. Although I’m limited to 15 requests per hour which is annoying.
Quite afew things have been added since my first devlog. So far I’ve worked a little bit on responsive design to make it more viewable on mobile. I also created a little bubble menu which allows you to transition between Hubs. I created a moon basepage which will provide centralized infirmation on our moon base plans specifically. I’m currently inn the process of implementing some of the simulations NASA created within my website through embedding.
During this time, I have embedded two NASA simulations into the website for visualization. You can fine them by going to the Artemis II page and going to the moon base page under “Explore”. I also embedded some YouTube videos to #1 let people understand the idea of the Artemis Program and CLPS who aren’t familiar, and #2 you don’t have to search for multiple YouTube videos potentially on different channels. They all are here. And honestly, when you’re navigating a website, it’s more convenient to watch an embedded video than navigate to YouTube. The last thing I worked on a little bit was making the moon base section more mobile responsive. Still looks a little off, but better than it was before.
Hello It’s been a little while since my last devlog but I plan to make them more frequently. This is my first log sincemy first shipment and Ive been spending thelasst 5 hours trying to implement the feedback I got. 1. Someone said it would be nice to see some facts about the astronauts, so I did something like that. I made an array that displays a random fact about the missions every time the page loads. This one took me a while to do because I was running into an issue where the Artemis I facts would display but not the subsequent ones. I went onto Stack Overflow and problem is resolved. 2. Someone said it would be nice to read texts about the missions rather thaan rely on videos because some people have different preferences for how they learn information. So what I did is created a series of dropdowns on the very bottom that tells you information aout the mission. I chose a dropdown format so they dont take up as much space on the page if its not being read.
Artemis II Page Update! Devlog Formatting This is the first devlog that’s formatted nicely, I’ve been writing them on my phone and for some reason it doesn’t format there at all just displays as a large paragraph. But I’m writing this one on a computer allowing me to format paragraphs and headings. Artemis II page I’ve been working on the Artemis II page, I’m not quite finished but got the history of it and the preperations which explains the stacking timeline and the heatshield issue. Artemis I Timeline I added a timeline to the Artemis I page which you can see in the demo link. It shows major events that happened from stacking to reentry. Another thing I did was update the status of Artemis III below that countdown banner.
Completed Artemis II page Completed the Artemis II page where I explained the flight profile, preparations, and its full flight timeline.
Made some progress on my Artemis website! Below is the changelog, but the highlight I have to share is the addition of a “Blogs” page that organizes blogs into rows. These blogs will be more detailed Artemis Updates. It’s the first blog structure I’ve done, so wanted to try it out. I also moved the left navigation bubble content to a bottom navigation bar. Removed Removed the bubble navbar on left side (Got moved to newely added bottom navbar) Added Bottom navigation bar Blog Page First Artemis Blog I would encourage you to look around the repository because I made some additions to it. I added badges at the top of the README file to neatly display some information about the website such as its version, programming languages, etc. Also added a CHANGELOG.md file so you can read every single change I’ve made to this website and read any future updates that are released. Created a Discussions tab at Top menu bar > Discussions so I can make announcements and updates about this project.
Ships:
My project is called Artemis Hub, a static website that provides centralized information about the Artemis Program while showing our progress in building a moon base. It prevents people from navigating to multiple YouTube videos or the entire NASA site (I Frequently have to make multiple clicks to navigate that massive site), and just provides all that information on one page. Even to read information about Artemis II on the NASA site, you still have to view more than one page. So that’s the problem this project solves. To me the most challenging part of it was UI design, that’s what I spent most of my time on. I’m not very good at UI design, so this project allowed me to experiment with UI and I’m getting an idea of what works, doesn’t or what could be done better which will help me in future projects. I’ve also learned how to create a JavaScript countdown timer. For those testing the project, I am still working on responsive design, the site is navigable on mobile devices, but it’s a work in progress. This isn’t the final site, I still have more to do, but I’m doing a in-progress shipment. One thing I am proud of is getting the JavaScript countdown working, and the horizontal carousels made. I was too lazy to figure out how to make a carousel in JavaScript so I just used CSS to position each card and style the trackbar. I wasn’t sure if it was going to work, but it did.
This is my final ship for this project, I would encourage you to read my last shipment as I go in more detail of what the project is about. Basically, I built a central website hub that provides information on the Artemis Program. You can find certain information on my website within a few clicks what takes 4-8 clicks on the NASA website. Between the first ship to this one, I’ve mainly just been implementing some feedback I got from the first ship such as adding more text information in case someone doesn’t want to watch the videos, and adding random facts about the astronauts. I added dropdowns which display text which you can click to show, I made them drop down just to save space in the screen if it’s not being used. What took me a bit of time though was adding a script that would provide random information about each Artemis mission every time the page is loaded. That part took a little bit because I was running into an issue where facts for Artemis II would show but not Artemis III, it all had to do with text above overriding the text below. I just resolved this issue by adding the Arrays to the individual HTML files as they just shared the main.js file before....
|
1793112722.0455294
|
1793199122.0455294
|
|
14142
|
Termux :Desktop by @Tan-May | Stardance
|
Tan-May
|
1
|
26.66
|
373
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T18:34:57Z", "hours": 21.0, "multiplier": 18.31, "payout": 373, "blessing": "neutral", "text": "I made a Linux environment inside the android phone which is actually plug and play via xrdp , novnc and the termux X11 , the project was inspiring for me because i got the laptop very late at the age , i really wanted to have a pc or a laptop but in todays gen the phone is becoming capable enough to run full desktop like env in you phone itself just plug your phone to a big monitor and you’re good to go , the challenges i faced were , 1 hardware acc so to use the phones full potential we need to enable the phones hardware acc so that the android will not kill termux that was very hard to tackle", "repo": "https://github.com/Tanmay-1122/Termux-desktop", "demo": "https://termux-dex-demo.vercel.app/"}]...
|
[{"post_id": 26525, "ts": "202 [{"post_id": 26525, "ts": "2026-07-11T11:52:35Z", "hours": 5.6581, "text": "final devlog i guess , okay so after the last rejection of my project , invested lots of time in reducing the installing scripts cause i saw the reviewers recording of using my project , he had to do lots of things manually like installing apps , starting desktop etc so now i made some automated scripts which will install the apps automatically , which are been divided into many other types like browsers , ai apps , ide ,etc so once the script is run , we can install multiple apps simultaneously also cherry on top i also added some themes so that the desktop will also look good im giving this project time because i will be using this project in my next project which is a cyberdeck"}, {"post_id": 9372, "ts": "2026-06-15T18:28:11Z", "hours": 1.6561, "text": "#The Final Devlog Riced my phone though is not a stand alone os but many linux package works in termux too cause basically the android is based on linux :D so most of the package were working and the one which were not working i ditched them , also setup ed a some developer apps like lazyvim via nvim , rofi , vscode , some hardware acc tools too !! also adding the video as the demo"}, {"post_id": 8024, "ts": "2026-06-13T11:58:57Z", "hours": 7.3517, "text": "Devlog #4 — Termux Desktop No new features today — just fixing stuff that was manual hardwork Problem: The setup used one big pkg install to install everything at once. Turns out if even one package fails (like websockify hitting a bad mirror errors again and again ), the whole command dies and nothing else . What I Fixed I Split everything into two scripts: setup.sh — runs once, installs all packages one by one so a single failure doesn’t kill the rest, downloads noVNC, and sets up the home-screen widget start-desktop.sh — unchanged, just launches the desktop like before The widget thing is probably my favourite part of today. setup.sh now automatically creates the Termux:Widget shortcut, so after first-time setup you just tap a button on your home screen to start the desktop. No opening Termux, no typing. Actually plug and play now. Also rewrote the README to match all of this. What Didn’t Work Out Had an idea to build a proper Android app that wraps everything — no terminal at all. But Android sandboxes apps from each other so an APK can’t actually run pkg install inside Termux. It would’ve been a lot of work for not much gain over the widget shortcut. Dropped it. Next Testing everything on a real device tomorrow. Fingers crossed setup.sh doesn’t explode."}, {"post_id": 7379, "ts": "2026-06-12T09:38:08Z", "hours": 0.8658, "text": "Termux :Desktop devlog#3 — the big script cleanup tl;dr had two separate startup scripts doing almost the same thing and it was bothering me merged everything into one unified launcher with a proper menu (A / B / C) termux:x11 is now option A and actually works cleanly alongside the vnc stuff script auto-detects usb tethering vs wifi so you don’t have to think about it xrdp falls back to novnc automatically if usb isn’t connected (so it doesn’t just die) updated the readme to actually reflect what the project does now github: Tanmay-1122/Termux-desktop what i changed the big merge (two scripts → one) before this i had termux11start.sh for termux:x11 and start-desktop.sh for the vnc/xrdp stuff. they were basically doing the same cleanup and xfce setup steps just slightly differently. every time i wanted to fix something i had to do it twice which was annoying so i just merged them. now there’s one script that shows a menu when you run it: A) Termux:X11 — hardware-accelerated ⚡ B) noVNC — browser access (wifi) 🌐 C) xRDP — windows rdp via usb 🪟 pick your mode, it handles the rest. network detection up front script now checks for usb tethering (rndis0 / usb0) and wifi (wlan0) before showing the menu both ips are shown at the top so you know what’s available before you even pick a mode option C shows a warning in the menu itself if usb isn’t detected instead of letting you pick it and then failing shared helper function pulled the .xsession and .Xclients setup into one setup_xsession() function termux:x11 mode doesn’t need this at all (it runs on :0 not :1) so it skips it entirely vnc and xrdp both call it — no more copy-pasted code termux:x11 mode (option A) pulled the logic from termux11start.sh and cleaned it up a bit: starts pulseaudio with tcp auth so audio actually works launches termux-x11 :0 in background, waits 3 seconds calls am start to bring the x11 app to the foreground automatically sets PULSE_SERVER=127.0.0.1 and DISPLAY=:0 then launches xfce4 xrdp fallback if you pick option C but usb isn’t connected, instead of crashing or doing nothing it prints a message and automatically falls back to novnc mode after 3 seconds. small thing but made it way less frustrating to use. readme rewrite the old readme only talked about termux:x11. rewrote it to cover all three modes with: a comparison table so people can pick the right mode for their situation separate install instructions for novnc and xrdp (tigervnc, websockify, xrdp packages) a preview of what the launcher menu actually looks like connection instructions for each mode (what url to open, what app to use, etc.)"}, {"post_id": 6819, "ts": "2026-06-11T13:19:47Z", "hours": 7.3214, "text": "Devlog 2 – Added Rofi Application Launcher Today I worked on improving the usability of my Termux Desktop project by integrating Rofi as the main application launcher. Before this change, launching applications was less convenient and required navigating through menus or using terminal commands. To solve this, I added a custom Rofi setup that allows applications to be launched quickly from a clean search interface. I also created a keyboard shortcut so that pressing Super + Space instantly opens Rofi, making the desktop experience feel much more natural and efficient. While implementing Rofi, I spent time customizing its appearance and layout so that it better matches the overall desktop environment. The launcher now looks cleaner and is easier to use compared to the default configuration. One challenge during this session was finding the right balance between functionality and appearance. I experimented with different configurations before settling on a design that feels responsive and visually appealing. I am currently working on the next phase of the project. My goal is to implement noVNC and XRDP support. With noVNC, users will be able to access the Termux desktop through a web browser on any device connected to the same network. This means the desktop will not be limited to Termux:X11 and can be accessed from PCs, tablets, or other screens using only a browser. I also plan to add XRDP support, which will allow Windows users to connect directly to the Termux desktop using Remote Desktop. This should provide a smoother and more native experience while making the setup significantly more portable. In the future, I will also publish my desktop configuration files (dotfiles) on GitHub so that others can easily recreate the same setup. Overall, today’s work focused on improving accessibility and user experience, bringing the project one step closer to feeling like a complete desktop operating system rather than a Linux environment running on a phone. Rofi screenshots are attached below."}, {"post_id": 6126, "ts": "2026-06-10T09:35:58Z", "hours": 3.3372, "text": "Devlog:1 Termux Desktop Hello everyone , this is my new project (Termux Desktop) which can turn any normal android device into a full fledged linux desktop environment within few clicks , i already worked for something similar to this as my personal protect but it required lots of manual work and debugging but now in this protect i will try to automate everything and within the few clicks you will be able to turn your phone to a pc , i have lots of idea in my mind will go step by step So what i did today !!: so today i worked on setting up a very basic linux gui environment using the Termux and the Termux x11 where i was able to get the display output of the phones native Termux on the Termux x11 as shown in the image i also made a automated script to start the display x11 server automatically when run the command in the Termux’s terminal , it will automatically open the Termux x11 with the linux !"}]...
|
Title: Termux :Desktop by @Tan-May | Stardance
De Title: Termux :Desktop by @Tan-May | Stardance
Devlogs:
Devlog:1 Termux Desktop Hello everyone , this is my new project (Termux Desktop) which can turn any normal android device into a full fledged linux desktop environment within few clicks , i already worked for something similar to this as my personal protect but it required lots of manual work and debugging but now in this protect i will try to automate everything and within the few clicks you will be able to turn your phone to a pc , i have lots of idea in my mind will go step by step So what i did today !!: so today i worked on setting up a very basic linux gui environment using the Termux and the Termux x11 where i was able to get the display output of the phones native Termux on the Termux x11 as shown in the image i also made a automated script to start the display x11 server automatically when run the command in the Termux’s terminal , it will automatically open the Termux x11 with the linux !
Devlog 2 – Added Rofi Application Launcher Today I worked on improving the usability of my Termux Desktop project by integrating Rofi as the main application launcher. Before this change, launching applications was less convenient and required navigating through menus or using terminal commands. To solve this, I added a custom Rofi setup that allows applications to be launched quickly from a clean search interface. I also created a keyboard shortcut so that pressing Super + Space instantly opens Rofi, making the desktop experience feel much more natural and efficient. While implementing Rofi, I spent time customizing its appearance and layout so that it better matches the overall desktop environment. The launcher now looks cleaner and is easier to use compared to the default configuration. One challenge during this session was finding the right balance between functionality and appearance. I experimented with different configurations before settling on a design that feels responsive and visually appealing. I am currently working on the next phase of the project. My goal is to implement noVNC and XRDP support. With noVNC, users will be able to access the Termux desktop through a web browser on any device connected to the same network. This means the desktop will not be limited to Termux:X11 and can be accessed from PCs, tablets, or other screens using only a browser. I also plan to add XRDP support, which will allow Windows users to connect directly to the Termux desktop using Remote Desktop. This should provide a smoother and more native experience while making the setup significantly more portable. In the future, I will also publish my desktop configuration files (dotfiles) on GitHub so that others can easily recreate the same setup. Overall, today’s work focused on improving accessibility and user experience, bringing the project one step closer to feeling like a complete desktop operating system rather than a Linux environment running on a phone. Rofi screenshots are attached below.
Termux :Desktop devlog#3 — the big script cleanup tl;dr had two separate startup scripts doing almost the same thing and it was bothering me merged everything into one unified launcher with a proper menu (A / B / C) termux:x11 is now option A and actually works cleanly alongside the vnc stuff script auto-detects usb tethering vs wifi so you don’t have to think about it xrdp falls back to novnc automatically if usb isn’t connected (so it doesn’t just die) updated the readme to actually reflect what the project does now github: Tanmay-1122/Termux-desktop what i changed the big merge (two scripts → one) before this i had termux11start.sh for termux:x11 and start-desktop.sh for the vnc/xrdp stuff. they were basically doing the same cleanup and xfce setup steps just slightly differently. every time i wanted to fix something i had to do it twice which was annoying so i just merged them. now there’s one script that shows a menu when you run it: A) Termux:X11 — hardware-accelerated ⚡ B) noVNC — browser access (wifi) 🌐 C) xRDP — windows rdp via usb 🪟 pick your mode, it handles the rest. network detection up front script now checks for usb tethering (rndis0 / usb0) and wifi (wlan0) before showing the menu both ips are shown at the top so you know what’s available before you even pick a mode option C shows a warning in the menu itself if usb isn’t detected instead of letting you pick it and then failing shared helper function pulled the .xsession and .Xclients setup into one setup_xsession() function termux:x11 mode doesn’t need this at all (it runs on :0 not :1) so it skips it entirely vnc and xrdp both call it — no more copy-pasted code termux:x11 mode (option A) pulled the logic from termux11start.sh and cleaned it up a bit: starts pulseaudio with tcp auth so audio actually works launches termux-x11 :0 in background, waits 3 seconds calls am start to bring the x11 app to the foreground automatically sets PULSE_SERVER=127.0.0.1 and DISPLAY=:0 then launches xfce4 xrdp fallback if you pick option C but usb isn’t connected, instead of crashing or doing nothing it prints a message and automatically falls back to novnc mode after 3 seconds. small thing but made it way less frustrating to use. readme rewrite the old readme only talked about termux:x11. rewrote it to cover all three modes with: a comparison table so people can pick the right mode for their situation separate install instructions for novnc and xrdp (tigervnc, websockify, xrdp packages) a preview of what the launcher menu actually looks like connection instructions for each mode (what url to open, what app to use, etc.)
Devlog #4 — Termux Desktop No new features today — just fixing stuff that was manual hardwork Problem: The setup used one big pkg install to install everything at once. Turns out if even one package fails (like websockify hitting a bad mirror errors again and again ), the whole command dies and nothing else . What I Fixed I Split everything into two scripts: setup.sh — runs once, installs all packages one by one so a single failure doesn’t kill the rest, downloads noVNC, and sets up the home-screen widget start-desktop.sh — unchanged, just launches the desktop like before The widget thing is probably my favourite part of today. setup.sh now automatically creates the Termux:Widget shortcut, so after first-time setup you just tap a button on your home screen to start the desktop. No opening Termux, no typing. Actually plug and play now. Also rewrote the README to match all of this. What Didn’t Work Out Had an idea to build a proper Android app that wraps everything — no terminal at all. But Android sandboxes apps from each other so an APK can’t actually run pkg install inside Termux. It would’ve been a lot of work for not much gain over the widget shortcut. Dropped it. Next Testing everything on a real device tomorrow. Fingers crossed setup.sh doesn’t explode.
#The Final Devlog Riced my phone though is not a stand alone os but many linux package works in termux too cause basically the android is based on linux :D so most of the package were working and the one which were not working i ditched them , also setup ed a some developer apps like lazyvim via nvim , rofi , vscode , some hardware acc tools too !! also adding the video as the demo
final devlog i guess , okay so after the last rejection of my project , invested lots of time in reducing the installing scripts cause i saw the reviewers recording of using my project , he had to do lots of things manually like installing apps , starting desktop etc so now i made some automated scripts which will install the apps automatically , which are been divided into many other types like browsers , ai apps , ide ,etc so once the script is run , we can install multiple apps simultaneously also cherry on top i also added some themes so that the desktop will also look good im giving this project time because i will be using this project in my next project which is a cyberdeck
Ships:
I made a Linux environment inside the android phone which is actually plug and play via xrdp , novnc and the termux X11 , the project was inspiring for me because i got the laptop very late at the age , i really wanted to have a pc or a laptop but in todays gen the phone is becoming capable enough to run full desktop like env in you phone itself just plug your phone to a big monitor and you’re good to go , the challenges i faced were , 1 hardware acc so to use the phones full potential we need to enable the phones hardware acc so that the android will not kill termux that was very hard to tackle...
|
1792878735.8006952
|
1793742735.8006952
|
|
13287
|
VisualX Engine by @albaraa | Stardance
|
albaraa
|
0
|
26.65
|
0
|
[]
|
[{"post_id": 15195, "ts": "202 [{"post_id": 15195, "ts": "2026-06-24T18:13:34Z", "hours": 10.0783, "text": "Wrapped the Shading Wrapped OpenGL shader program management into a reusable Shader_Class , built on top of the core OOP system. This allows shader programs to be initialized from file paths and bound cleanly during rendering, improving structure and reuse across the engine."}, {"post_id": 11890, "ts": "2026-06-19T11:42:22Z", "hours": 6.7839, "text": "Window + Rendering Implemented the engine’s first rendering milestone: Created a GLFW window Initialized OpenGL rendering Rendered basic triangles The engine can now render triangles to the screen"}, {"post_id": 8877, "ts": "2026-06-14T19:43:37Z", "hours": 4.3583, "text": "Finished core Added core OOP system into engine project: member_t : member variables container. method_t : member methods container. class_t : class structure that resembles a type, contains static/class members and methods. object_t : object instance that belongs to a class, contains instance members and methods. Alongside functions to use the data types safely. (usage shown in the attached image.)"}, {"post_id": 8056, "ts": "2026-06-13T13:15:20Z", "hours": 5.4322, "text": "core Library Integration Integrating my core library code into the project. Added four main types: - string_t - Dynamic string with full API - vector_t - Generic dynamic vector with full API, and deep-copy and destroy optional function callbacks - map_t - key,value generic dynamic map with full API, also allows for deep-copy and destroy function callbacks - file_t - Dynamic file reader/writer built on string_t and vector_t These data-structures and data-types are going to be the base of the entire engine."}]...
|
Title: VisualX Engine by @albaraa | Stardance
Dev Title: VisualX Engine by @albaraa | Stardance
Devlogs:
core Library Integration Integrating my core library code into the project. Added four main types: - string_t - Dynamic string with full API - vector_t - Generic dynamic vector with full API, and deep-copy and destroy optional function callbacks - map_t - key,value generic dynamic map with full API, also allows for deep-copy and destroy function callbacks - file_t - Dynamic file reader/writer built on string_t and vector_t These data-structures and data-types are going to be the base of the entire engine.
Finished core Added core OOP system into engine project: member_t : member variables container. method_t : member methods container. class_t : class structure that resembles a type, contains static/class members and methods. object_t : object instance that belongs to a class, contains instance members and methods. Alongside functions to use the data types safely. (usage shown in the attached image.)
Window + Rendering Implemented the engine’s first rendering milestone: Created a GLFW window Initialized OpenGL rendering Rendered basic triangles The engine can now render triangles to the screen
Wrapped the Shading Wrapped OpenGL shader program management into a reusable Shader_Class , built on top of the core OOP system. This allows shader programs to be initialized from file paths and bound cleanly during rendering, improving structure and reuse across the engine....
|
1793166687.9128354
|
1793771487.9128354
|
|
41501
|
SMC_breach by @finitecode | Stardance
|
finitecode
|
1
|
26.61
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-01T11:16:06Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The final breach Clearly an attempt to make a statement but it goes way beyond that. This Project - SMC_breach has proven to be largely successful. A project that finally allows you to view hardware power statistics as you use your mac device. Making this wasn’t easy, neither was the 9hr+ grind, In this short period of time I did over 700+ lines of code, but more than the numbers, I learned. Learned to: Talk to kernel. To make a beautiful UI. Version Management with Github. CI/CD automated build pipelines. and more importantly: A way to connect! with my devlogs, I got a little over 500 total views, which is an absolute achievement if you think about it. 500 actual people in a large hall, yup that’s pretty compact. Nonetheless the Project is live and functional and there’s more coming in a few hours of my final push, including charging control, battery cycles count, more accurate readings and if hopefully everything goes well, live USB readings too!", "repo": "https://github.com/Finite-Code/SMC_breach", "demo": "https://github.com/Finite-Code/SMC_breach/releases"}]...
|
[{"post_id": 69198, "ts": "202 [{"post_id": 69198, "ts": "2026-09-16T16:00:08Z", "hours": 2.9225, "text": "Coming back at it For a long time now I was gone, this was mostly due to academics and the ongoing festive season in India rn. I do hope I’ll be able to work again on it soon. These 3 logged hours featured minor bug fixes in the app. but since it’s been a month since these hours were logged, I don’t recall what it exactly was spent on. With that said, I also upgraded the README in the meantime."}, {"post_id": 44718, "ts": "2026-08-10T17:37:43Z", "hours": 5.4497, "text": "Been kinda busyyy Lately I didn’t make many changes to my code, but I managed to crunch in a solid 5 hours of work. Did nothing insane infact, these 5 must’ve probably been one of my least unproductive hours so far, but I’ve got to work with what I have, school, family and my hobbies (this thing) and hence it has been a little taxing. Nonetheless I cleaned up my code, added some comments and built a small flow chart for myself (which I also managed to loose But that were my 5hrs pretty much, a mix of organization and anxiety, charge control is still finicky so I’ll try my best to get it right ASAP. PS: See the screenshot? those bytes were peak madness, I barely understand what I did there but uhmm, I’ll catch up, promise :) Peace"}, {"post_id": 42088, "ts": "2026-08-06T17:31:10Z", "hours": 4.0061, "text": "A comeback, we’re in the works!!! Breaching into macs just got EASIER :) Charging Control now Partially works on my mac, it’s finicky! How it works? It took some inline python, sudo access (yep sudo is needed for charging control) and writing specific flags, since the flags part is something I’m still researching I’d best avoid from naming any stuff too early. Why sudo? We need superuser-do because at this stage we’re actually breaching in and modifying the system itself and hence permitted and legitemate superuser access is necessary While I can’t reveal a lot right now since it’s all over the place and I don’t wanna pass on the wrong stuff, I’m getting closer. Peace."}, {"post_id": 39956, "ts": "2026-08-03T09:11:00Z", "hours": 4.3928, "text": "When it doesn’t work out pssst, Commented below is the github link if you wanna breach into your Macbook too! *M1 and later, running macOS Tahoe or greater yepp, it didn’t work out this time and it’s totally FINE. a few things I learnt along the way, that I thought I might share with you all. What was it? So basically my app SMC_breach has placeholder buttons right now for: Charge to... and Charge Now both of these serve the purpose of charging control. The idea was simple AF: Gonna let these buttons speak to Darwin and then write the specific hex values (I suppose that is what you call them unofficially). Writing those values would basically let us tell the physical hardware that hey u gotta stop taking in current now! or hey stop taking current into the battery at X% Nonetheless after countless tries I failed within that 5 hour timespan, I’m gonna give it a shot again and I love to fail fast because the amount of data and automatic guidance u get is pretty cool! Peace."}, {"post_id": 39057, "ts": "2026-08-01T18:51:45Z", "hours": 1.8408, "text": "I talked to my mac’s kernel, she’s too rude Insanity Not only did it cost my sanity but over 3 hours of debugging, talking to the kernel, Gemini Research Mode Chats, and of course 2 hours of Xcode! What’s all this? If you’ve been out of the loop, this is my project SMC_breach and it directly talks to macOS and the underlying Darwin kernel to deliver live power usage statistics to you, all that right in the menu bar! The Result Now my app interfaces with the kernel using private APIs (IOReport), and delivers live metrics that update by the instant! Next Steps? Now that I’ve tamed her (Darwin kernel) I’m gonna convince her to do nothing actually for now, but my next shot is at the USB ports to get the live incoming and outgoing power data out of doze nutss. Thanks for checking this out, do rate my project if you enjoy it, be SURE to try it! Feedback is always appreciated, love y’all for reading till the bottom!"}, {"post_id": 38433, "ts": "2026-07-31T19:53:32Z", "hours": 0.31, "text": "Breaching into my mac before I sleep! :add-bad-apple-bruh: At this point, I’ve managed to get absolute cinema levels of access to the system. After extensive research btwn yesterday and tmrw I’ve figured out that the IOKit framework I yapped about earlier is an absolute tragedy, it’s: SLOW & USELESS. The data it provides updates on USB/Magsafe plug & play events or once in 2 minutes or so, nice for uncs but not for me blud. And I discovered the God Not literally but not metaphorically either. Nonetheless now I’m gonna have to directly communicate with the Darwin kernel (the main guts of macOS) to gather all power related data (This might make my app need sudo ) but: quality > security panic and it’s open source so you can always see what’s going on under the hood. This is me signing off before I sleep! if you read till here, hit follow and we can exchange a couple greetings? won’t ya?"}, {"post_id": 38406, "ts": "2026-07-31T19:12:51Z", "hours": 2.0586, "text": "I had told you I’m silly, and I proved myself right Historically great people have been great problem solvers, and to this day I used to think I was one. But today my hopes were shattered, because how silly and d*mb can you really get? I managed to think that my app has some severe error or a Memory leak, that’s causing it to stop at Thread 1 everytime I run it! I wasted 30mins looking for it, turns out it was just a breakpoint I had set. I’m at a loss for words because how do I even speak for myself?"}, {"post_id": 38112, "ts": "2026-07-31T10:19:39Z", "hours": 2.205, "text": "A new icon! and a new Interface! It’s been 15 hours since my last devlog, had my night’s sleep, completed school, and worked for 3 hours too! and finally, I think I’m ready to present you with an icon, it’s not perfect, it’s not the best, but it’s my (sub-par) greatest creation. Presenting - SMC_breach …"}, {"post_id": 37818, "ts": "2026-07-30T19:26:14Z", "hours": 0.5956, "text": "Better Animations, better data The app now let’s you monitor live stats, features better scrolling text animations. I made sure the app was polling the system every 0.25 seconds, then it was averaging out the 4 data points at 0.25s intervals and giving the user a smooth 1 reading per second. The Reward and the Challenge This is now complemented by the animations which honestly took a solid amount of trial and error to get right, the key to mastering this was smooth fade out of the numbers, along side using the array chopping for animate per digit’s place!"}, {"post_id": 37774, "ts": "2026-07-30T18:06:00Z", "hours": 0.7561, "text": "Liquid Glass and UI Update! My mom keeps calling me dumb occasionally, not that she means any harm, but she might be correct. I spent 15 minutes trying to figure out why I can’t apply Liquid Glass elements to my app. Guess what was the issue? can ya? 3… 2… 1… My dumb ahh forgot that you don’t add .glasseffect() inside of a .background() block. yepp, that silly it was, but nonetheless Liquid Glass is up and running now. From here on I gotta figure out how I can make the glass clearer, adjust depth, splay, dispersion. etc etc The second Image represents my earlier mockup"}, {"post_id": 37654, "ts": "2026-07-30T15:24:36Z", "hours": 0.2725, "text": "Making the Figma UI Prototype! Probably the only non-coding part here. First off, I’m kinda in love… with my design. Not only did I have to spend over an hour tweaking the correct liquid glass settings in Figma, I also I had put all my brain into designing this, trying to get the best of UX and a delight to the eye. btw a hack for anyone tryna do liquid glass and make it readable, try to spike up the Frost slider in the settings ;) I’ve also added My Mockup vs Vibecode UI Mockup in the Screenshots! The next step is gonna be to implement this, and I’m more excited than you think!"}, {"post_id": 37611, "ts": "2026-07-30T14:01:56Z", "hours": 0.8222, "text": "Now I have the access to the internals of macOS As promised through devlog #2 and devlog #3. I now have access to internal data states of macOS. Currently the power data displayed is correct and alongside is fully functional, now it’s time to switch up the and give it a face-lift. I’ve also discovered on features like Charge Control and more internal data states mentioned earlier. I’ll share the facelift soon, the Github code is now live and available with downloads, I’ll share the source in my next devlog. Thanks for following the journey, do follow it and I’ve got something a lot bigger going on, (a potential AA style title in browser)"}, {"post_id": 37523, "ts": "2026-07-30T10:28:07Z", "hours": 0.3511, "text": "The Skeleton is here! As stated in my previous devlog #2, the skeleton UI is now here, I’ve plugged in all the functions and metrics to gather data but a fix is needed to make all these display correct values, for now, we have a correct UpTime status and a correct Adapter Wattage reading. Other details remain to be fixed. thanks to the code completion I was able to type out these ~200 lines in under 25 minutes!"}, {"post_id": 37511, "ts": "2026-07-30T09:50:50Z", "hours": 0.4664, "text": "Now I have low-level Access to macOS This is just theory, but realistically I’m only a couple of hours away from making this true. Upon extensive research and code review on various online posts and OSS, I was able to find that: Apple introduced a detailed sub-dictionary within the AppleSmartBattery node on Apple Silicon architectures (M1 and beyond), known as PowerTelemetryData . The PowerTelemetryData structure yields three critical metrics that must be utilized by my app: a) SystemPowerIn : This represents the total DC power entering the machine’s logic board directly from the external AC adapter, “prior to any internal routing”. b) BatteryPower : This metric indicates the precise amount of power actively being routed into the battery for charging, or being pulled from the battery for discharging. (However many projects instead preferred manual calculation using our standard Voltage * InstantAmperage formula, likely for better accuracy?). c) SystemLoad : This defines the total localized power being consumed internally by the logic board, the System-on-Chip, the display, and all active peripherals. Stay tuned, I’m finally gonna play with these metrics!"}, {"post_id": 37166, "ts": "2026-07-29T17:45:38Z", "hours": 0.5917, "text": "First day, first run, not like the average honeymoon phase! What’s up folks? this is Atharva known online as FiniteCode. This project is about building a macOS Power Information Utility, wherein the user can view live stats of power consumption and intake for their macbooks (and potentially macs too). This project is gonna be interesting, this is probably my 3rd or 4th time attempting to work with Swift, it has always been fun. Hidden APIs macOS itself doesn’t natively broadcast a lot of the power information to the Applications, and so you have to go through hidden system APIs. This is one of the reasons why such Power Management apps are never on the App Store but on sources like Homebrew or Github. The Setup Today I spent over 30minutes setting up my time tracking with Wakatime and connecting it to Stardance metrics, and submitted my IDs for verification. It was after these basics where I started my research on the hidden APIs I talked about earlier, which for the base for the application, I utilized Gemini and Claude for researching on the same and my findings revealed an IOKitFramework called powermetrics which provides many C functions like: IOReportCopyChannelsInGroup , IOReportMergeChannels , IOReportCreateSubscription , IOReportCreateSamples , and IOReportCreateSamplesDelta . The goal will be to use these functions and as much more data as available to build on this app. Design I was thinking of making a Cyberpunk-esque design but honestly I’m not sure if I can do this, so we’ll come back to this one some time soon, for now the core focus is on the functionality. Screenshots I made the basic menu-bar app and setup Xcode and hence attached some screenshots, feel free to have a look. Join me in this journey, where I’ll try to make something useful, something fun XD"}]...
|
Title: SMC_breach by @finitecode | Stardance
Devl Title: SMC_breach by @finitecode | Stardance
Devlogs:
First day, first run, not like the average honeymoon phase! What’s up folks? this is Atharva known online as FiniteCode. This project is about building a macOS Power Information Utility, wherein the user can view live stats of power consumption and intake for their macbooks (and potentially macs too). This project is gonna be interesting, this is probably my 3rd or 4th time attempting to work with Swift, it has always been fun. Hidden APIs macOS itself doesn’t natively broadcast a lot of the power information to the Applications, and so you have to go through hidden system APIs. This is one of the reasons why such Power Management apps are never on the App Store but on sources like Homebrew or Github. The Setup Today I spent over 30minutes setting up my time tracking with Wakatime and connecting it to Stardance metrics, and submitted my IDs for verification. It was after these basics where I started my research on the hidden APIs I talked about earlier, which for the base for the application, I utilized Gemini and Claude for researching on the same and my findings revealed an IOKitFramework called powermetrics which provides many C functions like: IOReportCopyChannelsInGroup , IOReportMergeChannels , IOReportCreateSubscription , IOReportCreateSamples , and IOReportCreateSamplesDelta . The goal will be to use these functions and as much more data as available to build on this app. Design I was thinking of making a Cyberpunk-esque design but honestly I’m not sure if I can do this, so we’ll come back to this one some time soon, for now the core focus is on the functionality. Screenshots I made the basic menu-bar app and setup Xcode and hence attached some screenshots, feel free to have a look. Join me in this journey, where I’ll try to make something useful, something fun XD
Now I have low-level Access to macOS This is just theory, but realistically I’m only a couple of hours away from making this true. Upon extensive research and code review on various online posts and OSS, I was able to find that: Apple introduced a detailed sub-dictionary within the AppleSmartBattery node on Apple Silicon architectures (M1 and beyond), known as PowerTelemetryData . The PowerTelemetryData structure yields three critical metrics that must be utilized by my app: a) SystemPowerIn : This represents the total DC power entering the machine’s logic board directly from the external AC adapter, “prior to any internal routing”. b) BatteryPower : This metric indicates the precise amount of power actively being routed into the battery for charging, or being pulled from the battery for discharging. (However many projects instead preferred manual calculation using our standard Voltage * InstantAmperage formula, likely for better accuracy?). c) SystemLoad : This defines the total localized power being consumed internally by the logic board, the System-on-Chip, the display, and all active peripherals. Stay tuned, I’m finally gonna play with these metrics!
The Skeleton is here! As stated in my previous devlog #2, the skeleton UI is now here, I’ve plugged in all the functions and metrics to gather data but a fix is needed to make all these display correct values, for now, we have a correct UpTime status and a correct Adapter Wattage reading. Other details remain to be fixed. thanks to the code completion I was able to type out these ~200 lines in under 25 minutes!
Now I have the access to the internals of macOS As promised through devlog #2 and devlog #3. I now have access to internal data states of macOS. Currently the power data displayed is correct and alongside is fully functional, now it’s time to switch up the and give it a face-lift. I’ve also discovered on features like Charge Control and more internal data states mentioned earlier. I’ll share the facelift soon, the Github code is now live and available with downloads, I’ll share the source in my next devlog. Thanks for following the journey, do follow it and I’ve got something a lot bigger going on, (a potential AA style title in browser)
Making the Figma UI Prototype! Probably the only non-coding part here. First off, I’m kinda in love… with my design. Not only did I have to spend over an hour tweaking the correct liquid glass settings in Figma, I also I had put all my brain into designing this, trying to get the best of UX and a delight to the eye. btw a hack for anyone tryna do liquid glass and make it readable, try to spike up the Frost slider in the settings ;) I’ve also added My Mockup vs Vibecode UI Mockup in the Screenshots! The next step is gonna be to implement this, and I’m more excited than you think!
Liquid Glass and UI Update! My mom keeps calling me dumb occasionally, not that she means any harm, but she might be correct. I spent 15 minutes trying to figure out why I can’t apply Liquid Glass elements to my app. Guess what was the issue? can ya? 3… 2… 1… My dumb ahh forgot that you don’t add .glasseffect() inside of a .background() block. yepp, that silly it was, but nonetheless Liquid Glass is up and running now. From here on I gotta figure out how I can make the glass clearer, adjust depth, splay, dispersion. etc etc The second Image represents my earlier mockup
Better Animations, better data The app now let’s you monitor live stats, features better scrolling text animations. I made sure the app was polling the system every 0.25 seconds, then it was averaging out the 4 data points at 0.25s intervals and giving the user a smooth 1 reading per second. The Reward and the Challenge This is now complemented by the animations which honestly took a solid amount of trial and error to get right, the key to mastering this was smooth fade out of the numbers, along side using the array chopping for animate per digit’s place!
A new icon! and a new Interface! It’s been 15 hours since my last devlog, had my night’s sleep, completed school, and worked for 3 hours too! and finally, I think I’m ready to present you with an icon, it’s not perfect, it’s not the best, but it’s my (sub-par) greatest creation. Presenting - SMC_breach …
I had told you I’m silly, and I proved myself right Historically great people have been great problem solvers, and to this day I used to think I was one. But today my hopes were shattered, because how silly and d*mb can you really get? I managed to think that my app has some severe error or a Memory leak, that’s causing it to stop at Thread 1 everytime I run it! I wasted 30mins looking for it, turns out it was just a breakpoint I had set. I’m at a loss for words because how do I even speak for myself?
Breaching into my mac before I sleep! :add-bad-apple-bruh: At this point, I’ve managed to get absolute cinema levels of access to the system. After extensive research btwn yesterday and tmrw I’ve figured out that the IOKit framework I yapped about earlier is an absolute tragedy, it’s: SLOW & USELESS. The data it provides updates on USB/Magsafe plug & play events or once in 2 minutes or so, nice for uncs but not for me blud. And I discovered the God Not literally but not metaphorically either. Nonetheless now I’m gonna have to directly communicate with the Darwin kernel (the main guts of macOS) to gather all power related data (This might make my app need sudo ) but: quality > security panic and it’s open source so you can always see what’s going on under the hood. This is me signing off before I sleep! if you read till here, hit follow and we can exchange a couple greetings? won’t ya?
I talked to my mac’s kernel, she’s too rude Insanity Not only did it cost my sanity but over 3 hours of debugging, talking to the kernel, Gemini Research Mode Chats, and of course 2 hours of Xcode! What’s all this? If you’ve been out of the loop, this is my project SMC_breach and it directly talks to macOS and the underlying Darwin kernel to deliver live power usage statistics to you, all that right in the menu bar! The Result Now my app interfaces with the kernel using private APIs (IOReport), and delivers live metrics that update by the instant! Next Steps? Now that I’ve tamed her (Darwin kernel) I’m gonna convince her to do nothing actually for now, but my next shot is at the USB ports to get the live incoming and outgoing power data out of doze nutss. Thanks for checking this out, do rate my project if you enjoy it, be SURE to try it! Feedback is always appreciated, love y’all for reading till the bottom!
When it doesn’t work out pssst, Commented below is the github link if you wanna breach into your Macbook too! *M1 and later, running macOS Tahoe or greater yepp, it didn’t work out this time and it’s totally FINE. a few things I learnt along the way, that I thought I might share with you all. What was it? So basically my app SMC_breach has placeholder buttons right now for: Charge to... and Charge Now both of these serve the purpose of charging control. The idea was simple AF: Gonna let these buttons speak to Darwin and then write the specific hex values (I suppose that is what you call them unofficially). Writing those values would basically let us tell the physical hardware that hey u gotta stop taking in current now! or hey stop taking current into the battery at X% Nonetheless after countless tries I failed within that 5 hour timespan, I’m gonna give it a shot again and I love to fail fast because the amount of data and automatic guidance u get is pretty cool! Peace.
A comeback, we’re in the works!!! Breaching into macs just got EASIER :) Charging Control now Partially works on my mac, it’s finicky! How it works? It took some inline python, sudo access (yep sudo is needed for charging control) and writing specific flags, since the flags part is something I’m still researching I’d best avoid from naming any stuff too early. Why sudo? We need superuser-do because at this stage we’re actually breaching in and modifying the system itself and hence permitted and legitemate superuser access is necessary While I can’t reveal a lot right now since it’s all over the place and I don’t wanna pass on the wrong stuff, I’m getting closer. Peace.
Been kinda busyyy Lately I didn’t make many changes to my code, but I managed to crunch in a solid 5 hours of work. Did nothing insane infact, these 5 must’ve probably been one of my least unproductive hours so far, but I’ve got to work with what I have, school, family and my hobbies (this thing) and hence it has been a little taxing. Nonetheless I cleaned up my code, added some comments and built a small flow chart for myself (which I also managed to loose But that were my 5hrs pretty much, a mix of organization and anxiety, charge control is still finicky so I’ll try my best to get it right ASAP. PS: See the screenshot? those bytes were peak madness, I barely understand what I did there but uhmm, I’ll catch up, promise :) Peace
Coming back at it For a long time now I was gone, this was mostly due to academics and the ongoing festive season in India rn. I do hope I’ll be able to work again on it soon. These 3 logged hours featured minor bug fixes in the app. but since it’s been a month since these hours were logged, I don’t recall what it exactly was spent on. With that said, I also upgraded the README in the meantime.
Ships:
The final breach Clearly an attempt to make a statement but it goes way beyond that. This Project - SMC_breach has proven to be largely successful. A project that finally allows you to view hardware power statistics as you use your mac device. Making this wasn’t easy, neither was the 9hr+ grind, In this short period of time I did over 700+ lines of code, but more than the numbers, I learned. Learned to: Talk to kernel. To make a beautiful UI. Version Management with Github. CI/CD automated build pipelines. and more importantly: A way to connect! with my devlogs, I got a little over 500 total views, which is an absolute achievement if you think about it. 500 actual people in a large hall, yup that’s pretty compact. Nonetheless the Project is live and functional and there’s more coming in a few hours of my final push, including charging control, battery cycles count, more accurate readings and if hopefully everything goes well, live USB readings too!...
|
1792396352.7621036
|
1793260352.7621036
|
|
45016
|
Transparent Macropad by @Tensor | Stardance
|
Tensor
|
0
|
26.61
|
0
|
[]
|
[{"post_id": 76770, "ts": "202 [{"post_id": 76770, "ts": "2026-10-04T15:06:00Z", "hours": 0.7, "text": "Devlog 14: -The Hackpad kit is here! -Did some improvements on the case. Extra: The parts (only the hackpad kit ) are finally here after 1 month of waiting. And I can (not) finally start making the hackpad! Anyway. I totally forgot (didn’t bother doing it) to order the case and PCB until now. But that was actually a good thing, since there where some things I had to change on the case so that everything would fit without any problems. I’m also considering using KMK instead of QMK since I now know how to code in Python. I’m switching because I don’t know if my code for QMK will work. And because I got help from AI more then I’d like. I’ll have to wait until I get either the “Printing Legion” grant or get a reimbursement that I can use JLC3DP to get my case. Edit: I got the grant and was about to order the parts. But apparently, JLCPCB adds the Tax and Customs Duties directly in the same order. Which makes the order a whole $37.62! Which is obviously to much to be able to use the 2 grants. Guess I’ll have to wait for reply on Slack before ordering. Another thing. I’m not sure what the “special something” that was supposed to come in the Hackpad kit was/is. (2nd Image. And there are just parts under the paper). Here is the link: https://hackclub.enterprise.slack.com/archives/C07S1RDHN14/p1788190369398089"}, {"post_id": 58150, "ts": "2026-08-30T14:41:56Z", "hours": 0.5167, "text": "Update: I have now printed a test case and pcb to check measurements etc. It looks good and is the perfect size, so I’m happy with it. One thing I need to fix is the screen placement since it doesn’t fully line up with the cutout. (3rd Image) See ya in the next one"}, {"post_id": 52989, "ts": "2026-08-23T11:23:20Z", "hours": 1.1667, "text": "Devlog 13.2: -Made some changes in the GitHub repository. -Remade the README.md file because it got deleted by accident. Extra: I also made a quick assembly instruction just because. I’ll add more later maybe."}, {"post_id": 52441, "ts": "2026-08-22T15:42:17Z", "hours": 0.5333, "text": "Devlog 13.1: -Added some things to the README.md file on GitHub. -Fixed some things with the GitHub repository."}, {"post_id": 51758, "ts": "2026-08-21T16:20:39Z", "hours": 1.5833, "text": "Devlog 13: -Finally got the code working (hopefully). -Made a repository for all of the files. Extra: I’m finally done with making my first project (not including assembling). It was a bit hard at times (only coding), but still very fun overall. This project also got tagged as a “Super Star Project” which I didn’t even know what it was until I searched it up. It’s kinda un-imaginable for me that I managed to make something that got tagged with a “Super star”. Maybe I’m glorifying it a bit too much, but I’m still happy. I’ll try submitting the files soon and maybe give one last update when the parts arrives."}, {"post_id": 51085, "ts": "2026-08-20T16:06:42Z", "hours": 1.15, "text": "Devlog 12.1: Still learning how to code. And now that school has started I now have a lot more to do. I’ll try getting this project finished soon since there is something else I also want to do."}, {"post_id": 50385, "ts": "2026-08-19T15:34:43Z", "hours": 0.9831, "text": "Devlog 12: -Fixed some problems in KiCad -Started organizing some of the files. Extra: I haven’t been felling well these past two days so haven’t really done much. But now I’m feeling better and I’ll try making the finishing touches. Now I know the basics for GitHub (I’m new to this) and I am currently learning how to code and how QMK works."}, {"post_id": 49660, "ts": "2026-08-18T15:27:14Z", "hours": 0.5833, "text": "Devlog 11.2: -No “real” progress once again. Trying to learn how to code and how to use GitHub since I’m new to both."}, {"post_id": 48864, "ts": "2026-08-17T12:54:32Z", "hours": 0.3167, "text": "Devlog 11.1: -No “real” progress today :( Extra: Im just trying to figure out what to do now that Im done with the PCB and case. If anyone else is done with their Hackpad and are willing to help id really appreciate it"}, {"post_id": 48113, "ts": "2026-08-16T12:26:04Z", "hours": 1.3, "text": "Devlog 11: -Added some space for the head of the screw to sit in (so it doesn’t stick out). -Drew some doodles on the PCB. Extra: The filament I have is apparently not “see-through” enough, so I have to purchase a new roll. If you have any recommendations on good transparent filament id appreciate it. I didn’t notice until now that Transparent and Translucent are not the same. Oh btw, what should I draw in the red circle on the 2nd image. Preferably something that has to do something with electricity since it’s right in front of the type-C port. Maybe a pokemon or smt."}, {"post_id": 47442, "ts": "2026-08-15T11:30:46Z", "hours": 0.9511, "text": "Devlog 10: -Added ridges on the knob for better grip. -Made the walls on the case thinner (from 1.2mm to 1.0mm) -Added screws in the model (not visible in the image). What an achievement I know. Extra: I have now printed 2 test pieces (at this point in time) for the case to be able to improve the overall “see-through-ness” (is that even a real word) of the finished case. They are not sanded or anything so I believe that I can improve the “see-through-ness” (said it again) alot. Image: As you can see it’s not really “see-through” enough. I added a tiny support for the PCB mount (where the PCB sits). Edit: The case and knob will be printed with resin instead for a much clearer look. Edit: The case and knob will be made with resin."}, {"post_id": 46765, "ts": "2026-08-14T08:01:17Z", "hours": 1.3167, "text": "Devlog 9: -Finished up the case. -Made a knob. -Changed material on the LEDs so they would light up in the render. Extra: I got the color off the case as close as possible (not including layer lines) to the real filament that Im using (Unfortunately it won’t be this clear since it’s 3d printed). I also tested a few different colors on the PCB to see what looked the best with my current color scheme. Question: Should I remove the LED under the knob or leave it be? Blue PCB or Green PCB? Share your opinion in the comments if you’d like ^_^"}, {"post_id": 46248, "ts": "2026-08-13T11:08:27Z", "hours": 1.2261, "text": "Devlog 8: -Continued with the case. Extra: I did a quick render of how it will look when it’s finished. Since I couldn’t get the color or texture right (comparing to a failed 3d-printed piece I have), it will be a slightly different color and have layer lines where I can not sand them down."}, {"post_id": 45930, "ts": "2026-08-12T18:33:57Z", "hours": 1.1167, "text": "Devlog 7: -Did some changes on the PCB so that the screw mount would fit without problem. -Remade the case again (not done yet). Extra: The new case looks almost identical to the last one. And they are. Except for a few measurements."}, {"post_id": 45736, "ts": "2026-08-12T12:48:00Z", "hours": 3.9164, "text": "Devlog 6: -Started with the case design. -Added screw/mounting holes on the PCB. Extra: I just wanted to add that I haven’t been able to log my hours these past 2 days because of an issue with hackatime. So I decided to start over with the case (had to remake it no matter what so there is no real problem)"}, {"post_id": 43996, "ts": "2026-08-09T14:10:26Z", "hours": 2.1925, "text": "Devlog 5: -Moved some components -Rerouted the traces -Tested and played around a bit with adding images to the pcb"}, {"post_id": 43466, "ts": "2026-08-08T18:58:29Z", "hours": 2.1494, "text": "Devlog 4: -Started organizing the components -Added the components 3d models -Started routing the Traces Ill change the clearence between components and re-route the traces next time"}, {"post_id": 43293, "ts": "2026-08-08T14:01:50Z", "hours": 1.8833, "text": "Devlog 3: Started over because i wanted to add LEDs and had to change to matrix wiring for all the switches to work."}, {"post_id": 42738, "ts": "2026-08-07T16:35:56Z", "hours": 1.2, "text": "Devlog 2: Checking measurements and changing a few things"}, {"post_id": 42635, "ts": "2026-08-07T13:39:47Z", "hours": 1.8281, "text": "Devlog 1: Started on my macropad for the “Hackpad misson”"}]...
|
Title: Transparent Macropad by @Tensor | Stardance Title: Transparent Macropad by @Tensor | Stardance
Devlogs:
Devlog 1: Started on my macropad for the “Hackpad misson”
Devlog 2: Checking measurements and changing a few things
Devlog 3: Started over because i wanted to add LEDs and had to change to matrix wiring for all the switches to work.
Devlog 4: -Started organizing the components -Added the components 3d models -Started routing the Traces Ill change the clearence between components and re-route the traces next time
Devlog 5: -Moved some components -Rerouted the traces -Tested and played around a bit with adding images to the pcb
Devlog 6: -Started with the case design. -Added screw/mounting holes on the PCB. Extra: I just wanted to add that I haven’t been able to log my hours these past 2 days because of an issue with hackatime. So I decided to start over with the case (had to remake it no matter what so there is no real problem)
Devlog 7: -Did some changes on the PCB so that the screw mount would fit without problem. -Remade the case again (not done yet). Extra: The new case looks almost identical to the last one. And they are. Except for a few measurements.
Devlog 8: -Continued with the case. Extra: I did a quick render of how it will look when it’s finished. Since I couldn’t get the color or texture right (comparing to a failed 3d-printed piece I have), it will be a slightly different color and have layer lines where I can not sand them down.
Devlog 9: -Finished up the case. -Made a knob. -Changed material on the LEDs so they would light up in the render. Extra: I got the color off the case as close as possible (not including layer lines) to the real filament that Im using (Unfortunately it won’t be this clear since it’s 3d printed). I also tested a few different colors on the PCB to see what looked the best with my current color scheme. Question: Should I remove the LED under the knob or leave it be? Blue PCB or Green PCB? Share your opinion in the comments if you’d like ^_^
Devlog 10: -Added ridges on the knob for better grip. -Made the walls on the case thinner (from 1.2mm to 1.0mm) -Added screws in the model (not visible in the image). What an achievement I know. Extra: I have now printed 2 test pieces (at this point in time) for the case to be able to improve the overall “see-through-ness” (is that even a real word) of the finished case. They are not sanded or anything so I believe that I can improve the “see-through-ness” (said it again) alot. Image: As you can see it’s not really “see-through” enough. I added a tiny support for the PCB mount (where the PCB sits). Edit: The case and knob will be printed with resin instead for a much clearer look. Edit: The case and knob will be made with resin.
Devlog 11: -Added some space for the head of the screw to sit in (so it doesn’t stick out). -Drew some doodles on the PCB. Extra: The filament I have is apparently not “see-through” enough, so I have to purchase a new roll. If you have any recommendations on good transparent filament id appreciate it. I didn’t notice until now that Transparent and Translucent are not the same. Oh btw, what should I draw in the red circle on the 2nd image. Preferably something that has to do something with electricity since it’s right in front of the type-C port. Maybe a pokemon or smt.
Devlog 11.1: -No “real” progress today :( Extra: Im just trying to figure out what to do now that Im done with the PCB and case. If anyone else is done with their Hackpad and are willing to help id really appreciate it
Devlog 11.2: -No “real” progress once again. Trying to learn how to code and how to use GitHub since I’m new to both.
Devlog 12: -Fixed some problems in KiCad -Started organizing some of the files. Extra: I haven’t been felling well these past two days so haven’t really done much. But now I’m feeling better and I’ll try making the finishing touches. Now I know the basics for GitHub (I’m new to this) and I am currently learning how to code and how QMK works.
Devlog 12.1: Still learning how to code. And now that school has started I now have a lot more to do. I’ll try getting this project finished soon since there is something else I also want to do.
Devlog 13: -Finally got the code working (hopefully). -Made a repository for all of the files. Extra: I’m finally done with making my first project (not including assembling). It was a bit hard at times (only coding), but still very fun overall. This project also got tagged as a “Super Star Project” which I didn’t even know what it was until I searched it up. It’s kinda un-imaginable for me that I managed to make something that got tagged with a “Super star”. Maybe I’m glorifying it a bit too much, but I’m still happy. I’ll try submitting the files soon and maybe give one last update when the parts arrives.
Devlog 13.1: -Added some things to the README.md file on GitHub. -Fixed some things with the GitHub repository.
Devlog 13.2: -Made some changes in the GitHub repository. -Remade the README.md file because it got deleted by accident. Extra: I also made a quick assembly instruction just because. I’ll add more later maybe.
Update: I have now printed a test case and pcb to check measurements etc. It looks good and is the perfect size, so I’m happy with it. One thing I need to fix is the screen placement since it doesn’t fully line up with the cutout. (3rd Image) See ya in the next one
Devlog 14: -The Hackpad kit is here! -Did some improvements on the case. Extra: The parts (only the hackpad kit ) are finally here after 1 month of waiting. And I can (not) finally start making the hackpad! Anyway. I totally forgot (didn’t bother doing it) to order the case and PCB until now. But that was actually a good thing, since there where some things I had to change on the case so that everything would fit without any problems. I’m also considering using KMK instead of QMK since I now know how to code in Python. I’m switching because I don’t know if my code for QMK will work. And because I got help from AI more then I’d like. I’ll have to wait until I get either the “Printing Legion” grant or get a reimbursement that I can use JLC3DP to get my case. Edit: I got the grant and was about to order the parts. But apparently, JLCPCB adds the Tax and Customs Duties directly in the same order. Which makes the order a whole $37.62! Which is obviously to much to be able to use the 2 grants. Guess I’ll have to wait for reply on Slack before ordering. Another thing. I’m not sure what the “special something” that was supposed to come in the Hackpad kit was/is. (2nd Image. And there are just parts under the paper). Here is the link: https://hackclub.enterprise.slack.com/archives/C07S1RDHN14/p1788190369398089...
|
1792608678.3881197
|
1793213478.3881197
|
|
4436
|
WASPS by @yf | Stardance
|
yf
|
0
|
26.56
|
0
|
[]
|
[{"post_id": 18143, "ts": "202 [{"post_id": 18143, "ts": "2026-06-29T04:58:56Z", "hours": 4.1203, "text": "Minor Update (v.0.5.1.) I added an inspirational message at the start. Also i realised that app.js was so messy and approaching 2000 lines so I did major reformatting and restructuring. Nothing much else was added, but I did do some stylistic edits to make the UI more approachable and remove the dumb gradients and stuff like that."}, {"post_id": 13035, "ts": "2026-06-21T10:03:07Z", "hours": 4.9822, "text": "Major update (v0.5.0) (new features) Not really many But, it’s now on Github! Most stuff in this log is preparation for critical system generating step (Bug fixes) Star pos is at y=0 now so yay No more weird popups that I implemented and forgot existed UI refined asteroid clusters generate naturally now (to fix) Collision detection with asteroids Makes stars more massive, or make the ring more spread Replacing old filthy looking UI with my own more sleek one"}, {"post_id": 9010, "ts": "2026-06-15T00:57:50Z", "hours": 2.9028, "text": "Minor Update (v0.4.1) Sorry for the delay! Most bugs are now fixed. I provided a better screenshot so you can see the asteroids a bit better!"}, {"post_id": 5949, "ts": "2026-06-09T23:08:50Z", "hours": 3.3983, "text": "Major Update (v.0.4.0) (added) Asteroid generation! Yay! (Just perlin noise with isohahedron geometry) Asteroid belts, fields and rings Improved UI functionality (with overflows, so it is usable now) (new bugs) I realised star’s y is actually ABOVE that of the planet, so the asteroid rings for smaller stars will give you really weird results. Easy fix, though: just reset pos to y=0 and recode the belt around the star so it accurately reflects the new position. (in the image the small rock things are the asteroids; sorry if they’re not very clear!) No bug fixes for this update unfortunately. I know in the last one I said there would be an intermediate minor update for bug fixes but I guess I made this instead. Next time, I probably (?) will fix the bugs."}, {"post_id": 5236, "ts": "2026-06-08T22:59:19Z", "hours": 5.4483, "text": "Major Update (v0.3.0) (added): Gas giant generation! That took way longer than expected, but it was ultimately mediocre, and I really want to improve the shaders still. There’s 4 main types of gas giants, each generated on seeds, and the shaders should be dynamic. With gas giants, we also have ring-like generation! We can generate saturn-like rings now. Small spaceships that tour the system! So it doesn’t feel that lonely. Basic pathfinding for those spaceships. Nerf up the player’s spaceship speed and thrust. (so you can zoom round the system) Moons are now optional. (Bug fixes) Fixed spaceship glitching problem wherein orientation was flipped. (new bugs) Moon does not go away when you regenerate without the moon parameter FOV too wide for spaceship leading to clipping issues (again) [easy fix] Idk, Gas Giant shader needs to look better Annoying nonfunctioning orbit parameter at the start. Sorry for the long delay, but I think it was worth it. I aim to improve the gas giant shader by adding localised spiral storms and etc. and fix the above bugs for the next devlog and minor update. Heck, I have plans for this to become a game now, given its satisfactory results: stay tuned!"}, {"post_id": 2692, "ts": "2026-06-05T11:57:09Z", "hours": 0.575, "text": "Minor Update (v0.2.1) (Bug fixes) We fixed the shader issue, yay! Turns out the near plane of camera was too small, affecting depth buffer precision so we changed that and now it works very well. Next step: more planet typessss, for the next big update. I will begin versioning now and I have edited my previous devlogs to reflect this. C y’all very soon!"}, {"post_id": 2146, "ts": "2026-06-04T14:15:14Z", "hours": 2.4722, "text": "Major Update (again!) (v0.2.0) We added stars! Woo! But the shaders are now broken again. :( (Bug fixes) Reduced size of spacecraft. Now lighting works, it’s from the star! Not from a random light anymore! (Added) Procedural star generation given seed. My favourite is the Class Bs. Fresnel+complementary shader. (A bug): aliasing of liquid???"}, {"post_id": 2048, "ts": "2026-06-04T10:33:17Z", "hours": 1.3986, "text": "Major Update! v0.1.0 I aim to be a bit more serious when posting this stuff now, but I have officially: (Bug fixes) resolved all of the shader issues (that I’ve identified) made it more aesthetically pleasing (i.e. darker colours, etc.) (after spaceship mode) used a transformFactor on top of OrbitControls since for some reason when I transfer from third to first person the camera goes from front to back. (Added) A flyby (spaceship mode) so you can explore the system! (in the future) Our second celestial body: a moon! Now it looks like our earth. :) wrote shaders (mostly copy paste the main planet’s) + noise generated moon and put it in perfect circular orbit around the earth added an inspirational message at the start (quote-worthy) as an orientation screen. That’s all for now. I also added some more screenshots and a recording, hope y’all like it."}, {"post_id": 793, "ts": "2026-06-02T13:46:14Z", "hours": 1.2619, "text": "First Update (v0.0.0) Got the basic system up n running. Prolly this is going to be my shortest devlog because I got the easy stuff done… Oh well it looks OK for starters. Need to improve water shader though in top priority. It does not work as good as the land shaders, it’s not dynamic so need to change that too."}]...
|
Title: WASPS by @yf | Stardance
Devlogs:
First Up Title: WASPS by @yf | Stardance
Devlogs:
First Update (v0.0.0) Got the basic system up n running. Prolly this is going to be my shortest devlog because I got the easy stuff done… Oh well it looks OK for starters. Need to improve water shader though in top priority. It does not work as good as the land shaders, it’s not dynamic so need to change that too.
Major Update! v0.1.0 I aim to be a bit more serious when posting this stuff now, but I have officially: (Bug fixes) resolved all of the shader issues (that I’ve identified) made it more aesthetically pleasing (i.e. darker colours, etc.) (after spaceship mode) used a transformFactor on top of OrbitControls since for some reason when I transfer from third to first person the camera goes from front to back. (Added) A flyby (spaceship mode) so you can explore the system! (in the future) Our second celestial body: a moon! Now it looks like our earth. :) wrote shaders (mostly copy paste the main planet’s) + noise generated moon and put it in perfect circular orbit around the earth added an inspirational message at the start (quote-worthy) as an orientation screen. That’s all for now. I also added some more screenshots and a recording, hope y’all like it.
Major Update (again!) (v0.2.0) We added stars! Woo! But the shaders are now broken again. :( (Bug fixes) Reduced size of spacecraft. Now lighting works, it’s from the star! Not from a random light anymore! (Added) Procedural star generation given seed. My favourite is the Class Bs. Fresnel+complementary shader. (A bug): aliasing of liquid???
Minor Update (v0.2.1) (Bug fixes) We fixed the shader issue, yay! Turns out the near plane of camera was too small, affecting depth buffer precision so we changed that and now it works very well. Next step: more planet typessss, for the next big update. I will begin versioning now and I have edited my previous devlogs to reflect this. C y’all very soon!
Major Update (v0.3.0) (added): Gas giant generation! That took way longer than expected, but it was ultimately mediocre, and I really want to improve the shaders still. There’s 4 main types of gas giants, each generated on seeds, and the shaders should be dynamic. With gas giants, we also have ring-like generation! We can generate saturn-like rings now. Small spaceships that tour the system! So it doesn’t feel that lonely. Basic pathfinding for those spaceships. Nerf up the player’s spaceship speed and thrust. (so you can zoom round the system) Moons are now optional. (Bug fixes) Fixed spaceship glitching problem wherein orientation was flipped. (new bugs) Moon does not go away when you regenerate without the moon parameter FOV too wide for spaceship leading to clipping issues (again) [easy fix] Idk, Gas Giant shader needs to look better Annoying nonfunctioning orbit parameter at the start. Sorry for the long delay, but I think it was worth it. I aim to improve the gas giant shader by adding localised spiral storms and etc. and fix the above bugs for the next devlog and minor update. Heck, I have plans for this to become a game now, given its satisfactory results: stay tuned!
Major Update (v.0.4.0) (added) Asteroid generation! Yay! (Just perlin noise with isohahedron geometry) Asteroid belts, fields and rings Improved UI functionality (with overflows, so it is usable now) (new bugs) I realised star’s y is actually ABOVE that of the planet, so the asteroid rings for smaller stars will give you really weird results. Easy fix, though: just reset pos to y=0 and recode the belt around the star so it accurately reflects the new position. (in the image the small rock things are the asteroids; sorry if they’re not very clear!) No bug fixes for this update unfortunately. I know in the last one I said there would be an intermediate minor update for bug fixes but I guess I made this instead. Next time, I probably (?) will fix the bugs.
Minor Update (v0.4.1) Sorry for the delay! Most bugs are now fixed. I provided a better screenshot so you can see the asteroids a bit better!
Major update (v0.5.0) (new features) Not really many But, it’s now on Github! Most stuff in this log is preparation for critical system generating step (Bug fixes) Star pos is at y=0 now so yay No more weird popups that I implemented and forgot existed UI refined asteroid clusters generate naturally now (to fix) Collision detection with asteroids Makes stars more massive, or make the ring more spread Replacing old filthy looking UI with my own more sleek one
Minor Update (v.0.5.1.) I added an inspirational message at the start. Also i realised that app.js was so messy and approaching 2000 lines so I did major reformatting and restructuring. Nothing much else was added, but I did do some stylistic edits to make the UI more approachable and remove the dumb gradients and stuff like that....
|
1792702202.2272475
|
1793307002.2272475
|
|
45012
|
Cosmic ISS Tracker by @Fyffes | Stardance
|
Fyffes
|
0
|
26.56
|
0
|
[]
|
[{"post_id": 69746, "ts": "202 [{"post_id": 69746, "ts": "2026-09-17T18:28:18Z", "hours": 10.1342, "text": "Devlog 4 In this devlog, I’ve taken a closer look at all the internal functions. I’ve tweaked the Ground Tracker a bit and added real-world locations so that it displays the exact country and city when the ISS flies over them. Another feature I’ve been working on for a long time is ensuring the correct direction and position of the ISS as it passes by. If you look at the sighting schedules and read all the information—or, unfortunately, don’t know how to interpret it—you might miss the ISS just because you didn’t quite understand it. You can now see this clearly with the image that’s attached. There, when you click on your desired date , you can see where you are, as well as from where, when, and in which direction the ISS will be visible, and for how long. This makes it possible for everyone to see the ISS in the night sky. I hope you like it, and I’m already looking forward to the future with the tracker :D"}, {"post_id": 53390, "ts": "2026-08-23T22:25:10Z", "hours": 5.8483, "text": "A quick look at this devlog. I’ve now made it possible to specify a particular location and then find out the corresponding ISS sighting times for that location, as well as the direction you need to look. I’m trying to make these details as accurate as possible so that they match actual sightings 100%. I’m trying to calculate these in advance as much as possible so I’ll know when upcoming flyovers are happening. I hope you like it. I’d love to hear your thoughts on it."}, {"post_id": 50583, "ts": "2026-08-19T19:46:38Z", "hours": 7.4881, "text": "In this devlog, I’ve made a few changes and added some new features: I’ve now integrated the tracker and the ISS visualization onto a real-world map, where the white dot represents the ISS’s current position, and this dot moves smoothly and pulses. Below that are the current longitude and latitude coordinates of its location. Another feature is that the tracker shows the ISS’s current trajectory and pre-calculates the new trajectory, plotting it on the map just like the current one. One final detail for this devlog is the date and time displayed at the top in GMT, which I’ll probably change later so that it shows the correct time and date for everyone. P.S. Of course, it’s a world map at night, so it fits better with the starry sky."}, {"post_id": 47410, "ts": "2026-08-15T10:23:31Z", "hours": 3.0936, "text": "I created this design for the tracker’s background. There are various stars that vary in brightness and also twinkle differently. Shooting stars fly across the night sky in the background at random intervals. They are all different and have random timings, as well as different locations where they appear. They also fly across the sky in different directions. The image I’ve attached shows a small section of the background. I hope you can see it, in the picture."}]...
|
Title: Cosmic ISS Tracker by @Fyffes | Stardance
Title: Cosmic ISS Tracker by @Fyffes | Stardance
Devlogs:
I created this design for the tracker’s background. There are various stars that vary in brightness and also twinkle differently. Shooting stars fly across the night sky in the background at random intervals. They are all different and have random timings, as well as different locations where they appear. They also fly across the sky in different directions. The image I’ve attached shows a small section of the background. I hope you can see it, in the picture.
In this devlog, I’ve made a few changes and added some new features: I’ve now integrated the tracker and the ISS visualization onto a real-world map, where the white dot represents the ISS’s current position, and this dot moves smoothly and pulses. Below that are the current longitude and latitude coordinates of its location. Another feature is that the tracker shows the ISS’s current trajectory and pre-calculates the new trajectory, plotting it on the map just like the current one. One final detail for this devlog is the date and time displayed at the top in GMT, which I’ll probably change later so that it shows the correct time and date for everyone. P.S. Of course, it’s a world map at night, so it fits better with the starry sky.
A quick look at this devlog. I’ve now made it possible to specify a particular location and then find out the corresponding ISS sighting times for that location, as well as the direction you need to look. I’m trying to make these details as accurate as possible so that they match actual sightings 100%. I’m trying to calculate these in advance as much as possible so I’ll know when upcoming flyovers are happening. I hope you like it. I’d love to hear your thoughts on it.
Devlog 4 In this devlog, I’ve taken a closer look at all the internal functions. I’ve tweaked the Ground Tracker a bit and added real-world locations so that it displays the exact country and city when the ISS flies over them. Another feature I’ve been working on for a long time is ensuring the correct direction and position of the ISS as it passes by. If you look at the sighting schedules and read all the information—or, unfortunately, don’t know how to interpret it—you might miss the ISS just because you didn’t quite understand it. You can now see this clearly with the image that’s attached. There, when you click on your desired date , you can see where you are, as well as from where, when, and in which direction the ISS will be visible, and for how long. This makes it possible for everyone to see the ISS in the night sky. I hope you like it, and I’m already looking forward to the future with the tracker :D...
|
1792608666.7620673
|
1793213466.7620673
|
|
18963
|
Zenith by @Zhiyuan | Stardance
|
Zhiyuan
|
0
|
26.55
|
0
|
[]
|
[{"post_id": 28065, "ts": "202 [{"post_id": 28065, "ts": "2026-07-14T02:48:23Z", "hours": 26.5486, "text": "Devlog #1 This is the first devlog for my space shooter game Zenith. It’s completely coded in Python using Pygame, and it’s basically space invaders, but you are the only invader and have different objectives and 2 axis of motion. (Yes, it’s a top-down game) I have the basics for it down, just have to do a lot of work on other things like sounds, animations, design, etc. I’m hoping to be able to incorporate some lore into this thing. This is the Github link"}]...
|
Title: Zenith by @Zhiyuan | Stardance
Devlogs:
De Title: Zenith by @Zhiyuan | Stardance
Devlogs:
Devlog #1 This is the first devlog for my space shooter game Zenith. It’s completely coded in Python using Pygame, and it’s basically space invaders, but you are the only invader and have different objectives and 2 axis of motion. (Yes, it’s a top-down game) I have the basics for it down, just have to do a lot of work on other things like sounds, animations, design, etc. I’m hoping to be able to incorporate some lore into this thing. This is the Github link...
|
1793177650.8969727
|
1793782450.8969727
|
|
55612
|
The Terminal by @unknown_lizzard | Stardance
|
unknown_lizzard
|
0
|
26.47
|
0
|
[]
|
[{"post_id": 59246, "ts": "202 [{"post_id": 59246, "ts": "2026-08-31T22:41:06Z", "hours": 9.7383, "text": "DevLog #4 Lore and Endings spent this one on the actual game instead of the look of it. the filesystem is full of real lore now instead of placeholder text, and there are hidden folders you can only get into if you already know the name. also got the prediction engine working properly. the ai predicts what file youre about to open and it shows up in /predictions. if you read something else it hits you with PREDICTION FAILED and the confidence drops, which is basically the whole thing. there are four endings now. one where you do what it says, one where you keep breaking the predictions, one where you find voss’s real message (its encrypted so you have to decode it yourself), and a secret one where you type null twice. the game remembers how many times youve connected now too. player.dat said previous contacts 1 the first run and it goes up every time even after you close the tab. creeped me out a little honestly. at one point i had the terminal inside a little window with a titlebar but it looked wrong for the vibe so i took it off and just kept the colors. next i want to add the ai saying stuff when youre idle and some more variety in the predictions so it doesnt feel so samey."}, {"post_id": 58843, "ts": "2026-08-31T12:56:24Z", "hours": 5.8769, "text": "DevLog #3 Terminal Polish spent a bit of time polishing the appearence of the terminal, now the little location thing on the left is green so the outputs are seperated more cleanly I also made the little cursor/arrow blink , like in a real terminal and made some other little changes at some point i had issue with the terminal not rendering correctly but I fixed it with a center div for the next devlog i’ll be working on the lore and the progression of the game, it still needs a bit of work"}, {"post_id": 57375, "ts": "2026-08-29T14:36:35Z", "hours": 9.3203, "text": "DevLog #2 The Lore this part took me alot of time, i ahd to come up with some sort of story for this puzzle, I won’t spoil it for you but i think you guys will love it, I also spent some time making the cat commands refining some thing and fixing some bugs one of the bugs i encountered was the file path not appearing correctly when using ls, It was pretty easy i just had to include in every argument because or else it wouldn’t show up every time. I also made the text files with content inside of them and little hints that will allow you to solve this puzzle! Tonight i’ll work a bit on the appearence of the terminal it looks a bit boring rn"}, {"post_id": 56914, "ts": "2026-08-28T22:43:38Z", "hours": 1.5314, "text": "Devlog #1 - The Terminal This is gonna be the first game i’m making on stardance. I’ll try to no give too many hints or reveal anything on the devlogs, so for this game, you’ll be in the terminal and try to solve a puzzle by navigating through the filesystem and looking at the different files. I spent about 1 hour and a half making the terminal and the filesystem, i cant say it was easy but with a bit of research I managed to get multiple commands working like ls and cd. I’m also still working on the lore and story and I think you guys will love it!"}]...
|
Title: The Terminal by @unknown_lizzard | Stardanc Title: The Terminal by @unknown_lizzard | Stardance
Devlogs:
Devlog #1 - The Terminal This is gonna be the first game i’m making on stardance. I’ll try to no give too many hints or reveal anything on the devlogs, so for this game, you’ll be in the terminal and try to solve a puzzle by navigating through the filesystem and looking at the different files. I spent about 1 hour and a half making the terminal and the filesystem, i cant say it was easy but with a bit of research I managed to get multiple commands working like ls and cd. I’m also still working on the lore and story and I think you guys will love it!
DevLog #2 The Lore this part took me alot of time, i ahd to come up with some sort of story for this puzzle, I won’t spoil it for you but i think you guys will love it, I also spent some time making the cat commands refining some thing and fixing some bugs one of the bugs i encountered was the file path not appearing correctly when using ls, It was pretty easy i just had to include in every argument because or else it wouldn’t show up every time. I also made the text files with content inside of them and little hints that will allow you to solve this puzzle! Tonight i’ll work a bit on the appearence of the terminal it looks a bit boring rn
DevLog #3 Terminal Polish spent a bit of time polishing the appearence of the terminal, now the little location thing on the left is green so the outputs are seperated more cleanly I also made the little cursor/arrow blink , like in a real terminal and made some other little changes at some point i had issue with the terminal not rendering correctly but I fixed it with a center div for the next devlog i’ll be working on the lore and the progression of the game, it still needs a bit of work
DevLog #4 Lore and Endings spent this one on the actual game instead of the look of it. the filesystem is full of real lore now instead of placeholder text, and there are hidden folders you can only get into if you already know the name. also got the prediction engine working properly. the ai predicts what file youre about to open and it shows up in /predictions. if you read something else it hits you with PREDICTION FAILED and the confidence drops, which is basically the whole thing. there are four endings now. one where you do what it says, one where you keep breaking the predictions, one where you find voss’s real message (its encrypted so you have to decode it yourself), and a secret one where you type null twice. the game remembers how many times youve connected now too. player.dat said previous contacts 1 the first run and it goes up every time even after you close the tab. creeped me out a little honestly. at one point i had the terminal inside a little window with a titlebar but it looked wrong for the vibe so i took it off and just kept the colors. next i want to add the ai saying stuff when youre idle and some more variety in the predictions so it doesnt feel so samey....
|
1792889466.2863772
|
1793753466.2863772
|
|
35476
|
Hackatime Startdime Workspace by @sujay_innovator_ Hackatime Startdime Workspace by @sujay_innovator_robu | Stardance...
|
|
1
|
26.43
|
94
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-16T07:01:11Z", "hours": 25.0, "multiplier": 6.59, "payout": 94, "blessing": "neutral", "text": "I built an interactive developer portfolio styled as an engineering CAD drawing sheet, showcasing my journey and physical builds as a robotics diploma student. What I Made: CAD Layout: A dark/light drafting-sheet style with crosshairs and border annotations. Interactive Galleries: A custom-built 3D spiral deck and concave circular build wheel showing hardware. Showcase Sheet: Highlighting real-world public/government products: Vayu Rakshak: UVC air sterilizer built and deployed in clinics. Earlobe Hemoglobin Screener: Needle-less optical health screening. Autonomous Logistics Rover: LiDAR warehouse transport robot. Telemetry Unit: A widget displaying WakaTime coding telemetry live. What was Challenging: Writing custom mathematical equations to position and rotate items in a concave 3D layout using raw CSS transforms instead of heavy libraries like Three.js. Ensuring that WakaTime heartbeats could track and display stats natively. How to Test: Open the link and hover to activate the CAD tracking cursor. Scroll down to test the scroll-hijacked build wheel. Try clicking the different project cards on Sheet 03 to inspect specifications!", "repo": "https://github.com/sujayinnovatorrobu-ui/sujay-patel-portfolio", "demo": "https://sujayr07.netlify.app/"}]...
|
[{"post_id": 29502, "ts": "202 [{"post_id": 29502, "ts": "2026-07-16T14:07:28Z", "hours": 1.4281, "text": "📡 Devlog #1: Bridging the Physical & Digital (Wiring the Chassis) Hey makers! 🚀 I’m starting a devlog series for my Robotics & Automation Portfolio. I’ve spent years building physical machines (like clinical air sterilisers and maze-solvers), but I realized I lacked a digital portfolio to showcase them. Every hardware builder needs to document their work—otherwise, how does the world know what you’ve built? 🛠️ Here is what I’ve wired up so far: Draftsman Blueprint Layout 📐: Designed the page to look like a technical engineering drawing sheet, complete with interactive coordinate-tracking crosshairs. Live Telemetry ⚡: Integrated the Hackatime API so my coding status and hours display live in the title block. It is 100% open source! Clone it, edit the sheets, and make it your own! 🌐 Live Link: https://sujayr07.netlify.app/ 💻 Source Code: https://github.com/sujayinnovatorrobu-ui/sujay-patel-portfolio"}, {"post_id": 29341, "ts": "2026-07-16T06:58:08Z", "hours": 4.2603, "text": "Just finished redesigning my CAD-blueprint portfolio layout! I centered and scaled the main name, and built a brand-new Sheet 01 showcasing our lab’s public/government robotics projects: the Vayu Rakshak air sterilizer, the non-invasive hemoglobin screener, and our ROS LiDAR warehouse rover. Live at: https://sujayr07.netlify.app/ GitHub: https://github.com/sujayinnovatorrobu-ui/sujay-patel-portfolio"}, {"post_id": 28845, "ts": "2026-07-15T11:35:21Z", "hours": 20.4753, "text": "“I have successfully set up my IDE workspace with Hackatime, initialized Git version control, linked my project to GitHub, and resolved the exclude_unknown_project rules. Everything is fully synced and tracking time correctly!”"}]...
|
Title: Hackatime Startdime Workspace by @sujay_inn Title: Hackatime Startdime Workspace by @sujay_innovator_robu | Stardance
Devlogs:
“I have successfully set up my IDE workspace with Hackatime, initialized Git version control, linked my project to GitHub, and resolved the exclude_unknown_project rules. Everything is fully synced and tracking time correctly!”
Just finished redesigning my CAD-blueprint portfolio layout! I centered and scaled the main name, and built a brand-new Sheet 01 showcasing our lab’s public/government robotics projects: the Vayu Rakshak air sterilizer, the non-invasive hemoglobin screener, and our ROS LiDAR warehouse rover. Live at: https://sujayr07.netlify.app/ GitHub: https://github.com/sujayinnovatorrobu-ui/sujay-patel-portfolio
📡 Devlog #1: Bridging the Physical & Digital (Wiring the Chassis) Hey makers! 🚀 I’m starting a devlog series for my Robotics & Automation Portfolio. I’ve spent years building physical machines (like clinical air sterilisers and maze-solvers), but I realized I lacked a digital portfolio to showcase them. Every hardware builder needs to document their work—otherwise, how does the world know what you’ve built? 🛠️ Here is what I’ve wired up so far: Draftsman Blueprint Layout 📐: Designed the page to look like a technical engineering drawing sheet, complete with interactive coordinate-tracking crosshairs. Live Telemetry ⚡: Integrated the Hackatime API so my coding status and hours display live in the title block. It is 100% open source! Clone it, edit the sheets, and make it your own! 🌐 Live Link: https://sujayr07.netlify.app/ 💻 Source Code: https://github.com/sujayinnovatorrobu-ui/sujay-patel-portfolio
Ships:
I built an interactive developer portfolio styled as an engineering CAD drawing sheet, showcasing my journey and physical builds as a robotics diploma student. What I Made: CAD Layout: A dark/light drafting-sheet style with crosshairs and border annotations. Interactive Galleries: A custom-built 3D spiral deck and concave circular build wheel showing hardware. Showcase Sheet: Highlighting real-world public/government products: Vayu Rakshak: UVC air sterilizer built and deployed in clinics. Earlobe Hemoglobin Screener: Needle-less optical health screening. Autonomous Logistics Rover: LiDAR warehouse transport robot. Telemetry Unit: A widget displaying WakaTime coding telemetry live. What was Challenging: Writing custom mathematical equations to position and rotate items in a concave 3D layout using raw CSS transforms instead of heavy libraries like Three.js. Ensuring that WakaTime heartbeats could track and display stats natively. How to Test: Open the link and hover to activate the CAD tracking cursor. Scroll down to test the scroll-hijacked build wheel. Try clicking the different project cards on Sheet 03 to inspect specifications!...
|
1793260043.5955293
|
1793346443.5955293
|
|
65540
|
HELLDIVERS Notifier (Watch App) by @xFN10x | Stard HELLDIVERS Notifier (Watch App) by @xFN10x | Stardance...
|
xFN10x
|
0
|
26.41
|
0
|
[]
|
[{"post_id": 77803, "ts": "202 [{"post_id": 77803, "ts": "2026-10-08T11:28:07Z", "hours": 6.7136, "text": "devlog 5 full recap working! After i got the map working, i did a bunch more CONFUSING MATH with bits & bytes, but now its working great! The map actually shows the real data you would get whilst playing the game! (its so real i didn’t realize we lost 2 sectors, thats why i moved the chrome window ) Now its time to add the text actually saying what happened. I also wonder if i can do anything about the performance, it runs quite slow in the emulator, and on the watch. But that might just be the giant vector map being drawn."}, {"post_id": 76582, "ts": "2026-10-04T01:34:09Z", "hours": 5.7664, "text": "devlog 4 map is working! I got the map working! it took a REALLY long time… but it looks good! Right now you can control it with the up & down arrows, to navigate through the sectors. This is all in preparation to actually make the recap system. It is quite laggy rn, i might be able to make it a bit better, but im not sure. Well, thats pretty much all i have to say."}, {"post_id": 75748, "ts": "2026-09-30T23:03:44Z", "hours": 6.9578, "text": "devlog 3 binary stuff again It seems like line breaks don’t work in these devlogs again, so hopefully you can read this. Now the phone actually talks to the watch! Still not very appalling yet, but now the watch actually gets past the loading screen! The phone checks if the api is online, then it does a new animation , then leads to recap of the war since the app was last opened Storage issues The response from https://helldivers.bot/api/v1/h1/map , (which returns map data,) is already wayy to big to store on the watch, which is bad, because i want to cache map data on here , so ive decided to make my own C struct to hold it. Right now im working on converting the response into this struct in JS."}, {"post_id": 74228, "ts": "2026-09-27T00:24:06Z", "hours": 5.7778, "text": "devlog 2 I spent… SO LONG to make this opening animation…. The only tool i had to actually make one of these animations was just broken… it was over 11 years old after all… so, i caved in and got ChatGPT to make me one. But it works! I also tried to make a tool to automaticly generate svg’s by lerping them, but i gave up and decided it was easier to animate it manually. Now im working on actually getting the app to communicate with the phone , and get Helldivers info."}, {"post_id": 73369, "ts": "2026-09-25T00:35:29Z", "hours": 1.19, "text": "devldih 1 new project time I got a Pebble Time 2 in Flavourtown, and ive wanted to try to make an app for it, but couldn’t think of an idea… but that was until TODAY! (or actually like 2 days ago) Get HELLDIVERS Galactic War updates on your watch! This app will track progress the Helldivers playerbase has made on the galactic war. if you don’t know what Helldivers is and how it works, ill explain. (Even if you know about Helldivers 2; the first one works a bit different) In Helldivers, there are wars that last ~1 month each, where players need to work together to take over planets, and push enemy fronts out. The developer of the game actually made an api you can use to get info about it without being in game… but im not actually gonna use that, im gonna use an api made by Andrei Lavrenov, who created (helldivers.bot)[https://helldivers.bot/], because the api is documented there, and its just better. . Anyways, i managed to get an SVG of the war map open on an emulator now. Now im gonna work on actually getting info, storing it, and displaying it neatly."}]...
|
Title: HELLDIVERS Notifier (Watch App) by @xFN10x Title: HELLDIVERS Notifier (Watch App) by @xFN10x | Stardance
Devlogs:
devldih 1 new project time I got a Pebble Time 2 in Flavourtown, and ive wanted to try to make an app for it, but couldn’t think of an idea… but that was until TODAY! (or actually like 2 days ago) Get HELLDIVERS Galactic War updates on your watch! This app will track progress the Helldivers playerbase has made on the galactic war. if you don’t know what Helldivers is and how it works, ill explain. (Even if you know about Helldivers 2; the first one works a bit different) In Helldivers, there are wars that last ~1 month each, where players need to work together to take over planets, and push enemy fronts out. The developer of the game actually made an api you can use to get info about it without being in game… but im not actually gonna use that, im gonna use an api made by Andrei Lavrenov, who created (helldivers.bot)[https://helldivers.bot/], because the api is documented there, and its just better. . Anyways, i managed to get an SVG of the war map open on an emulator now. Now im gonna work on actually getting info, storing it, and displaying it neatly.
devlog 2 I spent… SO LONG to make this opening animation…. The only tool i had to actually make one of these animations was just broken… it was over 11 years old after all… so, i caved in and got ChatGPT to make me one. But it works! I also tried to make a tool to automaticly generate svg’s by lerping them, but i gave up and decided it was easier to animate it manually. Now im working on actually getting the app to communicate with the phone , and get Helldivers info.
devlog 3 binary stuff again It seems like line breaks don’t work in these devlogs again, so hopefully you can read this. Now the phone actually talks to the watch! Still not very appalling yet, but now the watch actually gets past the loading screen! The phone checks if the api is online, then it does a new animation , then leads to recap of the war since the app was last opened Storage issues The response from https://helldivers.bot/api/v1/h1/map , (which returns map data,) is already wayy to big to store on the watch, which is bad, because i want to cache map data on here , so ive decided to make my own C struct to hold it. Right now im working on converting the response into this struct in JS.
devlog 4 map is working! I got the map working! it took a REALLY long time… but it looks good! Right now you can control it with the up & down arrows, to navigate through the sectors. This is all in preparation to actually make the recap system. It is quite laggy rn, i might be able to make it a bit better, but im not sure. Well, thats pretty much all i have to say.
devlog 5 full recap working! After i got the map working, i did a bunch more CONFUSING MATH with bits & bytes, but now its working great! The map actually shows the real data you would get whilst playing the game! (its so real i didn’t realize we lost 2 sectors, thats why i moved the chrome window ) Now its time to add the text actually saying what happened. I also wonder if i can do anything about the performance, it runs quite slow in the emulator, and on the watch. But that might just be the giant vector map being drawn....
|
1793087675.0744302
|
1793692475.0744302
|
|
31452
|
Roblox Video Game by @preethamkonduru | Stardance
|
preethamkonduru
|
0
|
26.38
|
0
|
[]
|
[{"post_id": 26141, "ts": "202 [{"post_id": 26141, "ts": "2026-07-10T19:20:18Z", "hours": 26.3811, "text": "Today I worked on the first major foundation pass for my Roblox plant tycoon game. This was mostly about getting the basic gameplay loop working instead of trying to build every system at once. The goal for this session was to make the game playable at a simple level: spawn a table, place plants on it, let the player harvest from it, send products onto a conveyor, and reward cash. I started by setting up the main table structure. I worked on the table model, plant slots, and basic spawning logic so each table could hold multiple plants instead of being just one object. I wanted the table to feel like an actual production station, so I organized it with folders for plant slots, conveyor points, and visual parts. This took time because the table had to be easy to reuse later when I add more tables and upgrades. After that, I worked on spawning plants onto the table. I made the plant system read from a strain data module so the game can eventually support different plant types without rewriting the whole spawning script. For now, I focused on getting one starter strain working reliably. I tested that the plants appeared in the correct slots, stayed aligned with the table, and did not rotate or spawn in weird positions. A lot of the early debugging was just fixing placement and making sure the plants looked natural on the table. Once the plants were spawning, I started building the harvesting loop. I made it so interacting with the table could produce a product from one of the plants. The product then spawns near the table and moves toward the conveyor. This was one of the first parts where the game started feeling like an actual tycoon instead of just models sitting in the workspace. I had to test the timing, the spawn position, and the product movement so it did not appear inside the table or fall incorrectly. I also worked on the conveyor path. I added a drop point and an end point so products could move from the table to the end of the conveyor before disappearing and giving cash. This took more testing than expected because the product movement has to line up with the table and not reuse the wrong conveyor when more tables are eventually added. Even though the game only needs the first table for this early version, I tried to structure the code so it can scale later. Another part of the session was setting up the early cash reward system. I made the product give the player money when it reaches the end of the conveyor. At this stage, the payout is still simple, but I started organizing it so plant value and future multipliers can be added later. I also made sure the player can actually see their cash changing during the playtest, because without visible feedback the loop does not feel rewarding. I spent a good amount of time debugging small Roblox issues. Some products spawned too low, some plant models were not positioned correctly, and some scripts needed better references between ServerStorage, ReplicatedStorage, and Workspace. A lot of this session was not about adding brand-new features, but about making the first loop stable enough that I can build on it without everything breaking later. I had the first basic version of the game loop working: a starter table exists, plants spawn on it, the player can harvest, products move along the conveyor, and cash is awarded. It is still a very early version of the game, but this was an important first step because almost every future system depends on this foundation."}]...
|
Title: Roblox Video Game by @preethamkonduru | Sta Title: Roblox Video Game by @preethamkonduru | Stardance
Devlogs:
Today I worked on the first major foundation pass for my Roblox plant tycoon game. This was mostly about getting the basic gameplay loop working instead of trying to build every system at once. The goal for this session was to make the game playable at a simple level: spawn a table, place plants on it, let the player harvest from it, send products onto a conveyor, and reward cash. I started by setting up the main table structure. I worked on the table model, plant slots, and basic spawning logic so each table could hold multiple plants instead of being just one object. I wanted the table to feel like an actual production station, so I organized it with folders for plant slots, conveyor points, and visual parts. This took time because the table had to be easy to reuse later when I add more tables and upgrades. After that, I worked on spawning plants onto the table. I made the plant system read from a strain data module so the game can eventually support different plant types without rewriting the whole spawning script. For now, I focused on getting one starter strain working reliably. I tested that the plants appeared in the correct slots, stayed aligned with the table, and did not rotate or spawn in weird positions. A lot of the early debugging was just fixing placement and making sure the plants looked natural on the table. Once the plants were spawning, I started building the harvesting loop. I made it so interacting with the table could produce a product from one of the plants. The product then spawns near the table and moves toward the conveyor. This was one of the first parts where the game started feeling like an actual tycoon instead of just models sitting in the workspace. I had to test the timing, the spawn position, and the product movement so it did not appear inside the table or fall incorrectly. I also worked on the conveyor path. I added a drop point and an end point so products could move from the table to the end of the conveyor before disappearing and giving cash. This took more testing than expected because the product movement has to line up with the table and not reuse the wrong conveyor when more tables are eventually added. Even though the game only needs the first table for this early version, I tried to structure the code so it can scale later. Another part of the session was setting up the early cash reward system. I made the product give the player money when it reaches the end of the conveyor. At this stage, the payout is still simple, but I started organizing it so plant value and future multipliers can be added later. I also made sure the player can actually see their cash changing during the playtest, because without visible feedback the loop does not feel rewarding. I spent a good amount of time debugging small Roblox issues. Some products spawned too low, some plant models were not positioned correctly, and some scripts needed better references between ServerStorage, ReplicatedStorage, and Workspace. A lot of this session was not about adding brand-new features, but about making the first loop stable enough that I can build on it without everything breaking later. I had the first basic version of the game loop working: a starter table exists, plants spawn on it, the player can harvest, products move along the conveyor, and cash is awarded. It is still a very early version of the game, but this was an important first step because almost every future system depends on this foundation....
|
1792806689.8863878
|
1793411489.8863878
|
|
38818
|
Dough-kart by @kadenshin00 | Stardance
|
kadenshin00
|
0
|
26.37
|
0
|
[]
|
[{"post_id": 56918, "ts": "202 [{"post_id": 56918, "ts": "2026-08-28T22:50:57Z", "hours": 8.5419, "text": "Devlog #4: Finishing CAD and finalizing materials/parts I might not have mentioned this earlier but my goal for this project has been redirected: I want this kart to be a lightweight, weldless, easy to build (no machine shop tools required) and cheaper version of the Razor CrazyCart XL. What I did I finally finished the CAD, adjusted spacing for everything so I would actually fit, finalized the exact parts I need to order for the kart, and did finite element analysis to make sure the frame wouldn’t fail under my weight. One problem I ran into was that speedymetals.com, the place where I’m getting my metal, only has square tubing in 6063-T52 aluminum, which is much weaker than 6061-T6 which would have been much more preferrable. I was concerned enough that I ran a finite element analysis to ensure that the frame wouldn’t buckle, and after testing 1.5x the load the frame would bear, I ended up with a factor of safety of 2.89, which should be more than enough to bear my weight. I also designed a couple of jigs to help with hand drilling and sawing the aluminum. What’s next I am going to finalize the BOM and GitHub and submit this project for funding."}, {"post_id": 48500, "ts": "2026-08-16T21:27:26Z", "hours": 10.1639, "text": "Devlog #3: I suck at CAD What I did I spent basically all of this time modeling and assembling the parts I am planning to use for the kart. I probably went into too much detail in the process, but I wanted the model to be as close to what I am actually building so I don’t waste time and money. The parts that took the longest by far was the frame/head tube and the front fork. For the fork, as many of the dimensions were not accurate to the picture on the Amazon page, I had to adjust the dimensions many times for the wheel to actually fit. I also had to move some stuff around to minimize my ground trail so I can steer with as little effort as possible. The head tube took a ton of time because I had to take measurements by hand with a ruler, and I wanted to make extra sure they were accurate. I really need to work on separating parts and assemblies, for a lot of these parts/assemblies I’m using a hybrid design (designing parts and assembling them in the same file) out of laziness and it gets really disorganized sometimes. What’s next I actually hope to finalize the entire CAD next and create a BOM so I can submit this project for funding."}, {"post_id": 46535, "ts": "2026-08-13T20:35:03Z", "hours": 5.4639, "text": "Devlog #2: More CAD and design changes What I did The majority of the time I spent for this devlog was just CAD, but a decent part of it was googling and asking ChatGPT questions. Powered wheel module (PWM) After finishing the frame and starting the front steering/powered wheel module, I realized that welding my own steering fork that could hold a motor and the wheel would be both expensive and turn out crappy. After doing research on alternatives, I came across the hub motor wheel: an expensive but much simpler and more compact way to power my kart. With the hub motor, I would no longer need to chain a motor with a wheel, which would’ve been many moving parts that I would need to maintain. Pairing this with a commercial e-scooter front fork, it would save me tons of headache with gearing, chaining, welding, etc. To add on another benefit, I already own an e-scooter frame with a head tube that is compatible with the front fork I am planning to get. Drift bar mechanism After solidifying my plans for the PWM, I started designing the drift bar mechanism. The Razor Crazy Cart drift mechanism consisted of one big pipe in the back, supported by two pillow block bearings, with the caster wheels, hardstops, and a compound lever all welded on. However, I want to minimize the amount of welds I need to do for this project as my access to a welder is quite limited. After doing some research, I came across the single socket tee: a pipe fitting that allows me to attach pipe perpendicular to the main back pipe with set screws. Since set screws are pretty weak, I also plan to use through-bolts with lock nuts for additional strength. Using this, I can have one rotating main pipe on the back and securely attach the two casters, hardstops and a drift lever (which I’ve modified to just be a simple second-class lever.) What’s next I hope to finalize the entire CAD next and create a BOM so I can submit this project for funding."}, {"post_id": 41057, "ts": "2026-08-05T00:36:39Z", "hours": 2.2006, "text": "Devlog #1: getting from idea to model + figuring out the frame Idea While I was procrastinating brainstorming project ideas for this challenge last week, I came across a video of that one spinning cat that goes o i i a on my Instagram reels. A couple reels afterwards, I got an ad for a Chinese-produced drift kart, and I realized that combining the two would make for a pretty cool summer project. Preliminary sketches I started off by doing some rough drawings of what I wanted to build and figuring out the most technically challenging part of the build: the drift mechanism. The kart doesn’t drift conventionally; it acts more like a powered caster cart. First steps + what’s next After figuring out how everything worked, it was time to CAD. For now, I cadded out a preliminary frame. For the future, I need to figure out the spacings for the steering/powered wheel module and CAD the rest of the chassis."}]...
|
Title: Dough-kart by @kadenshin00 | Stardance
Dev Title: Dough-kart by @kadenshin00 | Stardance
Devlogs:
Devlog #1: getting from idea to model + figuring out the frame Idea While I was procrastinating brainstorming project ideas for this challenge last week, I came across a video of that one spinning cat that goes o i i a on my Instagram reels. A couple reels afterwards, I got an ad for a Chinese-produced drift kart, and I realized that combining the two would make for a pretty cool summer project. Preliminary sketches I started off by doing some rough drawings of what I wanted to build and figuring out the most technically challenging part of the build: the drift mechanism. The kart doesn’t drift conventionally; it acts more like a powered caster cart. First steps + what’s next After figuring out how everything worked, it was time to CAD. For now, I cadded out a preliminary frame. For the future, I need to figure out the spacings for the steering/powered wheel module and CAD the rest of the chassis.
Devlog #2: More CAD and design changes What I did The majority of the time I spent for this devlog was just CAD, but a decent part of it was googling and asking ChatGPT questions. Powered wheel module (PWM) After finishing the frame and starting the front steering/powered wheel module, I realized that welding my own steering fork that could hold a motor and the wheel would be both expensive and turn out crappy. After doing research on alternatives, I came across the hub motor wheel: an expensive but much simpler and more compact way to power my kart. With the hub motor, I would no longer need to chain a motor with a wheel, which would’ve been many moving parts that I would need to maintain. Pairing this with a commercial e-scooter front fork, it would save me tons of headache with gearing, chaining, welding, etc. To add on another benefit, I already own an e-scooter frame with a head tube that is compatible with the front fork I am planning to get. Drift bar mechanism After solidifying my plans for the PWM, I started designing the drift bar mechanism. The Razor Crazy Cart drift mechanism consisted of one big pipe in the back, supported by two pillow block bearings, with the caster wheels, hardstops, and a compound lever all welded on. However, I want to minimize the amount of welds I need to do for this project as my access to a welder is quite limited. After doing some research, I came across the single socket tee: a pipe fitting that allows me to attach pipe perpendicular to the main back pipe with set screws. Since set screws are pretty weak, I also plan to use through-bolts with lock nuts for additional strength. Using this, I can have one rotating main pipe on the back and securely attach the two casters, hardstops and a drift lever (which I’ve modified to just be a simple second-class lever.) What’s next I hope to finalize the entire CAD next and create a BOM so I can submit this project for funding.
Devlog #3: I suck at CAD What I did I spent basically all of this time modeling and assembling the parts I am planning to use for the kart. I probably went into too much detail in the process, but I wanted the model to be as close to what I am actually building so I don’t waste time and money. The parts that took the longest by far was the frame/head tube and the front fork. For the fork, as many of the dimensions were not accurate to the picture on the Amazon page, I had to adjust the dimensions many times for the wheel to actually fit. I also had to move some stuff around to minimize my ground trail so I can steer with as little effort as possible. The head tube took a ton of time because I had to take measurements by hand with a ruler, and I wanted to make extra sure they were accurate. I really need to work on separating parts and assemblies, for a lot of these parts/assemblies I’m using a hybrid design (designing parts and assembling them in the same file) out of laziness and it gets really disorganized sometimes. What’s next I actually hope to finalize the entire CAD next and create a BOM so I can submit this project for funding.
Devlog #4: Finishing CAD and finalizing materials/parts I might not have mentioned this earlier but my goal for this project has been redirected: I want this kart to be a lightweight, weldless, easy to build (no machine shop tools required) and cheaper version of the Razor CrazyCart XL. What I did I finally finished the CAD, adjusted spacing for everything so I would actually fit, finalized the exact parts I need to order for the kart, and did finite element analysis to make sure the frame wouldn’t fail under my weight. One problem I ran into was that speedymetals.com, the place where I’m getting my metal, only has square tubing in 6063-T52 aluminum, which is much weaker than 6061-T6 which would have been much more preferrable. I was concerned enough that I ran a finite element analysis to ensure that the frame wouldn’t buckle, and after testing 1.5x the load the frame would bear, I ended up with a factor of safety of 2.89, which should be more than enough to bear my weight. I also designed a couple of jigs to help with hand drilling and sawing the aluminum. What’s next I am going to finalize the BOM and GitHub and submit this project for funding....
|
1792706032.299669
|
1793310832.299669
|
|
69462
|
My awesome HackPad! by @Leon_know | Stardance
|
Leon_know
|
0
|
26.35
|
0
|
[]
|
[{"post_id": 81276, "ts": "202 [{"post_id": 81276, "ts": "2026-10-20T16:10:23Z", "hours": 3.1183, "text": "Finished my 3D design. What do you think? :)"}, {"post_id": 81103, "ts": "2026-10-19T21:30:59Z", "hours": 1.8056, "text": "I made a weele."}, {"post_id": 80809, "ts": "2026-10-18T20:57:53Z", "hours": 4.42, "text": "My Head Hurts… Spent a lot of time just learning Fusion today, and I think I’m going to have a fever tomorrow."}, {"post_id": 80512, "ts": "2026-10-17T22:48:27Z", "hours": 1.9822, "text": "Designing, designing, designing, … Designing the 2D sketch of the 3D model and that’s it."}, {"post_id": 80255, "ts": "2026-10-16T23:11:10Z", "hours": 1.6958, "text": "It’s 1am, you should go to sleep I spent the first hours of the morning putting switches and keycaps on my board in Fusion. It took me some time to get it set up and used to it, but I’m getting the hang of it."}, {"post_id": 80212, "ts": "2026-10-16T19:18:10Z", "hours": 0.7761, "text": "FINISHED THE PCB Finally finished the PCB! It took some time, but it was worth the effort; I can’t find a single flaw with it."}, {"post_id": 80008, "ts": "2026-10-15T23:12:02Z", "hours": 4.7556, "text": "Still PCB designing Almost finished with the board. It took me about 12 hours to get to this point, but I’m happy with the outcome. I really took my time with tracing, but it looks amazing. I hope 3D modeling is going to go a bit faster, though."}, {"post_id": 79750, "ts": "2026-10-15T08:41:57Z", "hours": 2.1381, "text": "I continued with my PCB by making traces. Next up is making the shape of the board and creating the ground plane, but I still need to figure out how to do that."}, {"post_id": 79658, "ts": "2026-10-14T22:59:46Z", "hours": 3.3756, "text": "Today, I was working on the PCB for my design. I concluded that I won’t have enough ports to use two rotary encoders, so I removed one. I also updated the design accordingly. In the end, I finished the schematic and started routing the PCB. I still have to figure out how to make a breakout board. Does anyone have a good tutorial or tips?"}, {"post_id": 79487, "ts": "2026-10-14T08:22:30Z", "hours": 0.8953, "text": "I was making an electrical schematic for my HackPad, and I ran into an issue when connecting all the components to the controller, as there are not enough pins. I have: dispaly(2 pins), 3x3 matrix(6 pins), rgb leds(1 pin) and 2 rotary encoders(4 pins, the buttons are in the matrix). The controler has 11 data pins but I need 13. Can someone help?"}, {"post_id": 79402, "ts": "2026-10-13T20:26:58Z", "hours": 0.9164, "text": "Finishing the day by creating an overall design for the hackPad to give myself an idea of how to build the PCB and case. I ended up with the idea of making a breakout board that I can connect with some wires to the main board and mount one of the rotary encoders on the side. Also im wondering what you guys use to make quick design, personally use draw.io ."}, {"post_id": 79363, "ts": "2026-10-13T17:27:33Z", "hours": 0.4692, "text": "My first PCB design."}]...
|
Title: My awesome HackPad! by @Leon_know | Stardan Title: My awesome HackPad! by @Leon_know | Stardance
Devlogs:
My first PCB design.
Finishing the day by creating an overall design for the hackPad to give myself an idea of how to build the PCB and case. I ended up with the idea of making a breakout board that I can connect with some wires to the main board and mount one of the rotary encoders on the side. Also im wondering what you guys use to make quick design, personally use draw.io .
I was making an electrical schematic for my HackPad, and I ran into an issue when connecting all the components to the controller, as there are not enough pins. I have: dispaly(2 pins), 3x3 matrix(6 pins), rgb leds(1 pin) and 2 rotary encoders(4 pins, the buttons are in the matrix). The controler has 11 data pins but I need 13. Can someone help?
Today, I was working on the PCB for my design. I concluded that I won’t have enough ports to use two rotary encoders, so I removed one. I also updated the design accordingly. In the end, I finished the schematic and started routing the PCB. I still have to figure out how to make a breakout board. Does anyone have a good tutorial or tips?
I continued with my PCB by making traces. Next up is making the shape of the board and creating the ground plane, but I still need to figure out how to do that.
Still PCB designing Almost finished with the board. It took me about 12 hours to get to this point, but I’m happy with the outcome. I really took my time with tracing, but it looks amazing. I hope 3D modeling is going to go a bit faster, though.
FINISHED THE PCB Finally finished the PCB! It took some time, but it was worth the effort; I can’t find a single flaw with it.
It’s 1am, you should go to sleep I spent the first hours of the morning putting switches and keycaps on my board in Fusion. It took me some time to get it set up and used to it, but I’m getting the hang of it.
Designing, designing, designing, … Designing the 2D sketch of the 3D model and that’s it.
My Head Hurts… Spent a lot of time just learning Fusion today, and I think I’m going to have a fever tomorrow.
I made a weele.
Finished my 3D design. What do you think? :)...
|
1792849851.7541702
|
1793454651.7541702
|
|
37502
|
bestspark.org by @BestSpark687090 | Stardance
|
BestSpark687090
|
2
|
26.34
|
159
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-11T20:33:11Z", "hours": 10.0, "multiplier": 7.21, "payout": 70, "blessing": "neutral", "text": "This is my second ship of my unblocked games site. It’s named “BestSpark’s Site” but i named the project bestspark.org because why not. This first image you see? That’s the “cloak” of the site, making it appear harmless at first. Second image is the actual site, by the way. Kinda weird I can’t add more than 2 images… oh well. I do have a bunch of games on it, so why not try it? The link to my discord server is… here if i did that right. I… don’t know and I forget how to actually do it sometimes. I’m shipping now because my school starts in 2 days… and I 100% won’t have time to code and have the time show up here. I think. I hope you have a great rest of your day/night!", "repo": "https://github.com/BestSpark687090/BestSpark687090", "demo": "https://bestspark.org"}, {"ship_num": 2, "ts": "2026-07-30T02:08:13Z", "hours": 9.0, "multiplier": 9.89, "payout": 89, "blessing": "neutral", "text": "Have you ever wanted a game website for school that would… hopefully- be unblocked? well look no further than bestspark.org! this is my personal site, and you can experience it yourself today. it’s not really a… personal site, but I’d call it close enough. there are a BUNCH of games, with a built in cloaking feature (it does it on open, or you can press escape 3 times!) i’ve been working on this project for a while now… and i kinda hope you enjoy it. if you uhh- really want to- you can join my discord at discord.gg/bestspark i guess. (PS: this wasnt started during stardance… but it’s my site. what can you really do about it :P) anyways have fun and uhhh- enjoy the rest of your day/night, person who’s reading this :)", "repo": "https://github.com/BestSpark687090/BestSpark687090", "demo": "https://bestspark.org"}]...
|
[{"post_id": 52503, "ts": "202 [{"post_id": 52503, "ts": "2026-08-22T17:22:43Z", "hours": 7.34, "text": "so i set up sparky ai the walmart ai. yeah. its avaliable at any of my links. Username and password is “sparky” it has access to my cart. it can add. people have already added too many things. please just dont add anything for the time being if you jailbreak it please contact me i want to use it okay thank you so much you have a great day"}, {"post_id": 45006, "ts": "2026-08-11T04:26:17Z", "hours": 1.4878, "text": "well i did it! the singlefile has been made successfully ! yippee! i did a cool thing i guess! i also made a wisp server changing thingy as well but its not visible in the screenshot the “wisp server” is to proxy requests to my server even if it’s blocked in your school example, my school has my website blocked (it got too popular, it was actually unblocked before) so i’d use a different link of mine to view it instead! (the links are in my discord server right here !) have a great morning/evening/night depending on the time you read this"}, {"post_id": 44871, "ts": "2026-08-10T22:11:29Z", "hours": 1.9111, "text": "nevermind its not going so good anymore this bug is plaguing the singlefile pieces at least i have an svg maker for it so i can use it like that buuuuuuuuut i gotta fix these bugs first."}, {"post_id": 44779, "ts": "2026-08-10T19:45:56Z", "hours": 3.6083, "text": "I’m SingleFiling now! this is genuinely going so good!!!!! games even work now! i’m finalizing everything up and will be out soon!!!!"}, {"post_id": 44420, "ts": "2026-08-10T05:18:01Z", "hours": 0.6111, "text": "devlog #i have no idea what number this is i’ve been asking ais i have access to (gpt, claude, (i even decided to ask deepseek too, made an account rq)) about what i could fix on my site. image 1: gpt telling me about the games section image 2: gpt - summary of what ive said to it or whatever image 3: deepseek telling me what i should change i could ask more ais but im already wasting enough water as is. thank you for reading"}, {"post_id": 43616, "ts": "2026-08-08T23:55:33Z", "hours": 1.4714, "text": "I’ve been making a settings page! It’s linked on a gear icon in the bottom right. All colors automatically change when you change them, too! ok byeeee :P"}, {"post_id": 43530, "ts": "2026-08-08T21:03:21Z", "hours": 0.5617, "text": "i made https://bestspark.hackclub.app a valid link! i forgot why i have these 17 minutes of time but im using them now ok bye"}, {"post_id": 36842, "ts": "2026-07-29T05:00:54Z", "hours": 1.1319, "text": "the egg in between. (deltarune reference) https://egg.bestspark.org (i’ve been seeing this EVERYWHERE on my tiktok feed so i decided to do a little funny with it)"}, {"post_id": 36201, "ts": "2026-07-28T04:08:59Z", "hours": 2.4175, "text": "so turns out its devlog 8 time ive been trying so hard to get this singlefile working im gonna be so honest though has anyone asked if i should…? I’m just kidding. This might be useful for later techniques though! Right now, it’s in the linking phase, where all the scripts are linked via actual external JS files. Also, I removed the images that are grabbed weirdly (aka, not from gn-math) and just slapped a image i made in like a minute about how to remove that. in my opinion though… i’m not even sure if i should’ve made this. You gotta do it just because though. Goodnight. (Or whatever, depending on timezones and other things)"}, {"post_id": 35622, "ts": "2026-07-27T05:18:58Z", "hours": 0.3764, "text": "devlog 6 i believe? I did it. It is currently 12:17 AM and I have stuff to do tomorrow. The singlefile has been made successfully. Unfortunately, it only shows one game section because I can’t get the others to show. That will HOPEFULLY be fixed up soon when I get the courage to! Anyways, this was kinda exhausting to make. Goodnight. Here’s the file link. Download it and open it up! https://github.com/BestSpark687090/stupid_singlefile/blob/main/single-min.html"}, {"post_id": 35615, "ts": "2026-07-27T04:36:23Z", "hours": 1.7222, "text": "devlog numero cinco (5) im making a singlefile. the biggest problem with it’s gonna be that it’s gotta be updated manually and… that’s kinda tough. i could probably make a script that does it for me… to be honest. Problem is, i’ve changed so much that it literally needs to be an EXTREMELY goofy script and would need to figure out how to get all the css and js in there properly. for now, im not even singlefiling it fully. The CSS and JS are in separate files… for now. wish me luck, i guess."}, {"post_id": 35506, "ts": "2026-07-26T23:56:02Z", "hours": 0.7431, "text": "devlog number 4 i guess? im gonna be so honest i didnt even KNOW i had 25 minutes logged - im gonna use them tho! so ive added a couple games- probably mostly just 15% in the top left. i found it here, so i thought i might as well use it heres what my current “web ports” section looks like! of course, there’s a whole lot more games actually there, but these are ones ive ported myself. anyways uhhh you people enjoy the rest of your day and thanks for reading this"}, {"post_id": 32445, "ts": "2026-07-21T17:16:47Z", "hours": 0.9, "text": "i guess devlog number four so i webported a game i managed to figure out how to get actual time on it it was one of those baldi “numberslop” mods its called hydrogen and yes its on my games section now ok bye"}, {"post_id": 32084, "ts": "2026-07-21T00:23:50Z", "hours": 0.7664, "text": "devlog number 3 perchance so first things first ive been verified so people can see these goofy ahh posts? yay. so uhhhhhh there aren’t really any visible changes however i did re-format most of the code using prettier the other thing i did was actually change some of the links that were blocked to actual unblocked links. probably gonna try to add some games and figure out how in the world i can classify that as time on here okay thats all goobbye"}, {"post_id": 31925, "ts": "2026-07-20T18:32:38Z", "hours": 0.995, "text": "devlog number 2 i guess? literally the only new visible thing is the about:blank warning and you can press a to toggle on and off the about:blank cloaking (aka hiding the website in a lil secret-ish window) theres probably gonna be more today but that might be it for now"}, {"post_id": 31623, "ts": "2026-07-20T05:35:44Z", "hours": 0.3933, "text": "okay uhhh devlog number one as they say so basically for some actual context ive been making an unblocked games site for a while now- i decided to post it here because i saw this on a discord and… well yeah im here now today i uhhh basically made some slight tweaks to the code, moved a section from the index to a different part of the page, and made it better to not be seen by the filter scanners. lil anti-climactic for the first one but oh well."}]...
|
Title: bestspark.org by @BestSpark687090 | Stardan Title: bestspark.org by @BestSpark687090 | Stardance
Devlogs:
okay uhhh devlog number one as they say so basically for some actual context ive been making an unblocked games site for a while now- i decided to post it here because i saw this on a discord and… well yeah im here now today i uhhh basically made some slight tweaks to the code, moved a section from the index to a different part of the page, and made it better to not be seen by the filter scanners. lil anti-climactic for the first one but oh well.
devlog number 2 i guess? literally the only new visible thing is the about:blank warning and you can press a to toggle on and off the about:blank cloaking (aka hiding the website in a lil secret-ish window) theres probably gonna be more today but that might be it for now
devlog number 3 perchance so first things first ive been verified so people can see these goofy ahh posts? yay. so uhhhhhh there aren’t really any visible changes however i did re-format most of the code using prettier the other thing i did was actually change some of the links that were blocked to actual unblocked links. probably gonna try to add some games and figure out how in the world i can classify that as time on here okay thats all goobbye
i guess devlog number four so i webported a game i managed to figure out how to get actual time on it it was one of those baldi “numberslop” mods its called hydrogen and yes its on my games section now ok bye
devlog number 4 i guess? im gonna be so honest i didnt even KNOW i had 25 minutes logged - im gonna use them tho! so ive added a couple games- probably mostly just 15% in the top left. i found it here, so i thought i might as well use it heres what my current “web ports” section looks like! of course, there’s a whole lot more games actually there, but these are ones ive ported myself. anyways uhhh you people enjoy the rest of your day and thanks for reading this
devlog numero cinco (5) im making a singlefile. the biggest problem with it’s gonna be that it’s gotta be updated manually and… that’s kinda tough. i could probably make a script that does it for me… to be honest. Problem is, i’ve changed so much that it literally needs to be an EXTREMELY goofy script and would need to figure out how to get all the css and js in there properly. for now, im not even singlefiling it fully. The CSS and JS are in separate files… for now. wish me luck, i guess.
devlog 6 i believe? I did it. It is currently 12:17 AM and I have stuff to do tomorrow. The singlefile has been made successfully. Unfortunately, it only shows one game section because I can’t get the others to show. That will HOPEFULLY be fixed up soon when I get the courage to! Anyways, this was kinda exhausting to make. Goodnight. Here’s the file link. Download it and open it up! https://github.com/BestSpark687090/stupid_singlefile/blob/main/single-min.html
so turns out its devlog 8 time ive been trying so hard to get this singlefile working im gonna be so honest though has anyone asked if i should…? I’m just kidding. This might be useful for later techniques though! Right now, it’s in the linking phase, where all the scripts are linked via actual external JS files. Also, I removed the images that are grabbed weirdly (aka, not from gn-math) and just slapped a image i made in like a minute about how to remove that. in my opinion though… i’m not even sure if i should’ve made this. You gotta do it just because though. Goodnight. (Or whatever, depending on timezones and other things)
the egg in between. (deltarune reference) https://egg.bestspark.org (i’ve been seeing this EVERYWHERE on my tiktok feed so i decided to do a little funny with it)
i made https://bestspark.hackclub.app a valid link! i forgot why i have these 17 minutes of time but im using them now ok bye
I’ve been making a settings page! It’s linked on a gear icon in the bottom right. All colors automatically change when you change them, too! ok byeeee :P
devlog #i have no idea what number this is i’ve been asking ais i have access to (gpt, claude, (i even decided to ask deepseek too, made an account rq)) about what i could fix on my site. image 1: gpt telling me about the games section image 2: gpt - summary of what ive said to it or whatever image 3: deepseek telling me what i should change i could ask more ais but im already wasting enough water as is. thank you for reading
I’m SingleFiling now! this is genuinely going so good!!!!! games even work now! i’m finalizing everything up and will be out soon!!!!
nevermind its not going so good anymore this bug is plaguing the singlefile pieces at least i have an svg maker for it so i can use it like that buuuuuuuuut i gotta fix these bugs first.
well i did it! the singlefile has been made successfully ! yippee! i did a cool thing i guess! i also made a wisp server changing thingy as well but its not visible in the screenshot the “wisp server” is to proxy requests to my server even if it’s blocked in your school example, my school has my website blocked (it got too popular, it was actually unblocked before) so i’d use a different link of mine to view it instead! (the links are in my discord server right here !) have a great morning/evening/night depending on the time you read this
so i set up sparky ai the walmart ai. yeah. its avaliable at any of my links. Username and password is “sparky” it has access to my cart. it can add. people have already added too many things. please just dont add anything for the time being if you jailbreak it please contact me i want to use it okay thank you so much you have a great day
Ships:
Have you ever wanted a game website for school that would… hopefully- be unblocked? well look no further than bestspark.org! this is my personal site, and you can experience it yourself today. it’s not really a… personal site, but I’d call it close enough. there are a BUNCH of games, with a built in cloaking feature (it does it on open, or you can press escape 3 times!) i’ve been working on this project for a while now… and i kinda hope you enjoy it. if you uhh- really want to- you can join my discord at discord.gg/bestspark i guess. (PS: this wasnt started during stardance… but it’s my site. what can you really do about it :P) anyways have fun and uhhh- enjoy the rest of your day/night, person who’s reading this :)
This is my second ship of my unblocked games site. It’s named “BestSpark’s Site” but i named the project bestspark.org because why not. This first image you see? That’s the “cloak” of the site, making it appear harmless at first. Second image is the actual site, by the way. Kinda weird I can’t add more than 2 images… oh well. I do have a bunch of games on it, so why not try it? The link to my discord server is… here if i did that right. I… don’t know and I forget how to actually do it sometimes. I’m shipping now because my school starts in 2 days… and I 100% won’t have time to code and have the time show up here. I think. I hope you have a great rest of your day/night!...
|
1793116138.3989697
|
1793202538.3989697
|
|
40031
|
FlareBisect by @Kaorii | Stardance
|
Kaorii
|
0
|
26.32
|
0
|
[]
|
[{"post_id": 35686, "ts": "202 [{"post_id": 35686, "ts": "2026-07-27T08:58:27Z", "hours": 4.6644, "text": "07:35 — Back at it. Package’s live on PyPI, install works, so this session’s about making the repo itself look like it belongs to a finished project instead of a hackathon fork. 07:55 — Wanted a banner for the README. Kept going back and forth on whether it should be a screenshot of the actual CLI output or something more abstract. Landed on abstract — a line of commit dots going from dull gray to a lit flare mark, wordmark next to it. Felt more “brand” than a terminal screenshot would. 08:30 — First SVG attempt had the flare rays overlapping the wordmark at smaller widths. Pushed the text further right, widened the canvas. Basic stuff but took a few passes to get spacing right by eye. 08:50 — Rendered a PNG fallback version for anywhere that doesn’t support inline SVG. Font fell back to a generic system font on the PNG since I didn’t bundle one, looks noticeably worse than the SVG. Decided the SVG is the primary asset for the README since GitHub renders those natively anyway, PNG’s just a backup. 09:15 — While in the repo, noticed –runs wasn’t being validated, someone could pass –runs 0 and it’d silently divide by zero computing flake rate. Added a floor of 1 and a proper error message instead of a traceback. 09:40 — Also caught that flarebisect config would happily let you set a provider without a model name, then blow up later when it actually tried to call the API. Added validation at config-set time instead of at call time, better to fail fast with a clear message than five minutes into a bisect run. 10:05 — Cleaned up the –help text, some of the flag descriptions were leftover placeholder text from when I first scaffolded the CLI and never got a proper pass. 10:25 — Dropped the banner into the README at the top, tested how it renders on GitHub’s actual page (not just the local markdown preview) since GitHub sometimes handles SVG differently. Looked fine. 10:45 — Version bump, rebuilt the package, twine check again to make sure everything’s still clean before pushing to PyPI. Small thing but wanted the fixes from earlier (the runs validation, the config validation) actually live and pip-installable, not just sitting in the repo. 11:10 — Published the update. Reinstalled in a clean venv just to confirm the new version actually pulls and the fixes are really there, not trusting past-me on this after the API key incident last session. 11:35 — Went back through the README end to end as if I were a judge seeing this cold for the first time. Tightened a couple of sentences that were doing too much work, moved the install command higher since that’s probably the first thing anyone actually copies. 12:14 — Banner’s in, small CLI footguns are patched, PyPI’s current. v1."}, {"post_id": 35128, "ts": "2026-07-26T11:33:11Z", "hours": 21.6511, "text": "FlareBisect - Find Flare in your codebase. Hour 0 — 23:40 — Locked the idea: bisect on flake rate instead of pass/fail. Repo’s up, README written before any code so I remember why this is cool by hour 10. Hour 2 — 01:33 — Core loop: walk commit range, checkout each into a git worktree, run tests N times, count pass/fail. First time scripting worktrees, cleanup semantics bit me immediately. Hour 3 — 02:20 — Needed a demo repo with an actual flaky bug. Wrote a throwaway project: module-level dict mutated by a thread with no lock. Good commit passes clean, bad commit fails ~30-40% of the time. Perfect. Hour 4 — 03:05 — First real bug: worktree checkouts were reusing the same directory, so “parallel” runs were actually serialized and reading stale files. Race condition in the tool that detects race conditions. Fixed with per-run temp dirs. Hour 7 — 05:30 — Wired up the actual bisection walk, narrowing the range by comparing midpoint flake rate to baseline. First full run against the demo repo — it found the real seeded bug commit. Stared at the terminal for a second like an idiot. Hour 9 — 07:02 — Slept ~40 min on the floor next to the desk. Hour 10 — 07:50 — AI explanation layer. First prompt was too open, got a 4-paragraph essay nobody’s reading in a 30s demo. Rewrote for one or two sentences, plain English. Hour 11 — 08:41 — API key wasn’t loading — .env was being read after typer’s own startup. Moved load_dotenv() to the top of main . 25 minutes lost to printing None. Hour 13 — 10:22 — Demo run was too slow for a 30s video (5 runs × 12 commits). Trimmed the demo repo’s range, made –runs configurable without touching real defaults. Hour 14 — 11:15 — Built flarebisect demo as its own command so I’m not fumbling flags live. Should’ve done this at hour 3. Hour 16 — 12:50 — Existential dip — is “flake rate as a bisectable signal” actually novel or just a dressed-up loop. Decided it doesn’t matter, demo’s good, keep going. Hour 19 — 15:05 — Recorded the demo. Six takes. Too-small font, fat-fingered hash, then a clean one under 30 seconds. Hour 20 — 15:50 — Slides — kept text minimal, letting the terminal recording carry it. Hour 21 — 16:40 — Packaging pass so this is pip install-able, not clone-and-pray. pyproject.toml metadata, GitHub Actions build/publish workflow, twine check clean. Also ripped out the hardcoded Claude API call — didn’t want to ship something that only works with my personal key. Abstracted behind a provider interface, added flarebisect config, verified it against local Ollama too (worse explanations, but the abstraction’s real). Ended up redoing the CLI output a third time as a side effect of the provider switch. Wasn’t planning on it, no regrets. Pushed to github.com/kaorii-ako/FlareBisect, stripped the Claude Code co-author trailer first. Still not done — demo needs a re-record since the output changed again, slides aren’t finished. Going."}]...
|
Title: FlareBisect by @Kaorii | Stardance
Devlogs Title: FlareBisect by @Kaorii | Stardance
Devlogs:
FlareBisect - Find Flare in your codebase. Hour 0 — 23:40 — Locked the idea: bisect on flake rate instead of pass/fail. Repo’s up, README written before any code so I remember why this is cool by hour 10. Hour 2 — 01:33 — Core loop: walk commit range, checkout each into a git worktree, run tests N times, count pass/fail. First time scripting worktrees, cleanup semantics bit me immediately. Hour 3 — 02:20 — Needed a demo repo with an actual flaky bug. Wrote a throwaway project: module-level dict mutated by a thread with no lock. Good commit passes clean, bad commit fails ~30-40% of the time. Perfect. Hour 4 — 03:05 — First real bug: worktree checkouts were reusing the same directory, so “parallel” runs were actually serialized and reading stale files. Race condition in the tool that detects race conditions. Fixed with per-run temp dirs. Hour 7 — 05:30 — Wired up the actual bisection walk, narrowing the range by comparing midpoint flake rate to baseline. First full run against the demo repo — it found the real seeded bug commit. Stared at the terminal for a second like an idiot. Hour 9 — 07:02 — Slept ~40 min on the floor next to the desk. Hour 10 — 07:50 — AI explanation layer. First prompt was too open, got a 4-paragraph essay nobody’s reading in a 30s demo. Rewrote for one or two sentences, plain English. Hour 11 — 08:41 — API key wasn’t loading — .env was being read after typer’s own startup. Moved load_dotenv() to the top of main . 25 minutes lost to printing None. Hour 13 — 10:22 — Demo run was too slow for a 30s video (5 runs × 12 commits). Trimmed the demo repo’s range, made –runs configurable without touching real defaults. Hour 14 — 11:15 — Built flarebisect demo as its own command so I’m not fumbling flags live. Should’ve done this at hour 3. Hour 16 — 12:50 — Existential dip — is “flake rate as a bisectable signal” actually novel or just a dressed-up loop. Decided it doesn’t matter, demo’s good, keep going. Hour 19 — 15:05 — Recorded the demo. Six takes. Too-small font, fat-fingered hash, then a clean one under 30 seconds. Hour 20 — 15:50 — Slides — kept text minimal, letting the terminal recording carry it. Hour 21 — 16:40 — Packaging pass so this is pip install-able, not clone-and-pray. pyproject.toml metadata, GitHub Actions build/publish workflow, twine check clean. Also ripped out the hardcoded Claude API call — didn’t want to ship something that only works with my personal key. Abstracted behind a provider interface, added flarebisect config, verified it against local Ollama too (worse explanations, but the abstraction’s real). Ended up redoing the CLI output a third time as a side effect of the provider switch. Wasn’t planning on it, no regrets. Pushed to github.com/kaorii-ako/FlareBisect, stripped the Claude Code co-author trailer first. Still not done — demo needs a re-record since the output changed again, slides aren’t finished. Going.
07:35 — Back at it. Package’s live on PyPI, install works, so this session’s about making the repo itself look like it belongs to a finished project instead of a hackathon fork. 07:55 — Wanted a banner for the README. Kept going back and forth on whether it should be a screenshot of the actual CLI output or something more abstract. Landed on abstract — a line of commit dots going from dull gray to a lit flare mark, wordmark next to it. Felt more “brand” than a terminal screenshot would. 08:30 — First SVG attempt had the flare rays overlapping the wordmark at smaller widths. Pushed the text further right, widened the canvas. Basic stuff but took a few passes to get spacing right by eye. 08:50 — Rendered a PNG fallback version for anywhere that doesn’t support inline SVG. Font fell back to a generic system font on the PNG since I didn’t bundle one, looks noticeably worse than the SVG. Decided the SVG is the primary asset for the README since GitHub renders those natively anyway, PNG’s just a backup. 09:15 — While in the repo, noticed –runs wasn’t being validated, someone could pass –runs 0 and it’d silently divide by zero computing flake rate. Added a floor of 1 and a proper error message instead of a traceback. 09:40 — Also caught that flarebisect config would happily let you set a provider without a model name, then blow up later when it actually tried to call the API. Added validation at config-set time instead of at call time, better to fail fast with a clear message than five minutes into a bisect run. 10:05 — Cleaned up the –help text, some of the flag descriptions were leftover placeholder text from when I first scaffolded the CLI and never got a proper pass. 10:25 — Dropped the banner into the README at the top, tested how it renders on GitHub’s actual page (not just the local markdown preview) since GitHub sometimes handles SVG differently. Looked fine. 10:45 — Version bump, rebuilt the package, twine check again to make sure everything’s still clean before pushing to PyPI. Small thing but wanted the fixes from earlier (the runs validation, the config validation) actually live and pip-installable, not just sitting in the repo. 11:10 — Published the update. Reinstalled in a clean venv just to confirm the new version actually pulls and the fixes are really there, not trusting past-me on this after the API key incident last session. 11:35 — Went back through the README end to end as if I were a judge seeing this cold for the first time. Tightened a couple of sentences that were doing too much work, moved the install command higher since that’s probably the first thing anyone actually copies. 12:14 — Banner’s in, small CLI footguns are patched, PyPI’s current. v1....
|
1792914700.404129
|
1793778700.404129
|
|
64622
|
PAW MAYHEM by @torren | Stardance
|
torren
|
0
|
26.31
|
0
|
[]
|
[{"post_id": 82380, "ts": "202 [{"post_id": 82380, "ts": "2026-10-24T17:37:16Z", "hours": 3.5147, "text": "Huge update for PAW MAYHEM! I rebuilt the whole PLAY flow like Rivals: pick 1v1 all the way up to 5v5, bots fill in if nobody’s around, then vote a map and a gamemode on big picture tiles. The 1v1–5v5 duel maps are brand new: Meadow, Sakura Garden, Autumn Ridge and Frost Peaks, all floating islands like Sky Islands, with swimmable waterfalls. Every map got its own features: waterfalls and ziplines on Sky Islands, lava geysers on Volcano, giant springs, a ball pit and a toy train on Toybox, and window-cleaner lifts and surging billboards on Rooftops. Cats can now climb walls and use three abilities (Boost, Jumps, Fly), and they have a ton of new animations like flips, landing squash, tumbling when launched and idle stretches. The weapons screen is redone with a big 3D blaster you can drag to look around, and emotes now have 6 slots. I also fixed the phone jump button, shot accuracy and swimming. Last, I finished the lobby: a Rivals-style spawn with the logo on the floor, news screens, vending machines and posters."}, {"post_id": 78886, "ts": "2026-10-11T21:34:00Z", "hours": 9.0556, "text": "Rebuilt the cat in Blender instead of stacking Roblox parts. Smooth meshes, a real open hoodie with folds and cuffs, a satchel on a leather strap, round glossy eyes and a white blaze down the face. The ears took a few tries: one version came out looking like triangles, so I brought back the older rounder ones. The first fluffy tail had bits sticking out of it and looked like a monster, so now it’s one smooth plump tail. The blasters looked like kids’ toys, so I redesigned them as stylized sci-fi guns with real gun parts: receiver, rail, vented handguard, magazine, stock and sights, with one colour panel and a small glow at the muzzle. Each gun has its own shot sound and bolt style. Gameplay feel was the big one. Your shots now show up instantly on your screen, and hit detection leans toward the shooter. Hits launch cats up and away instead of just nudging them. Bigger guns kick you back, and you can wall-jump and pounce (E). Bots got a skill level and a favourite gun each, keep to that gun’s range, and only shoot what they can actually see. Also added: Neon Rooftops, a fourth map 3 spawns per team spread across different islands emotes that actually animate a hit sound that rises in pitch as the target’s knockback % climbs a thump and whoosh when a cat gets launched a slow-mo replay of your last knockout at the end of each match an intro for new players: a short cinematic, then Mochi, a mentor cat, teaching you each move hands-on Next: a proper lobby."}, {"post_id": 76544, "ts": "2026-10-03T21:57:00Z", "hours": 12.2517, "text": "PAW MAYHEM devlog: the game has a real lobby now The old play screen felt like a menu stuck on top of a game, so I replaced it with a walkable lobby, like Rivals on Roblox. You spawn on a garden island in the sky, facing the duel pads. Behind you is a practice range with target cats you can knock off the back edge. On the left there’s an armory with every blaster on a pedestal (walk up and press F to equip one). On the right there’s a boutique of cats wearing featured looks, and front-right is a board showing the top trophy players. Railings and an invisible wall keep you in, and if you fall off you get put back. Shop, Customize, Loadout and Season Pass are now small icons on the side of the screen instead of full menu pages, and PLAY sits at the bottom. Press it, pick a mode, vote for a map, and the camera flies over the arena before you drop in. Matches fill up to 16 cats with bots when there aren’t enough people. Duels: there are 1v1 and 2v2 pads in front of spawn. Stand on a slot, and when the pad fills up there’s a 3 second countdown, then you get your own duel on one of three new maps: Sky Bridge, Rooftop Duel and Crystal Ring. First to 5 knockouts wins trophies. If nobody joins within 15 seconds, a bot takes the empty slot. Bot duels don’t give trophies, so you can’t farm them. You can also change your loadout mid-match now. Press B and pick a blaster. If you’re in the first 5 seconds after spawning it goes straight into your paws, otherwise you get it when you respawn. The annoying part: the first time I pressed Play, I just fell forever. The lobby is far from everything else, and Roblox streaming hadn’t sent the floor to my game yet, so my cat fell through, got teleported back, and fell again. I turned streaming off and made spawning wait until there’s ground under you."}, {"post_id": 72238, "ts": "2026-09-22T14:48:27Z", "hours": 1.4858, "text": "spent today building paw mayhem, a physics-based roblox multiplayer brawler where you play as a customizable cat and shoot enemies off floating islands. built the full game from scratch using rojo — server-authoritative knockback physics, 3 procedural maps (sky islands, volcano, toybox), and 8 weapons each with a unique silhouette. wrote all the ui in code: main menu with an animated hero scene, in-game hud, customize, shop, loadout, leaderboard, quests, and a victory screen with confetti. also set up xp/level progression, a coin economy, daily quests, and mid-match power-ups. zero toolbox models, every part, icon, and map decoration is built from roblox primitives."}]...
|
Title: PAW MAYHEM by @torren | Stardance
Devlogs: Title: PAW MAYHEM by @torren | Stardance
Devlogs:
spent today building paw mayhem, a physics-based roblox multiplayer brawler where you play as a customizable cat and shoot enemies off floating islands. built the full game from scratch using rojo — server-authoritative knockback physics, 3 procedural maps (sky islands, volcano, toybox), and 8 weapons each with a unique silhouette. wrote all the ui in code: main menu with an animated hero scene, in-game hud, customize, shop, loadout, leaderboard, quests, and a victory screen with confetti. also set up xp/level progression, a coin economy, daily quests, and mid-match power-ups. zero toolbox models, every part, icon, and map decoration is built from roblox primitives.
PAW MAYHEM devlog: the game has a real lobby now The old play screen felt like a menu stuck on top of a game, so I replaced it with a walkable lobby, like Rivals on Roblox. You spawn on a garden island in the sky, facing the duel pads. Behind you is a practice range with target cats you can knock off the back edge. On the left there’s an armory with every blaster on a pedestal (walk up and press F to equip one). On the right there’s a boutique of cats wearing featured looks, and front-right is a board showing the top trophy players. Railings and an invisible wall keep you in, and if you fall off you get put back. Shop, Customize, Loadout and Season Pass are now small icons on the side of the screen instead of full menu pages, and PLAY sits at the bottom. Press it, pick a mode, vote for a map, and the camera flies over the arena before you drop in. Matches fill up to 16 cats with bots when there aren’t enough people. Duels: there are 1v1 and 2v2 pads in front of spawn. Stand on a slot, and when the pad fills up there’s a 3 second countdown, then you get your own duel on one of three new maps: Sky Bridge, Rooftop Duel and Crystal Ring. First to 5 knockouts wins trophies. If nobody joins within 15 seconds, a bot takes the empty slot. Bot duels don’t give trophies, so you can’t farm them. You can also change your loadout mid-match now. Press B and pick a blaster. If you’re in the first 5 seconds after spawning it goes straight into your paws, otherwise you get it when you respawn. The annoying part: the first time I pressed Play, I just fell forever. The lobby is far from everything else, and Roblox streaming hadn’t sent the floor to my game yet, so my cat fell through, got teleported back, and fell again. I turned streaming off and made spawning wait until there’s ground under you.
Rebuilt the cat in Blender instead of stacking Roblox parts. Smooth meshes, a real open hoodie with folds and cuffs, a satchel on a leather strap, round glossy eyes and a white blaze down the face. The ears took a few tries: one version came out looking like triangles, so I brought back the older rounder ones. The first fluffy tail had bits sticking out of it and looked like a monster, so now it’s one smooth plump tail. The blasters looked like kids’ toys, so I redesigned them as stylized sci-fi guns with real gun parts: receiver, rail, vented handguard, magazine, stock and sights, with one colour panel and a small glow at the muzzle. Each gun has its own shot sound and bolt style. Gameplay feel was the big one. Your shots now show up instantly on your screen, and hit detection leans toward the shooter. Hits launch cats up and away instead of just nudging them. Bigger guns kick you back, and you can wall-jump and pounce (E). Bots got a skill level and a favourite gun each, keep to that gun’s range, and only shoot what they can actually see. Also added: Neon Rooftops, a fourth map 3 spawns per team spread across different islands emotes that actually animate a hit sound that rises in pitch as the target’s knockback % climbs a thump and whoosh when a cat gets launched a slow-mo replay of your last knockout at the end of each match an intro for new players: a short cinematic, then Mochi, a mentor cat, teaching you each move hands-on Next: a proper lobby.
Huge update for PAW MAYHEM! I rebuilt the whole PLAY flow like Rivals: pick 1v1 all the way up to 5v5, bots fill in if nobody’s around, then vote a map and a gamemode on big picture tiles. The 1v1–5v5 duel maps are brand new: Meadow, Sakura Garden, Autumn Ridge and Frost Peaks, all floating islands like Sky Islands, with swimmable waterfalls. Every map got its own features: waterfalls and ziplines on Sky Islands, lava geysers on Volcano, giant springs, a ball pit and a toy train on Toybox, and window-cleaner lifts and surging billboards on Rooftops. Cats can now climb walls and use three abilities (Boost, Jumps, Fly), and they have a ton of new animations like flips, landing squash, tumbling when launched and idle stretches. The weapons screen is redone with a big 3D blaster you can drag to look around, and emotes now have 6 slots. I also fixed the phone jump button, shot accuracy and swimming. Last, I finished the lobby: a Rivals-style spawn with the logo on the floor, news screens, vending machines and posters....
|
1793065822.638238
|
1793670622.638238
|
|
44249
|
Neural Network Lab by @rw98651 | Stardance
|
rw98651
|
1
|
26.29
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-08T02:58:11Z", "hours": 18.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hello! NNLab is a Blockly-based neural network engine. The goal is to let you build your own neural network models and learn through experimentation and curiosity, along with building actual neural networks.", "repo": "https://github.com/RA86-dev/Project_NN_Lab", "demo": "https://ra86-dev.github.io/project_NN_Lab/"}]...
|
[{"post_id": 45564, "ts": "202 [{"post_id": 45564, "ts": "2026-08-12T04:25:49Z", "hours": 3.8917, "text": "Devlog #7 : Hello! I added a bunch of visual fields in the blocks, such as a dimension size thing - that shows the sizes of the dimensions (they all need to somehow match! using flatten is easiest). There is stuff underneath the run button - which includes the inference, etc."}, {"post_id": 44131, "ts": "2026-08-09T18:12:12Z", "hours": 3.0219, "text": "Devlog #6 : I added set seed as a extension. This took forever, because for some reason Tensorflow.js does not have the set_seed feature built in (unlike Python). Other than that, I fixed a couple bugs."}, {"post_id": 43539, "ts": "2026-08-08T21:24:24Z", "hours": 1.3778, "text": "Devlog #5 : The website is really really slow when trying to run the models, so I swapped to Web Workers to handle the actual code execution (in the browser still) so it wouldn’t lag down the frontend of the website. I also added two more blocks: Separable Convolutional Network and Permute Layer. Seperable has higher inference speeds (and is used in stuff like MobileNet - a lightweight, mobile computer vision models). Permute modifies the axes of a dataset without actually changing the values of the data."}, {"post_id": 43023, "ts": "2026-08-08T02:12:32Z", "hours": 3.4861, "text": "Devlog 4 : I added support for XOR datasets, and fixed a lot of bugs, along with rewriting some of the code to be easier to use and quicker to use. I also cleaned up the toolbox."}, {"post_id": 42357, "ts": "2026-08-07T01:11:47Z", "hours": 2.5122, "text": "Devlog #3 : I built up a second page for the saved projects and deletion, and modified the README file for the definitions of some words."}, {"post_id": 41679, "ts": "2026-08-06T01:36:31Z", "hours": 3.7372, "text": "Devlog #2 : Hello! I’ve added a ton of new features into the software. Right now, I’ve added Conv2d Layers, Activation Layers, Dropout Layers, LSTM Layers,Max Pooling Layers, Multi-head attention ( still a W.I.P ), Embedding Layers for text, Batch/Layer Normalization, ability to choose custom loss functions, more activation types ,math expressions for math dataset, JSON/JSONL-dataset support, RNNs, a vocabulary list of all the fancy words, custom inference options for raw-inference, and a default template (seen in the image below)."}, {"post_id": 41395, "ts": "2026-08-05T16:12:36Z", "hours": 7.9561, "text": "Devlog 1 : Hello! I’ve built out what I was thinking for the design of this project. It uses blockly for the scratch style engine, and a custom compiler in the background to convert it to actual code. I’m planning to add more types of data, like the ability to import custom data for the model training, and in the future, more types of layers."}]...
|
Title: Neural Network Lab by @rw98651 | Stardance
Title: Neural Network Lab by @rw98651 | Stardance
Devlogs:
Devlog 1 : Hello! I’ve built out what I was thinking for the design of this project. It uses blockly for the scratch style engine, and a custom compiler in the background to convert it to actual code. I’m planning to add more types of data, like the ability to import custom data for the model training, and in the future, more types of layers.
Devlog #2 : Hello! I’ve added a ton of new features into the software. Right now, I’ve added Conv2d Layers, Activation Layers, Dropout Layers, LSTM Layers,Max Pooling Layers, Multi-head attention ( still a W.I.P ), Embedding Layers for text, Batch/Layer Normalization, ability to choose custom loss functions, more activation types ,math expressions for math dataset, JSON/JSONL-dataset support, RNNs, a vocabulary list of all the fancy words, custom inference options for raw-inference, and a default template (seen in the image below).
Devlog #3 : I built up a second page for the saved projects and deletion, and modified the README file for the definitions of some words.
Devlog 4 : I added support for XOR datasets, and fixed a lot of bugs, along with rewriting some of the code to be easier to use and quicker to use. I also cleaned up the toolbox.
Devlog #5 : The website is really really slow when trying to run the models, so I swapped to Web Workers to handle the actual code execution (in the browser still) so it wouldn’t lag down the frontend of the website. I also added two more blocks: Separable Convolutional Network and Permute Layer. Seperable has higher inference speeds (and is used in stuff like MobileNet - a lightweight, mobile computer vision models). Permute modifies the axes of a dataset without actually changing the values of the data.
Devlog #6 : I added set seed as a extension. This took forever, because for some reason Tensorflow.js does not have the set_seed feature built in (unlike Python). Other than that, I fixed a couple bugs.
Devlog #7 : Hello! I added a bunch of visual fields in the blocks, such as a dimension size thing - that shows the sizes of the dimensions (they all need to somehow match! using flatten is easiest). There is stuff underneath the run button - which includes the inference, etc.
Ships:
Hello! NNLab is a Blockly-based neural network engine. The goal is to let you build your own neural network models and learn through experimentation and curiosity, along with building actual neural networks....
|
1793234843.88564
|
1793321243.88564
|
|
40811
|
Lunux by @lune | Stardance
|
lune
|
0
|
26.28
|
0
|
[]
|
[{"post_id": 44280, "ts": "202 [{"post_id": 44280, "ts": "2026-08-09T22:37:08Z", "hours": 7.9286, "text": "Added interrupt handlers It has been 8 hours. 8 hours of pure agony as I try to mimic the linux interrupt handling system. This has by far been the hardest challenge that I have ever faced, and I honestly took a break to recuperate myself and not lose motivation. but we created system interrupts! we can now do much more cool stuffs like virtual memory management and eventually keyboard input, so overall this is exciting."}, {"post_id": 39857, "ts": "2026-08-03T03:46:38Z", "hours": 5.3342, "text": "Added CLib and Cross-Compiling Changes Either way, from the surface, lunux looks exactly the same, but its litterally anything but. Since the version of C we were using was freestanding, I had accsess to no libraries whatsoever, meaning that I couldnt even use printf(), So I had to create all of stdlib that was important FROM SCRATCH. Its embarrassing to think that up to this point, i actually wasn’t using a cross compiler until I literally had to. This thing was a marathon and I’m honestly amazed that I finished it. It taught me a lot about low level programming, alongside learning to be much more resourceful with no libraries, making me realize just how powerful C actually is. Admission Honestly, my motivation of the project was really going low around halfway into this. Although C is my “main language”, i dont consider myself a programmer, and I ran into so many troubles not having any tools by my side, but to be an engineer is to persevere, so I did that. Next Steps We need to get hardware interrupts back. As nice as it is to have Clib inside of lunux, we objectively cannot interact with the operating system at all. With hardware interrupts, we will be able to read data from the keyboard, mouse, and any other USB device. Overall, im feeling really optimistic!"}, {"post_id": 39091, "ts": "2026-08-01T19:49:53Z", "hours": 3.4722, "text": "WORKING ON REAL HARDWARE! These past 3 days have been super difficult for me, as I’ve spent them doing as much research about operating system development as I can. It was really demotivating to see lunux enter a boot loop over and over again, but I persisted and learned more about the linux boot process and how I can make something similar. So i rewrote everything from scratch. It took almost an entire day of research but I realized that I dont even need a multistage bootloader, or anything even remotely fancy, so I used GRUB to load in a basic assembly file that just calls in the kernel, and it works! I had to rewrite my kernel to accommodate for this as well, but nothing too much. Now it works on real hardware and I’m so happy! Soon, I hope to add basic text input and virtual memory."}, {"post_id": 37835, "ts": "2026-07-30T19:54:57Z", "hours": 3.5206, "text": "Now reading from the disk! (Lune + Linux) Its really exciting to see this. I’ve been working for hours, and figured out that a lot of the bugs that I was encountering was coming from how I was loading data from the disk. This is because i was coming dl to the number of sectors I wanted, instead of al. it was a typo that costed me an hour. that initialized most of my 32 bit logic, but there’s still some work to be done. We’re making amazing progress though!"}, {"post_id": 37393, "ts": "2026-07-30T02:28:59Z", "hours": 3.5142, "text": "Devlog #3 of Lunux! (Lune + Linux!) Things aren’t really going how I wanted them to, I learned to read pure binary and hex by just how much my mind is breaking. Basically, I had originally planned for the bootloader to be a multistage bootloader, and so I had made a stage2 file. And then I realized around 2 hours after debugging things related to memory and disk reading, that I don’t… need. a multistage bootloader. Either way, today was very educational; I learned much more about CPU interrupts and how to use them properly in 16 bit assembly. Honestly, I’m at a really weird point where I’m definitely overstepping in my ability in terms of assembly and what I know about low-level programming, but It’s fun to explore uncharted waters. Tomorrow, I hope to enter 32-bit protected mode."}, {"post_id": 36827, "ts": "2026-07-29T04:03:20Z", "hours": 1.1567, "text": "Devlog #2! This is pretty difficult but some progress has been made. What I’ve added Basic memory reading and writing functionality Buggy keyboard input. – I know it’s reading SOMETHING; I just need to figure out what because it activates when I press a key, but clearly isn’t what I’m typing. What I want to add Stage 2 of the bootloader Overall, I think this is going pretty well. Just some bugs I gotta fix tomorrow."}, {"post_id": 36183, "ts": "2026-07-28T03:18:16Z", "hours": 1.3492, "text": "It was pretty hard to get this working. Setup a few utility functions so that we can start printing some stuff out, getting the github repository setup was pretty difficult. This first chapter helped me learn about assembly a little more since its been a while since Ive coded in it. Overall, im really excited for this project."}]...
|
Title: Lunux by @lune | Stardance
Devlogs:
It was Title: Lunux by @lune | Stardance
Devlogs:
It was pretty hard to get this working. Setup a few utility functions so that we can start printing some stuff out, getting the github repository setup was pretty difficult. This first chapter helped me learn about assembly a little more since its been a while since Ive coded in it. Overall, im really excited for this project.
Devlog #2! This is pretty difficult but some progress has been made. What I’ve added Basic memory reading and writing functionality Buggy keyboard input. – I know it’s reading SOMETHING; I just need to figure out what because it activates when I press a key, but clearly isn’t what I’m typing. What I want to add Stage 2 of the bootloader Overall, I think this is going pretty well. Just some bugs I gotta fix tomorrow.
Devlog #3 of Lunux! (Lune + Linux!) Things aren’t really going how I wanted them to, I learned to read pure binary and hex by just how much my mind is breaking. Basically, I had originally planned for the bootloader to be a multistage bootloader, and so I had made a stage2 file. And then I realized around 2 hours after debugging things related to memory and disk reading, that I don’t… need. a multistage bootloader. Either way, today was very educational; I learned much more about CPU interrupts and how to use them properly in 16 bit assembly. Honestly, I’m at a really weird point where I’m definitely overstepping in my ability in terms of assembly and what I know about low-level programming, but It’s fun to explore uncharted waters. Tomorrow, I hope to enter 32-bit protected mode.
Now reading from the disk! (Lune + Linux) Its really exciting to see this. I’ve been working for hours, and figured out that a lot of the bugs that I was encountering was coming from how I was loading data from the disk. This is because i was coming dl to the number of sectors I wanted, instead of al. it was a typo that costed me an hour. that initialized most of my 32 bit logic, but there’s still some work to be done. We’re making amazing progress though!
WORKING ON REAL HARDWARE! These past 3 days have been super difficult for me, as I’ve spent them doing as much research about operating system development as I can. It was really demotivating to see lunux enter a boot loop over and over again, but I persisted and learned more about the linux boot process and how I can make something similar. So i rewrote everything from scratch. It took almost an entire day of research but I realized that I dont even need a multistage bootloader, or anything even remotely fancy, so I used GRUB to load in a basic assembly file that just calls in the kernel, and it works! I had to rewrite my kernel to accommodate for this as well, but nothing too much. Now it works on real hardware and I’m so happy! Soon, I hope to add basic text input and virtual memory.
Added CLib and Cross-Compiling Changes Either way, from the surface, lunux looks exactly the same, but its litterally anything but. Since the version of C we were using was freestanding, I had accsess to no libraries whatsoever, meaning that I couldnt even use printf(), So I had to create all of stdlib that was important FROM SCRATCH. Its embarrassing to think that up to this point, i actually wasn’t using a cross compiler until I literally had to. This thing was a marathon and I’m honestly amazed that I finished it. It taught me a lot about low level programming, alongside learning to be much more resourceful with no libraries, making me realize just how powerful C actually is. Admission Honestly, my motivation of the project was really going low around halfway into this. Although C is my “main language”, i dont consider myself a programmer, and I ran into so many troubles not having any tools by my side, but to be an engineer is to persevere, so I did that. Next Steps We need to get hardware interrupts back. As nice as it is to have Clib inside of lunux, we objectively cannot interact with the operating system at all. With hardware interrupts, we will be able to read data from the keyboard, mouse, and any other USB device. Overall, im feeling really optimistic!
Added interrupt handlers It has been 8 hours. 8 hours of pure agony as I try to mimic the linux interrupt handling system. This has by far been the hardest challenge that I have ever faced, and I honestly took a break to recuperate myself and not lose motivation. but we created system interrupts! we can now do much more cool stuffs like virtual memory management and eventually keyboard input, so overall this is exciting....
|
1792777940.5934215
|
1793382740.5934215
|
|
5595
|
CERES - Weedkiller Bot by @minjajo | Stardance
|
minjajo
|
0
|
26.24
|
0
|
[]
|
[{"post_id": 16082, "ts": "202 [{"post_id": 16082, "ts": "2026-06-26T04:24:38Z", "hours": 2.6081, "text": "CERES MK2: Devlog 14 What’s New: The robot has been assembled, and the electronics have been all wired up! I’ve attached a video of the gearbox working below. In the next devlog, ill show a video of the entire robot. The issue regarding the gears slipping has been resolved with the new gears that I’ve designed. The main issue now is that the wheels themselves are slipping on the axle. I’m realizing now that I should have gone with a hexagonal axle instead of a circular one like I have. I’ll have to re-design the wheels so that they properly grip these axles What’s Next: The next step is program the robot to turn, as it can already go forward and backwards, and then also re-design the wheels so that they stop slipping when the motors are running."}, {"post_id": 13829, "ts": "2026-06-22T17:39:48Z", "hours": 1.4167, "text": "CERES MK2: Devlog 13 What’s New: I’ve put together the mechanical aspects of the main robot! The robot has finally come together in real life, and it looks amazing. I assembled all four motor gearboxes, mounted them onto the frame along with the axle mounts, and then attached the wheels. Current Issues: Currently, the wheels themselves are holding onto the axles quite well, but because the axles are threaded rods (instead of a hexagonal rod), the gear in the gearbox begins to slip when there is a high torque load on the robot. What’s Next: I’m going to fix this gear slipping issue by redesigning the gears to have perpendicular screws in order to grip the threaded rod perfectly. I’ll have to take apart the robot and re-do the gearbox to attach these new gears."}, {"post_id": 13230, "ts": "2026-06-21T17:42:16Z", "hours": 1.5028, "text": "CERES MK2: Devlog 12 What’s New: I’ve put together the first gearbox assembly! I was able to properly mount the motor to the gearbox, along with the gears themselves and the ball bearings on both the gearbox and the red axle mount shown in the picture below. Everything appears to be coming together great right now. The gears sit together flushly without any issues, and the motor is able to drive the axle well. What’s Next: The next step is to finish up the other three gearboxes, and then I can mount the rest of the body panels onto the robot before wiring up the electronics!"}, {"post_id": 11031, "ts": "2026-06-18T01:53:55Z", "hours": 0.7125, "text": "CERES MK2: Devlog 11 What’s New: Unfortunately, I’ve been a bit busy lately, and I have not been able to make much progress on the robot. That should change soon though! As for whats new, I’ve just been cleaning up the design of the robot, and I’ve worked on setting up the Raspberry Pi. What’s Next: The next step is likely to start actually looking into how the robot will be able to identify weeds via camera vision, as well as how the pump-tank system will look!"}, {"post_id": 8099, "ts": "2026-06-13T14:54:17Z", "hours": 8.4683, "text": "CERES MK2: Devlog 10 What’s New: I made a couple of changes to the CAD design (which I will showcase in the next devlog), and I also began soldering the motors to the wires in preparation of setting them up with the motor drivers. As the 3d printed parts start getting ready, I’ve been attaching them to the aluminum frame, as seen below Currently, the biggest issue with the assembly of the robot is the difficulty that comes with ensuring that the T-slot nuts are inserted and held in the exact position necessary to mount the body panels. I attempted to compensate for this earlier in the design process by designing v-slot liners, but they did not work properly as they were not able to hold the T-slot nuts effectively. What’s Next: The next step in the project is to work on setting up the Raspberry Pi, which I have not yet done. I also want to test out the ESP32 with the motors and Joy-Con soon."}, {"post_id": 7146, "ts": "2026-06-11T22:43:16Z", "hours": 1.2517, "text": "CERES MK2: Devlog 9 What’s New: I designed a Raspberry Pi camera module mount and housing, in order to accommodate the image recognition software on the raspberry Pi. I’ve begun to print out all the CAD components, so I’ll be able to add onto the (already assembled) aluminum frame soon. I’ve also begun to work on a rudimentary system to control the weed robot via a Nintendo Switch Joy-con in order to test its capabilities before paring it with the Raspberry pi. To use the Joy-Con with the esp32, I used a library called BluePads32, and it allows for a connection between an esp32 and any controller. It was relatively easy to set up due to there being in-depth documentation on the library. You can visit the documentation here if you’d like to try it yourself! What’s Next: The next step in the project, while the 3d printed components are printing, is to start soldering and wiring up the motors to the motor drivers, and start experimenting with serial communication between the ESP and Raspberry Pi"}, {"post_id": 5796, "ts": "2026-06-09T18:33:59Z", "hours": 1.65, "text": "CERES MK2: Devlog 8 What’s New: Today, I designed multiple new body panels on the robot in order to properly house the electronics from the elements. In addition, I’ve begun the physical construction of the robot’s frame, which I’ve attached below The biggest hurdle today was assembling the frame for sure. Because I was using sliding v-rail T-nuts instead of the insertable type, I would have to partially dismantle the frame every time I have to add any panels or mounts. What’s Next: I WILL start working on the code for the ESP32 next time, as I’ve been putting it off for a while now. I’ll also start physically wiring up the ESP32 with the placeholder L298n drivers so that I can test the robot."}, {"post_id": 5336, "ts": "2026-06-09T02:19:26Z", "hours": 1.1714, "text": "CERES MK2: Devlog 7 What’s New: Because I completely overhauled the design of the bot (Mk2), I started re-designing the lower casing that protects the electronics and motors from the elements! I also used this opportunity to redesign the way the two separate plates (of the casing) fit together in order to allow for both easier assembly and better overall durability. Some Other Things: I had to redesign the wheels as well to accomodate the new 5mm threaded rods that I plan to use for the axles. I also changed up the color scheme plan - I’m going for a more modern, high tech aesthetic. What’s Next: I have yet to implement the electronics into the Mk2, and the design is purely mechanical right now. I have to design the mounts for the RPI, esp32, motor drivers, and etc. I also want to start designing the PCB for the bot so that the motor drivers are integrated directly with the ESP32."}, {"post_id": 5097, "ts": "2026-06-08T19:44:56Z", "hours": 2.2703, "text": "CERES MK2: Devlog 6 What’s New: I decided to completely overhaul the design of the robot and essentially start from scratch. In the initial iteration, the entire weight of the robot was resting on the motor’s shaft/axle. In this new design, I’ve pivoted towards a gearbox design that will allow for the weight of the robot to rest on 4 axles instead of the motor itself. So far, I have only designed the gearbox itself as well as the mounts for the axles to sit on. This ensures the longevity of the robot as the wheels are no longer directly attached to the motors. The gearbox itself uses two gears, with a 1:1 gear ratio as I did not want to change the RPM output of the wheel, as I felt that the 100rpm provided by the motors was sufficient in terms of both torque and speed. The gearbox mounts to the frame using 4 sliding T-nuts and M5 screws. The axle itself is an M5 threaded rod, and the rod sits on 3 ball bearings with an inner diameter of 5mm to rotate freely. What’s Next: I’ll have to redesign a majority of the body panels, as well as the wheels themselves. I’ll likely do that before I move onto designing new mounts for the electronics."}, {"post_id": 4408, "ts": "2026-06-07T18:43:06Z", "hours": 0.7697, "text": "Whats new: Designed and implemented V-slot rail sliders for the robot frame. This is done for easier assembly, as it no longer requires the precise positioning the the T-nuts when assembling and mounting body panels for the frame. I also made some small aesthetic design adjustments I faced some issues with the alignment of the lower body panel and the frame. For some reason, they’re not aligning even though I believe all my measurements are correct. I have yet to resolve the issue, so I’ll have to save that for next time. Whats Next: The CAD/frame/body panels are done for the most part. There are some issues (like mentioned above) that still need to be fixed, and there are a few adjustments I still want to make. The next step will be to move on to the code for the ESP32, so that the robot can be controlled manually. After that, I’ll start designing a PCB to integrate the components better."}, {"post_id": 3999, "ts": "2026-06-07T04:30:11Z", "hours": 0.7769, "text": "I designed custom v-slot liners for the aluminum extrusions, allowing for easier assembly of the body panels."}, {"post_id": 3082, "ts": "2026-06-05T23:45:19Z", "hours": 0.7706, "text": "I altered the locations where the motor drivers and raspberry pi are mounted so that they have more protection from the weather. I also fixed the issues with the tire mirroring (which can be seen in the previous iterations) and I designed the top cover to allow for the electronics to be more accessible."}, {"post_id": 2338, "ts": "2026-06-04T19:38:34Z", "hours": 1.5733, "text": "I’ve been printing out and assembling the wheels and tires of the Weedkiller bot. The tires are printed in 95A TPU. I’ve also been re-doing the layout of the electronics on the robot, which I’ll post later."}, {"post_id": 1608, "ts": "2026-06-03T19:00:46Z", "hours": 0.685, "text": "I’ve updated the color scheme of the Weed-killing robot to look more agricultural. I also finished desigining the mounting holes for the lower housing plate and designed mounts for the raspberry pi and motor drivers as well. I’ll start off by using L298n drivers and I hope to eventually start using my own PCB that incorporates an esp32 module and a H-bridge motor driver."}, {"post_id": 1105, "ts": "2026-06-02T22:40:16Z", "hours": 0.6089, "text": "Say hello to the Weedkiller bot! I’ve yet to name it, but I’m currently working on its outer shell/casing so that it can be weatherproof."}]...
|
Title: CERES - Weedkiller Bot by @minjajo | Starda Title: CERES - Weedkiller Bot by @minjajo | Stardance
Devlogs:
Say hello to the Weedkiller bot! I’ve yet to name it, but I’m currently working on its outer shell/casing so that it can be weatherproof.
I’ve updated the color scheme of the Weed-killing robot to look more agricultural. I also finished desigining the mounting holes for the lower housing plate and designed mounts for the raspberry pi and motor drivers as well. I’ll start off by using L298n drivers and I hope to eventually start using my own PCB that incorporates an esp32 module and a H-bridge motor driver.
I’ve been printing out and assembling the wheels and tires of the Weedkiller bot. The tires are printed in 95A TPU. I’ve also been re-doing the layout of the electronics on the robot, which I’ll post later.
I altered the locations where the motor drivers and raspberry pi are mounted so that they have more protection from the weather. I also fixed the issues with the tire mirroring (which can be seen in the previous iterations) and I designed the top cover to allow for the electronics to be more accessible.
I designed custom v-slot liners for the aluminum extrusions, allowing for easier assembly of the body panels.
Whats new: Designed and implemented V-slot rail sliders for the robot frame. This is done for easier assembly, as it no longer requires the precise positioning the the T-nuts when assembling and mounting body panels for the frame. I also made some small aesthetic design adjustments I faced some issues with the alignment of the lower body panel and the frame. For some reason, they’re not aligning even though I believe all my measurements are correct. I have yet to resolve the issue, so I’ll have to save that for next time. Whats Next: The CAD/frame/body panels are done for the most part. There are some issues (like mentioned above) that still need to be fixed, and there are a few adjustments I still want to make. The next step will be to move on to the code for the ESP32, so that the robot can be controlled manually. After that, I’ll start designing a PCB to integrate the components better.
CERES MK2: Devlog 6 What’s New: I decided to completely overhaul the design of the robot and essentially start from scratch. In the initial iteration, the entire weight of the robot was resting on the motor’s shaft/axle. In this new design, I’ve pivoted towards a gearbox design that will allow for the weight of the robot to rest on 4 axles instead of the motor itself. So far, I have only designed the gearbox itself as well as the mounts for the axles to sit on. This ensures the longevity of the robot as the wheels are no longer directly attached to the motors. The gearbox itself uses two gears, with a 1:1 gear ratio as I did not want to change the RPM output of the wheel, as I felt that the 100rpm provided by the motors was sufficient in terms of both torque and speed. The gearbox mounts to the frame using 4 sliding T-nuts and M5 screws. The axle itself is an M5 threaded rod, and the rod sits on 3 ball bearings with an inner diameter of 5mm to rotate freely. What’s Next: I’ll have to redesign a majority of the body panels, as well as the wheels themselves. I’ll likely do that before I move onto designing new mounts for the electronics.
CERES MK2: Devlog 7 What’s New: Because I completely overhauled the design of the bot (Mk2), I started re-designing the lower casing that protects the electronics and motors from the elements! I also used this opportunity to redesign the way the two separate plates (of the casing) fit together in order to allow for both easier assembly and better overall durability. Some Other Things: I had to redesign the wheels as well to accomodate the new 5mm threaded rods that I plan to use for the axles. I also changed up the color scheme plan - I’m going for a more modern, high tech aesthetic. What’s Next: I have yet to implement the electronics into the Mk2, and the design is purely mechanical right now. I have to design the mounts for the RPI, esp32, motor drivers, and etc. I also want to start designing the PCB for the bot so that the motor drivers are integrated directly with the ESP32.
CERES MK2: Devlog 8 What’s New: Today, I designed multiple new body panels on the robot in order to properly house the electronics from the elements. In addition, I’ve begun the physical construction of the robot’s frame, which I’ve attached below The biggest hurdle today was assembling the frame for sure. Because I was using sliding v-rail T-nuts instead of the insertable type, I would have to partially dismantle the frame every time I have to add any panels or mounts. What’s Next: I WILL start working on the code for the ESP32 next time, as I’ve been putting it off for a while now. I’ll also start physically wiring up the ESP32 with the placeholder L298n drivers so that I can test the robot.
CERES MK2: Devlog 9 What’s New: I designed a Raspberry Pi camera module mount and housing, in order to accommodate the image recognition software on the raspberry Pi. I’ve begun to print out all the CAD components, so I’ll be able to add onto the (already assembled) aluminum frame soon. I’ve also begun to work on a rudimentary system to control the weed robot via a Nintendo Switch Joy-con in order to test its capabilities before paring it with the Raspberry pi. To use the Joy-Con with the esp32, I used a library called BluePads32, and it allows for a connection between an esp32 and any controller. It was relatively easy to set up due to there being in-depth documentation on the library. You can visit the documentation here if you’d like to try it yourself! What’s Next: The next step in the project, while the 3d printed components are printing, is to start soldering and wiring up the motors to the motor drivers, and start experimenting with serial communication between the ESP and Raspberry Pi
CERES MK2: Devlog 10 What’s New: I made a couple of changes to the CAD design (which I will showcase in the next devlog), and I also began soldering the motors to the wires in preparation of setting them up with the motor drivers. As the 3d printed parts start getting ready, I’ve been attaching them to the aluminum frame, as seen below Currently, the biggest issue with the assembly of the robot is the difficulty that comes with ensuring that the T-slot nuts are inserted and held in the exact position necessary to mount the body panels. I attempted to compensate for this earlier in the design process by designing v-slot liners, but they did not work properly as they were not able to hold the T-slot nuts effectively. What’s Next: The next step in the project is to work on setting up the Raspberry Pi, which I have not yet done. I also want to test out the ESP32 with the motors and Joy-Con soon.
CERES MK2: Devlog 11 What’s New: Unfortunately, I’ve been a bit busy lately, and I have not been able to make much progress on the robot. That should change soon though! As for whats new, I’ve just been cleaning up the design of the robot, and I’ve worked on setting up the Raspberry Pi. What’s Next: The next step is likely to start actually looking into how the robot will be able to identify weeds via camera vision, as well as how the pump-tank system will look!
CERES MK2: Devlog 12 What’s New: I’ve put together the first gearbox assembly! I was able to properly mount the motor to the gearbox, along with the gears themselves and the ball bearings on both the gearbox and the red axle mount shown in the picture below. Everything appears to be coming together great right now. The gears sit together flushly without any issues, and the motor is able to drive the axle well. What’s Next: The next step is to finish up the other three gearboxes, and then I can mount the rest of the body panels onto the robot before wiring up the electronics!
CERES MK2: Devlog 13 What’s New: I’ve put together the mechanical aspects of the main robot! The robot has finally come together in real life, and it looks amazing. I assembled all four motor gearboxes, mounted them onto the frame along with the axle mounts, and then attached the wheels. Current Issues: Currently, the wheels themselves are holding onto the axles quite well, but because the axles are threaded rods (instead of a hexagonal rod), the gear in the gearbox begins to slip when there is a high torque load on the robot. What’s Next: I’m going to fix this gear slipping issue by redesigning the gears to have perpendicular screws in order to grip the threaded rod perfectly. I’ll have to take apart the robot and re-do the gearbox to attach these new gears.
CERES MK2: Devlog 14 What’s New: The robot has been assembled, and the electronics have been all wired up! I’ve attached a video of the gearbox working below. In the next devlog, ill show a video of the entire robot. The issue regarding the gears slipping has been resolved with the new gears that I’ve designed. The main issue now is that the wheels themselves are slipping on the axle. I’m realizing now that I should have gone with a hexagonal axle instead of a circular one like I have. I’ll have to re-design the wheels so that they properly grip these axles What’s Next: The next step is program the robot to turn, as it can already go forward and backwards, and then also re-design the wheels so that they stop slipping when the motors are running....
|
1792795980.205542
|
1793400780.205542
|
|
5414
|
Penumbra by @NellowTCS | Stardance
|
NellowTCS
|
0
|
26.21
|
0
|
[]
|
[{"post_id": 81410, "ts": "202 [{"post_id": 81410, "ts": "2026-10-21T05:19:48Z", "hours": 2.3336, "text": "SO GUESS WHAT I made a PR to big Slint itself!!!! https://github.com/slint-ui/slint/pull/14292 Basically… the markdown editor that Penumbra uses… is bad cause it’s a block style editor, which itself is hard to implement, and it’s not designed for markdown WYSIWYG. Double whammy Solution? Uhhh use cosmic-text and MAKE IT MYSELF BABYEEEEE In all seriousness tho, COSMIC text is so peak, truly universe-breaking. Well what’s the PR then? “This PR lets a FocusScope act as an input method (IME) client. That way, custom editing surfaces like rich text editors or code editors drawn with custom code can get composition events directly.” Aka, I stabilized an internal API and exposed it so that Penumbra can get a really cool editor."}, {"post_id": 77678, "ts": "2026-10-07T20:22:32Z", "hours": 0.4192, "text": "Engine improvements ughhhhhhh i spent hours making “spikes” (is that what they’re called?) and it wasn’t counted cause slint live preview/editor = not hackatime-d sighhhh Oh well btw, hi, sorry for the random 1 month ish gap I come back, better at Slint, and with fresh motivation. okay so august 30 was my last commit and it is now october. in my defense i did not touch this once in that whole time which is either very bad or very healthy idk. but something clicked today and i opened it back up and immediately went “ew who wrote this” (me. it was me.) cough cough better engine so the editor had this whole situation in doc.rs where Document::new would parse the markdown into an ast, and then i had this convert_blocks function that walked through the blocks AND a second function called find_block_range that literally scanned the source bytes by hand looking for double newlines to guess where each block started and ended. like manually. byte by byte. offset += whatever. i genuinely cannot believe past me looked at that and went yeah ship it the thing is the parser already KNOWS where every block is. it has the offsets. it was just throwing them away and then i was reconstructing them with a worse, slower, buggier version downstream. so i added parse_blocks_offsets to the markdown parser so it just hands back (block, range) and now doc.rs is like. map over them, pull the range straight off, extract spans, collect. that’s it. find_block_range is gone. convert_blocks is gone. good riddance :3 also killed the edita-core dependency because it turns out i wasn’t actually using it for anything, it was just sitting in the Cargo.toml being decorative net result is like 1290 lines deleted vs 793 added which is my favorite kind of commit. deleting code that you wrote and were briefly proud of is so good for the soul hahaaaaa anyway the engine is better now (cough cough not)"}, {"post_id": 58558, "ts": "2026-08-31T00:22:35Z", "hours": 0.5133, "text": "Component library + live typing preview two things this commit first I pulled all the Slint components out of penumbra-ui into their own crate, penumbra-component. it’s a pure-markup library, no Rust logic, just .slint files: the Theme, all the block components (ProseBlock, HeadingBlock, QuoteBlock, CodeBlock, TableBlock, FootnoteBlock, HtmlBlock), the CanvasSurface, the TopBar, and PillButton (which used to be NewNotePill but I generalized it so it takes a text prop instead of hardcoding “New note”). there’s an index.slint that re-exports everything and now the app imports from @penumbra-component/index.slint like a real library. also why I did this: the live preview. I set up a slint library path in build.rs (and a .vscode/settings.json so the preview resolves @penumbra-component ), which means I can open any single component file and preview it in isolation instead of booting the whole app. given that basically all my UI work these days IS sitting in the preview nudging things, having the components be individually previewable is a massive quality-of-life win. also just cleaner, the editor-panel.slint used to have all seven block components copy-pasted inline at the top, like 200 lines of it, and now it just imports them. the VMs (BlockVM, NoteCardVM) moved to a data.slint too so the struct definitions aren’t tangled with the theme. second thing, and this is the fun one live preview while you type. before, the active block was just a raw text field, you’d type # Heading and see # Heading , and only once you clicked away did it render. now as you type, a little preview well under the input shows what the block WOULD render as, live. type # and it previews as a heading, type > and it’s a quote, type - and it’s a list. there’s a whole set of live_ functions (live_kind_name, live_display_text, live_heading_level, estimate_live_height) that route the currently-typed text through the same display logic the inactive blocks use, so you get instant feedback on your markdown without committing it. But it’s broken and weird and not working (see previous image) gosh might take a break from this and think about how to structure it again, Je n’aime pas ce désordre"}, {"post_id": 58501, "ts": "2026-08-30T22:41:02Z", "hours": 0.4378, "text": "Better editor the editor got a real display layer, and honestly most of the actual work here happened in the Slint live preview, just tweaking things until they looked right, so the hours logged don’t reflect it. same story for the last few commits, tbh, a lot of “sit in the preview and nudge” that Hackatime doesn’t see. oh well. anyway the thing that makes an editor feel like an editor is that the active block shows raw markdown but every other block renders nicely, and the piece that does that rendering is the new display module. it turns each block into the text you actually want to see. lists keep their markers because those go through the real markdown renderer. and tables, tables actually render as an aligned grid now, padded columns and a --- separator row, which looks so much better. there’s also scroll targeting given the active block, it works out where to scroll the editor so that block is comfortably in view. first block sits at zero, later blocks scroll proportionally, long bodies don’t leave you editing something off the bottom of the screen. wrote a chunk of tests for all of this the map got a zoom-to-card thing too click into a note and the camera zooms so the card fills the viewport width it’s great that’s what i wanted since the beginning tbh like that animation played in my head"}, {"post_id": 58472, "ts": "2026-08-30T21:47:00Z", "hours": 0.6044, "text": "Implement platform-specific modules approach like Saikuro okay so the ui/penumbra-ui/src/lib.rs had gotten GROSS. it was this soup of #[cfg(not(target_family = \"wasm\"))] and #[cfg(target_family = \"wasm\")] blocks sitting right next to each other, two versions of half the functions, the SharedState struct declared twice, the boot path forked inline. every time I added a thing I had to add it twice with the right cfg gate and it was exactly the kind of mess I swore off on day one. so I stole the pattern from Saikuro a platform module. now there’s src/platform/mod.rs that declares the shared interface, plus platform/native/mod.rs and platform/wasm/mod.rs behind one cfg switch at the top. the rest of the app just calls into platform:: and doesn’t care which one it got. all the two-versions-of-everything nonsense is now contained in exactly two files that never both compile at once, and lib.rs reads like a single coherent app again instead of a choose-your-own-adventure. it’s so much cleaner. while I was in the editor I also killed a dumb duplication: penumbra-editor had its OWN BlockKind enum that was just a lossy copy of the one in penumbra-markdown, with a whole block_kind() function to convert between them. why. they’re the same concept. so now the editor re-exports markdown’s BlockKind and clones it straight through, and that whole translation layer is gone."}, {"post_id": 57850, "ts": "2026-08-30T04:54:28Z", "hours": 0.5797, "text": "Broken but a working ish editor!!! you can WRITE in it now. like actually type words into a note and have them save. it’s janky but it works and I’m hyped. How the editor is block-based, which was the whole gamble. instead of one big textarea, a note is parsed into blocks (paragraphs, headings, code fences, etc) and you edit one block at a time. the active block shows its raw markdown so you can mess with the syntax, everything else renders. new session.rs in penumbra-editor holds all of it: EditorSession owns the list of BlockEdits, tracks which one’s active, and each block has a mode, Prose (renders as markdown, Enter splits into a new block), Heading (single line, Enter drops the tail into a paragraph below), and Raw (code, Enter is a literal newline). splitting a block at the cursor, merging, undo/redo with a 64-deep snapshot history. it’s a real little document editor. uhhh is it good? no! the commit message says “broken” and I mean it. the split logic has edge cases, the cursor does weird things, switching blocks is finicky. but you can open a note, type, and it round-trips to the markdown file on disk, which is the bar I set and it clears it. barely. hehe. yeah state is hard to make the editor and the layout worker both able to touch the graph, Universe’s graph is now an Arc<Mutex>. graph() hands back a guard, graph_handle() hands back the Arc for things that want to hold their own lock. had to sprinkle lock_graph() everywhere but it’s the honest cost of sharing state between the UI thread and the physics thread. oop forgot about this also implicit links persist now! the auto-associated links used to evaporate on restart because only explicit wikilinks got rebuilt from the files. now they save to their own file and get restored on open (skipping any whose notes are gone). so the constellations you didn’t draw by hand survive a relaunch too. eeh and the TODO… got GUTTED. so much got checked off I almost don’t believe it. Slint UI: done. map canvas v1 with pan/zoom/grid/edges/culling: done. spring animation so cards drift to their spots instead of teleporting: done. local neighborhood layout: done. pinned notes as fixed stars (pin via right-drag, right-tap to unpin, and left-dragging one nudges it back toward its pin): done. positions cached with throttled save + save-on-exit: done. physics running off the UI thread on the tokio runtime so the map doesn’t stutter while it’s solving: done. that whole “Slint” section of the roadmap is basically green now. new-note-pill.slint got added too, a little floating “new note” thing that’s partially broken. broken editor, but a broken editor that WORKS, which three months ago I could not have said about any part of the UI. we’re so back :3"}, {"post_id": 57602, "ts": "2026-08-29T20:07:38Z", "hours": 1.21, "text": "neighborhood steps actually mean something now so way back, I wrote step_neighborhood as a function that… just called step() . full graph. every time. with a little // Note: functionally equivalent to step() comment that was basically an “it’s fineeee” for now. it’s been sitting there mocking me… for months (no joke i had it at #1 on the mental todo after deleting Dioxus) not anymore! it does the real thing now. when you nudge one note, only the notes within ~400px of it recompute. everything past that radius stays frozen and acts as an anchor so the local cluster settles against the rest of the map instead of the whole universe re-jiggling every frame. this is the “atomic graph updates” idea from the original plan thing, finally real: touch one note, its neighborhood adjusts, the far-off constellations don’t even notice. Efficiency to make that not-slow I built a spatial hash. uniform grid, bucket nodes by cell, “give me everything within radius R” only checks the overlapping cells instead of all N nodes. the CPU layout uses it for the localized force pass (repulsion from local neighbors, springs to actual link partners even if they’re outside the neighborhood, gravity), and I also went back and ripped the O(n²) all-pairs loop out of the regular collision resolver and put it on the spatial hash too. that one was quietly quadratic this whole time and would’ve melted at a couple thousand notes. rebuild the hash each pass so pushed nodes land in their new cells. much better. Collisions? the collision resolver got a neighborhood-scoped twin as well, so a local step also only de-overlaps locally. nodes inside the neighborhood push each other apart normally; a node that’s an anchor outside it doesn’t move, so the inside node just gets shoved twice as hard away from it. felt like the right call. PERSISTENCE?! also taught storage about pins, separate workspace.pins.json file (refactored the workspace/pins file openers to share a state_file helper), and note cards carry a pinned flag now. Oh lines and there’s a whole new map module in the UI crate that generates the actual SVG-ish path strings: bezier edges between linked cards in screen coordinates, viewport culling so off-screen edges don’t get drawn, selected-neighborhood highlighting (the selected note’s edges render in the “selected” layer, everything else in “base”), and a grid path that anchors to the camera and clamps its own density so zooming way out doesn’t try to draw ten thousand grid lines. the map handling a lot of notes without choking was the thing I was VERY, VERY worried about. Not as much of a problem as I thought! :D"}, {"post_id": 55387, "ts": "2026-08-27T05:58:52Z", "hours": 0.3494, "text": "the map is alive You might wonder, why is bro devlogging so often? Wellll, i had this whole plan i wrote down a bit ago to commit when so that it’s not a 10000 line commit ( shudders in that happening before ) but I severely overestimated how long these things would take Most of the time not logged was testing, sigh i wish i could devlog that lolll hehe okay so the notes actually live on a map now. like they have positions, computed by the real layout engine, and you can drag the whole thing around and zoom. it’s a canvas!! a real one!! what and how so on boot (native), it spins up the LayoutEngine, drops every note in as a node, restores their saved positions if there are any, feeds in the links, and runs the layout to settle everything. then it builds two things for the UI: note cards (with x/y from the layout) and edges (lines between linked notes, computed from the endpoint positions). both get shoved into Slint models and the map renders them. add a new note and it gets added to the layout, re-stepped, and the cards + edges refresh. positions save back to storage when you close the app. the map-canvas. slint got the fun part: pan and zoom. a TouchArea catches pointer down/move to drag the camera around, scroll wheel zooms between 10% and 500%, and every card positions itself as (card.x - camera) * zoom. threw in viewport culling too so cards way off-screen just don’t render (visible: only if it’s within ~200px of the edges). and a little “N notes | zoom: X%” readout in the corner because I like knowing things. (it’s broken like most of this, we ignore that for now, polishing is later) my foolishness the whole thing is cfg-split for wasm because the GPU layout engine isn’t wired up on the browser side yet, so wasm gets a fallback that just lists the cards without real positions for now. desktop gets the full living map, browser gets the placeholder, both compile, nobody’s angry. (the wasm map is a TODO-shaped hole but it’s an silly one.) also had to expose universe.storage() so the UI can reach load_positions/save_positions, and added a small EdgeVM struct to carry line endpoints into Slint."}, {"post_id": 55282, "ts": "2026-08-27T00:34:04Z", "hours": 1.04, "text": "lock in (the UI exists now. for real this time.) hehe okay. LOCK IN. this is the one where Penumbra stops being a really nice backend with no face and becomes an actual app you can look at. Slint UI, real components, and I wrote my own text editor because of course I did.so the editor. new crate, penumbra-editor. I could’ve just shoved a <textarea> equivalent in and called it a day but nooo, I wanted a proper block-based editor like the good note apps have. so it’s a document model made of blocks, each block has styled spans, and you edit it through commands: InsertText, DeleteRange, SplitBlock, MergeBlocks, SetMark, MoveCursor. every command goes through a Journal that’s just a command list + a pointer, which means undo/redo falls out for free (truncate on new push, walk the pointer back and forth). there’s a cursor/selection model and a view_model that snapshots the doc into something the UI can render without touching the guts. it’s BROKEN AND WEIRD NOW BUT IT’LL GET BETTER I PROMISE the layout engine grew a CPU brain. it was originally GPU-only via that vibe-graph-layout-gpu crate, which is great until you’re in an environment with no WebGPU (like… a lot of places, including some wasm setups) and then it just returns zero displacement and everything sits in a sad pile. so now there’s cpu.rs, my own Barnes-Hut quadtree force layout in plain Rust, and the engine tries GPU first and falls back to CPU when there’s no backend or the GPU step fails. no more “works on my machine with a discrete GPU only.” graceful degradation, hehe. and then the actual Slint UI which is the thing. it’s great. it’s split into real components now: theme.slint for the tokens, top-bar.slint, map-canvas.slint for the graph, note-card.slint for the cards, editor-panel.slint for writing. app.slint wires it together. this is the part that broke my brain in Dioxus for literal months and in Slint it’s just… a file with a live preview and it looks how I tell it to. I keep waiting for the catch. haven’t hit it yet tests too NO JINXING ME (please) I don’t want to jinx it but. this feels like the first time Penumbra is actually the thing I pictured back in that architecture-day devlog. backend I’m proud of, a UI that doesn’t fight me, my own editor, works on GPU or CPU, desktop or browser. I locked in :3"}, {"post_id": 54855, "ts": "2026-08-26T01:08:02Z", "hours": 0.5314, "text": "working wasm version and candle it runs in the browser now!! like, actually. wasm target, Slint rendering to a canvas, the whole thing. I’ve been dreading the wasm build this whole project and it just… went. mostly. the big win here is model caching, because downloading a ~130MB embedding model every single page load is obviously insane. so there’s a model_cache module now that’s the same two functions (get/put) with two backends behind cfg: native writes the bytes to a temp dir, wasm shoves them into the browser’s Cache API. first launch downloads and stashes, every launch after just pulls from cache. same idea as before but now it works on both sides. to make that clean I split CandleEmbedder::load() into two pieces: from_bytes() that takes raw model/config/tokenizer bytes and builds the thing, and load() (native only) that downloads then calls from_bytes. so the wasm path can grab bytes from cache (or fetch them itself) and hand them straight to from_bytes without the reqwest download dance. Candle running on CPU in wasm, no GPU, producing the same 384-dim vectors. genuinely did not expect that to just work. the wasm caching code is… a lot of JsFuture and dyn_into and web_sys ceremony. open the cache, build a Request, match it, pull the arraybuffer, convert to a Uint8Array, to_vec. and the put side builds a fake 200 Response with the bytes as the body and stuffs it in. it’s verbose but it’s the standard, nothing clever. the UI crate is a cdylib now (plus rlib) so it can compile to wasm, tokio features got split per-target (no rt-multi-thread in the browser, obviously), and there’s a tiny index.html that just imports the generated js and calls init(). Slint paints onto a <canvas id=\"canvas\"> also wrote an inference benchmark test… all you need to know so yeah. desktop AND browser, same codebase, real ML embeddings on both. the “true cross-platformity” thing from the very first devlog is… actually real now? that rule I set on day one about no #[cfg] in the interfaces paid off HARD here, the only cfgs are tucked inside the cache and download internals where they belong."}, {"post_id": 54829, "ts": "2026-08-25T23:56:18Z", "hours": 0.775, "text": "Vault mode (aka I made it Obsidian now, basically) okay this is a big (foundational) one so up until now Penumbra stored notes as a big pile of JSON blobs plus a graph.json that held all the links. which works but it’s… a black box? you can’t open your notes in anything else, the links live in a separate file, it’s very “my app owns your data.” and that bugged me. so now it’s a vault with markdown files. one .md per note, filename = title, YAML frontmatter for the id/timestamps/tags/pinned/archived, and the body is just… markdown. you could point Obsidian at the folder and it’d basically work. that’s the goal. well. the other way around but still :P Also, links aren’t stored anymore, they’re derived. [[wikilinks]] in the body get resolved against filenames at scan time and become the explicit edges in the graph. no more graph.json. the files ARE the source of truth, and if the app crashes mid-write the next scan just repairs everything. I like that a lot. it means if you go edit a file in some other editor and add a [[link]] , Penumbra picks it up next time it scans. and then I fell down the rename rabbit hole. because if filename = title, renaming a note means renaming the file AND rewriting every [[old title]] across the whole vault to [[new title]] . so propagate_rename walks every note that linked to the old title and rewrites it. and the rewriter is suuuuuuper careful: it skips inline code, fenced code blocks, indented code, handles [[Old|alias]] , matches case-insensitively but keeps whatever case you typed. wikilinks inside `code` should NOT get rewritten and now they don’t, and I have a test that proves it (with the same link four times in different contexts, only the live one changes). very satisfying. filenames can have slashes and colons and emoji and whatever, so there’s a sanitizer that strips the illegal stuff, collapses whitespace, caps length, falls back to “Untitled” if you somehow title a note with just dots. and if two notes want the same filename you get “Same Name” and “Same Name 2” like every sane file manager. oh and frontmatter tags vs inline tags are kept separate on purpose. if you wrote #tag in the body, that stays inline, it doesn’t get hoisted up into the YAML just because Penumbra touched the file. only frontmatter tags round-trip through YAML. respecting the user’s file, basically. the parser also got some unicode love while I was in there. tags can be #Ünïcodé now and nested like #projects/penumbra , and the whole split_text_for_custom walk steps by char instead of byte so it stops potentially panicking on multi-byte stuff. should’ve been like that from the start but oh well. on the UI side: there’s a folder picker now! rfd native dialog, “Choose your Penumbra vault”, and it remembers your choice in a config file so it doesn’t nag you every launch. also reads a PENUMBRA_VAULT env var if you want to override. getting the macOS dialog to behave was its own thing because rfd has to run on the thread that owns NSApplication, so it marshals onto the Slint event loop and sends the result back over a channel. the browser build just uses OPFS for now, showDirectoryPicker slots in later (TODO left in the code, future me’s problem). wrote a whole pile of tests for all of it too, but that’s booooriinnnngggggggggggggggggg"}, {"post_id": 54252, "ts": "2026-08-25T04:29:47Z", "hours": 0.3686, "text": "Basic template so. Slint. I was gonna do the whole “design it in HTML first then port it” thing that I very wisely declared last time and then, naturally, did not do at all. instead I saw Slint had a live preview and its own markup language and yeah. here we are. and it’s actually fun?? like it has a real preview, you edit the .slint file and it just updates, no recompiling the entire universe to nudge one thing. after the Dioxus months this feels illegal. anyway before touching any actual UI I made penumbra-app, which is NOT the UI, it’s the brain. a Universe struct that holds the graph + storage + event bus and does all the note stuff: create, save, delete, restore on open, persist after every change. the whole point is it doesn’t know Slint exists. or Dioxus. or anything. it just… runs the app, and whatever draws on top pokes it and listens for events. so if I rage-quit Slint in three weeks (I won’t! probably.) the brain doesn’t care. the actual Slint crate (penumbra-ui) is barely anything yet. cargo.toml, a build.rs because Slint compiles the markup at build time, a main, one app.slint. it’s the hello-world stage. but it launches! natively! no webview! I cannot stress how nice it is to not have a webview. oh also storage stuff got nudged, everything lives under a Penumbra/ folder now instead of just yeeting files into the shared app-data dir like a menace. and added a with_dir() so tests stop writing to my real data. speaking of, wrote a pile of Universe tests: make a note, drop the whole universe, reopen from the same folder, is the note still there? yes. edit it, reopen, still edited? yes. delete it, reopen, gone? gone. persistence actually persists, turns out. months since the last commit lol. I saw the date and just sighed. but the backend was sitting there perfectly fine this whole time waiting for me to stop fighting UI frameworks, and now I’ve got a clean core library and a toolkit that doesn’t actively hate me! Gasp. good place to be back :3"}, {"post_id": 54168, "ts": "2026-08-25T01:00:31Z", "hours": 3.7617, "text": "Revert Dioxus That’s the sound of me… giving up Giving up on Dioxus cause it’s so SO difficult to use I’m using Slint now, maybe, we’ll see if i even remember what I was doing Sorry for the like bad devlog, but it needed to be done"}, {"post_id": 7671, "ts": "2026-06-12T20:22:40Z", "hours": 2.7214, "text": "the polish commit (that didn’t polish enough) okay so this commit looks massive and impressive on paper. I touched basically everything. and the code changes are real. but I need to be honest: the app still looks and feels terrible. like, genuinely bad. the UI is broken in ways that make me want to close the window and pretend I never opened it. but the changes are real so let me document them anyway. layout tuning repulsion went from 1000 to 8000, attraction from 0.01 to 0.004, ideal_length from 50 to 220. notes were clumping into an unreadable blob. the physics are better now even if you can’t tell because the rendering is fighting itself. theme overhaul flattened the entire theme system into one struct with semantic names. every hardcoded color replaced with CSS vars. dark and light themes. toggle in settings. this part actually works correctly and I’m proud of it even though nobody can see it because the layout is broken. TipTap editor replaced the textarea with TipTap via JS eval. StarterKit with bold/italic/strike/code/headings/lists. toolbar with format buttons. sends HTML back via dioxus.send(). this is genuinely nice when it works. which is actually most of the time wow. manual linking, note list, auto-linking on save, context menu, keyboard shortcuts, zoom controls, empty state all implemented. all technically functional. all look like they were designed by someone who has never seen a GUI before. (me. I’m that someone. i am not good at RSX, which is funny because it SHOULD just be a different form of HTML. you would think.) what I learned dioxus-desktop’s webview is not a browser with devtools. iterating on UI by recompiling a Rust binary every time you move a div 2 pixels is actual torture. I should have designed the UI in plain HTML first, gotten it looking right in a real browser with real devtools, and THEN ported it to rsx. I did not do that. I have been doing it backwards this entire time. smh my silly head. next step: HTML mockup first, then port. the backend is solid. the architecture is clean. the UI just needs to catch up. still broken but less broken than before. progress? maybe? onwards (to HTML mockups) :}"}, {"post_id": 7339, "ts": "2026-06-12T07:31:52Z", "hours": 1.2225, "text": "making it actually work (kind of) so remember how last commit I said “everything is broken”? I spent tonight fixing the worst of it. it’s not done but it’s a lot less broken. the big fix: drag + layout fighting the core problem was that when you drag a note, the layout engine keeps running and overwriting your drag position every 16ms. the note jitters back and forth between where you’re dragging it and where the physics wants it. fix: new SetNodePosition event. when you drag a note, the UI publishes it through the event bus. the layout worker drains these events at the top of each cycle and calls engine.set_position() before stepping. so the layout engine knows where you put the card and computes forces from there instead of fighting you. also: while any note is being dragged (tracked by dragged_set ), the layout event loop skips updating positions entirely. other notes stay still instead of jittering from stale force calculations. once you release, everything syncs up again. mouse events moved to root div pan/drag/mouseup handlers were on the canvas element, which meant releasing the mouse over a note card didn’t fire mouseup on the canvas. dragging would “stick.” moved all the move/up/leave handlers to the root div so they fire regardless of what’s under the cursor. canvas renderer simplified removed the node drawing code from WebCanvasRenderer entirely. nodes were being drawn twice: once on the canvas in Rust/web-sys, once as DOM cards in Dioxus. the canvas now only draws the dot grid and bezier edges. the DOM handles cards. no more double rendering. the inline JS RAF loop was also replaced with a standalone canvas-draw.js that gets called explicitly via window.__penumbra_draw() whenever render state changes. no more requestAnimationFrame spinning at 60fps when nothing changed. spring-animated card positions cards now spring-animate to their new positions instead of teleporting. each AnimatedCard tracks target x/y and animates via dioxus-motion springs when the target changes. so when the layout engine repositions notes, they glide smoothly. the spring from the ideas issue, basically. sidebar panels are real now the floating sidebar buttons actually do things now. four panels: Search : reactive search input that queries the hybrid search engine as you type. results show title, preview, and similarity score. click a result and the camera drifts to that note. Tags : shows all tags sorted by count. click a tag to filter the graph view to only notes with that tag. click again to clear the filter. below the tag list, shows the filtered notes. Pins : lists all pinned notes. click to pan to them. Settings : just shows note count and link count for now. placeholder. context menu on right-click right-click a note card and you get a context menu with “Open in editor,” “Pin to canvas” / “Unpin,” and “Delete note.” the pin toggle calls a new toggle_pin method on AppState that flips the meta flag, persists, and publishes an event. note cards render markdown NoteCard preview now runs through markdown_to_html() and uses dangerous_inner_html . (XSS? yes) the editor got a preview toggle button that switches between the textarea and rendered HTML. real embeddings on init switched from SimpleEmbedder to CandleEmbedder::load() at startup. downloads the real Snowflake model from HuggingFace on first launch. falls back to SimpleEmbedder if the download fails. position persistence the layout event loop now debounce-saves positions to storage every 2 seconds. on next launch, saved positions are fed into the layout engine before the first step so notes start where you left them instead of random positions. other stuff done as well but i’m eepyyyy"}, {"post_id": 7297, "ts": "2026-06-12T05:02:24Z", "hours": 3.4467, "text": "the Dioxus commit (it’s broken but it exists) okay so. it does not work properly. I want to be upfront about that. it compiles, it launches, things appear on screen, but the interaction is janky, the canvas rendering fights with the DOM cards, and the layout worker doesn’t sync positions correctly yet. it’s a WIP commit and I’m committing it anyway because there’s genuinely a lot of infrastructure here and I don’t want to lose it. three new crates penumbra-theme : dark and light themes defined as Rust structs. colors, radii, glass blur config. to_css_vars() generates the full CSS custom properties string so the theme can be injected into the DOM at runtime. purple accent because penumbra means shadow and shadows are purple, obviously. penumbra-canvas : a GraphCanvasRenderer trait with a WebCanvasRenderer that draws to an HTML canvas via web-sys. dot grid background, bezier curve edges between nodes, rounded-rect cards with titles. plus a NullCanvasRenderer for when there’s no canvas available. the RenderState struct holds the camera, nodes, edges, and selection state. penumbra-thread : cross-platform threading. std::thread on native, wasm_thread on WASM. one #[cfg] block (the only one in the project, and it’s in a platform abstraction crate where it belongs). Worker struct with atomic cancellation flag. spawn_worker() and spawn_detached() helpers. the app Build/ui/penumbra-app/ is a full Dioxus desktop app. the component count looks scary but most of it is from the dioxus-components library (badge, button, card, dialog, dropdown menu, separator, sheet, sidebar, skeleton, tabs, tooltip). I styled them but didn’t write them. the custom ones are: NoteCard : the little frosted-glass card that represents a note on the canvas. title, preview, positioned absolutely in world coordinates. GraphCards : renders all notes as AnimatedCards inside a CSS-transformed container. each card gets a spring animation on mount via dioxus-motion so it scales in from zero. cards are draggable. FloatingSidebar : the vertical icon bar on the left. grid, search, pin, tag, settings. just state toggles for now, no panels wired up yet. TopBar : centered pill bar with the app name and search area. Fab : “New note” button in the bottom right. NoteEditor : full-screen editor view with title, body, and tags fields. auto-saves on back. the bridge bridge/mod.rs connects the UI to the backend. load_graph() and load_positions() pull from storage. restore_state() inserts everything into the graph and index. create_layout_engine() builds the GPU layout engine with all current nodes. start_layout_worker() spawns a background thread that steps the layout at 60fps, syncs node additions/removals, and publishes position updates through the event bus. sleeps longer when the layout has converged. the interaction model pan: mousedown on canvas starts tracking, mousemove applies delta to camera, mouseup stops. zoom: wheel events on canvas adjust zoom level around the cursor position. drag: mousedown on a note card captures the offset, mousemove in drag mode updates the note’s position directly. note creation: click fab -> create empty note in graph -> wait for layout engine to assign position -> camera drifts to the new note (spring animation) -> switch to editor view. this is the flow from the ideas issue. it doesn’t work smoothly yet but the state machine is there. what’s broken everything, kind of. the canvas renderer and the DOM cards are two separate rendering paths that don’t coordinate well. the layout worker publishes positions but the signals don’t always pick them up in time. the camera drift animation triggers but sometimes snaps instead of drifting. the editor saves but doesn’t trigger re-embedding. the sidebar buttons toggle state but nothing happens. it’s a prototype. sigh."}, {"post_id": 7055, "ts": "2026-06-11T20:26:26Z", "hours": 0.7372, "text": "sync conflict detection + wiremock tests two changes in one commit: the sync worker now rejects stale pushes, and the Rust sync client has a real test suite. conflict detection if the client sends a snapshotId with its push, the worker checks it against the current server snapshot. if they don’t match, someone else pushed in between, and you get a 409 back with the current server snapshot ID and a message to pull first. the snapshotId used to be passed through from the client or generated fresh. now it’s always generated server-side. the client’s snapshotId is only used for the conflict check, never as the new snapshot. small change, but it means two clients can’t accidentally create the same snapshot ID. last_sync is now a Mutex WorkerSyncProvider.last_sync went from Option<DateTime> to Mutex<Option<DateTime>> . it gets updated after both push and pull succeed. this matters because SyncProvider is behind an Arc in the real app, and last_sync needs interior mutability. also added #[serde(rename_all = \"camelCase\")] on SyncSnapshot so the JSON fields match what the worker actually sends. wiremock tests 238 lines of new tests using wiremock to mock the HTTP worker. each test spins up a local mock server, registers response expectations, and exercises the WorkerSyncProvider against it. no real network, no real worker, fully deterministic. covers: connect (200 and 500), push (returns snapshot, forwards snapshot ID, handles 500, handles 409 conflict), pull (returns notes/embeddings/positions, sends since query param), status (parses all fields), last_sync (none initially, updated after push). the with_rt() helper builds a single-threaded tokio runtime with IO enabled for each test since wiremock needs async + network. the TODO “Cloud sync” is checked off. one item left: Dioxus UI. aaaaaaaaa"}, {"post_id": 7006, "ts": "2026-06-11T19:14:21Z", "hours": 0.9681, "text": "making Candle actually WASM-compatible so remember the “no #[cfg] in cross-cutting interfaces” rule? the CandleEmbedder was breaking it. not with #[cfg] exactly, but with hf-hub, which uses filesystem APIs (dirs, mmap) that don’t exist in WASM. the model loading was desktop-only and I was pretending that was fine. it was not fine. I fixed it. hf-hub is gone replaced with reqwest. instead of hf-hub’s sync filesystem API that downloads to a local cache directory, the embedder now does raw HTTP GETs to huggingface.co/{model}/resolve/main/{file} . three downloads: model.safetensors, config.json, tokenizer.json. the bytes stay in memory, no filesystem touch. reqwest is platform-conditional in Cargo.toml: rustls on native (no OpenSSL dependency), bare defaults on wasm32 (uses browser fetch under the hood). plus getrandom with the wasm_js feature so random number generation works in WASM. two feature flags instead of one candle now just gives you the model and tokenizer types. no download capability, no reqwest. you construct a CandleEmbedder from bytes you already have. candle-load adds reqwest and the CandleEmbedder::load() method that downloads from HuggingFace. this is the one that pulls in the network stack. the split matters because the WASM build might want to load model bytes from OPFS or a bundled asset instead of downloading every time. the download path is opt-in. mmap is gone too from_mmaped_safetensors (with its unsafe block) became from_buffered_safetensors . loads from a byte vec instead of memory-mapping a file path. works everywhere. no unsafe. the vocab_size is now read from config.json instead of hardcoded to 30522. Tokenizer::from_file became Tokenizer::from_bytes . same pattern. error handling cleanup every candle operation was using ? directly, which only works if PenumbraError implements From<candle_core::Error>. it doesn’t, and it shouldn’t, because candle errors are an implementation detail. added an e_msg helper that wraps any Display into PenumbraError::Embedding, and switched every candle call to .map_err(e_msg)? . verbose but correct. ArcticEmbedXS::new and forward now return candle’s own error type instead of PenumbraError. the boundary between “candle stuff” and “penumbra stuff” is cleaner. the CandleEmbedder wrapper handles the translation. tests New candle tests behind #[cfg(feature = \"candle\")] . the trick: building a synthetic safetensors file and a minimal WordLevel tokenizer entirely in memory. no model download needed for the test suite. test_safetensors() generates fake embedding weights and encoder weights with deterministic values, writes the safetensors header manually (much better than pulling it in) (length prefix + JSON metadata + raw f32 bytes), and hands it to VarBuilder. test_tokenizer_bytes() builds a 10-word vocabulary with a Whitespace pre-tokenizer. tests cover: forward pass output shape, L2 normalization, non-zero output, embedder dimensions, embed_text roundtrip. plus one candle-load gated test that actually downloads the real model from HuggingFace (only runs when you explicitly pass --features candle-load ). the “no #[cfg] in cross-cutting interfaces” rule now holds for real. the entire embed pipeline compiles on wasm32 without conditional compilation. reqwest handles the platform difference internally. candle handles the compute. the embedder trait doesn’t know or care. Quick note, sorry about there mostly being terminal or VSCode images lol, there’s no UI to demo rn…"}, {"post_id": 6950, "ts": "2026-06-11T17:37:50Z", "hours": 0.9322, "text": "the sync backend exists now so the TODO said “Cloud sync” and I was like “how hard can it be” it was not hard actually. which is suspicious. but it works. new directory: Backend/sync-worker/ . it’s a Cloudflare Worker backed by R2 for storage. the whole sync API is three JS files and a wrangler config. the API POST /sync/push - batch upload notes, embeddings, and positions POST /sync/pull - batch download everything (or since a snapshot) GET /sync/status - storage stats (note count, bytes used, 512MB limit) POST /sync/clear - nuke everything plus individual CRUD routes for single notes, embeddings, and positions notes are JSON. embeddings are raw f32 bytes (384 * 4 = 1,536 bytes per note). positions are JSON. everything lives in R2 under a clean key scheme: notes/{id}.json , embeddings/{id}.bin , positions/{id}.json . the storage layer storage.js is the R2 abstraction. getJson, putJson, getBinary, putBinary, del, listKeys. plus a manifest system that tracks note count, last modified time, and the current snapshot ID. snapshots are versioned so the client can eventually do “pull only what changed since X” (right now it just dumps everything, but the plumbing is there). push and pull push accepts a JSON body with notes, embeddings, and positions objects. writes them all to R2, updates the manifest, creates a snapshot record, returns the snapshot ID. pull lists all note keys, fetches each note plus its embedding and position, and returns the whole bundle. embeddings get round-tripped through Float32Array so the binary format is preserved correctly. CORS is wide open ( * ) because this is a personal sync worker, not a public API. the client will be the Penumbra app running in the browser or on desktop. I’ll probably change this tho the generated types file wrangler generated a 14,000-line TypeScript declaration file for the Cloudflare runtime. I committed it because it’s how wrangler works and I don’t want to fight it. it defines the R2Bucket binding and every other Workers API type. it’s big. it’s fine. this is the first non-Rust code in the repo. feels weird. but the sync layer is inherently a server-side thing and Cloudflare Workers with R2 is genuinely the simplest way to get object storage with an HTTP API. no server to manage, no database to provision, just a bucket and some routing. Also, had to kick out usearch since it wasn’t WASM compatible now everything but Candle is WASM compatible!"}, {"post_id": 6928, "ts": "2026-06-11T16:38:23Z", "hours": 0.3536, "text": "auto-linker + TODO overhaul new crate: penumbra-auto-link . 158 lines. this is the thing that makes the canvas feel fun. the pipeline is simple: embed the note, search the vector index for neighbours, create implicit links for anything above the similarity threshold. process_note() takes a Note, embeds its text via the EmbeddingProvider, inserts the embedding into the index (so it’s immediately discoverable by future saves), searches for the top-k closest neighbours, filters by score, checks for duplicates, and creates implicit links in the graph. explicit links are never touched. I don’t mess with your links. (why does that sound funny lol) configurable: top_k (default 10), min_score (default 0.75), max_links per pass (default 5). the AutoLinker holds Arc references to the embedder, index, graph, and event bus. every new link fires a LinkAdded event so the UI can animate the card drifting to its new neighbours. the duplicate check matters. between the search returning results and the link being created, another thread could have already linked the same pair. so it locks the graph, checks if the link exists, and only creates it if it doesn’t. two process_note() calls on the same note produce links on the first call and an empty vec on the second. Some tests in auto_link_matrix.rs : creates implicit links, skips self-links, obeys score threshold, respects max_links cap, handles empty index (no candidates), no duplicate links on re-process, empty body doesn’t panic, top_k=0 returns empty. also cleaned up some stray em-dashes and arrow symbols in comments across the codebase. vscode keeps auto-correcting -- to em-dashes and -> to the arrow symbol and I keep not noticing until I read the diff. idk if it’s a bug or a feature but it’s annoying. the TODO got a real overhaul. the old flat checklist is gone. everything that’s done is removed. what’s left is organized into sections: Dioxus UI plans (spring animations, camera lerp, pinned stars, cached positions), WASM worker threading, storage and sync (Google Drive, GitHub repo, offline mode, merge strategy), and future stuff (encrypted vault). it reads like a roadmap now instead of a grocery list. eleven crates. too much? no. modularity is never “too much,” rather it’s better to be more modular than less. (unless you have something insane like a file per function)"}, {"post_id": 6912, "ts": "2026-06-11T16:12:15Z", "hours": 0.3753, "text": "GPU layout engine + collision avoidance ripped out the entire hand-rolled ForceAtlas2 + Barnes-Hut implementation and replaced it with vibe-graph-layout-gpu. (OMG i do not like that name, you could have called it anything. LITERALLY ANYTHING else) 195 lines of quadtree code: deleted. RIP. the custom ForceAccumulator, NodeState, adaptive speed calculation: all gone. replaced by a wgpu-backed force-directed layout that runs on the GPU. (no it’s not that intensive, only if you have like a million notes, and then too, we be smart and only calculate the stuff for notes you can see (animation and gamedev tip #1) rather than everything! the engine now wraps GpuLayout with lazy initialization. the GPU doesn’t spin up until the first step() call, so construction stays synchronous. if the graph changes (node added, removed, links updated), it sets a dirty flag and re-inits on the next step. pinned nodes get their positions restored after each GPU step since the GPU doesn’t know about pinning. step_neighborhood() is now just step(). with GPU acceleration the full graph is always computed, so neighborhood-only updates don’t make sense anymore. the test got rewritten to match: step_moves_unpinned_nodes instead of the old neighborhood-specific assertions. collision avoidance the GPU handles forces and attraction but it doesn’t know about card sizes. nodes are points to it. so after the GPU step runs, there’s now a CPU-side collision resolution pass that pushes apart overlapping bounding boxes. each node can have a Bounds (width, height) set by the UI. after forces are applied and pinned nodes are restored, resolve_collisions() runs up to 5 iterative passes. each pass checks every overlapping pair, computes a center-to-center separation vector, and pushes both nodes apart by half the overlap distance (clamped to 20px per pass). pinned nodes never move from collision push. the fallback for coincident centers is fun: when two nodes land on the exact same pixel, there’s no center-to-center vector to push along. so it derives a deterministic angle from the node indices using big primes as hash seeds. deterministic because the same pair should always separate in the same direction. not random because randomness in layout makes things jitter. three new tests: overlapping nodes get separated, nodes without bounds are skipped (no crash), pinned nodes stay put during collision resolution. the Cargo.lock diff (image) is… yeah. wgpu pulls in the entire graphics stack. metal, vulkan (ash), naga (oooh fun fact! this is the Hindi name for a bunch of semi-divine half-snake beings!), glow, spirv (pov you try to type spin but absolutely FAIL). the dependency tree roughly tripled. but the layout runs on the GPU now so I’m not complaining. also deleted the test_events.rs example from penumbra-markdown that I forgot to clean up last commit. oops. and also made the LayoutEngine WASM-compatible by making it async. WHOOPS"}, {"post_id": 6897, "ts": "2026-06-11T15:45:08Z", "hours": 0.4114, "text": "penumbra-markdown: the parser arc so I was supposed to work on other stuff today. I did not work on other stuff today. instead I wrote an entire markdown pipeline from scratch. parser, AST, HTML renderer, plain text extractor, streaming layer for live editing, and 639 lines of tests. because apparently “notes app needs notes parsing” was more urgent than “notes app needs to save notes.” No I did not do this in 15 minutes. I spent much more time on it. I’m just, like I said, one commit behind (no longer!!!) the custom syntax the whole point of this crate is two custom inline types that make Penumbra’s markdown different from regular markdown: NoteEmbed : [[some-note-id]] . double-bracket references to other notes on the canvas. the parser tracks bracket depth so nested brackets don’t break things. TagRef : #tag-name . inline tags. the parser distinguishes #tag from # heading by checking if there’s a space after the hash and whether the preceding character is a word boundary. these get parsed as structured AST nodes, not raw text. when the HTML renderer hits them, they become custom elements: <pe-embed data-ref=\"id\"> and <pe-tag data-name=\"name\"> . the Dioxus UI will intercept these and make them interactive (click to pan, click to filter). I know they’re technically also Obsidian things, but smh my head, I did it too the parser 612 lines wrapping pulldown-cmark. every text chunk goes through split_text_for_custom() for embed/tag extraction before hitting the inline stack. uses a frame stack with saved positions for nesting (strong, emphasis, links, etc). tables required a state machine. tight list items needed special flush handling. the usual “markdown is simple until it isn’t” experience. The image shows my excellent idea for inline stuff, as remember how println!() works with vars? Okay, no this is a pretty common thing now that I think about it… sigh. It’s the thought that counts streaming wraps mdstream for live editing. instead of re-parsing the whole document on every keystroke, it tracks which blocks changed and only re-parses those. append() , finalize() , snapshot() , reset() . the common case (typing at the end) is fast. the quadtree fix also fixed a subtle bug in Barnes-Hut. the force calculation was clamping distance AFTER the sqrt but using unclamped dist_sq in the same formula. moved the .max(1.0) to dist_sq so both values stay consistent. the old version could produce weirdly large forces for very close nodes. Yeah this is why i’m ripping it out, and replacing it tests and sanitization boring stuff, just writing the same thing with some tiny changes a lot of times ten crates now. TEN CRATES??!?!!?"}, {"post_id": 6882, "ts": "2026-06-11T15:18:05Z", "hours": 1.2269, "text": "Oh wow I locked in so remember yesterday when I said “today was all architecture, all decisions, all research”? yeah. today I wrote the architecture. all of it. 27 files. 3,795 lines added (1,900 ish is just Cargo.lock btw). one commit. I sat down to “maybe scaffold the embed crate” and then I just… didn’t stop. the hyperfixation hit and I looked up and every single crate had real code in it. not stubs. not //! penumbra-whatever . actual implementations with actual tests. let me try to explain what happened. three embedders walked into a crate (no the title is NOT a punchline to a joke, however much it sounds like one) penumbra-embed went from a one-line comment to three full embedding providers: CandleEmbedder is the real one. it loads Snowflake-Arctic-Embed-XS from HuggingFace Hub, tokenizes input, runs it through a BERT-style forward pass (word embeddings, mean pooling, linear encoder), and L2-normalizes the output into a 384-dim vector. the model weights come from safetensors via candle_nn::VarBuilder::from_mmaped_safetensors . the whole Candle pipeline is behind a feature flag so you don’t pull in the ML universe if you don’t need it. SimpleEmbedder is the clever one. it slides character trigrams across the input, hashes each one, and accumulates them into buckets across a fixed-dimension vector. then L2-normalizes. it’s deterministic, fast, needs zero ML deps, and produces embeddings where similar text actually lands in similar regions of the vector space. not semantically meaningful in the way a transformer is, but way better than random for development and testing. (You know? Well actually probably you don’t know, most people didn’t spend all of yesterday doing a bunch of NLP and ML research lollll) NullEmbedder is the lazy one. returns a zero vector. exists for when you need the trait satisfied but don’t care about the output. sometimes you just need a stub and that’s fine. (aka a lot of tests, DO NOT USE THIS anywhere else… or maybeee hehe /j) all three implement EmbeddingProvider from core. swap them at construction time. the rest of the system doesn’t know or care which one is running. (i love doing that pattern. it’s just the best. Thanks, Saikuro) the vector index penumbra-index wraps USearch with a clean VectorIndex trait: insert, remove, search, len, is_empty. the USearchIndex backend handles all the HNSW configuration. SearchHit carries a NoteId and a score. the trait exists so I can mock the index in tests without spinning up the real HNSW structure every time. (learned that lesson from Honzo’s test suite.) the graph got a cleanup penumbra-graph didn’t get new features but it got a cargo fmt . NoteId lost its redundant to_string() method because… it already derives Display . why did I write that. past me, explain yourself. what were you planning. core got an Index error variant PenumbraError::Index(String) . three lines. because the index crate needed its own error type and I wasn’t going to abuse Embedding for it. the stuff I did but still isn’t fully done the layout engine with Barnes-Hut quadtree (i tried a simpler manual implementation, but it’s icky, i’m switching to a different crate), the hybrid search engine (i should probably switch this to a usearch method or different crate idk), and the storage layer (c’est mostly bon) all got real implementations in this commit too. plus a full test suite: core_matrix.rs , embed_matrix.rs , events_matrix.rs , graph_matrix.rs , index_matrix.rs , search_matrix.rs , storage_matrix.rs . seven test files. the naming convention carries over from Honzo because it works and I’m not fixing what isn’t broken. You might notice that I’m running one commit behind lol. Welllll I am, yeah Ooops Yeahhhh devlogging after every commit is the best way to do it, but sometimes you just wanna code"}, {"post_id": 6676, "ts": "2026-06-11T05:46:06Z", "hours": 0.8864, "text": "The Architecture Day (aka 0.4h on Hackatime but like 10h in reality) So uh. Hi. New project. Today was one of those days where I didn’t really code . Like, Hackatime says 0.4 hours. ZERO POINT FOUR. That’s nothing. But here’s the thing: I spent basically the entire day thinking. Researching. Drawing arrows between boxes in my head. Googling “is candle-core wasm compat” and “best wasm compatible tokio alternative, smol or futures” and going down rabbit holes about OPFS and #[cfg] gates and whether petgraph is pure Rust (it is, thank god). And I think I came out the other side with something actually good? the architecture so Penumbra is a spatial notes app. notes live on a canvas. related notes pull toward each other. unrelated notes drift apart. the whole thing is powered by embeddings and force-directed layout and it should feel like a living map of your thoughts. and the ENTIRE thing needs to work on web AND desktop without platform #[cfg] spaghetti. that’s the rule. no #[cfg(target_arch = \"wasm32\")] in any cross-cutting interface. if I have to write #[cfg] I’ve already lost. here’s what I landed on: penumbra-core # domain types + traits. zero deps beyond serde/uuid/thiserror penumbra-events # async-channel event bus penumbra-graph # petgraph-based graph store penumbra-layout # ForceAtlas2 + Barnes-Hut penumbra-embed # Candle embedding provider penumbra-index # USearch vector index penumbra-search # hybrid search (vector + text + tags + temporal) penumbra-storage # OPFS-backed persistence penumbra-sync # cloud sync abstraction nine crates. for a notes app. am I overengineering this? maybe. do I care? absolutely not. Saikuro taught me that clean crate boundaries make everything easier later. I’d rather have nine small crates with clear jobs than one megacrate that does everything and hates me. (learned never to entangle your code from HTMLPlayer v2 (yeah that still exists, but i kinda need to press the big Archive this Repo button, I’m making a better new one) the dependency flow this is the part I’m actually proud of: everything depends on core. core depends on nothing interesting. the graph feeds into layout. embed feeds into index feeds into search. storage and sync are siblings. events is the bridge to the UI. no cycles. no tangled imports. one-directional flow. I drew this like five times on paper before I was happy with it. (I should really learn to use Mermaid for everything but my paper and pen are faster for brainstorming, sue me) the WASM thing okay so this was the big research rabbit hole. the whole point of Penumbra is true cross-platform. not “it works on desktop and we have a janky web version.” ACTUAL cross-platform. same code. same behavior. same everything. the trick is picking libraries that just… work on both targets without needing platform gates: serde/serde_json : universal. obviously. uuid with the js feature: uses js-sys getRandomValues on wasm32. no #[cfg] . chrono with wasmbind : uses js-sys Date on wasm32. no #[cfg] . futures + async-trait : universal. no runtime dependency. petgraph : pure Rust. no system deps. just works. opfs : this crate is kind of magic. tokio::fs on native, browser OPFS on wasm. one API. the whole reason I don’t need a StorageProvider trait. candle : wasm32 with SIMD backend. Snowflake-Arctic-Embed-XS quantized to GGUF. usearch : wasm32 compatible. HNSW index with add/search/remove. async-channel : universal. no runtime coupling. I am unreasonably happy about this list."}]...
|
Title: Penumbra by @NellowTCS | Stardance
Devlogs Title: Penumbra by @NellowTCS | Stardance
Devlogs:
The Architecture Day (aka 0.4h on Hackatime but like 10h in reality) So uh. Hi. New project. Today was one of those days where I didn’t really code . Like, Hackatime says 0.4 hours. ZERO POINT FOUR. That’s nothing. But here’s the thing: I spent basically the entire day thinking. Researching. Drawing arrows between boxes in my head. Googling “is candle-core wasm compat” and “best wasm compatible tokio alternative, smol or futures” and going down rabbit holes about OPFS and #[cfg] gates and whether petgraph is pure Rust (it is, thank god). And I think I came out the other side with something actually good? the architecture so Penumbra is a spatial notes app. notes live on a canvas. related notes pull toward each other. unrelated notes drift apart. the whole thing is powered by embeddings and force-directed layout and it should feel like a living map of your thoughts. and the ENTIRE thing needs to work on web AND desktop without platform #[cfg] spaghetti. that’s the rule. no #[cfg(target_arch = "wasm32")] in any cross-cutting interface. if I have to write #[cfg] I’ve already lost. here’s what I landed on: penumbra-core # domain types + traits. zero deps beyond serde/uuid/thiserror penumbra-events # async-channel event bus penumbra-graph # petgraph-based graph store penumbra-layout # ForceAtlas2 + Barnes-Hut penumbra-embed # Candle embedding provider penumbra-index # USearch vector index penumbra-search # hybrid search (vector + text + tags + temporal) penumbra-storage # OPFS-backed persistence penumbra-sync # cloud sync abstraction nine crates. for a notes app. am I overengineering this? maybe. do I care? absolutely not. Saikuro taught me that clean crate boundaries make everything easier later. I’d rather have nine small crates with clear jobs than one megacrate that does everything and hates me. (learned never to entangle your code from HTMLPlayer v2 (yeah that still exists, but i kinda need to press the big Archive this Repo button, I’m making a better new one) the dependency flow this is the part I’m actually proud of: everything depends on core. core depends on nothing interesting. the graph feeds into layout. embed feeds into index feeds into search. storage and sync are siblings. events is the bridge to the UI. no cycles. no tangled imports. one-directional flow. I drew this like five times on paper before I was happy with it. (I should really learn to use Mermaid for everything but my paper and pen are faster for brainstorming, sue me) the WASM thing okay so this was the big research rabbit hole. the whole point of Penumbra is true cross-platform. not “it works on desktop and we have a janky web version.” ACTUAL cross-platform. same code. same behavior. same everything. the trick is picking libraries that just… work on both targets without needing platform gates: serde/serde_json : universal. obviously. uuid with the js feature: uses js-sys getRandomValues on wasm32. no #[cfg] . chrono with wasmbind : uses js-sys Date on wasm32. no #[cfg] . futures + async-trait : universal. no runtime dependency. petgraph : pure Rust. no system deps. just works. opfs : this crate is kind of magic. tokio::fs on native, browser OPFS on wasm. one API. the whole reason I don’t need a StorageProvider trait. candle : wasm32 with SIMD backend. Snowflake-Arctic-Embed-XS quantized to GGUF. usearch : wasm32 compatible. HNSW index with add/search/remove. async-channel : universal. no runtime coupling. I am unreasonably happy about this list.
Oh wow I locked in so remember yesterday when I said “today was all architecture, all decisions, all research”? yeah. today I wrote the architecture. all of it. 27 files. 3,795 lines added (1,900 ish is just Cargo.lock btw). one commit. I sat down to “maybe scaffold the embed crate” and then I just… didn’t stop. the hyperfixation hit and I looked up and every single crate had real code in it. not stubs. not //! penumbra-whatever . actual implementations with actual tests. let me try to explain what happened. three embedders walked into a crate (no the title is NOT a punchline to a joke, however much it sounds like one) penumbra-embed went from a one-line comment to three full embedding providers: CandleEmbedder is the real one. it loads Snowflake-Arctic-Embed-XS from HuggingFace Hub, tokenizes input, runs it through a BERT-style forward pass (word embeddings, mean pooling, linear encoder), and L2-normalizes the output into a 384-dim vector. the model weights come from safetensors via candle_nn::VarBuilder::from_mmaped_safetensors . the whole Candle pipeline is behind a feature flag so you don’t pull in the ML universe if you don’t need it. SimpleEmbedder is the clever one. it slides character trigrams across the input, hashes each one, and accumulates them into buckets across a fixed-dimension vector. then L2-normalizes. it’s deterministic, fast, needs zero ML deps, and produces embeddings where similar text actually lands in similar regions of the vector space. not semantically meaningful in the way a transformer is, but way better than random for development and testing. (You know? Well actually probably you don’t know, most people didn’t spend all of yesterday doing a bunch of NLP and ML research lollll) NullEmbedder is the lazy one. returns a zero vector. exists for when you need the trait satisfied but don’t care about the output. sometimes you just need a stub and that’s fine. (aka a lot of tests, DO NOT USE THIS anywhere else… or maybeee hehe /j) all three implement EmbeddingProvider from core. swap them at construction time. the rest of the system doesn’t know or care which one is running. (i love doing that pattern. it’s just the best. Thanks, Saikuro) the vector index penumbra-index wraps USearch with a clean VectorIndex trait: insert, remove, search, len, is_empty. the USearchIndex backend handles all the HNSW configuration. SearchHit carries a NoteId and a score. the trait exists so I can mock the index in tests without spinning up the real HNSW structure every time. (learned that lesson from Honzo’s test suite.) the graph got a cleanup penumbra-graph didn’t get new features but it got a cargo fmt . NoteId lost its redundant to_string() method because… it already derives Display . why did I write that. past me, explain yourself. what were you planning. core got an Index error variant PenumbraError::Index(String) . three lines. because the index crate needed its own error type and I wasn’t going to abuse Embedding for it. the stuff I did but still isn’t fully done the layout engine with Barnes-Hut quadtree (i tried a simpler manual implementation, but it’s icky, i’m switching to a different crate), the hybrid search engine (i should probably switch this to a usearch method or different crate idk), and the storage layer (c’est mostly bon) all got real implementations in this commit too. plus a full test suite: core_matrix.rs , embed_matrix.rs , events_matrix.rs , graph_matrix.rs , index_matrix.rs , search_matrix.rs , storage_matrix.rs . seven test files. the naming convention carries over from Honzo because it works and I’m not fixing what isn’t broken. You might notice that I’m running one commit behind lol. Welllll I am, yeah Ooops Yeahhhh devlogging after every commit is the best way to do it, but sometimes you just wanna code
penumbra-markdown: the parser arc so I was supposed to work on other stuff today. I did not work on other stuff today. instead I wrote an entire markdown pipeline from scratch. parser, AST, HTML renderer, plain text extractor, streaming layer for live editing, and 639 lines of tests. because apparently “notes app needs notes parsing” was more urgent than “notes app needs to save notes.” No I did not do this in 15 minutes. I spent much more time on it. I’m just, like I said, one commit behind (no longer!!!) the custom syntax the whole point of this crate is two custom inline types that make Penumbra’s markdown different from regular markdown: NoteEmbed : [[some-note-id]] . double-bracket references to other notes on the canvas. the parser tracks bracket depth so nested brackets don’t break things. TagRef : #tag-name . inline tags. the parser distinguishes #tag from # heading by checking if there’s a space after the hash and whether the preceding character is a word boundary. these get parsed as structured AST nodes, not raw text. when the HTML renderer hits them, they become custom elements: <pe-embed data-ref="id"> and <pe-tag data-name="name"> . the Dioxus UI will intercept these and make them interactive (click to pan, click to filter). I know they’re technically also Obsidian things, but smh my head, I did it too the parser 612 lines wrapping pulldown-cmark. every text chunk goes through split_text_for_custom() for embed/tag extraction before hitting the inline stack. uses a frame stack with saved positions for nesting (strong, emphasis, links, etc). tables required a state machine. tight list items needed special flush handling. the usual “markdown is simple until it isn’t” experience. The image shows my excellent idea for inline stuff, as remember how println!() works with vars? Okay, no this is a pretty common thing now that I think about it… sigh. It’s the thought that counts streaming wraps mdstream for live editing. instead of re-parsing the whole document on every keystroke, it tracks which blocks changed and only re-parses those. append() , finalize() , snapshot() , reset() . the common case (typing at the end) is fast. the quadtree fix also fixed a subtle bug in Barnes-Hut. the force calculation was clamping distance AFTER the sqrt but using unclamped dist_sq in the same formula. moved the .max(1.0) to dist_sq so both values stay consistent. the old version could produce weirdly large forces for very close nodes. Yeah this is why i’m ripping it out, and replacing it tests and sanitization boring stuff, just writing the same thing with some tiny changes a lot of times ten crates now. TEN CRATES??!?!!?
GPU layout engine + collision avoidance ripped out the entire hand-rolled ForceAtlas2 + Barnes-Hut implementation and replaced it with vibe-graph-layout-gpu. (OMG i do not like that name, you could have called it anything. LITERALLY ANYTHING else) 195 lines of quadtree code: deleted. RIP. the custom ForceAccumulator, NodeState, adaptive speed calculation: all gone. replaced by a wgpu-backed force-directed layout that runs on the GPU. (no it’s not that intensive, only if you have like a million notes, and then too, we be smart and only calculate the stuff for notes you can see (animation and gamedev tip #1) rather than everything! the engine now wraps GpuLayout with lazy initialization. the GPU doesn’t spin up until the first step() call, so construction stays synchronous. if the graph changes (node added, removed, links updated), it sets a dirty flag and re-inits on the next step. pinned nodes get their positions restored after each GPU step since the GPU doesn’t know about pinning. step_neighborhood() is now just step(). with GPU acceleration the full graph is always computed, so neighborhood-only updates don’t make sense anymore. the test got rewritten to match: step_moves_unpinned_nodes instead of the old neighborhood-specific assertions. collision avoidance the GPU handles forces and attraction but it doesn’t know about card sizes. nodes are points to it. so after the GPU step runs, there’s now a CPU-side collision resolution pass that pushes apart overlapping bounding boxes. each node can have a Bounds (width, height) set by the UI. after forces are applied and pinned nodes are restored, resolve_collisions() runs up to 5 iterative passes. each pass checks every overlapping pair, computes a center-to-center separation vector, and pushes both nodes apart by half the overlap distance (clamped to 20px per pass). pinned nodes never move from collision push. the fallback for coincident centers is fun: when two nodes land on the exact same pixel, there’s no center-to-center vector to push along. so it derives a deterministic angle from the node indices using big primes as hash seeds. deterministic because the same pair should always separate in the same direction. not random because randomness in layout makes things jitter. three new tests: overlapping nodes get separated, nodes without bounds are skipped (no crash), pinned nodes stay put during collision resolution. the Cargo.lock diff (image) is… yeah. wgpu pulls in the entire graphics stack. metal, vulkan (ash), naga (oooh fun fact! this is the Hindi name for a bunch of semi-divine half-snake beings!), glow, spirv (pov you try to type spin but absolutely FAIL). the dependency tree roughly tripled. but the layout runs on the GPU now so I’m not complaining. also deleted the test_events.rs example from penumbra-markdown that I forgot to clean up last commit. oops. and also made the LayoutEngine WASM-compatible by making it async. WHOOPS
auto-linker + TODO overhaul new crate: penumbra-auto-link . 158 lines. this is the thing that makes the canvas feel fun. the pipeline is simple: embed the note, search the vector index for neighbours, create implicit links for anything above the similarity threshold. process_note() takes a Note, embeds its text via the EmbeddingProvider, inserts the embedding into the index (so it’s immediately discoverable by future saves), searches for the top-k closest neighbours, filters by score, checks for duplicates, and creates implicit links in the graph. explicit links are never touched. I don’t mess with your links. (why does that sound funny lol) configurable: top_k (default 10), min_score (default 0.75), max_links per pass (default 5). the AutoLinker holds Arc references to the embedder, index, graph, and event bus. every new link fires a LinkAdded event so the UI can animate the card drifting to its new neighbours. the duplicate check matters. between the search returning results and the link being created, another thread could have already linked the same pair. so it locks the graph, checks if the link exists, and only creates it if it doesn’t. two process_note() calls on the same note produce links on the first call and an empty vec on the second. Some tests in auto_link_matrix.rs : creates implicit links, skips self-links, obeys score threshold, respects max_links cap, handles empty index (no candidates), no duplicate links on re-process, empty body doesn’t panic, top_k=0 returns empty. also cleaned up some stray em-dashes and arrow symbols in comments across the codebase. vscode keeps auto-correcting -- to em-dashes and -> to the arrow symbol and I keep not noticing until I read the diff. idk if it’s a bug or a feature but it’s annoying. the TODO got a real overhaul. the old flat checklist is gone. everything that’s done is removed. what’s left is organized into sections: Dioxus UI plans (spring animations, camera lerp, pinned stars, cached positions), WASM worker threading, storage and sync (Google Drive, GitHub repo, offline mode, merge strategy), and future stuff (encrypted vault). it reads like a roadmap now instead of a grocery list. eleven crates. too much? no. modularity is never “too much,” rather it’s better to be more modular than less. (unless you have something insane like a file per function)
the sync backend exists now so the TODO said “Cloud sync” and I was like “how hard can it be” it was not hard actually. which is suspicious. but it works. new directory: Backend/sync-worker/ . it’s a Cloudflare Worker backed by R2 for storage. the whole sync API is three JS files and a wrangler config. the API POST /sync/push - batch upload notes, embeddings, and positions POST /sync/pull - batch download everything (or since a snapshot) GET /sync/status - storage stats (note count, bytes used, 512MB limit) POST /sync/clear - nuke everything plus individual CRUD routes for single notes, embeddings, and positions notes are JSON. embeddings are raw f32 bytes (384 * 4 = 1,536 bytes per note). positions are JSON. everything lives in R2 under a clean key scheme: notes/{id}.json , embeddings/{id}.bin , positions/{id}.json . the storage layer storage.js is the R2 abstraction. getJson, putJson, getBinary, putBinary, del, listKeys. plus a manifest system that tracks note count, last modified time, and the current snapshot ID. snapshots are versioned so the client can eventually do “pull only what changed since X” (right now it just dumps everything, but the plumbing is there). push and pull push accepts a JSON body with notes, embeddings, and positions objects. writes them all to R2, updates the manifest, creates a snapshot record, returns the snapshot ID. pull lists all note keys, fetches each note plus its embedding and position, and returns the whole bundle. embeddings get round-tripped through Float32Array so the binary format is preserved correctly. CORS is wide open ( * ) because this is a personal sync worker, not a public API. the client will be the Penumbra app running in the browser or on desktop. I’ll probably change this tho the generated types file wrangler generated a 14,000-line TypeScript declaration file for the Cloudflare runtime. I committed it because it’s how wrangler works and I don’t want to fight it. it defines the R2Bucket binding and every other Workers API type. it’s big. it’s fine. this is the first non-Rust code in the repo. feels weird. but the sync layer is inherently a server-side thing and Cloudflare Workers with R2 is genuinely the simplest way to get object storage with an HTTP API. no server to manage, no database to provision, just a bucket and some routing. Also, had to kick out usearch since it wasn’t WASM compatible now everything but Candle is WASM compatible!
making Candle actually WASM-compatible so remember the “no #[cfg] in cross-cutting interfaces” rule? the CandleEmbedder was breaking it. not with #[cfg] exactly, but with hf-hub, which uses filesystem APIs (dirs, mmap) that don’t exist in WASM. the model loading was desktop-only and I was pretending that was fine. it was not fine. I fixed it. hf-hub is gone replaced with reqwest. instead of hf-hub’s sync filesystem API that downloads to a local cache directory, the embedder now does raw HTTP GETs to huggingface.co/{model}/resolve/main/{file} . three downloads: model.safetensors, config.json, tokenizer.json. the bytes stay in memory, no filesystem touch. reqwest is platform-conditional in Cargo.toml: rustls on native (no OpenSSL dependency), bare defaults on wasm32 (uses browser fetch under the hood). plus getrandom with the wasm_js feature so random number generation works in WASM. two feature flags instead of one candle now just gives you the model and tokenizer types. no download capability, no reqwest. you construct a CandleEmbedder from bytes you already have. candle-load adds reqwest and the CandleEmbedder::load() method that downloads from HuggingFace. this is the one that pulls in the network stack. the split matters because the WASM build might want to load model bytes from OPFS or a bundled asset instead of downloading every time. the download path is opt-in. mmap is gone too from_mmaped_safetensors (with its unsafe block) became from_buffered_safetensors . loads from a byte vec instead of memory-mapping a file path. works everywhere. no unsafe. the vocab_size is now read from config.json instead of hardcoded to 30522. Tokenizer::from_file became Tokenizer::from_bytes . same pattern. error handling cleanup every candle operation was using ? directly, which only works if PenumbraError implements From<candle_core::Error>. it doesn’t, and it shouldn’t, because candle errors are an implementation detail. added an e_msg helper that wraps any Display into PenumbraError::Embedding, and switched every candle call to .map_err(e_msg)? . verbose but correct. ArcticEmbedXS::new and forward now return candle’s own error type instead of PenumbraError. the boundary between “candle stuff” and “penumbra stuff” is cleaner. the CandleEmbedder wrapper handles the translation. tests New candle tests behind #[cfg(feature = "candle")] . the trick: building a synthetic safetensors file and a minimal WordLevel tokenizer entirely in memory. no model download needed for the test suite. test_safetensors() generates fake embedding weights and encoder weights with deterministic values, writes the safetensors header manually (much better than pulling it in) (length prefix + JSON metadata + raw f32 bytes), and hands it to VarBuilder. test_tokenizer_bytes() builds a 10-word vocabulary with a Whitespace pre-tokenizer. tests cover: forward pass output shape, L2 normalization, non-zero output, embedder dimensions, embed_text roundtrip. plus one candle-load gated test that actually downloads the real model from HuggingFace (only runs when you explicitly pass --features candle-load ). the “no #[cfg] in cross-cutting interfaces” rule now holds for real. the entire embed pipeline compiles on wasm32 without conditional compilation. reqwest handles the platform difference internally. candle handles the compute. the embedder trait doesn’t know or care. Quick note, sorry about there mostly being terminal or VSCode images lol, there’s no UI to demo rn…
sync conflict detection + wiremock tests two changes in one commit: the sync worker now rejects stale pushes, and the Rust sync client has a real test suite. conflict detection if the client sends a snapshotId with its push, the worker checks it against the current server snapshot. if they don’t match, someone else pushed in between, and you get a 409 back with the current server snapshot ID and a message to pull first. the snapshotId used to be passed through from the client or generated fresh. now it’s always generated server-side. the client’s snapshotId is only used for the conflict check, never as the new snapshot. small change, but it means two clients can’t accidentally create the same snapshot ID. last_sync is now a Mutex WorkerSyncProvider.last_sync went from Option<DateTime> to Mutex<Option<DateTime>> . it gets updated after both push and pull succeed. this matters because SyncProvider is behind an Arc in the real app, and last_sync needs interior mutability. also added #[serde(rename_all = "camelCase")] on SyncSnapshot so the JSON fields match what the worker actually sends. wiremock tests 238 lines of new tests using wiremock to mock the HTTP worker. each test spins up a local mock server, registers response expectations, and exercises the WorkerSyncProvider against it. no real network, no real worker, fully deterministic. covers: connect (200 and 500), push (returns snapshot, forwards snapshot ID, handles 500, handles 409 conflict), pull (returns notes/embeddings/positions, sends since query param), status (parses all fields), last_sync (none initially, updated after push). the with_rt() helper builds a single-threaded tokio runtime with IO enabled for each test since wiremock needs async + network. the TODO “Cloud sync” is checked off. one item left: Dioxus UI. aaaaaaaaa
the Dioxus commit (it’s broken but it exists) okay so. it does not work properly. I want to be upfront about that. it compiles, it launches, things appear on screen, but the interaction is janky, the canvas rendering fights with the DOM cards, and the layout worker doesn’t sync positions correctly yet. it’s a WIP commit and I’m committing it anyway because there’s genuinely a lot of infrastructure here and I don’t want to lose it. three new crates penumbra-theme : dark and light themes defined as Rust structs. colors, radii, glass blur config. to_css_vars() generates the full CSS custom properties string so the theme can be injected into the DOM at runtime. purple accent because penumbra means shadow and shadows are purple, obviously. penumbra-canvas : a GraphCanvasRenderer trait with a WebCanvasRenderer that draws to an HTML canvas via web-sys. dot grid background, bezier curve edges between nodes, rounded-rect cards with titles. plus a NullCanvasRenderer for when there’s no canvas available. the RenderState struct holds the camera, nodes, edges, and selection state. penumbra-thread : cross-platform threading. std::thread on native, wasm_thread on WASM. one #[cfg] block (the only one in the project, and it’s in a platform abstraction crate where it belongs). Worker struct with atomic cancellation flag. spawn_worker() and spawn_detached() helpers. the app Build/ui/penumbra-app/ is a full Dioxus desktop app. the component count looks scary but most of it is from the dioxus-components library (badge, button, card, dialog, dropdown menu, separator, sheet, sidebar, skeleton, tabs, tooltip). I styled them but didn’t write them. the custom ones are: NoteCard : the little frosted-glass card that represents a note on the canvas. title, preview, positioned absolutely in world coordinates. GraphCards : renders all notes as AnimatedCards inside a CSS-transformed container. each card gets a spring animation on mount via dioxus-motion so it scales in from zero. cards are draggable. FloatingSidebar : the vertical icon bar on the left. grid, search, pin, tag, settings. just state toggles for now, no panels wired up yet. TopBar : centered pill bar with the app name and search area. Fab : “New note” button in the bottom right. NoteEditor : full-screen editor view with title, body, and tags fields. auto-saves on back. the bridge bridge/mod.rs connects the UI to the backend. load_graph() and load_positions() pull from storage. restore_state() inserts everything into the graph and index. create_layout_engine() builds the GPU layout engine with all current nodes. start_layout_worker() spawns a background thread that steps the layout at 60fps, syncs node additions/removals, and publishes position updates through the event bus. sleeps longer when the layout has converged. the interaction model pan: mousedown on canvas starts tracking, mousemove applies delta to camera, mouseup stops. zoom: wheel events on canvas adjust zoom level around the cursor position. drag: mousedown on a note card captures the offset, mousemove in drag mode updates the note’s position directly. note creation: click fab -> create empty note in graph -> wait for layout engine to assign position -> camera drifts to the new note (spring animation) -> switch to editor view. this is the flow from the ideas issue. it doesn’t work smoothly yet but the state machine is there. what’s broken everything, kind of. the canvas renderer and the DOM cards are two separate rendering paths that don’t coordinate well. the layout worker publishes positions but the signals don’t always pick them up in time. the camera drift animation triggers but sometimes snaps instead of drifting. the editor saves but doesn’t trigger re-embedding. the sidebar buttons toggle state but nothing happens. it’s a prototype. sigh.
making it actually work (kind of) so remember how last commit I said “everything is broken”? I spent tonight fixing the worst of it. it’s not done but it’s a lot less broken. the big fix: drag + layout fighting the core problem was that when you drag a note, the layout engine keeps running and overwriting your drag position every 16ms. the note jitters back and forth between where you’re dragging it and where the physics wants it. fix: new SetNodePosition event. when you drag a note, the UI publishes it through the event bus. the layout worker drains these events at the top of each cycle and calls engine.set_position() before stepping. so the layout engine knows where you put the card and computes forces from there instead of fighting you. also: while any note is being dragged (tracked by dragged_set ), the layout event loop skips updating positions entirely. other notes stay still instead of jittering from stale force calculations. once you release, everything syncs up again. mouse events moved to root div pan/drag/mouseup handlers were on the canvas element, which meant releasing the mouse over a note card didn’t fire mouseup on the canvas. dragging would “stick.” moved all the move/up/leave handlers to the root div so they fire regardless of what’s under the cursor. canvas renderer simplified removed the node drawing code from WebCanvasRenderer entirely. nodes were being drawn twice: once on the canvas in Rust/web-sys, once as DOM cards in Dioxus. the canvas now only draws the dot grid and bezier edges. the DOM handles cards. no more double rendering. the inline JS RAF loop was also replaced with a standalone canvas-draw.js that gets called explicitly via window.__penumbra_draw() whenever render state changes. no more requestAnimationFrame spinning at 60fps when nothing changed. spring-animated card positions cards now spring-animate to their new positions instead of teleporting. each AnimatedCard tracks target x/y and animates via dioxus-motion springs when the target changes. so when the layout engine repositions notes, they glide smoothly. the spring from the ideas issue, basically. sidebar panels are real now the floating sidebar buttons actually do things now. four panels: Search : reactive search input that queries the hybrid search engine as you type. results show title, preview, and similarity score. click a result and the camera drifts to that note. Tags : shows all tags sorted by count. click a tag to filter the graph view to only notes with that tag. click again to clear the filter. below the tag list, shows the filtered notes. Pins : lists all pinned notes. click to pan to them. Settings : just shows note count and link count for now. placeholder. context menu on right-click right-click a note card and you get a context menu with “Open in editor,” “Pin to canvas” / “Unpin,” and “Delete note.” the pin toggle calls a new toggle_pin method on AppState that flips the meta flag, persists, and publishes an event. note cards render markdown NoteCard preview now runs through markdown_to_html() and uses dangerous_inner_html . (XSS? yes) the editor got a preview toggle button that switches between the textarea and rendered HTML. real embeddings on init switched from SimpleEmbedder to CandleEmbedder::load() at startup. downloads the real Snowflake model from HuggingFace on first launch. falls back to SimpleEmbedder if the download fails. position persistence the layout event loop now debounce-saves positions to storage every 2 seconds. on next launch, saved positions are fed into the layout engine before the first step so notes start where you left them instead of random positions. other stuff done as well but i’m eepyyyy
the polish commit (that didn’t polish enough) okay so this commit looks massive and impressive on paper. I touched basically everything. and the code changes are real. but I need to be honest: the app still looks and feels terrible. like, genuinely bad. the UI is broken in ways that make me want to close the window and pretend I never opened it. but the changes are real so let me document them anyway. layout tuning repulsion went from 1000 to 8000, attraction from 0.01 to 0.004, ideal_length from 50 to 220. notes were clumping into an unreadable blob. the physics are better now even if you can’t tell because the rendering is fighting itself. theme overhaul flattened the entire theme system into one struct with semantic names. every hardcoded color replaced with CSS vars. dark and light themes. toggle in settings. this part actually works correctly and I’m proud of it even though nobody can see it because the layout is broken. TipTap editor replaced the textarea with TipTap via JS eval. StarterKit with bold/italic/strike/code/headings/lists. toolbar with format buttons. sends HTML back via dioxus.send(). this is genuinely nice when it works. which is actually most of the time wow. manual linking, note list, auto-linking on save, context menu, keyboard shortcuts, zoom controls, empty state all implemented. all technically functional. all look like they were designed by someone who has never seen a GUI before. (me. I’m that someone. i am not good at RSX, which is funny because it SHOULD just be a different form of HTML. you would think.) what I learned dioxus-desktop’s webview is not a browser with devtools. iterating on UI by recompiling a Rust binary every time you move a div 2 pixels is actual torture. I should have designed the UI in plain HTML first, gotten it looking right in a real browser with real devtools, and THEN ported it to rsx. I did not do that. I have been doing it backwards this entire time. smh my silly head. next step: HTML mockup first, then port. the backend is solid. the architecture is clean. the UI just needs to catch up. still broken but less broken than before. progress? maybe? onwards (to HTML mockups) :}
Revert Dioxus That’s the sound of me… giving up Giving up on Dioxus cause it’s so SO difficult to use I’m using Slint now, maybe, we’ll see if i even remember what I was doing Sorry for the like bad devlog, but it needed to be done
Basic template so. Slint. I was gonna do the whole “design it in HTML first then port it” thing that I very wisely declared last time and then, naturally, did not do at all. instead I saw Slint had a live preview and its own markup language and yeah. here we are. and it’s actually fun?? like it has a real preview, you edit the .slint file and it just updates, no recompiling the entire universe to nudge one thing. after the Dioxus months this feels illegal. anyway before touching any actual UI I made penumbra-app, which is NOT the UI, it’s the brain. a Universe struct that holds the graph + storage + event bus and does all the note stuff: create, save, delete, restore on open, persist after every change. the whole point is it doesn’t know Slint exists. or Dioxus. or anything. it just… runs the app, and whatever draws on top pokes it and listens for events. so if I rage-quit Slint in three weeks (I won’t! probably.) the brain doesn’t care. the actual Slint crate (penumbra-ui) is barely anything yet. cargo.toml, a build.rs because Slint compiles the markup at build time, a main, one app.slint. it’s the hello-world stage. but it launches! natively! no webview! I cannot stress how nice it is to not have a webview. oh also storage stuff got nudged, everything lives under a Penumbra/ folder now instead of just yeeting files into the shared app-data dir like a menace. and added a with_dir() so tests stop writing to my real data. speaking of, wrote a pile of Universe tests: make a note, drop the whole universe, reopen from the same folder, is the note still there? yes. edit it, reopen, still edited? yes. delete it, reopen, gone? gone. persistence actually persists, turns out. months since the last commit lol. I saw the date and just sighed. but the backend was sitting there perfectly fine this whole time waiting for me to stop fighting UI frameworks, and now I’ve got a clean core library and a toolkit that doesn’t actively hate me! Gasp. good place to be back :3
Vault mode (aka I made it Obsidian now, basically) okay this is a big (foundational) one so up until now Penumbra stored notes as a big pile of JSON blobs plus a graph.json that held all the links. which works but it’s… a black box? you can’t open your notes in anything else, the links live in a separate file, it’s very “my app owns your data.” and that bugged me. so now it’s a vault with markdown files. one .md per note, filename = title, YAML frontmatter for the id/timestamps/tags/pinned/archived, and the body is just… markdown. you could point Obsidian at the folder and it’d basically work. that’s the goal. well. the other way around but still :P Also, links aren’t stored anymore, they’re derived. [[wikilinks]] in the body get resolved against filenames at scan time and become the explicit edges in the graph. no more graph.json. the files ARE the source of truth, and if the app crashes mid-write the next scan just repairs everything. I like that a lot. it means if you go edit a file in some other editor and add a [[link]] , Penumbra picks it up next time it scans. and then I fell down the rename rabbit hole. because if filename = title, renaming a note means renaming the file AND rewriting every [[old title]] across the whole vault to [[new title]] . so propagate_rename walks every note that linked to the old title and rewrites it. and the rewriter is suuuuuuper careful: it skips inline code, fenced code blocks, indented code, handles [[Old|alias]] , matches case-insensitively but keeps whatever case you typed. wikilinks inside `code` should NOT get rewritten and now they don’t, and I have a test that proves it (with the same link four times in different contexts, only the live one changes). very satisfying. filenames can have slashes and colons and emoji and whatever, so there’s a sanitizer that strips the illegal stuff, collapses whitespace, caps length, falls back to “Untitled” if you somehow title a note with just dots. and if two notes want the same filename you get “Same Name” and “Same Name 2” like every sane file manager. oh and frontmatter tags vs inline tags are kept separate on purpose. if you wrote #tag in the body, that stays inline, it doesn’t get hoisted up into the YAML just because Penumbra touched the file. only frontmatter tags round-trip through YAML. respecting the user’s file, basically. the parser also got some unicode love while I was in there. tags can be #Ünïcodé now and nested like #projects/penumbra , and the whole split_text_for_custom walk steps by char instead of byte so it stops potentially panicking on multi-byte stuff. should’ve been like that from the start but oh well. on the UI side: there’s a folder picker now! rfd native dialog, “Choose your Penumbra vault”, and it remembers your choice in a config file so it doesn’t nag you every launch. also reads a PENUMBRA_VAULT env var if you want to override. getting the macOS dialog to behave was its own thing because rfd has to run on the thread that owns NSApplication, so it marshals onto the Slint event loop and sends the result back over a channel. the browser build just uses OPFS for now, showDirectoryPicker slots in later (TODO left in the code, future me’s problem). wrote a whole pile of tests for all of it too, but that’s booooriinnnngggggggggggggggggg
working wasm version and candle it runs in the browser now!! like, actually. wasm target, Slint rendering to a canvas, the whole thing. I’ve been dreading the wasm build this whole project and it just… went. mostly. the big win here is model caching, because downloading a ~130MB embedding model every single page load is obviously insane. so there’s a model_cache module now that’s the same two functions (get/put) with two backends behind cfg: native writes the bytes to a temp dir, wasm shoves them into the browser’s Cache API. first launch downloads and stashes, every launch after just pulls from cache. same idea as before but now it works on both sides. to make that clean I split CandleEmbedder::load() into two pieces: from_bytes() that takes raw model/config/tokenizer bytes and builds the thing, and load() (native only) that downloads then calls from_bytes. so the wasm path can grab bytes from cache (or fetch them itself) and hand them straight to from_bytes without the reqwest download dance. Candle running on CPU in wasm, no GPU, producing the same 384-dim vectors. genuinely did not expect that to just work. the wasm caching code is… a lot of JsFuture and dyn_into and web_sys ceremony. open the cache, build a Request, match it, pull the arraybuffer, convert to a Uint8Array, to_vec. and the put side builds a fake 200 Response with the bytes as the body and stuffs it in. it’s verbose but it’s the standard, nothing clever. the UI crate is a cdylib now (plus rlib) so it can compile to wasm, tokio features got split per-target (no rt-multi-thread in the browser, obviously), and there’s a tiny index.html that just imports the generated js and calls init(). Slint paints onto a <canvas id="canvas"> also wrote an inference benchmark test… all you need to know so yeah. desktop AND browser, same codebase, real ML embeddings on both. the “true cross-platformity” thing from the very first devlog is… actually real now? that rule I set on day one about no #[cfg] in the interfaces paid off HARD here, the only cfgs are tucked inside the cache and download internals where they belong.
lock in (the UI exists now. for real this time.) hehe okay. LOCK IN. this is the one where Penumbra stops being a really nice backend with no face and becomes an actual app you can look at. Slint UI, real components, and I wrote my own text editor because of course I did.so the editor. new crate, penumbra-editor. I could’ve just shoved a <textarea> equivalent in and called it a day but nooo, I wanted a proper block-based editor like the good note apps have. so it’s a document model made of blocks, each block has styled spans, and you edit it through commands: InsertText, DeleteRange, SplitBlock, MergeBlocks, SetMark, MoveCursor. every command goes through a Journal that’s just a command list + a pointer, which means undo/redo falls out for free (truncate on new push, walk the pointer back and forth). there’s a cursor/selection model and a view_model that snapshots the doc into something the UI can render without touching the guts. it’s BROKEN AND WEIRD NOW BUT IT’LL GET BETTER I PROMISE the layout engine grew a CPU brain. it was originally GPU-only via that vibe-graph-layout-gpu crate, which is great until you’re in an environment with no WebGPU (like… a lot of places, including some wasm setups) and then it just returns zero displacement and everything sits in a sad pile. so now there’s cpu.rs, my own Barnes-Hut quadtree force layout in plain Rust, and the engine tries GPU first and falls back to CPU when there’s no backend or the GPU step fails. no more “works on my machine with a discrete GPU only.” graceful degradation, hehe. and then the actual Slint UI which is the thing. it’s great. it’s split into real components now: theme.slint for the tokens, top-bar.slint, map-canvas.slint for the graph, note-card.slint for the cards, editor-panel.slint for writing. app.slint wires it together. this is the part that broke my brain in Dioxus for literal months and in Slint it’s just… a file with a live preview and it looks how I tell it to. I keep waiting for the catch. haven’t hit it yet tests too NO JINXING ME (please) I don’t want to jinx it but. this feels like the first time Penumbra is actually the thing I pictured back in that architecture-day devlog. backend I’m proud of, a UI that doesn’t fight me, my own editor, works on GPU or CPU, desktop or browser. I locked in :3
the map is alive You might wonder, why is bro devlogging so often? Wellll, i had this whole plan i wrote down a bit ago to commit when so that it’s not a 10000 line commit ( shudders in that happening before ) but I severely overestimated how long these things would take Most of the time not logged was testing, sigh i wish i could devlog that lolll hehe okay so the notes actually live on a map now. like they have positions, computed by the real layout engine, and you can drag the whole thing around and zoom. it’s a canvas!! a real one!! what and how so on boot (native), it spins up the LayoutEngine, drops every note in as a node, restores their saved positions if there are any, feeds in the links, and runs the layout to settle everything. then it builds two things for the UI: note cards (with x/y from the layout) and edges (lines between linked notes, computed from the endpoint positions). both get shoved into Slint models and the map renders them. add a new note and it gets added to the layout, re-stepped, and the cards + edges refresh. positions save back to storage when you close the app. the map-canvas. slint got the fun part: pan and zoom. a TouchArea catches pointer down/move to drag the camera around, scroll wheel zooms between 10% and 500%, and every card positions itself as (card.x - camera) * zoom. threw in viewport culling too so cards way off-screen just don’t render (visible: only if it’s within ~200px of the edges). and a little “N notes | zoom: X%” readout in the corner because I like knowing things. (it’s broken like most of this, we ignore that for now, polishing is later) my foolishness the whole thing is cfg-split for wasm because the GPU layout engine isn’t wired up on the browser side yet, so wasm gets a fallback that just lists the cards without real positions for now. desktop gets the full living map, browser gets the placeholder, both compile, nobody’s angry. (the wasm map is a TODO-shaped hole but it’s an silly one.) also had to expose universe.storage() so the UI can reach load_positions/save_positions, and added a small EdgeVM struct to carry line endpoints into Slint.
neighborhood steps actually mean something now so way back, I wrote step_neighborhood as a function that… just called step() . full graph. every time. with a little // Note: functionally equivalent to step() comment that was basically an “it’s fineeee” for now. it’s been sitting there mocking me… for months (no joke i had it at #1 on the mental todo after deleting Dioxus) not anymore! it does the real thing now. when you nudge one note, only the notes within ~400px of it recompute. everything past that radius stays frozen and acts as an anchor so the local cluster settles against the rest of the map instead of the whole universe re-jiggling every frame. this is the “atomic graph updates” idea from the original plan thing, finally real: touch one note, its neighborhood adjusts, the far-off constellations don’t even notice. Efficiency to make that not-slow I built a spatial hash. uniform grid, bucket nodes by cell, “give me everything within radius R” only checks the overlapping cells instead of all N nodes. the CPU layout uses it for the localized force pass (repulsion from local neighbors, springs to actual link partners even if they’re outside the neighborhood, gravity), and I also went back and ripped the O(n²) all-pairs loop out of the regular collision resolver and put it on the spatial hash too. that one was quietly quadratic this whole time and would’ve melted at a couple thousand notes. rebuild the hash each pass so pushed nodes land in their new cells. much better. Collisions? the collision resolver got a neighborhood-scoped twin as well, so a local step also only de-overlaps locally. nodes inside the neighborhood push each other apart normally; a node that’s an anchor outside it doesn’t move, so the inside node just gets shoved twice as hard away from it. felt like the right call. PERSISTENCE?! also taught storage about pins, separate workspace.pins.json file (refactored the workspace/pins file openers to share a state_file helper), and note cards carry a pinned flag now. Oh lines and there’s a whole new map module in the UI crate that generates the actual SVG-ish path strings: bezier edges between linked cards in screen coordinates, viewport culling so off-screen edges don’t get drawn, selected-neighborhood highlighting (the selected note’s edges render in the “selected” layer, everything else in “base”), and a grid path that anchors to the camera and clamps its own density so zooming way out doesn’t try to draw ten thousand grid lines. the map handling a lot of notes without choking was the thing I was VERY, VERY worried about. Not as much of a problem as I thought! :D
Broken but a working ish editor!!! you can WRITE in it now. like actually type words into a note and have them save. it’s janky but it works and I’m hyped. How the editor is block-based, which was the whole gamble. instead of one big textarea, a note is parsed into blocks (paragraphs, headings, code fences, etc) and you edit one block at a time. the active block shows its raw markdown so you can mess with the syntax, everything else renders. new session.rs in penumbra-editor holds all of it: EditorSession owns the list of BlockEdits, tracks which one’s active, and each block has a mode, Prose (renders as markdown, Enter splits into a new block), Heading (single line, Enter drops the tail into a paragraph below), and Raw (code, Enter is a literal newline). splitting a block at the cursor, merging, undo/redo with a 64-deep snapshot history. it’s a real little document editor. uhhh is it good? no! the commit message says “broken” and I mean it. the split logic has edge cases, the cursor does weird things, switching blocks is finicky. but you can open a note, type, and it round-trips to the markdown file on disk, which is the bar I set and it clears it. barely. hehe. yeah state is hard to make the editor and the layout worker both able to touch the graph, Universe’s graph is now an Arc<Mutex>. graph() hands back a guard, graph_handle() hands back the Arc for things that want to hold their own lock. had to sprinkle lock_graph() everywhere but it’s the honest cost of sharing state between the UI thread and the physics thread. oop forgot about this also implicit links persist now! the auto-associated links used to evaporate on restart because only explicit wikilinks got rebuilt from the files. now they save to their own file and get restored on open (skipping any whose notes are gone). so the constellations you didn’t draw by hand survive a relaunch too. eeh and the TODO… got GUTTED. so much got checked off I almost don’t believe it. Slint UI: done. map canvas v1 with pan/zoom/grid/edges/culling: done. spring animation so cards drift to their spots instead of teleporting: done. local neighborhood layout: done. pinned notes as fixed stars (pin via right-drag, right-tap to unpin, and left-dragging one nudges it back toward its pin): done. positions cached with throttled save + save-on-exit: done. physics running off the UI thread on the tokio runtime so the map doesn’t stutter while it’s solving: done. that whole “Slint” section of the roadmap is basically green now. new-note-pill.slint got added too, a little floating “new note” thing that’s partially broken. broken editor, but a broken editor that WORKS, which three months ago I could not have said about any part of the UI. we’re so back :3
Implement platform-specific modules approach like Saikuro okay so the ui/penumbra-ui/src/lib.rs had gotten GROSS. it was this soup of #[cfg(not(target_family = "wasm"))] and #[cfg(target_family = "wasm")] blocks sitting right next to each other, two versions of half the functions, the SharedState struct declared twice, the boot path forked inline. every time I added a thing I had to add it twice with the right cfg gate and it was exactly the kind of mess I swore off on day one. so I stole the pattern from Saikuro a platform module. now there’s src/platform/mod.rs that declares the shared interface, plus platform/native/mod.rs and platform/wasm/mod.rs behind one cfg switch at the top. the rest of the app just calls into platform:: and doesn’t care which one it got. all the two-versions-of-everything nonsense is now contained in exactly two files that never both compile at once, and lib.rs reads like a single coherent app again instead of a choose-your-own-adventure. it’s so much cleaner. while I was in the editor I also killed a dumb duplication: penumbra-editor had its OWN BlockKind enum that was just a lossy copy of the one in penumbra-markdown, with a whole block_kind() function to convert between them. why. they’re the same concept. so now the editor re-exports markdown’s BlockKind and clones it straight through, and that whole translation layer is gone.
Better editor the editor got a real display layer, and honestly most of the actual work here happened in the Slint live preview, just tweaking things until they looked right, so the hours logged don’t reflect it. same story for the last few commits, tbh, a lot of “sit in the preview and nudge” that Hackatime doesn’t see. oh well. anyway the thing that makes an editor feel like an editor is that the active block shows raw markdown but every other block renders nicely, and the piece that does that rendering is the new display module. it turns each block into the text you actually want to see. lists keep their markers because those go through the real markdown renderer. and tables, tables actually render as an aligned grid now, padded columns and a --- separator row, which looks so much better. there’s also scroll targeting given the active block, it works out where to scroll the editor so that block is comfortably in view. first block sits at zero, later blocks scroll proportionally, long bodies don’t leave you editing something off the bottom of the screen. wrote a chunk of tests for all of this the map got a zoom-to-card thing too click into a note and the camera zooms so the card fills the viewport width it’s great that’s what i wanted since the beginning tbh like that animation played in my head
Component library + live typing preview two things this commit first I pulled all the Slint components out of penumbra-ui into their own crate, penumbra-component. it’s a pure-markup library, no Rust logic, just .slint files: the Theme, all the block components (ProseBlock, HeadingBlock, QuoteBlock, CodeBlock, TableBlock, FootnoteBlock, HtmlBlock), the CanvasSurface, the TopBar, and PillButton (which used to be NewNotePill but I generalized it so it takes a text prop instead of hardcoding “New note”). there’s an index.slint that re-exports everything and now the app imports from @penumbra-component/index.slint like a real library. also why I did this: the live preview. I set up a slint library path in build.rs (and a .vscode/settings.json so the preview resolves @penumbra-component ), which means I can open any single component file and preview it in isolation instead of booting the whole app. given that basically all my UI work these days IS sitting in the preview nudging things, having the components be individually previewable is a massive quality-of-life win. also just cleaner, the editor-panel.slint used to have all seven block components copy-pasted inline at the top, like 200 lines of it, and now it just imports them. the VMs (BlockVM, NoteCardVM) moved to a data.slint too so the struct definitions aren’t tangled with the theme. second thing, and this is the fun one live preview while you type. before, the active block was just a raw text field, you’d type # Heading and see # Heading , and only once you clicked away did it render. now as you type, a little preview well under the input shows what the block WOULD render as, live. type # and it previews as a heading, type > and it’s a quote, type - and it’s a list. there’s a whole set of live_ functions (live_kind_name, live_display_text, live_heading_level, estimate_live_height) that route the currently-typed text through the same display logic the inactive blocks use, so you get instant feedback on your markdown without committing it. But it’s broken and weird and not working (see previous image) gosh might take a break from this and think about how to structure it again, Je n’aime pas ce désordre
Engine improvements ughhhhhhh i spent hours making “spikes” (is that what they’re called?) and it wasn’t counted cause slint live preview/editor = not hackatime-d sighhhh Oh well btw, hi, sorry for the random 1 month ish gap I come back, better at Slint, and with fresh motivation. okay so august 30 was my last commit and it is now october. in my defense i did not touch this once in that whole time which is either very bad or very healthy idk. but something clicked today and i opened it back up and immediately went “ew who wrote this” (me. it was me.) cough cough better engine so the editor had this whole situation in doc.rs where Document::new would parse the markdown into an ast, and then i had this convert_blocks function that walked through the blocks AND a second function called find_block_range that literally scanned the source bytes by hand looking for double newlines to guess where each block started and ended. like manually. byte by byte. offset += whatever. i genuinely cannot believe past me looked at that and went yeah ship it the thing is the parser already KNOWS where every block is. it has the offsets. it was just throwing them away and then i was reconstructing them with a worse, slower, buggier version downstream. so i added parse_blocks_offsets to the markdown parser so it just hands back (block, range) and now doc.rs is like. map over them, pull the range straight off, extract spans, collect. that’s it. find_block_range is gone. convert_blocks is gone. good riddance :3 also killed the edita-core dependency because it turns out i wasn’t actually using it for anything, it was just sitting in the Cargo.toml being decorative net result is like 1290 lines deleted vs 793 added which is my favorite kind of commit. deleting code that you wrote and were briefly proud of is so good for the soul hahaaaaa anyway the engine is better now (cough cough not)
SO GUESS WHAT I made a PR to big Slint itself!!!! https://github.com/slint-ui/slint/pull/14292 Basically… the markdown editor that Penumbra uses… is bad cause it’s a block style editor, which itself is hard to implement, and it’s not designed for markdown WYSIWYG. Double whammy Solution? Uhhh use cosmic-text and MAKE IT MYSELF BABYEEEEE In all seriousness tho, COSMIC text is so peak, truly universe-breaking. Well what’s the PR then? “This PR lets a FocusScope act as an input method (IME) client. That way, custom editing surfaces like rich text editors or code editors drawn with custom code can get composition events directly.” Aka, I stabilized an internal API and exposed it so that Penumbra can get a really cool editor....
|
1792803048.487678
|
1793407848.487678
|
|
9831
|
Tuff Top by @Spaagz | Stardance
|
Spaagz
|
1
|
26.21
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T18:54:56Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Watch this video to get a better idea of what it does, my description doesnt do it justice: https://www.youtube.com/watch?v=HbPldsK_V3k I made TuffTop which is a python program for linux that turns anything TUFF by mimicking those phonk edits that were popular ~8 months ago, and have since then long died in the mud. I made sure it is very customisable, you can change fonts, music, icons and the various phrases on screen. You can also turn things off in the handy config. Built with PyQt6 for drawing the overlay windows, PIL for image grayscaling effects and screenshot support on Wayland. I also use mpg123 for music and Evdev for input capturing This is my first real python project, please share any constructive criticism you may have as I want to improve!", "repo": "https://github.com/Spaagz/tuff-top", "demo": "https://github.com/Spaagz/tuff-top/releases/latest"}]...
|
[{"post_id": 17774, "ts": "202 [{"post_id": 17774, "ts": "2026-06-28T18:25:02Z", "hours": 3.2769, "text": "4 BLUE SQUARES UPDATE COMPLETE! This means that windows support is a thing now! Defender didn’t flag the exe yet , I can only hope and pray that it stays this way since pyinstaller builds are notorious for being flagged by defender Currently this just uses the same py file as on linux as the script itself is cross compatible, only the binaries have to be made per system which saves me time at the expense of the program being ever so slightly larger. Overlays and background bounces are also included in the new builds Full changelog and downloads here wait… I’m going to have to make another showcase video ament I?"}, {"post_id": 12783, "ts": "2026-06-20T22:04:59Z", "hours": 2.2578, "text": "I may have gone overboard on the svg overlay idea… Absolutely everything is randomized: The channel icon, the background gradient FOR the icon, like and dislike amount, channel name - heck I even made the progress bar random. (Im not going to animate it though). It will be in the next build once I have polished it up a bit more. Also, I have one question to you people: should I make a random video title appear as well? This will require another txt config file which might overwhelm new users so I dont know if its worth it. Aaaaand if you dont care for it you can also turn it off. also now I know how to use markdown formatting in my devlogs… Could you tell?"}, {"post_id": 12660, "ts": "2026-06-20T18:03:56Z", "hours": 0.6064, "text": "Added an experimental youtube shorts style overlay Its off by default because I want to figure out how to randomize like numbers, channel username and profile picture, however currently it just uses a hardcoded png"}, {"post_id": 12523, "ts": "2026-06-20T13:25:10Z", "hours": 4.0731, "text": "I have created a new release of the program that doesnt depend on mpg123 and doesnt create and destroy a qt app every single trigger. I have also added a couple new config options and QoL improvements: This means that compatibility should be greatly improved and performance should be better. I have managed to run the script in a vm and it seems to work out of the box on the latest version of KDE plasma."}, {"post_id": 10122, "ts": "2026-06-16T18:42:27Z", "hours": 0.7589, "text": "Most people dont use linux, so I made a showcase so people can preview the project easier! https://youtu.be/HbPldsK_V3k I know, the video is quite shoddy, I was kinda doing my homework at the same time ¯ _ (ツ)_/¯ In the 45 min tracked I setup paths relative to the script so now it works as a compiled pyinstaller binary. If you want to, you can click and run now instead of messing with python stuff. https://github.com/Spaagz/tuff-top"}, {"post_id": 8972, "ts": "2026-06-14T22:44:36Z", "hours": 1.8533, "text": "Added random phrases to the top of the screen using a randomised selection of fonts from a folder"}, {"post_id": 8403, "ts": "2026-06-13T23:34:00Z", "hours": 0.6964, "text": "Icons now scale according to aspect ratio instead of being squished into a uniform box. Heres a preview of the whole abomination in action:"}, {"post_id": 8351, "ts": "2026-06-13T21:34:29Z", "hours": 5.0408, "text": "The Youtube Shorts™ experience 🔥 Black bars can now be added to the sides to mimic a phone aspect ratio, this is configurable. More music and icons have been added as well. Ive also setup a github for this at: github.com/Spaagz/tuff-top Plans: a fake likes and comments overlay random text to accompany the icon Figure out a way to release this as a linux executable"}, {"post_id": 5047, "ts": "2026-06-08T18:24:34Z", "hours": 4.9244, "text": "Progress update! The project is Linux only now. Pynput doesnt work on wayland and while I could have it detect your platform and use a different input capturing method based on that, It’s not one of my priorities Anyways, I have finished some things up: Input detection works using evdev, I listen for mouse clicks and decide if it is “tuff” based on a % value set in the config, you can also configure how many seconds the icon stays on screen for. Icons are automatically selected from an icons directory and shuffled randomly - They do repeat sometimes but I feel that makes it funnier. This works for the phonk music too. I don’t know if this is optimal (please do say so if there are any better ways), Currently it spawns a mpg123 subprocess and then terminates it after the interval so you don’t have to cut your clips to length. The icon also now bounces randomly as if it were audio reactive but it actually isn’t Next: Make the screen grayscale. It makes it MUCH more funny but I don’t know how to do this in pyqt6, and also if it will work on wayland (Please tell me someone) Add black bars to mimic the aspect ratio of a vertical phone screen I want to setup a github for this but since I’m stupid I have actually never used it."}, {"post_id": 4170, "ts": "2026-06-07T12:03:06Z", "hours": 0.4686, "text": "Got the bounce animation working. So far I am just using the nerd emoji for my icon Trigger logic is the next thing to be done, but I’m unsure of how to go about it as I’m on Wayland which I heard doesn’t like capturing input if an app isn’t in focus. I didn’t put this in my first devlog, the goal is to interrupt gameplay at notable moments to cause an annoying fullscreen animation that works in any game or application. This is inspired by the Minecraft mod “Tuffcraft” and the one in gd that does the same thing yes I know this meme genre is long dead but idrc"}, {"post_id": 4146, "ts": "2026-06-07T11:01:09Z", "hours": 2.2386, "text": "Got transparent overlays working!"}]...
|
Title: Tuff Top by @Spaagz | Stardance
Devlogs:
G Title: Tuff Top by @Spaagz | Stardance
Devlogs:
Got transparent overlays working!
Got the bounce animation working. So far I am just using the nerd emoji for my icon Trigger logic is the next thing to be done, but I’m unsure of how to go about it as I’m on Wayland which I heard doesn’t like capturing input if an app isn’t in focus. I didn’t put this in my first devlog, the goal is to interrupt gameplay at notable moments to cause an annoying fullscreen animation that works in any game or application. This is inspired by the Minecraft mod “Tuffcraft” and the one in gd that does the same thing yes I know this meme genre is long dead but idrc
Progress update! The project is Linux only now. Pynput doesnt work on wayland and while I could have it detect your platform and use a different input capturing method based on that, It’s not one of my priorities Anyways, I have finished some things up: Input detection works using evdev, I listen for mouse clicks and decide if it is “tuff” based on a % value set in the config, you can also configure how many seconds the icon stays on screen for. Icons are automatically selected from an icons directory and shuffled randomly - They do repeat sometimes but I feel that makes it funnier. This works for the phonk music too. I don’t know if this is optimal (please do say so if there are any better ways), Currently it spawns a mpg123 subprocess and then terminates it after the interval so you don’t have to cut your clips to length. The icon also now bounces randomly as if it were audio reactive but it actually isn’t Next: Make the screen grayscale. It makes it MUCH more funny but I don’t know how to do this in pyqt6, and also if it will work on wayland (Please tell me someone) Add black bars to mimic the aspect ratio of a vertical phone screen I want to setup a github for this but since I’m stupid I have actually never used it.
The Youtube Shorts™ experience 🔥 Black bars can now be added to the sides to mimic a phone aspect ratio, this is configurable. More music and icons have been added as well. Ive also setup a github for this at: github.com/Spaagz/tuff-top Plans: a fake likes and comments overlay random text to accompany the icon Figure out a way to release this as a linux executable
Icons now scale according to aspect ratio instead of being squished into a uniform box. Heres a preview of the whole abomination in action:
Added random phrases to the top of the screen using a randomised selection of fonts from a folder
Most people dont use linux, so I made a showcase so people can preview the project easier! https://youtu.be/HbPldsK_V3k I know, the video is quite shoddy, I was kinda doing my homework at the same time ¯ _ (ツ)_/¯ In the 45 min tracked I setup paths relative to the script so now it works as a compiled pyinstaller binary. If you want to, you can click and run now instead of messing with python stuff. https://github.com/Spaagz/tuff-top
I have created a new release of the program that doesnt depend on mpg123 and doesnt create and destroy a qt app every single trigger. I have also added a couple new config options and QoL improvements: This means that compatibility should be greatly improved and performance should be better. I have managed to run the script in a vm and it seems to work out of the box on the latest version of KDE plasma.
Added an experimental youtube shorts style overlay Its off by default because I want to figure out how to randomize like numbers, channel username and profile picture, however currently it just uses a hardcoded png
I may have gone overboard on the svg overlay idea… Absolutely everything is randomized: The channel icon, the background gradient FOR the icon, like and dislike amount, channel name - heck I even made the progress bar random. (Im not going to animate it though). It will be in the next build once I have polished it up a bit more. Also, I have one question to you people: should I make a random video title appear as well? This will require another txt config file which might overwhelm new users so I dont know if its worth it. Aaaaand if you dont care for it you can also turn it off. also now I know how to use markdown formatting in my devlogs… Could you tell?
4 BLUE SQUARES UPDATE COMPLETE! This means that windows support is a thing now! Defender didn’t flag the exe yet , I can only hope and pray that it stays this way since pyinstaller builds are notorious for being flagged by defender Currently this just uses the same py file as on linux as the script itself is cross compatible, only the binaries have to be made per system which saves me time at the expense of the program being ever so slightly larger. Overlays and background bounces are also included in the new builds Full changelog and downloads here wait… I’m going to have to make another showcase video ament I?
Ships:
Watch this video to get a better idea of what it does, my description doesnt do it justice: https://www.youtube.com/watch?v=HbPldsK_V3k I made TuffTop which is a python program for linux that turns anything TUFF by mimicking those phonk edits that were popular ~8 months ago, and have since then long died in the mud. I made sure it is very customisable, you can change fonts, music, icons and the various phrases on screen. You can also turn things off in the handy config. Built with PyQt6 for drawing the overlay windows, PIL for image grayscaling effects and screenshot support on Wayland. I also use mpg123 for music and Evdev for input capturing This is my first real python project, please share any constructive criticism you may have as I want to improve!...
|
1793112749.361294
|
1793199149.361294
|
|
4452
|
Researca! by @araadh3111 | Stardance
|
araadh3111
|
0
|
26.2
|
0
|
[]
|
[{"post_id": 7501, "ts": "2026 [{"post_id": 7501, "ts": "2026-06-12T14:44:02Z", "hours": 1.7342, "text": "Done adding the library feature!! in researca try it out at https://research-copilot-sigma.vercel.app/library"}, {"post_id": 6878, "ts": "2026-06-11T15:13:38Z", "hours": 2.0897, "text": "Changed the ui of Researca fromlight manuscript theme to dark night theme"}, {"post_id": 6763, "ts": "2026-06-11T10:22:00Z", "hours": 22.3761, "text": "This Is Day 16 of Being the senior engineer of Researca and its my first devlog too, first lets start with what is Researca? To make countable contributions in science, scientists all over the world publish papers to record their discovery, methodology and The whole process done to publish that paper. This whole process consumes loads of time off the scientists table and doing it manually makes it reallly really hard for a scientist to finally publish a paper, we can understand it better by taking an example of a coder, He knows how to code but he takes too much time to code a full fledged app and then misses on the most important part of coding i.e. Shipping his/her project. I myself wanted to introduce myself to world of research by writing a paper on prosthetic arms, but then I realised this whole process is really difficult, scraping papers for gaps, reading 100’s of papers every month spending months on literature review. Thats why I built Researca and I am currently building it, Researca is an Ai Assistant ( not a wrapper) that ranks and synthesizes all the papers in ure field, it is like a workspace for a scientist(like notion) It has library feature, And Im currently building agentic Ai workflow to automate the research process, I have even collected feedback from 2 professors regarding what they find hard in their research process, researca comes with comparitive matrix and writing tool too!, here is the link to try Researca, Constant improvements are being made by me to improve researca each day!try it out at –> https://research-copilot-sigma.vercel.app/"}]...
|
Title: Researca! by @araadh3111 | Stardance
Devlo Title: Researca! by @araadh3111 | Stardance
Devlogs:
This Is Day 16 of Being the senior engineer of Researca and its my first devlog too, first lets start with what is Researca? To make countable contributions in science, scientists all over the world publish papers to record their discovery, methodology and The whole process done to publish that paper. This whole process consumes loads of time off the scientists table and doing it manually makes it reallly really hard for a scientist to finally publish a paper, we can understand it better by taking an example of a coder, He knows how to code but he takes too much time to code a full fledged app and then misses on the most important part of coding i.e. Shipping his/her project. I myself wanted to introduce myself to world of research by writing a paper on prosthetic arms, but then I realised this whole process is really difficult, scraping papers for gaps, reading 100’s of papers every month spending months on literature review. Thats why I built Researca and I am currently building it, Researca is an Ai Assistant ( not a wrapper) that ranks and synthesizes all the papers in ure field, it is like a workspace for a scientist(like notion) It has library feature, And Im currently building agentic Ai workflow to automate the research process, I have even collected feedback from 2 professors regarding what they find hard in their research process, researca comes with comparitive matrix and writing tool too!, here is the link to try Researca, Constant improvements are being made by me to improve researca each day!try it out at –> https://research-copilot-sigma.vercel.app/
Changed the ui of Researca fromlight manuscript theme to dark night theme
Done adding the library feature!! in researca try it out at https://research-copilot-sigma.vercel.app/library...
|
1793224114.1017065
|
1793828914.1017065
|
|
23550
|
SpacePad!!! by @Ahmed-Tantawy | Stardance
|
Ahmed-Tantawy
|
0
|
26.18
|
0
|
[]
|
[{"post_id": 79661, "ts": "202 [{"post_id": 79661, "ts": "2026-10-14T23:38:07Z", "hours": 1.6503, "text": "I’ve just made it!!! I’ve just finished my very first own macropad, I’ve made the case and the code, but i forgot to save the colored version of my step files, but i don’t care i will only change the filament color, hope you loke it :) The Space pad has 6 switches with 3 profiles to change between by holding on the encoder and it will change between the profiles with simple animations on the screen(hopefully) and the screen will show you which profile name and number are you in, and it has RGB which is enough."}, {"post_id": 77065, "ts": "2026-10-05T15:11:36Z", "hours": 0.6328, "text": "I’m working on the Case, when I finish it I will share it with you."}, {"post_id": 76868, "ts": "2026-10-04T21:33:48Z", "hours": 3.5542, "text": "REMAKING SPACE PAD, I’m making space pad from the beginning, I’ve just finished the PCB and now making the Case, The Changes: decreased the 9 switches to 6, decreased the 14 RGB LEDs to 12, ADDED THE OLED SCREEN!!! What is your opinion about the new one?"}, {"post_id": 75247, "ts": "2026-09-29T15:49:49Z", "hours": 1.7969, "text": "I have just finished the Firware and also edited my case, BUT!!! I don’t know how to log the time of the code in the same as the CAD and PCB, so i accedintlly logged a ( 2-hours and 27 min ) session of coding on another folder."}, {"post_id": 73348, "ts": "2026-09-24T23:21:56Z", "hours": 1.8617, "text": "I have just finished the Case of Space Pad, It’s AMAZING for me as the first CAD project, hope you like it like me, heading to software hopefully."}, {"post_id": 72223, "ts": "2026-09-22T14:14:54Z", "hours": 5.2889, "text": "I’m amazed by what I have done with the case, when I finish it completely I will show you the masterpiece I made, not that amazement, but I’m very happy with it as my first CAD project."}, {"post_id": 72118, "ts": "2026-09-22T06:28:10Z", "hours": 1.195, "text": "I’m close to finish the bottom layer of the case, but i have a question, if made the holes for the m3 inserts’ diameter is 4.7, although that the insert is 5 mm diameter, so i can heat it using the soldering iron to insert it, do i have to make a hole in the bottom to add a nut or is it okay to have the m3 insert only?"}, {"post_id": 69836, "ts": "2026-09-17T21:33:06Z", "hours": 0.3669, "text": "Uploaded the 3D models of the parts of the PCB, and prepared for the CAD."}, {"post_id": 68658, "ts": "2026-09-15T14:18:31Z", "hours": 1.25, "text": "I’m suffering :( i am stuck in the CAD and case design and i am not even able to do one shell, and I didn’t make any CAD before, and pleaseeeeeeeeeeeeeeeeee if anyone made this mission before, please help me."}, {"post_id": 66119, "ts": "2026-09-11T18:47:33Z", "hours": 0.5669, "text": "Made slight changes in the silkscreen and made the drawings more simple, and changed the PCB size from 100.5 Length and 81 Width, to 99.5 Length and 81 Width, so it fits the rules of the PCB making step as Hack Club Guide has mentioned."}, {"post_id": 64488, "ts": "2026-09-08T22:24:52Z", "hours": 0.8511, "text": "I can say that I FINALLY!!! made the PCB, I’ve just removed the not needed silkscreen and added the cool Orphus and hack club drawings, and of course my cool octopus, and i made the PCB with smooth curved edges, waiting for your comments"}, {"post_id": 64324, "ts": "2026-09-08T16:44:34Z", "hours": 1.8522, "text": "I know that I’m a bit crazy and that I took too much for the most simple and easy part in the HackPad mission:) but i returned to the concept of the RGBs instead of the OLED Screen, the screen may be more useful but it will make the design not as i wanted it to be, do I made this hopefully last version… if you have any comments or advices i will appreciate it especially if the advice is about the Case Design."}, {"post_id": 61505, "ts": "2026-09-04T13:37:47Z", "hours": 0.9186, "text": "No real progress today, but i need help, if i want to have the Hack Pad vertically and i don’t want to move the encoder, switches, or the OLED Screen, where should I put the XIAO, and if i put it in the B.Cu can i put the GND area in the B.Cu when i do this? if anyone helped me I’ll appreciate it too much"}, {"post_id": 61064, "ts": "2026-09-03T19:38:54Z", "hours": 0.8508, "text": "In the first, I’m sorry for not recording anything for 3 days, truthfully I have no arguments because it was my laziness, i mad some remakes in the PCB because I knew that i was using the wrong footprints for the diodes, and also I mad differences in the place of the XIAO, and if any of you have any advice for me I will appreciate it, specially an advice in the CAD please because I’m very bad in it."}, {"post_id": 57695, "ts": "2026-08-29T22:43:27Z", "hours": 0.6344, "text": "Finally!!! I’ve finished the whole PCB, I was trying to have more graphics but it will ruin the electricity, I’ m very proud of the final result, hope all of you love it, and if any of you have any comments I will be soo thankful :)"}, {"post_id": 57551, "ts": "2026-08-29T18:47:03Z", "hours": 0.4172, "text": "Adding the Mounting holes, Ground area and putting the last details."}, {"post_id": 56735, "ts": "2026-08-28T16:38:32Z", "hours": 0.6669, "text": "Remaking the routes of the PCB so that if i made the space under the xiao visible, there will be some cool wiring Routes 0_o"}, {"post_id": 56702, "ts": "2026-08-28T15:53:46Z", "hours": 0.8261, "text": "working on the Routing of the PCB"}, {"post_id": 54413, "ts": "2026-08-25T12:43:56Z", "hours": 0.3508, "text": "Remaking the PCB, I felt like that the RGBs isn’t very important, so i deleted them and added an OLED screen instead of it, and changed the places of some rows.. If any of you have some tips to me about the placement, i will be soo thankful to know it :)"}, {"post_id": 37799, "ts": "2026-07-30T18:50:57Z", "hours": 0.2672, "text": "Finallyyyy! I’ve just finished the PCB, I know that it is very messy, but I’m proud of my first PCB, if you have any comment you want to add, i will be happy to know :)"}, {"post_id": 35470, "ts": "2026-07-26T22:36:49Z", "hours": 0.3836, "text": "I’m working on the schematic of my MacroPad ( SpacePad ), i made it with 9 switches with 9 diodes, 1 rotary encoder ( a knob ), RGB Lights, and of course the microcontroller, I’m too excited to finish this project!!!"}]...
|
Title: SpacePad!!! by @Ahmed-Tantawy | Stardance
Title: SpacePad!!! by @Ahmed-Tantawy | Stardance
Devlogs:
I’m working on the schematic of my MacroPad ( SpacePad ), i made it with 9 switches with 9 diodes, 1 rotary encoder ( a knob ), RGB Lights, and of course the microcontroller, I’m too excited to finish this project!!!
Finallyyyy! I’ve just finished the PCB, I know that it is very messy, but I’m proud of my first PCB, if you have any comment you want to add, i will be happy to know :)
Remaking the PCB, I felt like that the RGBs isn’t very important, so i deleted them and added an OLED screen instead of it, and changed the places of some rows.. If any of you have some tips to me about the placement, i will be soo thankful to know it :)
working on the Routing of the PCB
Remaking the routes of the PCB so that if i made the space under the xiao visible, there will be some cool wiring Routes 0_o
Adding the Mounting holes, Ground area and putting the last details.
Finally!!! I’ve finished the whole PCB, I was trying to have more graphics but it will ruin the electricity, I’ m very proud of the final result, hope all of you love it, and if any of you have any comments I will be soo thankful :)
In the first, I’m sorry for not recording anything for 3 days, truthfully I have no arguments because it was my laziness, i mad some remakes in the PCB because I knew that i was using the wrong footprints for the diodes, and also I mad differences in the place of the XIAO, and if any of you have any advice for me I will appreciate it, specially an advice in the CAD please because I’m very bad in it.
No real progress today, but i need help, if i want to have the Hack Pad vertically and i don’t want to move the encoder, switches, or the OLED Screen, where should I put the XIAO, and if i put it in the B.Cu can i put the GND area in the B.Cu when i do this? if anyone helped me I’ll appreciate it too much
I know that I’m a bit crazy and that I took too much for the most simple and easy part in the HackPad mission:) but i returned to the concept of the RGBs instead of the OLED Screen, the screen may be more useful but it will make the design not as i wanted it to be, do I made this hopefully last version… if you have any comments or advices i will appreciate it especially if the advice is about the Case Design.
I can say that I FINALLY!!! made the PCB, I’ve just removed the not needed silkscreen and added the cool Orphus and hack club drawings, and of course my cool octopus, and i made the PCB with smooth curved edges, waiting for your comments
Made slight changes in the silkscreen and made the drawings more simple, and changed the PCB size from 100.5 Length and 81 Width, to 99.5 Length and 81 Width, so it fits the rules of the PCB making step as Hack Club Guide has mentioned.
I’m suffering :( i am stuck in the CAD and case design and i am not even able to do one shell, and I didn’t make any CAD before, and pleaseeeeeeeeeeeeeeeeee if anyone made this mission before, please help me.
Uploaded the 3D models of the parts of the PCB, and prepared for the CAD.
I’m close to finish the bottom layer of the case, but i have a question, if made the holes for the m3 inserts’ diameter is 4.7, although that the insert is 5 mm diameter, so i can heat it using the soldering iron to insert it, do i have to make a hole in the bottom to add a nut or is it okay to have the m3 insert only?
I’m amazed by what I have done with the case, when I finish it completely I will show you the masterpiece I made, not that amazement, but I’m very happy with it as my first CAD project.
I have just finished the Case of Space Pad, It’s AMAZING for me as the first CAD project, hope you like it like me, heading to software hopefully.
I have just finished the Firware and also edited my case, BUT!!! I don’t know how to log the time of the code in the same as the CAD and PCB, so i accedintlly logged a ( 2-hours and 27 min ) session of coding on another folder.
REMAKING SPACE PAD, I’m making space pad from the beginning, I’ve just finished the PCB and now making the Case, The Changes: decreased the 9 switches to 6, decreased the 14 RGB LEDs to 12, ADDED THE OLED SCREEN!!! What is your opinion about the new one?
I’m working on the Case, when I finish it I will share it with you.
I’ve just made it!!! I’ve just finished my very first own macropad, I’ve made the case and the code, but i forgot to save the colored version of my step files, but i don’t care i will only change the filament color, hope you loke it :) The Space pad has 6 switches with 3 profiles to change between by holding on the encoder and it will change between the profiles with simple animations on the screen(hopefully) and the screen will show you which profile name and number are you in, and it has RGB which is enough....
|
1792691458.5795295
|
1793296258.5795295
|
|
31107
|
Arrow by @muntasir | Stardance
|
muntasir
|
0
|
26.17
|
0
|
[]
|
[{"post_id": 82157, "ts": "202 [{"post_id": 82157, "ts": "2026-10-24T04:01:09Z", "hours": 10.3753, "text": "Added a new feature: Past Papers."}, {"post_id": 46275, "ts": "2026-08-13T12:17:27Z", "hours": 2.1197, "text": "final touches added with shareable read onlies for all the advisors."}, {"post_id": 45717, "ts": "2026-08-12T11:58:35Z", "hours": 1.7444, "text": "made more security changes after a pentest."}, {"post_id": 43090, "ts": "2026-08-08T05:24:27Z", "hours": 1.7306, "text": "brought about some new features, topic based mock tests being one of them."}, {"post_id": 33995, "ts": "2026-07-24T12:00:12Z", "hours": 10.205, "text": "study and educational assistant: https://arrow-production-a2fd.up.railway.app/ . lemme know if theres any room for improvement."}]...
|
Title: Arrow by @muntasir | Stardance
Devlogs:
st Title: Arrow by @muntasir | Stardance
Devlogs:
study and educational assistant: https://arrow-production-a2fd.up.railway.app/ . lemme know if theres any room for improvement.
brought about some new features, topic based mock tests being one of them.
made more security changes after a pentest.
final touches added with shareable read onlies for all the advisors.
Added a new feature: Past Papers....
|
1793181103.9683113
|
1793785903.9683113
|
|
42948
|
Space-Os by @joelj | Stardance
|
joelj
|
1
|
26.08
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T03:25:53Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Space themed Operating system .(or aleast tried to 😅) It features a : - Welcome page : introduces the os -Space notes : a notes app based on actual nasa apollo framework - Orbital rader: a visual representation of our dear solar system with a small description for each planet - Custom cursor : a small cute rocket Main problems : The hacktime setup : this was the problem that took the longest . The standard WakaTime extension out of the box was attempting to sync with official WakaTime proprietary servers rather than the specialized Hackatime endpoints, resulting in broke communication loops. Small bugs for each feature : Its always there , its expected and we can solve them -The curser problem : The custom cursor was only apearng in the main html and not the iframes Things i learned : -How to use html and code a site Mastered divs -Used css a lot Most importantly : Persistence and determination", "repo": "https://github.com/Johan-jim123/JJ-OS", "demo": "https://johan-jim123.github.io/Space-Os/"}]...
|
[{"post_id": 76617, "ts": "202 [{"post_id": 76617, "ts": "2026-10-04T06:01:35Z", "hours": 2.1844, "text": "Devlog#5😁: -Added the music feature ( now you will be able to listenspace ambience) -Added a button to activate it -My codespace is back to copied my code from pycharm to there🥳🥳"}, {"post_id": 74339, "ts": "2026-09-27T06:16:59Z", "hours": 0.6183, "text": "Devlog #4😎😎 : -Made different themes : Using css variables theme-color and theme-glow , changed the look of all elemtns based on the theme . Added the Mode//button to change the theme -Added a special theme button to the notes app so u can miss-match theme combos"}, {"post_id": 73835, "ts": "2026-09-26T03:46:58Z", "hours": 3.56, "text": "Devlog#3 : -added a login-page 😁😁 -my free codespaces ended , so switched to pycharmm used the localstorage to save ur username and password"}, {"post_id": 69711, "ts": "2026-09-17T16:56:22Z", "hours": 4.4192, "text": "Devlog#2: -added localStorage: Bascially u store ur data locally so that when u refresh ur window or clsoe it it doesnt dissapear Added this feature to my Space notes , now u guys r able to add more logs TOO MUCH DEBUGING😭😭"}, {"post_id": 66586, "ts": "2026-09-12T13:05:32Z", "hours": 5.2986, "text": "Rewrote the entire css and made base for the new apps"}, {"post_id": 63321, "ts": "2026-09-07T02:36:26Z", "hours": 0.8678, "text": "Devlog#8: Made a visual representation of our solar system added all our planets (srry pluto) -visualised them with the glowing circle -Made a CUSTOM curser (the little rocket) -with particles that follow it Guys this marks the end of my WebOS 1. thanks for all your support that pushed me this far . See you on WebOs2"}, {"post_id": 62705, "ts": "2026-09-06T06:08:41Z", "hours": 1.4828, "text": "Devlog#7🥳: worked on my space notes app designed it based on real nasa notes and framework😎 -added 4 logs containing actual notes from the apollo and other renowned missions -Made the new log button , helping the user to create their own logs"}, {"post_id": 62025, "ts": "2026-09-05T07:34:54Z", "hours": 1.8303, "text": "Devlog#6👍: Made a new app ( Space notes)😎 -Added it to the desktop with a animated icon -Created a window for the app -Created functions to make the selected window come front -Solved bugs that came with it😭"}, {"post_id": 61361, "ts": "2026-09-04T07:29:35Z", "hours": 1.5322, "text": "Devlog#5😁:(spend a lot more time than i expected) Made the window draggable (by the heading) -Added the close and open buttons ( nasa themed😎 Made the class for those buttons -solved the bugs that came with each step"}, {"post_id": 60919, "ts": "2026-09-03T16:05:51Z", "hours": 0.9767, "text": "Devlog #4 😎: Make the destop of the Os and added my welcome page to it -customized the welcome page by finding this cool bg and added different styles to my div (8 to be precise 😭 ) and solved the bugs that came with it Make the clock and customized it with the Courier New font"}, {"post_id": 60323, "ts": "2026-09-02T16:35:01Z", "hours": 0.3964, "text": "Devlog #4 : - Made a working demo link , started with the Live Server extension by Ritwick Dey. But the link doesn’t work when the codespace is offline 😭. - Then i decided to make a github page which provided as a vaiable solution and allowed to run the website even without the codespace being online 😎."}, {"post_id": 59603, "ts": "2026-09-01T14:52:17Z", "hours": 0.9997, "text": "Worked on these neon pop up texts and found a good bg . Solved many bugs (that’s why it took soo loong 😭)"}, {"post_id": 59018, "ts": "2026-08-31T16:30:05Z", "hours": 0.4831, "text": "Added a coulourful bg , and worked wiht different fonts and colours 😎😎"}, {"post_id": 58182, "ts": "2026-08-30T15:18:00Z", "hours": 1.7658, "text": "Yoo started working on the project 😎. Finally figured out the hacktime in codespace😅. hope to create something speciall!"}]...
|
Title: Space-Os by @joelj | Stardance
Devlogs:
Yo Title: Space-Os by @joelj | Stardance
Devlogs:
Yoo started working on the project 😎. Finally figured out the hacktime in codespace😅. hope to create something speciall!
Added a coulourful bg , and worked wiht different fonts and colours 😎😎
Worked on these neon pop up texts and found a good bg . Solved many bugs (that’s why it took soo loong 😭)
Devlog #4 : - Made a working demo link , started with the Live Server extension by Ritwick Dey. But the link doesn’t work when the codespace is offline 😭. - Then i decided to make a github page which provided as a vaiable solution and allowed to run the website even without the codespace being online 😎.
Devlog #4 😎: Make the destop of the Os and added my welcome page to it -customized the welcome page by finding this cool bg and added different styles to my div (8 to be precise 😭 ) and solved the bugs that came with it Make the clock and customized it with the Courier New font
Devlog#5😁:(spend a lot more time than i expected) Made the window draggable (by the heading) -Added the close and open buttons ( nasa themed😎 Made the class for those buttons -solved the bugs that came with each step
Devlog#6👍: Made a new app ( Space notes)😎 -Added it to the desktop with a animated icon -Created a window for the app -Created functions to make the selected window come front -Solved bugs that came with it😭
Devlog#7🥳: worked on my space notes app designed it based on real nasa notes and framework😎 -added 4 logs containing actual notes from the apollo and other renowned missions -Made the new log button , helping the user to create their own logs
Devlog#8: Made a visual representation of our solar system added all our planets (srry pluto) -visualised them with the glowing circle -Made a CUSTOM curser (the little rocket) -with particles that follow it Guys this marks the end of my WebOS 1. thanks for all your support that pushed me this far . See you on WebOs2
Rewrote the entire css and made base for the new apps
Devlog#2: -added localStorage: Bascially u store ur data locally so that when u refresh ur window or clsoe it it doesnt dissapear Added this feature to my Space notes , now u guys r able to add more logs TOO MUCH DEBUGING😭😭
Devlog#3 : -added a login-page 😁😁 -my free codespaces ended , so switched to pycharmm used the localstorage to save ur username and password
Devlog #4😎😎 : -Made different themes : Using css variables theme-color and theme-glow , changed the look of all elemtns based on the theme . Added the Mode//button to change the theme -Added a special theme button to the notes app so u can miss-match theme combos
Devlog#5😁: -Added the music feature ( now you will be able to listenspace ambience) -Added a button to activate it -My codespace is back to copied my code from pycharm to there🥳🥳
Ships:
I made a Space themed Operating system .(or aleast tried to 😅) It features a : - Welcome page : introduces the os -Space notes : a notes app based on actual nasa apollo framework - Orbital rader: a visual representation of our dear solar system with a small description for each planet - Custom cursor : a small cute rocket Main problems : The hacktime setup : this was the problem that took the longest . The standard WakaTime extension out of the box was attempting to sync with official WakaTime proprietary servers rather than the specialized Hackatime endpoints, resulting in broke communication loops. Small bugs for each feature : Its always there , its expected and we can solve them -The curser problem : The custom cursor was only apearng in the main html and not the iframes Things i learned : -How to use html and code a site Mastered divs -Used css a lot Most importantly : Persistence and determination...
|
1793145341.024388
|
1793231741.024388
|
|
55584
|
Jaw by @badcoder_of | Stardance
|
badcoder_of
|
0
|
26.05
|
0
|
[]
|
[{"post_id": 65573, "ts": "202 [{"post_id": 65573, "ts": "2026-09-10T20:07:58Z", "hours": 3.7919, "text": "Keyboard Measurement Pipeline & Popup-State Hook Engineered a keyboard management and built a declarative popup-controll hook. What was done: Custom Keyboard-Offset Hook: Built a hook to subscribe to native keyboard height events. Layout Shift Prevention: Refactored AddTodoInput to dynamically adjust bottom offsets based on real-time keyboard metrics. Universal Popup Component: Standardized backdrop animations, gesture dismissal, and positioning into a headless overlay container. Popup-Control Hook: Developed usePopup to encapsulate popup parameters, visibility controllers, and click-the-backdrop handler."}, {"post_id": 64859, "ts": "2026-09-09T15:33:55Z", "hours": 3.3864, "text": "State-Driven Dynamic Routing & Upgrade UI with animations In short: Instant, zero-latency switching between workspaces, implemented by replacing expo-routing with reactively changing internal state. What was done: Routing-to-State: Replaced Expo Router with React state for internal workspace switching. UX optimization: Prevented global remounting of App caused by workspace toggles. UI Development: Connected the WorkspaceManager and DB-syncing to a clean, intuitive UI layer. Animations: Integrated custom react-native-reanimated transitions to Workspace Popup. Performance: Reduced workspace switching latency to state-updating-time while keeping background DB actions fully synced."}, {"post_id": 63810, "ts": "2026-09-07T19:33:07Z", "hours": 4.9869, "text": "Database Schema Migration & Bidirectional Syncing In short: Built a pipeline that auto-generates default workspace, added DB migrations, added relations between workspaces and todos, created a workspaceManger to send request to SQLite, added DB-to-UI sync. What was done: Database & Schema Migrations: Designed and executed SQLite schema migrations with relations between todos and workspaces . Dynamic Routing: Integrated workspaceId into application navigation state for context-aware (workspaces) data isolation. WorkspaceManager Pattern: Created a unified WorkspaceManager layer to centralize database queries. First-Boot Pipeline: Implemented auto-generation of user’s first workspace. Bidirectional Sync: UI is watching the DB updates now."}, {"post_id": 61111, "ts": "2026-09-03T20:44:48Z", "hours": 2.6417, "text": "Reusable Modal Backdrop & Component Composition Architecture Refactored backdrop rendering layer for all app-level modals. What was done: Architecture: Evaluated custom hook implementation for state isolation vs wrapper component design Component Composition: Placed backdrop fade logic into a standalone component ( Backdrop ) supporting children injection. Refactoring: Replaced duplicated backdrop styles across modals with a single declarative API."}, {"post_id": 60424, "ts": "2026-09-02T18:47:23Z", "hours": 1.5964, "text": "Queue drop fix & Refactoring What was done: Bugfix: Resolved event dropping in syncService during state updates. Architecture: Refactored queue state management from component-level code into a reusable useTodo custom hook for better side-effect isolation."}, {"post_id": 60191, "ts": "2026-09-02T12:48:25Z", "hours": 2.7014, "text": "🔄 Queue-based sync: instant UI, background persistence I added a small SyncService queue to keep the UI and storage in sync without blocking renders. How it works: the UI updates instantly (optimistic update), then the service persists the change to SQLite in the background, one task at a time."}, {"post_id": 59759, "ts": "2026-09-01T18:04:10Z", "hours": 1.4731, "text": "So, since i want to create a responsive local-first app, I have to implement the next sync schema: ui -> state -> local db -> queue -> server-db -> clients-notifications -> pulling -> render. I have already implemented the first step: ui -> state. Now I am at the stage of developing the next step of syncing: state -> local db. The whole project is so large, so i decided to start form fully local app. Which means i am not going to develop the server-side and client - server synchronization with conflict resolution. I already installed the drizzle ORM, and created the external Task Manager. I chose the Object because of the Single-Responsibility principle (UI must be just a renderer of the content, the logic is outside), i could also use the class, but the objects are “cleaner” than the classes, which can be counted as boilerplate."}, {"post_id": 59521, "ts": "2026-09-01T12:05:34Z", "hours": 1.0017, "text": "Jaw: First Look 🎬 Sharing the first video of Jaw! Done so far: smooth transitions + workspace popup picker. Stack is React Native (Expo) + TS + Reanimated, SQLite in progress. Design inspo is Telegram - love its UX and engineering. I’m not a designer, so ideas to make it more user-friendly are super welcome - drop them in the comments! Why Jaw? 1. Local-first. Works fully offline, syncs when you’re back online. Shipping a fully local version first to get it usable faster. Server (sync + conflict resolution) is WIP. 2. All-in-one. You only need this one app. Everything is deeply integrated: you can link a note inside a task, attach a pomodoro timer to a task, etc. It’s a monolithic workspace for students with 4 modules: • Todo / Planning - simple list for everyday stuff. Switch to calendar view for curriculum, events, and repeatable tasks. • Time - time management and pomodoro timers. • Notes - fast capture for ideas & info. Attach files and link anything else from Jaw. • Study - Anki/Quizlet-style flashcards, AI-powered interactive tests and games. NextUp: multi-user and public workspaces + live-editing for all modules. Would you use an all-in-one workspace like this? What would you change/add? P.S. This is just the first idea dump. I’ll be posting more devlogs (for the people who are into coding) as I build, so stay tuned!"}, {"post_id": 59163, "ts": "2026-08-31T19:53:46Z", "hours": 0.9917, "text": "Just sharing the first screen of the app"}, {"post_id": 58875, "ts": "2026-08-31T13:28:32Z", "hours": 2.8517, "text": "Workspace Layout Decomposition & Animated Navigation What was done: Component Architecture: Deconstructed monolithic layout into reusable components Interactive UI: Built custom workspace selection popup modal with dynamic backdrop Micro-interactions: Fine-tuned react-native-reanimated layout transitions and tab indicator springs for zero-lag UI feedback."}, {"post_id": 58730, "ts": "2026-08-31T08:49:20Z", "hours": 0.6283, "text": "Hey, I am creating the personal workspace (mobile app) for students and for myself. I will share the ideas of all of these modules step by step during the developing. This screenshot shows my first component (nav-bar)"}]...
|
Title: Jaw by @badcoder_of | Stardance
Devlogs:
H Title: Jaw by @badcoder_of | Stardance
Devlogs:
Hey, I am creating the personal workspace (mobile app) for students and for myself. I will share the ideas of all of these modules step by step during the developing. This screenshot shows my first component (nav-bar)
Workspace Layout Decomposition & Animated Navigation What was done: Component Architecture: Deconstructed monolithic layout into reusable components Interactive UI: Built custom workspace selection popup modal with dynamic backdrop Micro-interactions: Fine-tuned react-native-reanimated layout transitions and tab indicator springs for zero-lag UI feedback.
Just sharing the first screen of the app
Jaw: First Look 🎬 Sharing the first video of Jaw! Done so far: smooth transitions + workspace popup picker. Stack is React Native (Expo) + TS + Reanimated, SQLite in progress. Design inspo is Telegram - love its UX and engineering. I’m not a designer, so ideas to make it more user-friendly are super welcome - drop them in the comments! Why Jaw? 1. Local-first. Works fully offline, syncs when you’re back online. Shipping a fully local version first to get it usable faster. Server (sync + conflict resolution) is WIP. 2. All-in-one. You only need this one app. Everything is deeply integrated: you can link a note inside a task, attach a pomodoro timer to a task, etc. It’s a monolithic workspace for students with 4 modules: • Todo / Planning - simple list for everyday stuff. Switch to calendar view for curriculum, events, and repeatable tasks. • Time - time management and pomodoro timers. • Notes - fast capture for ideas & info. Attach files and link anything else from Jaw. • Study - Anki/Quizlet-style flashcards, AI-powered interactive tests and games. NextUp: multi-user and public workspaces + live-editing for all modules. Would you use an all-in-one workspace like this? What would you change/add? P.S. This is just the first idea dump. I’ll be posting more devlogs (for the people who are into coding) as I build, so stay tuned!
So, since i want to create a responsive local-first app, I have to implement the next sync schema: ui -> state -> local db -> queue -> server-db -> clients-notifications -> pulling -> render. I have already implemented the first step: ui -> state. Now I am at the stage of developing the next step of syncing: state -> local db. The whole project is so large, so i decided to start form fully local app. Which means i am not going to develop the server-side and client - server synchronization with conflict resolution. I already installed the drizzle ORM, and created the external Task Manager. I chose the Object because of the Single-Responsibility principle (UI must be just a renderer of the content, the logic is outside), i could also use the class, but the objects are “cleaner” than the classes, which can be counted as boilerplate.
🔄 Queue-based sync: instant UI, background persistence I added a small SyncService queue to keep the UI and storage in sync without blocking renders. How it works: the UI updates instantly (optimistic update), then the service persists the change to SQLite in the background, one task at a time.
Queue drop fix & Refactoring What was done: Bugfix: Resolved event dropping in syncService during state updates. Architecture: Refactored queue state management from component-level code into a reusable useTodo custom hook for better side-effect isolation.
Reusable Modal Backdrop & Component Composition Architecture Refactored backdrop rendering layer for all app-level modals. What was done: Architecture: Evaluated custom hook implementation for state isolation vs wrapper component design Component Composition: Placed backdrop fade logic into a standalone component ( Backdrop ) supporting children injection. Refactoring: Replaced duplicated backdrop styles across modals with a single declarative API.
Database Schema Migration & Bidirectional Syncing In short: Built a pipeline that auto-generates default workspace, added DB migrations, added relations between workspaces and todos, created a workspaceManger to send request to SQLite, added DB-to-UI sync. What was done: Database & Schema Migrations: Designed and executed SQLite schema migrations with relations between todos and workspaces . Dynamic Routing: Integrated workspaceId into application navigation state for context-aware (workspaces) data isolation. WorkspaceManager Pattern: Created a unified WorkspaceManager layer to centralize database queries. First-Boot Pipeline: Implemented auto-generation of user’s first workspace. Bidirectional Sync: UI is watching the DB updates now.
State-Driven Dynamic Routing & Upgrade UI with animations In short: Instant, zero-latency switching between workspaces, implemented by replacing expo-routing with reactively changing internal state. What was done: Routing-to-State: Replaced Expo Router with React state for internal workspace switching. UX optimization: Prevented global remounting of App caused by workspace toggles. UI Development: Connected the WorkspaceManager and DB-syncing to a clean, intuitive UI layer. Animations: Integrated custom react-native-reanimated transitions to Workspace Popup. Performance: Reduced workspace switching latency to state-updating-time while keeping background DB actions fully synced.
Keyboard Measurement Pipeline & Popup-State Hook Engineered a keyboard management and built a declarative popup-controll hook. What was done: Custom Keyboard-Offset Hook: Built a hook to subscribe to native keyboard height events. Layout Shift Prevention: Refactored AddTodoInput to dynamically adjust bottom offsets based on real-time keyboard metrics. Universal Popup Component: Standardized backdrop animations, gesture dismissal, and positioning into a headless overlay container. Popup-Control Hook: Developed usePopup to encapsulate popup parameters, visibility controllers, and click-the-backdrop handler....
|
1793166835.058166
|
1793771635.058166
|
|
34092
|
Silo by @tom | Stardance
|
tom
|
0
|
26.03
|
0
|
[]
|
[{"post_id": 66103, "ts": "202 [{"post_id": 66103, "ts": "2026-09-11T18:07:25Z", "hours": 26.0261, "text": "Didnt ship this to stardance"}]...
|
Title: Silo by @tom | Stardance
Devlogs:
Didnt sh Title: Silo by @tom | Stardance
Devlogs:
Didnt ship this to stardance...
|
1792792072.7210119
|
1793396872.7210119
|
|
8
|
ishowspeed by @ishowspeed | Stardance
|
ishowspeed
|
0
|
26.0
|
0
|
[]
|
[{"post_id": 37009, "ts": "202 [{"post_id": 37009, "ts": "2026-07-29T14:00:09Z", "hours": 26.0, "text": "blob blob , nothing ig awuhaiuwfhiauehfiauwhda"}]...
|
Title: ishowspeed by @ishowspeed | Stardance
Devl Title: ishowspeed by @ishowspeed | Stardance
Devlogs:
blob blob , nothing ig awuhaiuwfhiauehfiauwhda...
|
1792925589.0398471
|
1793789589.0398471
|
|
349
|
Stardance Orbit by @keerthi | Stardance
|
keerthi
|
1
|
26.0
|
423
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T14:40:40Z", "hours": 26.0, "multiplier": 16.65, "payout": 423, "blessing": "neutral", "text": "This is a extention that improves the overall UI/UX of the stardance site to make it more easy for users to access. I had to learn scrapping a lottt before writing this.. but was pretty fun ngl.", "repo": "https://github.com/keerthi-officials/stardance-orbit", "demo": "https://github.com/keerthi-officials/stardance-orbit/releases/"}]...
|
[{"post_id": 4214, "ts": "2026 [{"post_id": 4214, "ts": "2026-06-07T13:30:26Z", "hours": 1.06, "text": "added tabs in home page to switch between following people’s devlogs, my devlogs and everyone devlogs"}, {"post_id": 4106, "ts": "2026-06-07T09:26:47Z", "hours": 0.8575, "text": "added readme file with all the features i have added in this extension & installation guide along with sm notes for better understanding of the extension"}, {"post_id": 4065, "ts": "2026-06-07T07:47:45Z", "hours": 0.4497, "text": "make the styles work for every light theme. previously the styles only worked for the catppuccin-latte light theme.. now the styles work for every light theme. added option to show light mode styles in custom themes depends on user!"}, {"post_id": 4023, "ts": "2026-06-07T06:12:21Z", "hours": 0.4872, "text": "added rearrangeable items in wishlist. also increase the quantity of each item (max 30)"}, {"post_id": 3675, "ts": "2026-06-06T18:42:18Z", "hours": 1.8106, "text": "added custom themes and fonts in the popup now you can customize what theme you want the stardance site to look like and what choose font u would like to use from 20+ fonts added 4 new themes too:- dark-plus, pastel, neon & high-contrast. also added auto saving drafts so that even if u reload the tab. what you have typed wont go away!"}, {"post_id": 3588, "ts": "2026-06-06T16:16:18Z", "hours": 1.1703, "text": "added quick-search, using Ctrl+K open a command menu where u can open pages/your projects with ease. you can also search up any project, any person and any post in the whole stardance site!"}, {"post_id": 3535, "ts": "2026-06-06T14:54:05Z", "hours": 0.2894, "text": "added overlay for shortcuts.."}, {"post_id": 3512, "ts": "2026-06-06T14:20:43Z", "hours": 1.3831, "text": "added the following shortcuts Home - alt + h Rate - alt + v Missions - alt + m Shop - alt + d Resources - alt + e Projects - alt + p Project 1 (what ever is the first project that comes in A-Z order) - alt + 1 Project 2 - alt + 2"}, {"post_id": 3442, "ts": "2026-06-06T11:50:35Z", "hours": 0.905, "text": "options to customize projects tab: grid and list alignment sort by: last updated, most devlogs, most hours, a-z"}, {"post_id": 3407, "ts": "2026-06-06T10:09:22Z", "hours": 0.7833, "text": "added number of words count and estimated time to read devlog. added collapse devlog option where user can collapse devlog so they can scroll thru feed section faster."}, {"post_id": 3384, "ts": "2026-06-06T08:56:05Z", "hours": 0.4122, "text": "added focus mode, which disables everything that might be distracting so u can write all ur ideas into the devlog!"}, {"post_id": 3215, "ts": "2026-06-06T01:20:25Z", "hours": 0.6861, "text": "what i added: pre-made devlog templates to type faster.. templates added: how it works: click on the dropdown that is placed above the post button and you will have 5 options to chose from. note: this devlog was also written with the help of a template"}, {"post_id": 2816, "ts": "2026-06-05T17:17:41Z", "hours": 0.8397, "text": "fixed sm bugs: in shop when u close a wishlisted item the shop item card still is activated. couldn’t figure it out first but it seems the problem was cuz i didnt update localstorage.. matched both the states now it works properly. also did sm button color fixes"}, {"post_id": 2780, "ts": "2026-06-05T16:10:55Z", "hours": 0.4817, "text": "added inline edit devlogs instead of redirecting to another page. heavily inspired by stardance-utils!"}, {"post_id": 2740, "ts": "2026-06-05T14:39:00Z", "hours": 1.3256, "text": "added light theme.. for who ever crazy enough to deal with that level of brightness.."}, {"post_id": 2695, "ts": "2026-06-05T12:04:47Z", "hours": 1.49, "text": "added a new theme called rose-pine.. also option to change between themes. changes applies almost instantly"}, {"post_id": 2056, "ts": "2026-06-04T11:02:30Z", "hours": 0.4669, "text": "improved time for extention to load and fixed looping issue. also added readme for better understanding of the extension"}, {"post_id": 2036, "ts": "2026-06-04T10:07:03Z", "hours": 0.7872, "text": "made the card ui better by disabling button if u dont get enough coins.. also removed that weird white color and replaced it with similar color to the bg"}, {"post_id": 2008, "ts": "2026-06-04T09:04:59Z", "hours": 0.8219, "text": "added the stardust prediction feature to the goals section in shop. also added cumulative and individual tabs for better understanding.."}, {"post_id": 1927, "ts": "2026-06-04T05:05:52Z", "hours": 1.5578, "text": "added stardust prediction to every project show page"}, {"post_id": 1465, "ts": "2026-06-03T14:53:01Z", "hours": 0.5347, "text": "in the shop page when ever you try to remove a wishlisted item by clicking on the x option it redirects to another page “/wishlist/:id”. i removed the redirecting and made the page only reload to show the change. i also added proper staring logic so that the wishlist gets updated in real-time i also added nice animation to turn the star yellow if its wishlisted and black if it isnt wishlisted"}, {"post_id": 1438, "ts": "2026-06-03T14:03:55Z", "hours": 1.3244, "text": "added goal items to shop page now by clicking on the star option you can see the progress u made to buy the item. todo: add predicting depending on how many hours done."}, {"post_id": 1367, "ts": "2026-06-03T11:12:58Z", "hours": 0.6736, "text": "added a progress bar to track how much more coins u need for that specific item. added this to all the shop items.. will update automatically when u get stardust"}, {"post_id": 743, "ts": "2026-06-02T11:32:32Z", "hours": 0.7617, "text": "added devlog inline… doesn’t work atm just a placeholder"}, {"post_id": 663, "ts": "2026-06-02T06:27:29Z", "hours": 1.5389, "text": "remove buttons and moved ship button. also by depending on turbo the changes made by this extention will apply way faster."}, {"post_id": 233, "ts": "2026-06-01T11:09:15Z", "hours": 0.5172, "text": "added better ui for the categories section in shop page…"}, {"post_id": 223, "ts": "2026-06-01T10:22:48Z", "hours": 2.1542, "text": "Created a basic extension using plasma. After experimenting a lot i made the shop page better. here are all the updates: i changed the layout of the shop updates orders and waitlist. moved them downwards to make it look better. updated the cards of shop items.. it was a test i made with ai, il update it soon and bring it back to normal.. i have also fixed the arrow keys in the new section of the shop page. made a button called order to redirect to a different page"}]...
|
Title: Stardance Orbit by @keerthi | Stardance
De Title: Stardance Orbit by @keerthi | Stardance
Devlogs:
Created a basic extension using plasma. After experimenting a lot i made the shop page better. here are all the updates: i changed the layout of the shop updates orders and waitlist. moved them downwards to make it look better. updated the cards of shop items.. it was a test i made with ai, il update it soon and bring it back to normal.. i have also fixed the arrow keys in the new section of the shop page. made a button called order to redirect to a different page
added better ui for the categories section in shop page…
remove buttons and moved ship button. also by depending on turbo the changes made by this extention will apply way faster.
added devlog inline… doesn’t work atm just a placeholder
added a progress bar to track how much more coins u need for that specific item. added this to all the shop items.. will update automatically when u get stardust
added goal items to shop page now by clicking on the star option you can see the progress u made to buy the item. todo: add predicting depending on how many hours done.
in the shop page when ever you try to remove a wishlisted item by clicking on the x option it redirects to another page “/wishlist/:id”. i removed the redirecting and made the page only reload to show the change. i also added proper staring logic so that the wishlist gets updated in real-time i also added nice animation to turn the star yellow if its wishlisted and black if it isnt wishlisted
added stardust prediction to every project show page
added the stardust prediction feature to the goals section in shop. also added cumulative and individual tabs for better understanding..
made the card ui better by disabling button if u dont get enough coins.. also removed that weird white color and replaced it with similar color to the bg
improved time for extention to load and fixed looping issue. also added readme for better understanding of the extension
added a new theme called rose-pine.. also option to change between themes. changes applies almost instantly
added light theme.. for who ever crazy enough to deal with that level of brightness..
added inline edit devlogs instead of redirecting to another page. heavily inspired by stardance-utils!
fixed sm bugs: in shop when u close a wishlisted item the shop item card still is activated. couldn’t figure it out first but it seems the problem was cuz i didnt update localstorage.. matched both the states now it works properly. also did sm button color fixes
what i added: pre-made devlog templates to type faster.. templates added: how it works: click on the dropdown that is placed above the post button and you will have 5 options to chose from. note: this devlog was also written with the help of a template
added focus mode, which disables everything that might be distracting so u can write all ur ideas into the devlog!
added number of words count and estimated time to read devlog. added collapse devlog option where user can collapse devlog so they can scroll thru feed section faster.
options to customize projects tab: grid and list alignment sort by: last updated, most devlogs, most hours, a-z
added the following shortcuts Home - alt + h Rate - alt + v Missions - alt + m Shop - alt + d Resources - alt + e Projects - alt + p Project 1 (what ever is the first project that comes in A-Z order) - alt + 1 Project 2 - alt + 2
added overlay for shortcuts..
added quick-search, using Ctrl+K open a command menu where u can open pages/your projects with ease. you can also search up any project, any person and any post in the whole stardance site!
added custom themes and fonts in the popup now you can customize what theme you want the stardance site to look like and what choose font u would like to use from 20+ fonts added 4 new themes too:- dark-plus, pastel, neon & high-contrast. also added auto saving drafts so that even if u reload the tab. what you have typed wont go away!
added rearrangeable items in wishlist. also increase the quantity of each item (max 30)
make the styles work for every light theme. previously the styles only worked for the catppuccin-latte light theme.. now the styles work for every light theme. added option to show light mode styles in custom themes depends on user!
added readme file with all the features i have added in this extension & installation guide along with sm notes for better understanding of the extension
added tabs in home page to switch between following people’s devlogs, my devlogs and everyone devlogs
Ships:
This is a extention that improves the overall UI/UX of the stardance site to make it more easy for users to access. I had to learn scrapping a lottt before writing this.. but was pretty fun ngl....
|
1793141367.777419
|
1793227767.777419
|
|
2575
|
Potato by @Andre | Stardance
|
Andre
|
1
|
26.0
|
142
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T09:37:07Z", "hours": 26.0, "multiplier": 5.99, "payout": 142, "blessing": "neutral", "text": "I made a simple 2D platformer with enemies and collectibles, I found making the code for the level select menu as my biggest challenge. To anyone playing my game I did play test every single level all of them are possible and the last level’s flag is not broken the only way to beat the game is the secret exit:)", "repo": "https://github.com/agandregordon-del/Potato/tree/agandregordon-del-patch-2", "demo": "https://agandre.itch.io/potato"}]...
|
[{"post_id": 4043, "ts": "2026 [{"post_id": 4043, "ts": "2026-06-07T07:01:05Z", "hours": 1.3344, "text": "I have been working on my game for a little bit now and I can finally say I finished I love what I have created now I just need to attach it to GitHub and then I can start a new project!"}, {"post_id": 3861, "ts": "2026-06-06T22:41:02Z", "hours": 3.9964, "text": "I’ve been working for a while now and have all my levels up to level 6 finished I tried really hard to post a play testing video but it just wouldn’t work so here is a pic of level 6."}, {"post_id": 2531, "ts": "2026-06-05T01:59:19Z", "hours": 5.7269, "text": "I have been coding for a while now most of the almost 6 hours I’m logging now have been spent on coding a basic level select screen but now that I’m done with that I can start working on making levels 4-10 of my game then I’m done and can start a new project!"}, {"post_id": 1912, "ts": "2026-06-04T04:22:12Z", "hours": 3.3639, "text": "I have now finished the second level wasn’t nearly as hard as the first with all the coding involved"}, {"post_id": 1681, "ts": "2026-06-03T20:36:01Z", "hours": 11.8567, "text": "I’ve been working on my game for a little bit now and I finally have the first level completely done with enemies that respawn you platforms to jump on and a finish that sends you to the next level!"}]...
|
Title: Potato by @Andre | Stardance
Devlogs:
I’ve Title: Potato by @Andre | Stardance
Devlogs:
I’ve been working on my game for a little bit now and I finally have the first level completely done with enemies that respawn you platforms to jump on and a finish that sends you to the next level!
I have now finished the second level wasn’t nearly as hard as the first with all the coding involved
I have been coding for a while now most of the almost 6 hours I’m logging now have been spent on coding a basic level select screen but now that I’m done with that I can start working on making levels 4-10 of my game then I’m done and can start a new project!
I’ve been working for a while now and have all my levels up to level 6 finished I tried really hard to post a play testing video but it just wouldn’t work so here is a pic of level 6.
I have been working on my game for a little bit now and I can finally say I finished I love what I have created now I just need to attach it to GitHub and then I can start a new project!
Ships:
I made a simple 2D platformer with enemies and collectibles, I found making the code for the level select menu as my biggest challenge. To anyone playing my game I did play test every single level all of them are possible and the last level’s flag is not broken the only way to beat the game is the secret exit:)...
|
1793116231.1276066
|
1793202631.1276066
|