|
6208
|
Space Janitor by @bawad2 | Stardance
|
bawad2
|
1
|
51.42
|
376
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-07T09:38:21Z", "hours": 51.0, "multiplier": 7.31, "payout": 376, "blessing": "neutral", "text": "This is the first project I will ship for Hackclub. It was originally supposed to be shipped after i fully finished it. But slowly i started losing attachment to the project and now i dont want to work on it anymore. So, since it has a working loop for gameplay already im gonna ship it here. That game has a playable demo in itch at https://bawad2.itch.io/space-janitors Also in the repo there is a file called “Hourly logs” in that file I have been writing down what i was working on what my plan is and what my thought process is from day one, I think it will be a interesting thing for you to check out. I hope you find my 53 hours interesting at the very least.", "repo": "https://github.com/Bawad2/Space-Janitors", "demo": "https://bawad2.itch.io/space-janitors"}]...
|
[{"post_id": 80092, "ts": "202 [{"post_id": 80092, "ts": "2026-10-16T06:25:10Z", "hours": 0.4167, "text": "I fixed the things i was told to fix :D"}, {"post_id": 77517, "ts": "2026-10-07T09:35:31Z", "hours": 2.6994, "text": "did some final work on the game and decided to give up and just ship it. Made some upgrades to the main menu"}, {"post_id": 58897, "ts": "2026-08-31T13:50:06Z", "hours": 1.3658, "text": "not much really i just studied GML for a while and also worked on a bunch of UI stuff"}, {"post_id": 50582, "ts": "2026-08-19T19:42:45Z", "hours": 1.6197, "text": "DevLog 23 Iv been real busy lately This devlog is boil down of maybe like a week or so of work. I have been so busy that there wasnt a single day this week that I worked before 12AM. Anyways some of the stuff that I made in this logged time includes: A functional game over screen. yep thats it. It was really hard to make tho. I had to figure out a bunch of stuff such as how to make the stats show in the UI layer and a bunch of other stuff I hope I wont be as busy as this anymore"}, {"post_id": 46264, "ts": "2026-08-13T11:43:46Z", "hours": 0.5503, "text": "DevLog #22 Fixed up my repo and also fixed a fatal bug within my repo I basically had a bug which made me unable to push to origin. I ended up resorting to ai to help me fix this bug. But in the end even the ai failed but the things I learned for the ai ended up helping me fixing it myself. I also rewrote the Readme. And sent new version of the game to itch."}, {"post_id": 45500, "ts": "2026-08-12T01:21:32Z", "hours": 2.0303, "text": "DevLog #21 Random miscellaneous stuff I also threw out the timer sprite Made it so new rocks spawn when old ones are broken. Also made a Fuel meter sprite to use instead of the timer. Made the code for the fuel meter as a timer work.( It was a bunch of hard math.) And of course I had to spend like 1 whole hour debugging all this. Check out the [game](Space Janitors by Bawad2 ) I updated it in itch again."}, {"post_id": 43445, "ts": "2026-08-08T18:13:13Z", "hours": 1.6792, "text": "DevLog #20 PAINLOG #1 Repetition is the worst form of torture. (Also I hate myself) Even if every single one of my trillions of cells had the word “ Pain ” written on them 100 times, It wouldn’t even come close to representing the sheer amount of pain I had to go throw to to finish this sprite. I know there was better ways to do this then to spend nearly 2 hours drawing 180 frames by hand, but I was the one who brought this upon myself. I have no one to blame but me. I hope the pain ends now."}, {"post_id": 41282, "ts": "2026-08-05T12:16:15Z", "hours": 3.1014, "text": "DevLog #19 Productivity just sky-rocketed(Pun intended) I making a game where you collect money by cleaning up space junk and use that money to upgrade your rocket I did a real lot of stuff today . Finished the new shop menu and its fully working Started work on the health system for the rocket and realized the many things i need to work on I have made the rocket upgradable. Now the logged time includes the pain from the clock sprite but that is a story for the next log"}, {"post_id": 40848, "ts": "2026-08-04T17:09:27Z", "hours": 2.4, "text": "DevLog #18 Well this is a long one. I making a game where you collect money by cleaning up space junk and use that money to upgrade your rocket Well, I did a lot of stuff today. Finished Implementing click to move everywhere Made it so the sprites are highLighted when you hover you mouse over them. This took me a lot of time to figure out -# I used chatgpt for a hint during this part. I worked on a sprite for the research lab where you buy upgrades for you rocket This took me like almost the whole hour. Made the basics for the shop menu. I just need to draw a few buttons for the upgrades and it will be done. I used up a lot of the time I was supposed to be studying today to work so im lwk cooked."}, {"post_id": 40246, "ts": "2026-08-03T17:27:02Z", "hours": 0.8933, "text": "Devlog #17 Money works and I got rid of the character I making a game where you collect money by cleaning up space junk and use that money to upgrade your rocket Money system I fixed the bug with the money counter. Now your money is properly shown. It also goes up when you break asteroids, so you can earn money . Point and click system I also started work on the click and move system . All the things I need to make for it are complete but I just need to implement them everywhere now. life update Im still quite busy with my studies so I have a bit less time to work on the game. Thats why development is slowing down."}, {"post_id": 39574, "ts": "2026-08-02T17:06:58Z", "hours": 1.3411, "text": "DevLog #16 Finally doing some real stuff again! I making a game where you collect money by cleaning up space junk and use that money to upgrade your rocket This day wasn’t that productive because I had school for like 9 hours of the day. But I still manged to add some stuff I basically added a money system in to the game and made the HUD elements. For now you can only see how much money you have and not earn any. I ran into bug( not a bug just a coding mistake) which drove me nuts. Basically I was drawing the HUD on the top left side of the room instead of the screen. It took me a while to figure out. But alas I’m out of time so I cant fix it today D:"}, {"post_id": 38818, "ts": "2026-08-01T11:48:51Z", "hours": 1.0, "text": "Devlog #15 I Finally made a proper plan for the game!! I was making a game where you do a bunch of stuff like climbing the corporate ladder and shi but now i changed my mind I have finally made a proper game plan for myself to follow so i can make the game more easily. Basically I used a planning software named milanote to properly plan out all my stuff. These are what I have made the plan for now: IDEAS Make a day system where every day has a set amount of time you earn money by destroying asteroids you upgrade the rocket so you can break more asteroids faster As more days pass increase the difficulty of the game. Make it so the character has to do spend money to in his house for stuff like water bill, food bill, electricity which gives him nerfs if he doesn’t buy these. GET RID OF ANY VISIBLE CHARACTER make it feel kinda like a visual novel type shi when the rocket runs out of health the day ends early and you are fined. GAMEPLAY LOOP(INTENDED) Player wakes up at home goes outside takes a car to go to the rocket launch site transfer to the rocket launch screen(the upgrades can be accessed from here) flys the rocket earns money by breaking asteroids (Bigger asteroid pay more and are harder to break) when time ends he is returned home he decides whether he wants to pay his bills or not sleeps and repeat game ends when he maxs out the rocket also make sure to check out the current state of the game"}, {"post_id": 38108, "ts": "2026-07-31T10:11:25Z", "hours": 0.7, "text": "DEVLOG 14 After a long long time IM FINALLY BACK Basically I had a exam for the whole month and now its finally over. That being said coming back after a long time, I realize that there are some things I really need to change about the game. First of all Im changing what this game is about This is no longer about some corporate ladder bs Im just gonna make a arcade simulator type thing. im gonna make the scope of the game smaller . I realize i dont have much time rn so i will try to work daily but in small amounts! Also I finished some work today. Like finally fixing the HTML issue . Turns out instead of fixing it I just needed to not export to HTML. Also started work on a game over screen. That all for today!! also check out the Game"}, {"post_id": 20637, "ts": "2026-07-02T08:52:25Z", "hours": 0.7, "text": "tried to fix the issues with the html5 export( failed miserably )"}, {"post_id": 19138, "ts": "2026-06-30T11:51:25Z", "hours": 0.4311, "text": "i worked on rearranging my files inside the game. Not worth a full devlog"}, {"post_id": 15740, "ts": "2026-06-25T16:47:17Z", "hours": 0.9833, "text": "Devlog #13 WE ARE SO BACK!! I’m making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. for the past week I have been really busy with school and stuff so I could really work much or at all . So, I have’nt worked on the game for an entire week. But today I decided to change that. So cus Im coming back after a bit of time i decided to not do to much work. So all the things I did today was make a car sprite."}, {"post_id": 10831, "ts": "2026-06-17T19:30:31Z", "hours": 1.5683, "text": "DevLog #12 It actually took me this long to make the player take a nap . I’m making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. I spent this whole time figuring out how to make the player animate when laying down and animate again when getting out of bed. It actually took me 3 different approach to finally find one that works, and even after that when I exported the game to itch for some reason it stops working. It works perfectly fine in the windows build though. I plan on working on fixing this things that happen only on itch tmrw."}, {"post_id": 10152, "ts": "2026-06-16T19:25:28Z", "hours": 1.77, "text": "Devlog #11 You can now play the game yourself🎉!! I’m making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. I did a bunch of stuff in the logged time and the most notable one of the bunch is that i finally made a itch page . i also worked on a few other stuff such as: Made a animation of the player getting in bed ( have’nt implemented it yet tho ) -Work on fixing the bugs that come with making a executable for you game. -Also fix some ui related bugs Please check out the game"}, {"post_id": 9754, "ts": "2026-06-16T05:42:52Z", "hours": 1.2594, "text": "DevLog #10 I spent a ton of time re writing the past devlogs to make them more voter friendly. I’m making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. I basically went back and re-did all my devlogs and added the new markdown formatting stuff I learnt thanks to a hint from @tongyu . You can see the before and after <–– Here I also plan on working on my repo today but I have school in an hour now so I cant do that now :("}, {"post_id": 9428, "ts": "2026-06-15T19:49:04Z", "hours": 1.2389, "text": "Devlog #9 I worked on a pause menu and bunch of other UI stuff. Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. Adding a pause menu is quite a easy task and should not have taken this long. But alas I ran into a bug that took me 30 mins to solve. And the worst part is that fact that it was because of a misplaced “!” symbol. I also re worked on some of the sprites to add some small tweaks. Well the pause menu is still lackluster but I will expand upon it later. Also there is a bug still in the game that makes it so you cant close out of the menu."}, {"post_id": 9180, "ts": "2026-06-15T12:24:39Z", "hours": 1.1825, "text": "DevLog #8 The game now has a Main Menu!! Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. This may not feel like much but with this I have laid all the groundwork needed for the rest of the UI . Now I can complete all the UI stuff in no time. I also lwk need to touch up on the sprites"}, {"post_id": 8731, "ts": "2026-06-14T14:47:21Z", "hours": 3.29, "text": "Devlog #7 Worked on a bunch of stuff in the logged time. Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. The most notable ones would be : New Tileset to match the palette A bunch of other remade sprites (the bed and the sofa) Started Work on UI Drew the Title sprite and quite a bit more. I have been busy with school lately so the devlog frequency has dropped D:"}, {"post_id": 6881, "ts": "2026-06-11T15:16:09Z", "hours": 1.6881, "text": "DevLog #6 Decided to select a style / palette for my game. Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. Took me a bit of time to find a concrete palette for my game. And after a while I found a good palette. Then I decide to re-remake the character . Also I decided to make the artstyle for the game low-res"}, {"post_id": 5654, "ts": "2026-06-09T15:10:33Z", "hours": 1.5761, "text": "Devlog #5 I Started work on some Juicy juicy lore. Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship.( This may be subject to change ) I’m not gonna spoil any of the lore here but just know that I did work on it. I also remade the main player sprite ( This time lore accurate ) and also worked on a few bugs"}, {"post_id": 4945, "ts": "2026-06-08T16:02:09Z", "hours": 1.1394, "text": "Devlog #4 The player can now board upon the rocket! Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. And now the two parts of the game are finally connected. Now the player can walk out of his house , then go to the launch site and board on the rocket. I did run into a bunch of problems when trying to implement this. At first I was trying to do all the work on the boarder object but then I realized it would be much easier if I just did that in the player instead. So it works now."}, {"post_id": 4253, "ts": "2026-06-07T14:33:13Z", "hours": 1.0903, "text": "Made the final sprite for the rocket launch site! Usually I get the artwork for my game done by teammates. But since I dont have any teammates this time I decided to start learning pixel art myself! Since I’m just starting now even the simple things take me quite a long time. The entire time logged here was spent working on this one sprite ( This doesn’t include the time spent on the rocket btw)"}, {"post_id": 3606, "ts": "2026-06-06T16:38:54Z", "hours": 0.8453, "text": "Remade the rocket sprite. Definitely the best artwork of my life. I will happily take any advice you guys have."}, {"post_id": 3479, "ts": "2026-06-06T13:06:17Z", "hours": 2.8403, "text": "DEVLOG #3 You can now TOUCH GRASS! not really tho. I added the inside of a house and outside portion to the game. The character can now walk out of his house and then walk over to the rocket launch station and then fly the rocket I also made a few sprites for decoration inside of the house"}, {"post_id": 2704, "ts": "2026-06-05T12:38:40Z", "hours": 1.2025, "text": "Drew and implemented a tileset for the main house of the game The tileset will be used to line the inside of the house so you can tell the wall apart from the void"}, {"post_id": 2668, "ts": "2026-06-05T10:42:41Z", "hours": 1.5236, "text": "Made a new sprite for the main character"}, {"post_id": 1984, "ts": "2026-06-04T07:49:07Z", "hours": 3.0933, "text": "DEVLOG #2 The rocket🚀 can now reach space🌌! Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. As you can probably tell I added space to my game. I also : drew a bunch of janky looking stars🌠 and added them to the game. I also added 2 types of clouds , Normal and storm clouds . The storm clouds🌩️ make your rocket blow up if you crash into it and normal clouds☁️ are only for cosmetic purposes . I also fixed up a fix bugs👾 with the throttle system for the rocket. btw you can click on the underlined words to see the sprites"}, {"post_id": 1373, "ts": "2026-06-03T11:17:05Z", "hours": 4.6692, "text": "DevLog #1 Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. So far I have added quite a lot of stuff and am only now realizing that i should have made devlogs earlier. So this devlog gonna be a bit long . The things I have added are : a moveable character . the rocket . I finished the dynamic thrust system ( controlling the thrust of the rocket using the scroll wheel ) . On day 2 I started work on making the rocket tilt so it can move side to side. When doing this I ran into a problem due to the way I made the rocket fly. Basically I was increasing the “Y” value of the rocket to make it fly but that doesnt work with the way I want to tilt the rocket so I scraped that and used a method thats already built-into GMS2. Then I made the rocket explode if it hit a surface too hard ( I wasted 30 mins on the explosion sprite ). Check out the sprite I added so the rocket can actually shoot I also added breakable rocks that you can shoot down. Then I spent the next hour on making a teleport system so the rocket can move from one stage from to another. On my way to make this I broke the thrust system so I spent 30 mins trying to figure it out only for it to be the fault of a “-” sign instead of a “+” sign. I plan on working on new sprites for the character later"}]...
|
Title: Space Janitor by @bawad2 | Stardance
Devlo Title: Space Janitor by @bawad2 | Stardance
Devlogs:
DevLog #1 Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. So far I have added quite a lot of stuff and am only now realizing that i should have made devlogs earlier. So this devlog gonna be a bit long . The things I have added are : a moveable character . the rocket . I finished the dynamic thrust system ( controlling the thrust of the rocket using the scroll wheel ) . On day 2 I started work on making the rocket tilt so it can move side to side. When doing this I ran into a problem due to the way I made the rocket fly. Basically I was increasing the “Y” value of the rocket to make it fly but that doesnt work with the way I want to tilt the rocket so I scraped that and used a method thats already built-into GMS2. Then I made the rocket explode if it hit a surface too hard ( I wasted 30 mins on the explosion sprite ). Check out the sprite I added so the rocket can actually shoot I also added breakable rocks that you can shoot down. Then I spent the next hour on making a teleport system so the rocket can move from one stage from to another. On my way to make this I broke the thrust system so I spent 30 mins trying to figure it out only for it to be the fault of a “-” sign instead of a “+” sign. I plan on working on new sprites for the character later
DEVLOG #2 The rocket🚀 can now reach space🌌! Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. As you can probably tell I added space to my game. I also : drew a bunch of janky looking stars🌠 and added them to the game. I also added 2 types of clouds , Normal and storm clouds . The storm clouds🌩️ make your rocket blow up if you crash into it and normal clouds☁️ are only for cosmetic purposes . I also fixed up a fix bugs👾 with the throttle system for the rocket. btw you can click on the underlined words to see the sprites
Made a new sprite for the main character
Drew and implemented a tileset for the main house of the game The tileset will be used to line the inside of the house so you can tell the wall apart from the void
DEVLOG #3 You can now TOUCH GRASS! not really tho. I added the inside of a house and outside portion to the game. The character can now walk out of his house and then walk over to the rocket launch station and then fly the rocket I also made a few sprites for decoration inside of the house
Remade the rocket sprite. Definitely the best artwork of my life. I will happily take any advice you guys have.
Made the final sprite for the rocket launch site! Usually I get the artwork for my game done by teammates. But since I dont have any teammates this time I decided to start learning pixel art myself! Since I’m just starting now even the simple things take me quite a long time. The entire time logged here was spent working on this one sprite ( This doesn’t include the time spent on the rocket btw)
Devlog #4 The player can now board upon the rocket! Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. And now the two parts of the game are finally connected. Now the player can walk out of his house , then go to the launch site and board on the rocket. I did run into a bunch of problems when trying to implement this. At first I was trying to do all the work on the boarder object but then I realized it would be much easier if I just did that in the player instead. So it works now.
Devlog #5 I Started work on some Juicy juicy lore. Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship.( This may be subject to change ) I’m not gonna spoil any of the lore here but just know that I did work on it. I also remade the main player sprite ( This time lore accurate ) and also worked on a few bugs
DevLog #6 Decided to select a style / palette for my game. Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. Took me a bit of time to find a concrete palette for my game. And after a while I found a good palette. Then I decide to re-remake the character . Also I decided to make the artstyle for the game low-res
Devlog #7 Worked on a bunch of stuff in the logged time. Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. The most notable ones would be : New Tileset to match the palette A bunch of other remade sprites (the bed and the sofa) Started Work on UI Drew the Title sprite and quite a bit more. I have been busy with school lately so the devlog frequency has dropped D:
DevLog #8 The game now has a Main Menu!! Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. This may not feel like much but with this I have laid all the groundwork needed for the rest of the UI . Now I can complete all the UI stuff in no time. I also lwk need to touch up on the sprites
Devlog #9 I worked on a pause menu and bunch of other UI stuff. Im making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. Adding a pause menu is quite a easy task and should not have taken this long. But alas I ran into a bug that took me 30 mins to solve. And the worst part is that fact that it was because of a misplaced “!” symbol. I also re worked on some of the sprites to add some small tweaks. Well the pause menu is still lackluster but I will expand upon it later. Also there is a bug still in the game that makes it so you cant close out of the menu.
DevLog #10 I spent a ton of time re writing the past devlogs to make them more voter friendly. I’m making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. I basically went back and re-did all my devlogs and added the new markdown formatting stuff I learnt thanks to a hint from @tongyu . You can see the before and after <–– Here I also plan on working on my repo today but I have school in an hour now so I cant do that now :(
Devlog #11 You can now play the game yourself🎉!! I’m making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. I did a bunch of stuff in the logged time and the most notable one of the bunch is that i finally made a itch page . i also worked on a few other stuff such as: Made a animation of the player getting in bed ( have’nt implemented it yet tho ) -Work on fixing the bugs that come with making a executable for you game. -Also fix some ui related bugs Please check out the game
DevLog #12 It actually took me this long to make the player take a nap . I’m making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. I spent this whole time figuring out how to make the player animate when laying down and animate again when getting out of bed. It actually took me 3 different approach to finally find one that works, and even after that when I exported the game to itch for some reason it stops working. It works perfectly fine in the windows build though. I plan on working on fixing this things that happen only on itch tmrw.
Devlog #13 WE ARE SO BACK!! I’m making a game where you work your way up the corporate ladder to finally fulfill your dream of piloting a space ship. for the past week I have been really busy with school and stuff so I could really work much or at all . So, I have’nt worked on the game for an entire week. But today I decided to change that. So cus Im coming back after a bit of time i decided to not do to much work. So all the things I did today was make a car sprite.
i worked on rearranging my files inside the game. Not worth a full devlog
tried to fix the issues with the html5 export( failed miserably )
DEVLOG 14 After a long long time IM FINALLY BACK Basically I had a exam for the whole month and now its finally over. That being said coming back after a long time, I realize that there are some things I really need to change about the game. First of all Im changing what this game is about This is no longer about some corporate ladder bs Im just gonna make a arcade simulator type thing. im gonna make the scope of the game smaller . I realize i dont have much time rn so i will try to work daily but in small amounts! Also I finished some work today. Like finally fixing the HTML issue . Turns out instead of fixing it I just needed to not export to HTML. Also started work on a game over screen. That all for today!! also check out the Game
Devlog #15 I Finally made a proper plan for the game!! I was making a game where you do a bunch of stuff like climbing the corporate ladder and shi but now i changed my mind I have finally made a proper game plan for myself to follow so i can make the game more easily. Basically I used a planning software named milanote to properly plan out all my stuff. These are what I have made the plan for now: IDEAS Make a day system where every day has a set amount of time you earn money by destroying asteroids you upgrade the rocket so you can break more asteroids faster As more days pass increase the difficulty of the game. Make it so the character has to do spend money to in his house for stuff like water bill, food bill, electricity which gives him nerfs if he doesn’t buy these. GET RID OF ANY VISIBLE CHARACTER make it feel kinda like a visual novel type shi when the rocket runs out of health the day ends early and you are fined. GAMEPLAY LOOP(INTENDED) Player wakes up at home goes outside takes a car to go to the rocket launch site transfer to the rocket launch screen(the upgrades can be accessed from here) flys the rocket earns money by breaking asteroids (Bigger asteroid pay more and are harder to break) when time ends he is returned home he decides whether he wants to pay his bills or not sleeps and repeat game ends when he maxs out the rocket also make sure to check out the current state of the game
DevLog #16 Finally doing some real stuff again! I making a game where you collect money by cleaning up space junk and use that money to upgrade your rocket This day wasn’t that productive because I had school for like 9 hours of the day. But I still manged to add some stuff I basically added a money system in to the game and made the HUD elements. For now you can only see how much money you have and not earn any. I ran into bug( not a bug just a coding mistake) which drove me nuts. Basically I was drawing the HUD on the top left side of the room instead of the screen. It took me a while to figure out. But alas I’m out of time so I cant fix it today D:
Devlog #17 Money works and I got rid of the character I making a game where you collect money by cleaning up space junk and use that money to upgrade your rocket Money system I fixed the bug with the money counter. Now your money is properly shown. It also goes up when you break asteroids, so you can earn money . Point and click system I also started work on the click and move system . All the things I need to make for it are complete but I just need to implement them everywhere now. life update Im still quite busy with my studies so I have a bit less time to work on the game. Thats why development is slowing down.
DevLog #18 Well this is a long one. I making a game where you collect money by cleaning up space junk and use that money to upgrade your rocket Well, I did a lot of stuff today. Finished Implementing click to move everywhere Made it so the sprites are highLighted when you hover you mouse over them. This took me a lot of time to figure out -# I used chatgpt for a hint during this part. I worked on a sprite for the research lab where you buy upgrades for you rocket This took me like almost the whole hour. Made the basics for the shop menu. I just need to draw a few buttons for the upgrades and it will be done. I used up a lot of the time I was supposed to be studying today to work so im lwk cooked.
DevLog #19 Productivity just sky-rocketed(Pun intended) I making a game where you collect money by cleaning up space junk and use that money to upgrade your rocket I did a real lot of stuff today . Finished the new shop menu and its fully working Started work on the health system for the rocket and realized the many things i need to work on I have made the rocket upgradable. Now the logged time includes the pain from the clock sprite but that is a story for the next log
DevLog #20 PAINLOG #1 Repetition is the worst form of torture. (Also I hate myself) Even if every single one of my trillions of cells had the word “ Pain ” written on them 100 times, It wouldn’t even come close to representing the sheer amount of pain I had to go throw to to finish this sprite. I know there was better ways to do this then to spend nearly 2 hours drawing 180 frames by hand, but I was the one who brought this upon myself. I have no one to blame but me. I hope the pain ends now.
DevLog #21 Random miscellaneous stuff I also threw out the timer sprite Made it so new rocks spawn when old ones are broken. Also made a Fuel meter sprite to use instead of the timer. Made the code for the fuel meter as a timer work.( It was a bunch of hard math.) And of course I had to spend like 1 whole hour debugging all this. Check out the [game](Space Janitors by Bawad2 ) I updated it in itch again.
DevLog #22 Fixed up my repo and also fixed a fatal bug within my repo I basically had a bug which made me unable to push to origin. I ended up resorting to ai to help me fix this bug. But in the end even the ai failed but the things I learned for the ai ended up helping me fixing it myself. I also rewrote the Readme. And sent new version of the game to itch.
DevLog 23 Iv been real busy lately This devlog is boil down of maybe like a week or so of work. I have been so busy that there wasnt a single day this week that I worked before 12AM. Anyways some of the stuff that I made in this logged time includes: A functional game over screen. yep thats it. It was really hard to make tho. I had to figure out a bunch of stuff such as how to make the stats show in the UI layer and a bunch of other stuff I hope I wont be as busy as this anymore
not much really i just studied GML for a while and also worked on a bunch of UI stuff
did some final work on the game and decided to give up and just ship it. Made some upgrades to the main menu
I fixed the things i was told to fix :D
Ships:
This is the first project I will ship for Hackclub. It was originally supposed to be shipped after i fully finished it. But slowly i started losing attachment to the project and now i dont want to work on it anymore. So, since it has a working loop for gameplay already im gonna ship it here. That game has a playable demo in itch at https://bawad2.itch.io/space-janitors Also in the repo there is a file called “Hourly logs” in that file I have been writing down what i was working on what my plan is and what my thought process is from day one, I think it will be a interesting thing for you to check out. I hope you find my 53 hours interesting at the very least....
|
1793008099.5897875
|
1793094499.5897875
|
|
57462
|
Image to ASCII by @reaue | Stardance
|
reaue
|
3
|
26.0
|
376
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T17:02:20Z", "hours": 11.0, "multiplier": 18.12, "payout": 205, "blessing": "neutral", "text": "What did you make? I finalized my website which convert image and now text and video into ASCII art. For this ship, I added the video (including GIF) and text convertor. I also added new way to export your art such as in PNG, JPG, MP4 and GIF. I also try to design the website to be more undestandable (for example you don’t have acces to the download button when nothing it’s ready to be download). What was challenging? There were the challenging part. First find the good API for the text to ASCII convertor. I easily tested 5 different APIs for this features. The second challenge was to find a way to convert GIF to MP4 and the opposite. I first tried with a librairie, it didn’t work I had an error messag. So, I switched to FFmpeg and it was very complicated to find a workable way to do the conversion. What are you proud of? I’m proud of presenting you a finished Website where you can created easily ASCII art. With the implementation of features requested by raters. What should people know so they can test your project? The project is available at this url : https://reaue.github.io/ImgToASCII/ . So come test it and send your best ASCII art to your friends.", "repo": "https://github.com/reaue/ImgToASCII", "demo": "https://reaue.github.io/ImgToASCII/"}, {"ship_num": 2, "ts": "2026-09-08T17:30:09Z", "hours": 5.0, "multiplier": 16.78, "payout": 80, "blessing": "neutral", "text": "What did you make? ImgToASCII is a web-based tool which converts image to ASCII art. This is the V.2 of this website. I mostly added features requested by raters such as a drag and drop zone, an invert button, optimization on the algorithm and progress notification when your computer calculate the render. I fanilly made the pyhton proof of concept more user-friendly. What was challenging? The most challenging part was the algorithm optimization. It took me time and reflection and I have a good and a bad news, the first one is that for the black and white version there is almost no waiting time no matter the size. But for the color version it was harder. I succeed on reducing the time but no like for the the no color version. What are you proud of? I’m proud of how much time I earn between before and now for the calculation time. I thought it was impossible to optimize it but after some reflection time I found solution. I’m also proud of succeed all features that people want to get. What should people know so they can test your project? The project is available online here : https://reaue.github.io/ImgToASCII/ .", "repo": "https://github.com/reaue/ImgToASCII", "demo": "https://reaue.github.io/ImgToASCII/"}, {"ship_num": 3, "ts": "2026-09-03T18:41:21Z", "hours": 10.0, "multiplier": 9.07, "payout": 91, "blessing": "neutral", "text": "What did you make? I created a web-based tool that converts images into ASCII art directly in your browser. I started with a proof of concept in python because it’s the programming langage I know best. You can find it on GitHub (poc/main.py). What was challenging? I had never built a website apart from a local one with Flask in python. I had never work with HTML, CSS or even JS before. Fortunately, JS looks quite similar to C, so it was not the most challenging to learn. HTML is quite simple and CSS was an nightmare, and the most difficult part for me. What are you proud of? I’m proud if the design, the website follows a paper style and for the dark mod a terminal-inspired style. I’m also happy with the final result and all I learned. What should people know so they can test your project? The website can be very funny, you can convert memes or other images to ASCII art and then share it as text or as a png.", "repo": "https://github.com/reaue/ImgToASCII", "demo": "https://reaue.github.io/ImgToASCII/"}]...
|
[{"post_id": 65467, "ts": "202 [{"post_id": 65467, "ts": "2026-09-10T16:44:47Z", "hours": 1.9567, "text": "The last devlog (10) - I think I finally have finished this webiste. I added more way to export your ASCII art such as PNG, JPG, GIF and MP4. I also tried to optimize the design to be more user-friendly. Now I think I have finished this site (maybe if someone propose me a big feature I will come back to my decision). Time to ship the final version. Thanks for all your feedback it was very useful."}, {"post_id": 65274, "ts": "2026-09-10T08:46:02Z", "hours": 1.975, "text": "Devlog 9 - Adding Gif to the video format. I thought it would be easier but I spent 2 hours of finding a good way to convert Gif to video format (such as MP4). I started with a librarie but I had an error, so I switched for FFmpeg and this has led to a lot of bugs. I coorected them and added a better preview of what your video would like. Now everything works well so try it by converting your best meme."}, {"post_id": 65003, "ts": "2026-09-09T19:43:07Z", "hours": 3.8242, "text": "Devlog 8 - Finally the video option ! After hours of development I added the video to ASCII convertor. If you tested it you will see a notification informing you about estimated pourcentage and it can take time so don’t try big video (a big video it’s already a 30 secondes one) or decrease other options. How it’s work. Basically, it cut video into frame, uses the image to ASCII converter and then recreates a video."}, {"post_id": 64766, "ts": "2026-09-09T12:45:42Z", "hours": 3.5339, "text": "Devlog 7 - Adding a text to ASCII converter ! It was such a really challenging idea to implement. My first idea was to call a google API, make the search and take the first image proposed by google. But the API I was looking for was disable for new people. So I try an API with AI generation but it wasn’t free. After that I looked for the reserp API a google scraper. But I needed to stock a private API key on a server and after one hour of trying, testing and fixing bugs. I said to myself that the best way was maybe the wikimedia API, it’s maybe less accurate than other API but at least it was free and no API_KEY needed. So I started devloped this idea and now it’s online. Don’t hesitate to test it and give me feedback or other features you want to see."}, {"post_id": 64334, "ts": "2026-09-08T17:10:51Z", "hours": 1.2358, "text": "Devlog 6 - Updating the README and make main.py user-friendly. I updated the README.md to list new features for the upcoming ship, I also made the proof of concept in python more user-friendly with commands in the terminal."}, {"post_id": 64271, "ts": "2026-09-08T15:27:01Z", "hours": 2.7508, "text": "Devlog 5 - I had added all requested features ! Firstly, I added the invert button and the drag and drop zone, it was quite simple. After that, I added the progress notification and tried to optimize the algorithm. It was not simple, I changed it to read only one time the image and not read for brightness and then another time for the drawing… I, also for the black and white version, drew not each character one by one but only after a line. It speed up the calculation time a lot."}, {"post_id": 64163, "ts": "2026-09-08T11:43:02Z", "hours": 0.7614, "text": "Devlog 4 - Think about raters ideas. I add a section in the README with every features request. I think the first two are excelent ideas, for the third one I have no idea how to make it and then the last one can be a good feature. If you have any ideas I’m taker and if you know how to optimize the algorithm let me know."}, {"post_id": 61007, "ts": "2026-09-03T18:21:33Z", "hours": 1.7447, "text": "Devlog 3 - the final one ! I added a switch between a light and a dark mod, the design of the dark one is inspire by a terminal/ the movie Matrix. I also fix some small positioning bugs. And that’s all. I wil ship it now."}, {"post_id": 60905, "ts": "2026-09-03T15:40:34Z", "hours": 6.7278, "text": "Devlog 2 - the website is online ! Come test it, it’s a web-based tool that converts images into ASCII art directly in your browser. You can convert memes, family photos and even more. I’m very happy with the design, because I learned HTML, JS and CSS for this project (CSS is the worst and least fun) and I like the result. I would be very grateful if you report any bugs, because I test it only in Firefox and Microsoft Edge. The next step is to add a dark mode."}, {"post_id": 60423, "ts": "2026-09-02T18:45:57Z", "hours": 1.5622, "text": "Devlog 1 - New project ! I started a new project, the main goal is to build a website that lets you choose an image or a video and transform it into ASCII art. I quickly built a proof of concept in Python. But the problem is that I have literally no knowledge of web programming. So, I’m going to spend next hours learning JavaScrypt and try to implement all my ideas."}]...
|
Title: Image to ASCII by @reaue | Stardance
Devlo Title: Image to ASCII by @reaue | Stardance
Devlogs:
Devlog 1 - New project ! I started a new project, the main goal is to build a website that lets you choose an image or a video and transform it into ASCII art. I quickly built a proof of concept in Python. But the problem is that I have literally no knowledge of web programming. So, I’m going to spend next hours learning JavaScrypt and try to implement all my ideas.
Devlog 2 - the website is online ! Come test it, it’s a web-based tool that converts images into ASCII art directly in your browser. You can convert memes, family photos and even more. I’m very happy with the design, because I learned HTML, JS and CSS for this project (CSS is the worst and least fun) and I like the result. I would be very grateful if you report any bugs, because I test it only in Firefox and Microsoft Edge. The next step is to add a dark mode.
Devlog 3 - the final one ! I added a switch between a light and a dark mod, the design of the dark one is inspire by a terminal/ the movie Matrix. I also fix some small positioning bugs. And that’s all. I wil ship it now.
Devlog 4 - Think about raters ideas. I add a section in the README with every features request. I think the first two are excelent ideas, for the third one I have no idea how to make it and then the last one can be a good feature. If you have any ideas I’m taker and if you know how to optimize the algorithm let me know.
Devlog 5 - I had added all requested features ! Firstly, I added the invert button and the drag and drop zone, it was quite simple. After that, I added the progress notification and tried to optimize the algorithm. It was not simple, I changed it to read only one time the image and not read for brightness and then another time for the drawing… I, also for the black and white version, drew not each character one by one but only after a line. It speed up the calculation time a lot.
Devlog 6 - Updating the README and make main.py user-friendly. I updated the README.md to list new features for the upcoming ship, I also made the proof of concept in python more user-friendly with commands in the terminal.
Devlog 7 - Adding a text to ASCII converter ! It was such a really challenging idea to implement. My first idea was to call a google API, make the search and take the first image proposed by google. But the API I was looking for was disable for new people. So I try an API with AI generation but it wasn’t free. After that I looked for the reserp API a google scraper. But I needed to stock a private API key on a server and after one hour of trying, testing and fixing bugs. I said to myself that the best way was maybe the wikimedia API, it’s maybe less accurate than other API but at least it was free and no API_KEY needed. So I started devloped this idea and now it’s online. Don’t hesitate to test it and give me feedback or other features you want to see.
Devlog 8 - Finally the video option ! After hours of development I added the video to ASCII convertor. If you tested it you will see a notification informing you about estimated pourcentage and it can take time so don’t try big video (a big video it’s already a 30 secondes one) or decrease other options. How it’s work. Basically, it cut video into frame, uses the image to ASCII converter and then recreates a video.
Devlog 9 - Adding Gif to the video format. I thought it would be easier but I spent 2 hours of finding a good way to convert Gif to video format (such as MP4). I started with a librarie but I had an error, so I switched for FFmpeg and this has led to a lot of bugs. I coorected them and added a better preview of what your video would like. Now everything works well so try it by converting your best meme.
The last devlog (10) - I think I finally have finished this webiste. I added more way to export your ASCII art such as PNG, JPG, GIF and MP4. I also tried to optimize the design to be more user-friendly. Now I think I have finished this site (maybe if someone propose me a big feature I will come back to my decision). Time to ship the final version. Thanks for all your feedback it was very useful.
Ships:
What did you make? I created a web-based tool that converts images into ASCII art directly in your browser. I started with a proof of concept in python because it’s the programming langage I know best. You can find it on GitHub (poc/main.py). What was challenging? I had never built a website apart from a local one with Flask in python. I had never work with HTML, CSS or even JS before. Fortunately, JS looks quite similar to C, so it was not the most challenging to learn. HTML is quite simple and CSS was an nightmare, and the most difficult part for me. What are you proud of? I’m proud if the design, the website follows a paper style and for the dark mod a terminal-inspired style. I’m also happy with the final result and all I learned. What should people know so they can test your project? The website can be very funny, you can convert memes or other images to ASCII art and then share it as text or as a png.
What did you make? ImgToASCII is a web-based tool which converts image to ASCII art. This is the V.2 of this website. I mostly added features requested by raters such as a drag and drop zone, an invert button, optimization on the algorithm and progress notification when your computer calculate the render. I fanilly made the pyhton proof of concept more user-friendly. What was challenging? The most challenging part was the algorithm optimization. It took me time and reflection and I have a good and a bad news, the first one is that for the black and white version there is almost no waiting time no matter the size. But for the color version it was harder. I succeed on reducing the time but no like for the the no color version. What are you proud of? I’m proud of how much time I earn between before and now for the calculation time. I thought it was impossible to optimize it but after some reflection time I found solution. I’m also proud of succeed all features that people want to get. What should people know so they can test your project? The project is available online here : https://reaue.github.io/ImgToASCII/ .
What did you make? I finalized my website which convert image and now text and video into ASCII art. For this ship, I added the video (including GIF) and text convertor. I also added new way to export your art such as in PNG, JPG, MP4 and GIF. I also try to design the website to be more undestandable (for example you don’t have acces to the download button when nothing it’s ready to be download). What was challenging? There were the challenging part. First find the good API for the text to ASCII convertor. I easily tested 5 different APIs for this features. The second challenge was to find a way to convert GIF to MP4 and the opposite. I first tried with a librairie, it didn’t work I had an error messag. So, I switched to FFmpeg and it was very complicated to find a workable way to do the conversion. What are you proud of? I’m proud of presenting you a finished Website where you can created easily ASCII art. With the implementation of features requested by raters. What should people know so they can test your project? The project is available at this url : https://reaue.github.io/ImgToASCII/ . So come test it and send your best ASCII art to your friends....
|
1792983213.4088063
|
1793069613.4088063
|
|
37767
|
Voronoi Converter for Autodesk Fusion by @GabrielD Voronoi Converter for Autodesk Fusion by @GabrielD | Stardance...
|
GabrielD
|
1
|
28.47
|
374
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-29T19:11:53Z", "hours": 23.0, "multiplier": 16.32, "payout": 374, "blessing": "neutral", "text": "I built a script that converts bodies in fusion to 3D voronoi patterns! I think that the most challenging part for me was connecting SciPy’s voronoi tools with fusion’s api. You can check out a result of my project below or you can download it and try it yourself at github!", "repo": "https://github.com/Gabriel-Dalmolin/Voronoi-Converter-for-Autodesk-Fusion", "demo": "https://github.com/Gabriel-Dalmolin/Voronoi-Converter-for-Autodesk-Fusion/releases/latest"}]...
|
[{"post_id": 46507, "ts": "202 [{"post_id": 46507, "ts": "2026-08-13T19:44:42Z", "hours": 5.4686, "text": "Devlog 10 - Fusion Voronoi Script Working on a v2 for the script, I did some optimization to run the script faster, one thing that I changed for that purpose is that I was creating every connection extrude in a different operation, now I’m doing it all in a singly operation. I’m also trying to expand the functionality to 2D, the first challenge I faced while doing so is that I wanted to create 2 tabs for it, one for 3D and one for 2D but then I discovered that fusion don’t let you know which tab it was before the user clicked ok (And I needed this to decide which operation to run), so, I needed to add a listener that fires when the user changes tabs, and discover what, fusion also doesn’t tell me which tab he changed to, so, I need to just flip between the two when an event is fired. To be honest, something I really didn’t expect is happening, the 2D is turning out to be harder than the 3D, I’m having some really bad problems with the offset, its really restrictive so for example, if I trimmed an edge and now there is a point in the middle of one other edge, it’s going to raise an error, if it’s not a convex shape (has some angle that’s bigger than 90), it’s going to raise an error, and I took a really long time to figure that it was that restrictive, so, I’m seriously considering adding my own offset function, I even tried to use an external library called shapely but that also wouldn’t work with rounded edges, just straight ones. That’s how my menu is looking right now, as you can see I got 2 tabs!"}, {"post_id": 37018, "ts": "2026-07-29T14:20:15Z", "hours": 1.9575, "text": "Devlog 9 - Fusion Voronoi Script I was still getting some bugs with the combine, now, it was creating some weird really small sections of pipes, I spent some good time researching and thinking that it was some internal kernel problem but in reality it was just because to check if 2 bodies intersect I was doing (If intersection.volume > 0.00001), and those bodies were really small, so I just changed it to bigger than 0 and it solved the problem. I think I’m pretty much done for version 1.0, below is a before and after applying my script."}, {"post_id": 36368, "ts": "2026-07-28T13:19:14Z", "hours": 2.6778, "text": "Devlog 8 - Fusion Voronoi Script Implemented Poisson disk sampling for random number generator and LLoyd’s relaxation to get seeds that are more evenly spaced. Also I was getting some internal errors in the combine features, so, I saw it in some old forums that combining a lot of bodies in a single feature could cause some problems like that, so I changed it tocombine the bodies 1 by 1. Some alterations on fusion’s manifest too, added version and description, getting ready for first ship!"}, {"post_id": 35485, "ts": "2026-07-26T23:09:53Z", "hours": 1.4258, "text": "Devlog 7 - Fusion Voronoi Script Just spent around 2 hours researching and trying to connect scipy and fusion to create each cell as a separate body and then intersect them with the original body to get the centroid. In the end I couldn’t get it to work, below is an image of my best attempt 😭😭"}, {"post_id": 35380, "ts": "2026-07-26T18:52:21Z", "hours": 2.2764, "text": "Devlog 6 - Fusion Voronoi Script Today I first started thinking about how i would implement lloyd’s relaxation into my code (It’s an algorithm that moves every seed of the voronoi to its center of mass, which makes the cells more similar in volume to each other) but I quickly faced a big problem, sometimes my voronoi cells goes partly off the original body, which would mess up with the relaxation and could move the seeds out of the original body, what would cause me bugs, I tried some different methods using scipy’s ConvexHulls but I wasn’t able to create the cells just by using the points such as the voronoi algorithm does. So, I started working on another problem that actually helped me solve the first one! The weird connections on the faces, to solve it I improved the way I was generating ghost points (some voronoi seeds that are put outside the body to restrain the pattern but are not extruded afterwards), at first I was generating them 50% evenly spaced along each face and the other 50% randomically inside a margin around the body, now I am mirroring each seed across each face and using the mirrored points as the ghost points, since both of them are the same distance from the surface, they create beautiful boundaries, it works perfectly with flat faces but still gets kind of messy sometimes with the rounded ones. I faced some problems while doing it, at first, I was just mirroring them against the bounding box of the body, what made it easier and looked great for simple shapes like cubes, but, the rounded edges were not taken in account and if the faces were not parallel to the unit vectors they didn’t look good, since the bounding box is always parallel to them. To solve that I tried iterating through each face, getting the minimum distance point between the face and the seed and then mirroring it through that point, at first it looked really bad, as if I didn’t even had the ghost points, I tried the other method again and at the end came back to the minimum distance method again just to realize that the first time I was getting the minimun distance point at the seed instead of the point at the surface 😅. Even though it looked better for the faces not parallel with the main axis, it still look weird sometimes on the rounded faces. Some pics of how it’s looking right now, you can see at the second one that some of the edges on the rounded surfaces are still getting clipped sometimes"}, {"post_id": 34563, "ts": "2026-07-25T12:01:09Z", "hours": 3.2603, "text": "Devlog 5 - Fusion Voronoi Script I fixed the loose ends! Today I tried some different methods, first I got all the points where the voronoi connections intersected with the surface of the object, the intersection point, then, I built connections between the point and a random edge of the face it’s in. Doing it randomically looked a little bit too messy, so, I changed to code for it to connect to closest edge on the face. I still think it could improve, the straight edges take away the voronoi look so I’m still thinking of a better solution for this problem. Some struggles I had today, so, for the first time I tried running the script in an open box shape and got an error because they didn’t touch and my code tried to connect them, to fix it, I moved all the join features to the end of the code where all the bodies are touching, but I’m still getting some of those combine errors now and then, I’m not sure why since all the bodies touch eachother."}, {"post_id": 33843, "ts": "2026-07-24T02:42:45Z", "hours": 4.0881, "text": "Devlog 4 - Fusion Voronoi Script If you don’t know about my project yet, let me give you a quick summary! So, I’m building a script for fusion360 that transforms solids it into Voronoi patterns, what’s a Voronoi pattern you may ask, so imagine you have some random point inside a shape, each point “claims” the space thats closer to it than to the other points, the boundaries of those areas form the Voronoi pattern! And that ends up looking natural and pretty cool to be honest So, today I finally started creating some Voronoi pattern!! That’s one of the parts that was not much harder than I expected to be honest, I needed to refactor some of the code like the one to sweep the edges for it to be able to create edges just using 2 points instead of a body edge, I needed to do this because before I was just using that function to create the wireframe using the body edges, but know I needed to create the connections for the Voronoi pattern and I just had their initial and final point. Also, I will need to refactor that code again soon and change the sweep feature for a pipe feature because its causing some serious performance issues with the code. The Voronoi is generating well, the ghost points work and restrain it so it doesn’t go to infinity but it still goes a little off the boundaries, and that’s expected, so, I intersect the original body with the Voronoi pattern and then combine it with the wireframe to create the final body, but, as you can see in the images below it creates some weird cuts on the surfaces that honestly, look bad, that’s not how I want my final product to look like. To solve it, I thought about getting every point where the edges of the Voronoi intersects the surface of the body and then create a connection between that point and a randomly selected edge on the same face that it intersects. Hopefully this will make the pattern look more natural, I’m still working on it tought."}, {"post_id": 33178, "ts": "2026-07-22T20:59:45Z", "hours": 3.0772, "text": "Devlog 3 - Fusion Voronoi Script If you don’t know about my project yet, let me give you a quick summary! So, I’m building a script for fusion360 that transforms solids it into voronoi patterns, what’s a voronoi pattern you may ask, so imagine you have some random point inside a shape, each point “claims” the space thats closer to it than to the other points, the boundaries of those areas form the voronoi pattern! And that ends up looking natural and pretty cool to be honest Today I finally started the actual voronoi logic!! So, I made some important scripts today, one to generate the random seeds inside the solid, started working on a script that generates the voronoi patterns and return the edges so that I can sweep them and create the connections in the body, but I quickly faced a problem, voronoi patterns go to infinity. I brainstormed a little bit until I got to a solution, ghost points, so, for them to work, I generate some random points around the solid (I’m using a margin that’s 10% bigger than the bounding box of the solid) and then use those points to create the voronoi but don’t build connections between 2 ghost points. The purpose of them is to stop the infinite boundaries by creating a “barrier” around the solid. To give it some “uniform” density, I decided to do half points equally spaced around the solid and the other half generated randomically, below you can take a look at the result! First Image: Random seeds inside the solid Second Image: Ghost points (all points are outside the box even tought its hard to see it from a single angle)"}, {"post_id": 32541, "ts": "2026-07-21T19:51:33Z", "hours": 3.2333, "text": "Devlog 2 - Fusion Voronoi Script Big improvements here! Today I thought a lot about how I’m going to do this project and realized that on top of making the voronoi pattern, it would also be very important to mantain the original shape/boundaries, so, I decided to convert body into a wireframe and use it’s vertices as seeds for the voronoi. I started thinking about how I would go about the rounded edges, and to be honest, I took longer than what I’d like to admit for me to realize that I could just sweep a circle through its edges, for some reason I thought that the rounded edges didn’t count as edges in the API 😅 To connect it all, I revolved spheres using the same radius as the edges in the vertices (this radius can be inputted by the user), another problem I faced was that after combining I wanted to intersect the new wireframe with the original body to cut any excess over the original volume, but for some reason that also took me a good time, when I put the original body as the target body it didn’t work, I needed to use it as the tool body and the wireframe as the target. Also I organized most of the code, separating it in modules for easier reuse."}, {"post_id": 32086, "ts": "2026-07-21T00:29:28Z", "hours": 0.9522, "text": "Devlog 1 - Fusion Voronoi Script Hello everyone! This is my first devlog and first project here in stardance, I’m coding a script for fusion 360 that is going to take a body and convert it to a voronoi pattern. To be honest, I’ve never coded any fusion script, so, today was mostly used for me to learn the basics and get familiar with the API, for this, I built a simple UI that creates a box from the dimensions inputted by the user, with this, I was able to learn about the API architecture, such as how the handlers and hierarchy works. Not a big achievement yet, but I believe that building a strong foundation is really important on a project like this. Looking forward to sharing more of my progress soon! Video Showcase"}]...
|
Title: Voronoi Converter for Autodesk Fusion by @G Title: Voronoi Converter for Autodesk Fusion by @GabrielD | Stardance
Devlogs:
Devlog 1 - Fusion Voronoi Script Hello everyone! This is my first devlog and first project here in stardance, I’m coding a script for fusion 360 that is going to take a body and convert it to a voronoi pattern. To be honest, I’ve never coded any fusion script, so, today was mostly used for me to learn the basics and get familiar with the API, for this, I built a simple UI that creates a box from the dimensions inputted by the user, with this, I was able to learn about the API architecture, such as how the handlers and hierarchy works. Not a big achievement yet, but I believe that building a strong foundation is really important on a project like this. Looking forward to sharing more of my progress soon! Video Showcase
Devlog 2 - Fusion Voronoi Script Big improvements here! Today I thought a lot about how I’m going to do this project and realized that on top of making the voronoi pattern, it would also be very important to mantain the original shape/boundaries, so, I decided to convert body into a wireframe and use it’s vertices as seeds for the voronoi. I started thinking about how I would go about the rounded edges, and to be honest, I took longer than what I’d like to admit for me to realize that I could just sweep a circle through its edges, for some reason I thought that the rounded edges didn’t count as edges in the API 😅 To connect it all, I revolved spheres using the same radius as the edges in the vertices (this radius can be inputted by the user), another problem I faced was that after combining I wanted to intersect the new wireframe with the original body to cut any excess over the original volume, but for some reason that also took me a good time, when I put the original body as the target body it didn’t work, I needed to use it as the tool body and the wireframe as the target. Also I organized most of the code, separating it in modules for easier reuse.
Devlog 3 - Fusion Voronoi Script If you don’t know about my project yet, let me give you a quick summary! So, I’m building a script for fusion360 that transforms solids it into voronoi patterns, what’s a voronoi pattern you may ask, so imagine you have some random point inside a shape, each point “claims” the space thats closer to it than to the other points, the boundaries of those areas form the voronoi pattern! And that ends up looking natural and pretty cool to be honest Today I finally started the actual voronoi logic!! So, I made some important scripts today, one to generate the random seeds inside the solid, started working on a script that generates the voronoi patterns and return the edges so that I can sweep them and create the connections in the body, but I quickly faced a problem, voronoi patterns go to infinity. I brainstormed a little bit until I got to a solution, ghost points, so, for them to work, I generate some random points around the solid (I’m using a margin that’s 10% bigger than the bounding box of the solid) and then use those points to create the voronoi but don’t build connections between 2 ghost points. The purpose of them is to stop the infinite boundaries by creating a “barrier” around the solid. To give it some “uniform” density, I decided to do half points equally spaced around the solid and the other half generated randomically, below you can take a look at the result! First Image: Random seeds inside the solid Second Image: Ghost points (all points are outside the box even tought its hard to see it from a single angle)
Devlog 4 - Fusion Voronoi Script If you don’t know about my project yet, let me give you a quick summary! So, I’m building a script for fusion360 that transforms solids it into Voronoi patterns, what’s a Voronoi pattern you may ask, so imagine you have some random point inside a shape, each point “claims” the space thats closer to it than to the other points, the boundaries of those areas form the Voronoi pattern! And that ends up looking natural and pretty cool to be honest So, today I finally started creating some Voronoi pattern!! That’s one of the parts that was not much harder than I expected to be honest, I needed to refactor some of the code like the one to sweep the edges for it to be able to create edges just using 2 points instead of a body edge, I needed to do this because before I was just using that function to create the wireframe using the body edges, but know I needed to create the connections for the Voronoi pattern and I just had their initial and final point. Also, I will need to refactor that code again soon and change the sweep feature for a pipe feature because its causing some serious performance issues with the code. The Voronoi is generating well, the ghost points work and restrain it so it doesn’t go to infinity but it still goes a little off the boundaries, and that’s expected, so, I intersect the original body with the Voronoi pattern and then combine it with the wireframe to create the final body, but, as you can see in the images below it creates some weird cuts on the surfaces that honestly, look bad, that’s not how I want my final product to look like. To solve it, I thought about getting every point where the edges of the Voronoi intersects the surface of the body and then create a connection between that point and a randomly selected edge on the same face that it intersects. Hopefully this will make the pattern look more natural, I’m still working on it tought.
Devlog 5 - Fusion Voronoi Script I fixed the loose ends! Today I tried some different methods, first I got all the points where the voronoi connections intersected with the surface of the object, the intersection point, then, I built connections between the point and a random edge of the face it’s in. Doing it randomically looked a little bit too messy, so, I changed to code for it to connect to closest edge on the face. I still think it could improve, the straight edges take away the voronoi look so I’m still thinking of a better solution for this problem. Some struggles I had today, so, for the first time I tried running the script in an open box shape and got an error because they didn’t touch and my code tried to connect them, to fix it, I moved all the join features to the end of the code where all the bodies are touching, but I’m still getting some of those combine errors now and then, I’m not sure why since all the bodies touch eachother.
Devlog 6 - Fusion Voronoi Script Today I first started thinking about how i would implement lloyd’s relaxation into my code (It’s an algorithm that moves every seed of the voronoi to its center of mass, which makes the cells more similar in volume to each other) but I quickly faced a big problem, sometimes my voronoi cells goes partly off the original body, which would mess up with the relaxation and could move the seeds out of the original body, what would cause me bugs, I tried some different methods using scipy’s ConvexHulls but I wasn’t able to create the cells just by using the points such as the voronoi algorithm does. So, I started working on another problem that actually helped me solve the first one! The weird connections on the faces, to solve it I improved the way I was generating ghost points (some voronoi seeds that are put outside the body to restrain the pattern but are not extruded afterwards), at first I was generating them 50% evenly spaced along each face and the other 50% randomically inside a margin around the body, now I am mirroring each seed across each face and using the mirrored points as the ghost points, since both of them are the same distance from the surface, they create beautiful boundaries, it works perfectly with flat faces but still gets kind of messy sometimes with the rounded ones. I faced some problems while doing it, at first, I was just mirroring them against the bounding box of the body, what made it easier and looked great for simple shapes like cubes, but, the rounded edges were not taken in account and if the faces were not parallel to the unit vectors they didn’t look good, since the bounding box is always parallel to them. To solve that I tried iterating through each face, getting the minimum distance point between the face and the seed and then mirroring it through that point, at first it looked really bad, as if I didn’t even had the ghost points, I tried the other method again and at the end came back to the minimum distance method again just to realize that the first time I was getting the minimun distance point at the seed instead of the point at the surface 😅. Even though it looked better for the faces not parallel with the main axis, it still look weird sometimes on the rounded faces. Some pics of how it’s looking right now, you can see at the second one that some of the edges on the rounded surfaces are still getting clipped sometimes
Devlog 7 - Fusion Voronoi Script Just spent around 2 hours researching and trying to connect scipy and fusion to create each cell as a separate body and then intersect them with the original body to get the centroid. In the end I couldn’t get it to work, below is an image of my best attempt 😭😭
Devlog 8 - Fusion Voronoi Script Implemented Poisson disk sampling for random number generator and LLoyd’s relaxation to get seeds that are more evenly spaced. Also I was getting some internal errors in the combine features, so, I saw it in some old forums that combining a lot of bodies in a single feature could cause some problems like that, so I changed it tocombine the bodies 1 by 1. Some alterations on fusion’s manifest too, added version and description, getting ready for first ship!
Devlog 9 - Fusion Voronoi Script I was still getting some bugs with the combine, now, it was creating some weird really small sections of pipes, I spent some good time researching and thinking that it was some internal kernel problem but in reality it was just because to check if 2 bodies intersect I was doing (If intersection.volume > 0.00001), and those bodies were really small, so I just changed it to bigger than 0 and it solved the problem. I think I’m pretty much done for version 1.0, below is a before and after applying my script.
Devlog 10 - Fusion Voronoi Script Working on a v2 for the script, I did some optimization to run the script faster, one thing that I changed for that purpose is that I was creating every connection extrude in a different operation, now I’m doing it all in a singly operation. I’m also trying to expand the functionality to 2D, the first challenge I faced while doing so is that I wanted to create 2 tabs for it, one for 3D and one for 2D but then I discovered that fusion don’t let you know which tab it was before the user clicked ok (And I needed this to decide which operation to run), so, I needed to add a listener that fires when the user changes tabs, and discover what, fusion also doesn’t tell me which tab he changed to, so, I need to just flip between the two when an event is fired. To be honest, something I really didn’t expect is happening, the 2D is turning out to be harder than the 3D, I’m having some really bad problems with the offset, its really restrictive so for example, if I trimmed an edge and now there is a point in the middle of one other edge, it’s going to raise an error, if it’s not a convex shape (has some angle that’s bigger than 90), it’s going to raise an error, and I took a really long time to figure that it was that restrictive, so, I’m seriously considering adding my own offset function, I even tried to use an external library called shapely but that also wouldn’t work with rounded edges, just straight ones. That’s how my menu is looking right now, as you can see I got 2 tabs!
Ships:
I built a script that converts bodies in fusion to 3D voronoi patterns! I think that the most challenging part for me was connecting SciPy’s voronoi tools with fusion’s api. You can check out a result of my project below or you can download it and try it yourself at github!...
|
1792976056.3975573
|
1793062456.3975573
|
|
43459
|
Commerce OS by @Kartikey26 | Stardance
|
Kartikey26
|
2
|
38.0
|
374
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T09:16:57Z", "hours": 19.0, "multiplier": 9.17, "payout": 174, "blessing": "neutral", "text": "Made major changes in UI completely changed how the website looks also added some fun features like add test order add new feature just to test how things would work in the future further will work on the backend part", "repo": "https://github.com/kartikeynegi25/commerce-os", "demo": "https://kartikeynegi25.github.io/commerce-os"}, {"ship_num": 2, "ts": "2026-08-09T11:45:27Z", "hours": 19.0, "multiplier": 10.69, "payout": 200, "blessing": "neutral", "text": "Shipped Commerce OS! Built a full multi-page e-commerce dashboard platform using HTML, Tailwind CSS, and plain JavaScript with live search/filtering across pages. What I made: Dashboard overview with key KPI cards (Revenue, Orders, Bot Actions) Inbox & conversation threads with channel-tagged messages and status badges Orders management & detailed order pages (#1240, #1229) Products catalog, Calls & Call-Conversation view, Invoices, and Settings Challenges & Learning: Wrote custom JavaScript live search filters across both table views and link-card layouts. Designed clean, consistent Tailwind layouts across 8+ different template pages. AI Declaration: Used AI (Claude/ChatGPT) for initial layout scaffolding and syntax assistance. All project architecture, manual edits, component styling, and JS filtering logic were reviewed, customized, and implemented directly in VS Code. To test: Navigate through the sidebar links (Inbox, Orders, Products, Calls, Invoices, Settings). Use the live search bar on the inbox or orders page to filter items in real time. Live Demo: https://kartikeynegi25.github.io/commerce-os", "repo": "https://github.com/kartikeynegi25/commerce-os", "demo": "https://kartikeynegi25.github.io/commerce-os"}]...
|
[{"post_id": 51528, "ts": "202 [{"post_id": 51528, "ts": "2026-08-21T09:11:18Z", "hours": 2.4992, "text": "Okay so improved the Products page added option to add test order and also improved settings page and fixed few bugs like our little sun was coming over the notification bell in mobile view"}, {"post_id": 49067, "ts": "2026-08-17T17:40:33Z", "hours": 5.4081, "text": "The old UI was looking super dry and clunky, so I ended up spending most of today completely redoing the styling and making it actually fun to use.Went for a warm, clean palette (forest greens + light sky blue and a bright sun), fixed up the mobile sidebar, and made the whole layout feel cohesive instead of just random boxes on a screen.Along with the design overhaul, I also added two cool fun features: Quick Reply Macro Bar: In the inbox, you can now just click quick templates (like sending a 10% discount, sharing tracking, or saying you’re checking stock) to reply instantly without typing the same thing again and again. Simulate Incoming Order Button: Added a test order button in the orders tab that drops in a random simulated customer order in real-time so I can test how new orders look on the dashboard. Cleaned up all the messy JavaScript behind it too so the code is actually easy to read and work with. Feels way better to click around now!"}, {"post_id": 45188, "ts": "2026-08-11T14:43:30Z", "hours": 5.0839, "text": "Spent the day tearing down the old dashboard UI and rebuilding it from the ground up as the old one was not liked by some :( and after redesigning the design was getting cluttered with duplicate mobile navbars, inconsistent headers, and weird nested border boxes everywhere—so I fixed it across every single page. Also made sure that site is still fully responsive and interactive using CSS and JavaScript wrote new lines of code to make the site more impressive also now you can click on notification bell and the profile avatar too and do try the website and make some changes in settings to see it work !!"}, {"post_id": 44572, "ts": "2026-08-10T12:51:15Z", "hours": 6.0303, "text": "Quick update on the dashboard. Spent the last session turning static UI mockups into a working, stateful app that actually saves changes across pages. Here’s what got done: Sitewide Profile & Business Sync: Hooked up the Settings form to localStorage. Updating the owner name, business name, or email now instantly updates the navbar, sidebar, and profile.html across every page. Working Interactivity & Storage: Fixed order status toggles (Paid, Fulfilled) and inbox reply threads. Now you can also download invoice pdf [ though its not a real one ;) ]. Also created a business profile page. Website feels much more like a real web app now rather than a static prototype. Ready for review!"}, {"post_id": 43920, "ts": "2026-08-09T11:26:05Z", "hours": 2.5958, "text": "Fixed mobile responsiveness across all pages. Cleaned up Tailwind grid breaks, fixed text overflowing on smaller screens, and adjusted sidebar padding so it collapses cleanly on mobile. Prototype is officially done !!"}, {"post_id": 43240, "ts": "2026-08-08T11:54:30Z", "hours": 1.775, "text": "made a new customers page where each customer gets a profile also worked on responsiveness of the website to work on different devices"}, {"post_id": 42915, "ts": "2026-08-07T21:37:50Z", "hours": 3.6189, "text": "Added sample call-conversation, made invoices and a demo settings page shell. Almost done with all the UI templates for the platform—just need to check for the responsiveness of the page and make UI enhancement and polish everything."}, {"post_id": 41842, "ts": "2026-08-06T09:41:37Z", "hours": 4.1533, "text": "Added live search filtering across the site!! Using actual JavaScript instead of just Tailwind styling. Had to write two separate filter functions since the Inbox uses link cards while the other pages use tables anyway also built out product and calls page—need to add call-conversation and invoices next!"}, {"post_id": 41292, "ts": "2026-08-05T12:52:42Z", "hours": 2.0439, "text": "Built out the order details pages for orders #1240 and #1229. Got the customer info, order details, item breakdown, and status UI fully styled."}, {"post_id": 40889, "ts": "2026-08-04T18:09:01Z", "hours": 1.5731, "text": "Finished inbox-conversation and orders page. Built out the chat interface, fed sample data, and made orders table layout. Next step is wiring up the products page."}, {"post_id": 40620, "ts": "2026-08-04T08:48:48Z", "hours": 1.6886, "text": "Finished up inbox.html today. Added sample data, message list, status badges which the user will see while seeing the inbox of its business from multiple sources. Next will add some sample conversation and move on to orders section."}, {"post_id": 40145, "ts": "2026-08-03T15:28:57Z", "hours": 1.2211, "text": "Just finished the basic layout for Commerce OS. Built the main dashboard shell, navigation and sidebar using Tailwind CSS. Now moving on to the inbox section. Excited to start this new journey!"}]...
|
Title: Commerce OS by @Kartikey26 | Stardance
Dev Title: Commerce OS by @Kartikey26 | Stardance
Devlogs:
Just finished the basic layout for Commerce OS. Built the main dashboard shell, navigation and sidebar using Tailwind CSS. Now moving on to the inbox section. Excited to start this new journey!
Finished up inbox.html today. Added sample data, message list, status badges which the user will see while seeing the inbox of its business from multiple sources. Next will add some sample conversation and move on to orders section.
Finished inbox-conversation and orders page. Built out the chat interface, fed sample data, and made orders table layout. Next step is wiring up the products page.
Built out the order details pages for orders #1240 and #1229. Got the customer info, order details, item breakdown, and status UI fully styled.
Added live search filtering across the site!! Using actual JavaScript instead of just Tailwind styling. Had to write two separate filter functions since the Inbox uses link cards while the other pages use tables anyway also built out product and calls page—need to add call-conversation and invoices next!
Added sample call-conversation, made invoices and a demo settings page shell. Almost done with all the UI templates for the platform—just need to check for the responsiveness of the page and make UI enhancement and polish everything.
made a new customers page where each customer gets a profile also worked on responsiveness of the website to work on different devices
Fixed mobile responsiveness across all pages. Cleaned up Tailwind grid breaks, fixed text overflowing on smaller screens, and adjusted sidebar padding so it collapses cleanly on mobile. Prototype is officially done !!
Quick update on the dashboard. Spent the last session turning static UI mockups into a working, stateful app that actually saves changes across pages. Here’s what got done: Sitewide Profile & Business Sync: Hooked up the Settings form to localStorage. Updating the owner name, business name, or email now instantly updates the navbar, sidebar, and profile.html across every page. Working Interactivity & Storage: Fixed order status toggles (Paid, Fulfilled) and inbox reply threads. Now you can also download invoice pdf [ though its not a real one ;) ]. Also created a business profile page. Website feels much more like a real web app now rather than a static prototype. Ready for review!
Spent the day tearing down the old dashboard UI and rebuilding it from the ground up as the old one was not liked by some :( and after redesigning the design was getting cluttered with duplicate mobile navbars, inconsistent headers, and weird nested border boxes everywhere—so I fixed it across every single page. Also made sure that site is still fully responsive and interactive using CSS and JavaScript wrote new lines of code to make the site more impressive also now you can click on notification bell and the profile avatar too and do try the website and make some changes in settings to see it work !!
The old UI was looking super dry and clunky, so I ended up spending most of today completely redoing the styling and making it actually fun to use.Went for a warm, clean palette (forest greens + light sky blue and a bright sun), fixed up the mobile sidebar, and made the whole layout feel cohesive instead of just random boxes on a screen.Along with the design overhaul, I also added two cool fun features: Quick Reply Macro Bar: In the inbox, you can now just click quick templates (like sending a 10% discount, sharing tracking, or saying you’re checking stock) to reply instantly without typing the same thing again and again. Simulate Incoming Order Button: Added a test order button in the orders tab that drops in a random simulated customer order in real-time so I can test how new orders look on the dashboard. Cleaned up all the messy JavaScript behind it too so the code is actually easy to read and work with. Feels way better to click around now!
Okay so improved the Products page added option to add test order and also improved settings page and fixed few bugs like our little sun was coming over the notification bell in mobile view
Ships:
Shipped Commerce OS! Built a full multi-page e-commerce dashboard platform using HTML, Tailwind CSS, and plain JavaScript with live search/filtering across pages. What I made: Dashboard overview with key KPI cards (Revenue, Orders, Bot Actions) Inbox & conversation threads with channel-tagged messages and status badges Orders management & detailed order pages (#1240, #1229) Products catalog, Calls & Call-Conversation view, Invoices, and Settings Challenges & Learning: Wrote custom JavaScript live search filters across both table views and link-card layouts. Designed clean, consistent Tailwind layouts across 8+ different template pages. AI Declaration: Used AI (Claude/ChatGPT) for initial layout scaffolding and syntax assistance. All project architecture, manual edits, component styling, and JS filtering logic were reviewed, customized, and implemented directly in VS Code. To test: Navigate through the sidebar links (Inbox, Orders, Products, Calls, Invoices, Settings). Use the live search bar on the inbox or orders page to filter items in real time. Live Demo: https://kartikeynegi25.github.io/commerce-os
Made major changes in UI completely changed how the website looks also added some fun features like add test order add new feature just to test how things would work in the future further will work on the backend part...
|
1792975898.2531757
|
1793062298.2531757
|
|
60415
|
BOLT-16 CPU by @reyansh_saindane | Stardance
|
reyansh_saindane
|
2
|
24.0
|
374
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-06T21:28:45Z", "hours": 10.0, "multiplier": 17.22, "payout": 171, "blessing": "neutral", "text": "New and improved BOLT-16 CPU I made a custom CPU, emulator, compiler, and assembly language. Challenges The hardest part was making sure all of the systems work together. This includes the clock timings and wiring. What I’m proud of I’m really proud of completing such a big and ambitious project. It took a lot of work (the hours are not correct bc I started logging really late). What’s new I added a new screen component and the ability to draw things on that screen. This took a lot of time.", "repo": "https://github.com/ReyanshS11/BOLT-16_CPU", "demo": "https://reyanshs11.github.io/BOLT-16_CPU"}, {"ship_num": 2, "ts": "2026-09-18T22:47:11Z", "hours": 14.0, "multiplier": 14.62, "payout": 203, "blessing": "neutral", "text": "I made a custom CPU from scratch in a logic simulator along with an emulator and a compiled assembly language to go with it. This was my most challenging project by far. It required a lot of research and background knowledge along with patience. I’m really proud of what it ended up as and I’m really happy seeing my months of hard work turn into something presentable and enjoyable. Through this project, I learned a lot more about boolean algebra, logic gates, computer processes and components, and assembly languages. You can try out my project too at the demo link both in the project info and on my Github repo.", "repo": "https://github.com/ReyanshS11/BOLT-16_CPU", "demo": "https://reyanshs11.github.io/BOLT-16_CPU"}]...
|
[{"post_id": 77412, "ts": "202 [{"post_id": 77412, "ts": "2026-10-06T21:25:46Z", "hours": 2.1, "text": "Finished screen! I finally finsished making the screen compnent. It finally works in logisim now. Turns out the problem was my compiler bc it wasn’t compiling the RGB correctly, there were also a few small issues in the circuit."}, {"post_id": 76559, "ts": "2026-10-03T23:18:18Z", "hours": 2.7194, "text": "Added screen and drawing to emulator I added a screen component to the emulator and allowed drawing to it. I also added an example code that draws a rectangle and square. I still have to test it for Logisim, I added it to the compiler but I know something is going to go wrong and I don’t want to debug for hours today."}, {"post_id": 76009, "ts": "2026-10-02T01:06:41Z", "hours": 0.8872, "text": "Added a screen I added a screen component to my project because I wanted a way to see the CPU in action without looking at the vague data memory. I still have to test it and integrate it into my assembly language and compiler."}, {"post_id": 75980, "ts": "2026-10-01T20:28:54Z", "hours": 2.4597, "text": "Updated UI I made the UI look a lot cleaner in my opinion, it could still look better, but this is the best I can do. Write your feedback in the comments!"}, {"post_id": 72442, "ts": "2026-09-22T23:26:36Z", "hours": 1.7781, "text": "Worked on feedback! Thanks for the feedback! I worked on some of it like a thoughtful comment which pointed out a little bug in my label storage and jump code. (I stored labels with $ but looked them up without $ ). This also led me to finding out another bug where my code didn’t actually start at label $start. That was a 5-second fix. I also worked on the README.md after recieving feedback about it. I plan to work on some more feedback later (specifically updating my website UI). I thought it was fine because I have barely any experience with JS/HTML/CSS, but there’s no excuse for bad UI. PS - I also added comment functionality to my Assembly"}, {"post_id": 70314, "ts": "2026-09-18T22:37:38Z", "hours": 1.3597, "text": "One final change I said there wouldn’t be any more devlogs but this is the last one I promise. There was a little problem in my jump logic in the CPU, so I had to tweak the compiler a bit, but that I had to completely rewrite the compiler in the style of the emulator so I could make the changes easily."}, {"post_id": 69879, "ts": "2026-09-18T00:04:53Z", "hours": 4.6764, "text": "Emulator website finished! I’ve just finished with the emulator website. It’s really simple with not much graphical design, but it works well so I’m happy. I had to convert the CPP code into JS using AI because I started and it deleted my progress and it would have taken too much time for a simple but tedious task. You can try it out at the demo link! I’m going to ship now thanks for reading!"}, {"post_id": 68388, "ts": "2026-09-15T01:28:39Z", "hours": 1.5922, "text": "Some big and small changes I’m just going to list these out: Changed emulator an compiler into two pass systems (first pass reads labels, second pass is normal) and altered them to be able to jump to labels appearing before the jmp command. Replaces swp with sb (store byte), which stores a byte directly to RAM Added a new command clear, which clears the value stored in a register."}, {"post_id": 67697, "ts": "2026-09-13T21:46:38Z", "hours": 3.4197, "text": "Built an emulator! I just finished building a simple emulator for the BOLT-16. The reason I did this was because I needed an easy way for someone to try out the CPU without having to download Logisim. Now all you have to do is write your code in the assembly folder and run emulator.cpp to see the values of the CPU RAM! Next time I plan to build a website that you can test out the CPU with the emulator running in the background."}, {"post_id": 66816, "ts": "2026-09-12T18:34:46Z", "hours": 1.0567, "text": "Fixed a big problem! -and other good news I have spent so long trying to figure out why my CPU stops every time I try to increment my PC (Program Counter) by 1 to go to the next instruction. I finally decided today to sit down and have a full session just trying to fix that. With the help of ChatGPT to learn some Logisim ROM quirks, I was able to figure it out. Turns out I only needed to allow misaligned addresses in ROM settings. Some more good news: The new ALU design is working smoother than expected, I think this will be my first and final redesign of it. The new compiler is ready! It now uses the new instruction set."}, {"post_id": 66272, "ts": "2026-09-12T00:35:21Z", "hours": 1.05, "text": "Beforehand Progress This is my progress before uploading this to Stardance. Researched CPU design using Nand2Tetris and Google Planned out CPU using Nand2Tetris style HDL language Built CPU parts according to original specification in Logisim-Evolution Updated CPU part to be more efficient, changed them significantly from the default versions. Built main CPU circuit Tested, debugged, made changes, repeat. P.S. This is very simplified. This took me a month of continues work for hours a day that were not logged unfortunately :( Thanks for reading!!"}, {"post_id": 66186, "ts": "2026-09-11T21:00:12Z", "hours": 0.7108, "text": "Progress up until now So I’ve been working on a custom CPU for about a month over the summer. I’ve spent about 3 hours everyday working on researching and designing it. I have just uploaded the project to Stardance so I don’t have any devlogs yet. I also haven’t started much coding until recently so I don’t have much time spent. I’ll make a couple more devlogs about the design process until now."}]...
|
Title: BOLT-16 CPU by @reyansh_saindane | Stardanc Title: BOLT-16 CPU by @reyansh_saindane | Stardance
Devlogs:
Progress up until now So I’ve been working on a custom CPU for about a month over the summer. I’ve spent about 3 hours everyday working on researching and designing it. I have just uploaded the project to Stardance so I don’t have any devlogs yet. I also haven’t started much coding until recently so I don’t have much time spent. I’ll make a couple more devlogs about the design process until now.
Beforehand Progress This is my progress before uploading this to Stardance. Researched CPU design using Nand2Tetris and Google Planned out CPU using Nand2Tetris style HDL language Built CPU parts according to original specification in Logisim-Evolution Updated CPU part to be more efficient, changed them significantly from the default versions. Built main CPU circuit Tested, debugged, made changes, repeat. P.S. This is very simplified. This took me a month of continues work for hours a day that were not logged unfortunately :( Thanks for reading!!
Fixed a big problem! -and other good news I have spent so long trying to figure out why my CPU stops every time I try to increment my PC (Program Counter) by 1 to go to the next instruction. I finally decided today to sit down and have a full session just trying to fix that. With the help of ChatGPT to learn some Logisim ROM quirks, I was able to figure it out. Turns out I only needed to allow misaligned addresses in ROM settings. Some more good news: The new ALU design is working smoother than expected, I think this will be my first and final redesign of it. The new compiler is ready! It now uses the new instruction set.
Built an emulator! I just finished building a simple emulator for the BOLT-16. The reason I did this was because I needed an easy way for someone to try out the CPU without having to download Logisim. Now all you have to do is write your code in the assembly folder and run emulator.cpp to see the values of the CPU RAM! Next time I plan to build a website that you can test out the CPU with the emulator running in the background.
Some big and small changes I’m just going to list these out: Changed emulator an compiler into two pass systems (first pass reads labels, second pass is normal) and altered them to be able to jump to labels appearing before the jmp command. Replaces swp with sb (store byte), which stores a byte directly to RAM Added a new command clear, which clears the value stored in a register.
Emulator website finished! I’ve just finished with the emulator website. It’s really simple with not much graphical design, but it works well so I’m happy. I had to convert the CPP code into JS using AI because I started and it deleted my progress and it would have taken too much time for a simple but tedious task. You can try it out at the demo link! I’m going to ship now thanks for reading!
One final change I said there wouldn’t be any more devlogs but this is the last one I promise. There was a little problem in my jump logic in the CPU, so I had to tweak the compiler a bit, but that I had to completely rewrite the compiler in the style of the emulator so I could make the changes easily.
Worked on feedback! Thanks for the feedback! I worked on some of it like a thoughtful comment which pointed out a little bug in my label storage and jump code. (I stored labels with $ but looked them up without $ ). This also led me to finding out another bug where my code didn’t actually start at label $start. That was a 5-second fix. I also worked on the README.md after recieving feedback about it. I plan to work on some more feedback later (specifically updating my website UI). I thought it was fine because I have barely any experience with JS/HTML/CSS, but there’s no excuse for bad UI. PS - I also added comment functionality to my Assembly
Updated UI I made the UI look a lot cleaner in my opinion, it could still look better, but this is the best I can do. Write your feedback in the comments!
Added a screen I added a screen component to my project because I wanted a way to see the CPU in action without looking at the vague data memory. I still have to test it and integrate it into my assembly language and compiler.
Added screen and drawing to emulator I added a screen component to the emulator and allowed drawing to it. I also added an example code that draws a rectangle and square. I still have to test it for Logisim, I added it to the compiler but I know something is going to go wrong and I don’t want to debug for hours today.
Finished screen! I finally finsished making the screen compnent. It finally works in logisim now. Turns out the problem was my compiler bc it wasn’t compiling the RGB correctly, there were also a few small issues in the circuit.
Ships:
I made a custom CPU from scratch in a logic simulator along with an emulator and a compiled assembly language to go with it. This was my most challenging project by far. It required a lot of research and background knowledge along with patience. I’m really proud of what it ended up as and I’m really happy seeing my months of hard work turn into something presentable and enjoyable. Through this project, I learned a lot more about boolean algebra, logic gates, computer processes and components, and assembly languages. You can try out my project too at the demo link both in the project info and on my Github repo.
New and improved BOLT-16 CPU I made a custom CPU, emulator, compiler, and assembly language. Challenges The hardest part was making sure all of the systems work together. This includes the clock timings and wiring. What I’m proud of I’m really proud of completing such a big and ambitious project. It took a lot of work (the hours are not correct bc I started logging really late). What’s new I added a new screen component and the ability to draw things on that screen. This took a lot of time....
|
1792961648.9436016
|
1793048048.9436016
|
|
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
|
|
2322
|
Coding Boss Fight by @Xfhe | Stardance
|
|
2
|
21.0
|
370
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T19:04:23Z", "hours": 3.0, "multiplier": 18.35, "payout": 53, "blessing": "neutral", "text": "Player Health and Game Over Players now have a persistent health bar starting at 100 HP. Incorrect code submissions are no longer consequence-free. Every failed attempt causes the boss to attack, dealing 15 damage to the player. If the player’s health reaches zero, a Game Over screen is triggered, wiping all progress and forcing a complete restart. Combo System and Healing To balance the strict punishment for errors, the combo system has been fully integrated into the gameplay loop. The UI now features dynamic combo badges that appear over the boss when players submit consecutive correct answers. Reaching a 3x combo mechanically rewards the player by healing them for 15 HP. This encourages careful code construction over brute-force trial and error. Live Speedrun Timer A live timer has been added to the top navigation bar. It actively tracks the time spent on the current boss combined with the historical time from previously defeated bosses. This adds a subtle layer of pressure and allows players to track their speedrun performance in real time.", "repo": "https://github.com/XfheDev/Coding-Boss-Fight", "demo": "https://coding-boss-fight.vercel.app/"}, {"ship_num": 2, "ts": "2026-06-02T15:22:40Z", "hours": 18.0, "multiplier": 18.19, "payout": 317, "blessing": "neutral", "text": "I built “Coding Boss Fight”, a browser-based RPG where players defeat bosses by solving real JavaScript coding challenges. The main challenge was managing complex game states across multiple screens (Intro, Boss Defeated, Victory) and building a custom sound system using the native Web Audio API instead of relying on external audio files. I am particularly proud of the smooth routing between different bosses and the minimalist, distraction-free UI design. To test the project, simply open the app, read the boss’s task requirements, write valid JavaScript in the built-in editor, and press Ctrl+Enter (or click Run) to attack.", "repo": "https://github.com/XfheDev/Coding-Boss-Fight", "demo": "https://coding-boss-fight.vercel.app/"}]...
|
[{"post_id": 20200, "ts": "202 [{"post_id": 20200, "ts": "2026-07-01T19:03:53Z", "hours": 2.5139, "text": "Player Health and Game OverPlayers now have a persistent health bar starting at 100 HP. Incorrect code submissions are no longer consequence-free. Every failed attempt causes the boss to attack, dealing 15 damage to the player. If the player’s health reaches zero, a Game Over screen is triggered, wiping all progress and forcing a complete restart.Combo System and HealingTo balance the strict punishment for errors, the combo system has been fully integrated into the gameplay loop. The UI now features dynamic combo badges that appear over the boss when players submit consecutive correct answers. Reaching a 3x combo mechanically rewards the player by healing them for 15 HP. This encourages careful code construction over brute-force trial and error.Live Speedrun TimerA live timer has been added to the top navigation bar. It actively tracks the time spent on the current boss combined with the historical time from previously defeated bosses. This adds a subtle layer of pressure and allows players to track their speedrun performance in real time."}, {"post_id": 2777, "ts": "2026-06-05T16:08:29Z", "hours": 0.4514, "text": "New Feature Update We have added a new boss to the game to increase the challenge and cover more JavaScript concepts. Syntax Sorcerer The Syntax Sorcerer is the third boss you will face. This boss has 150 Health Points and tests your knowledge of more advanced JavaScript syntax. Tasks included for this boss: Arrow Functions: You must write an arrow function that returns a specific value. This helps practice modern function syntax. Error Handling: You are required to write a try-catch block. This is essential for managing errors in real applications. Spread Operator: You need to use the spread operator on an array. This tests your understanding of array manipulation. DOM Demon The DOM Demon is the fourth and final boss. This boss has 200 Health Points and tests your ability to interact with the Document Object Model (DOM). Tasks included for this boss: Selecting Elements: You must use methods like getElementById. Creating Elements: You need to create new HTML elements dynamically using createElement. Modifying Classes: You are required to manipulate an element’s classList. Event Listeners: You need to attach event listeners to elements to make them interactive. Combo System We introduced a Combo System to reward accurate coding. How it works: If you complete a task correctly on your very first try, your combo increases. Visuals: Your current combo is displayed at the top of the game interface during a run. Reset: If you make a mistake and get the answer wrong, your combo resets to zero. These additions make the game longer, provide a better learning curve, and add a layer of challenge for skilled players who want to maintain a high combo."}, {"post_id": 845, "ts": "2026-06-02T15:21:36Z", "hours": 10.1433, "text": "Architecture and Routing The application now supports multiple distinct screens and states, moving beyond a single static view: Intro Screen: A landing page that introduces the game, lists the available bosses, and explains the rules. Boss Defeated Screen: A transition state that displays the player’s statistics for the defeated boss and previews the next challenge. Victory Screen: The final state reached after completing all content, presenting a summary of the player’s total time, attempts, and overall accuracy. Multi-Boss Support The hardcoded single-boss logic has been refactored. The game state now imports a structured array of bosses. A second boss, “Array Alchemist”, has been integrated into the loop. When a boss reaches zero HP, the game seamlessly transitions to the next boss in the sequence, resetting health while preserving total accumulated statistics. Audio Feedback To improve interaction, a lightweight audio system was introduced using the native Web Audio API. This avoids the need to load external MP3 files. Synthesized tones are now played during specific events: Correct submission (Hit) Incorrect submission (Miss) Boss Defeated Game Completed (Victory) Quality of Life Improvements Keyboard Shortcuts: Added a global event listener to the Monaco Editor. Players can now execute their code using Ctrl + Enter (or Cmd + Enter), greatly speeding up the trial-and-error process. Auto-dismissing Alerts: Feedback banners (success/error messages) are now automatically cleared after 2.5 seconds to prevent visual clutter on the screen. Visual Polish: The boss UI was updated to include a brief description of the current boss, and the health/task progress bars were refined to match the strict minimalist aesthetic."}, {"post_id": 623, "ts": "2026-06-02T03:55:14Z", "hours": 7.1894, "text": "Overview This session focused entirely on improving the visual interface. No new game mechanics were added. The goal was to make the layout clearer, more informative, and more polished without introducing gradients or heavy visual effects. Changes Boss Panel The boss panel was restructured. The boss name and HP bar are now displayed in a compact stat block below the sprite. The HP bar was thinned down and simplified. A row of task progress dots was added beneath it, one dot per task. Each dot fills white when a task is completed. The active task pulses dimly to show the current position. This gives the player a clear sense of progress at a glance without needing to count tasks. A damage flash effect was also added. When the boss takes a hit, a red ring briefly expands around the sprite and fades out. This makes successful submissions feel more impactful. Task Panel The task panel was redesigned with a header row containing two badges: one showing the current task number out of the total, and one showing the HP damage the task will deal. The description is now treated as the main heading. The example code block was simplified with a minimal left border accent. The victory screen was also cleaned up. It now shows a small “BOSS DEFEATED” label above the title, consistent with the badge style used throughout the rest of the UI. Global Styles Google Fonts were loaded globally for Inter and JetBrains Mono. Custom scrollbar styles were applied to keep the dark theme consistent throughout. Default browser margin and padding resets were added. Notes The color palette is strictly black, white, and grays. No gradients, no colored backgrounds, no glow effects. The only color exception is the red damage badge and the low-HP bar state, which are intentional signals to the player."}, {"post_id": 401, "ts": "2026-06-01T19:53:37Z", "hours": 0.4581, "text": "Project Setup We initialized a React application using Vite for fast development and bundling. For the code editing experience, we integrated the Monaco Editor ( @monaco-editor /react) to provide a realistic coding interface. State Management We implemented a custom hook, useGameState, to handle the game’s state. This tracks the boss’s HP, current level, and player progress. All progress is persisted using localStorage so players can refresh the page without losing their game. User Interface We designed a dark-mode interface with a split layout. The left panel displays the “Loop Goblin” boss, their current HP, and a dynamic health bar. The right panel contains the task description and the Monaco Editor. We added CSS animations for taking damage and completing tasks to make the gameplay feel responsive. Gameplay Logic The first boss, Loop Goblin, starts with 100 HP. We implemented four introductory coding tasks: Writing a loop from 1 to 3 Creating a variable with the value 10 Writing a function named ‘attack’ Creating an array and using the ‘.length’ property For the MVP, code validation is handled through fast string matching rather than executing arbitrary JavaScript. This ensures security and simplicity while verifying the core concepts of the user’s input. Next Steps Deploy the initial MVP to Vercel. Add additional bosses and more complex tasks. Consider implementing a secure sandbox for executing user code in future versions."}]...
|
Title: Coding Boss Fight by @Xfhe | Stardance
Dev Title: Coding Boss Fight by @Xfhe | Stardance
Devlogs:
Project Setup We initialized a React application using Vite for fast development and bundling. For the code editing experience, we integrated the Monaco Editor ( @monaco-editor /react) to provide a realistic coding interface. State Management We implemented a custom hook, useGameState, to handle the game’s state. This tracks the boss’s HP, current level, and player progress. All progress is persisted using localStorage so players can refresh the page without losing their game. User Interface We designed a dark-mode interface with a split layout. The left panel displays the “Loop Goblin” boss, their current HP, and a dynamic health bar. The right panel contains the task description and the Monaco Editor. We added CSS animations for taking damage and completing tasks to make the gameplay feel responsive. Gameplay Logic The first boss, Loop Goblin, starts with 100 HP. We implemented four introductory coding tasks: Writing a loop from 1 to 3 Creating a variable with the value 10 Writing a function named ‘attack’ Creating an array and using the ‘.length’ property For the MVP, code validation is handled through fast string matching rather than executing arbitrary JavaScript. This ensures security and simplicity while verifying the core concepts of the user’s input. Next Steps Deploy the initial MVP to Vercel. Add additional bosses and more complex tasks. Consider implementing a secure sandbox for executing user code in future versions.
Overview This session focused entirely on improving the visual interface. No new game mechanics were added. The goal was to make the layout clearer, more informative, and more polished without introducing gradients or heavy visual effects. Changes Boss Panel The boss panel was restructured. The boss name and HP bar are now displayed in a compact stat block below the sprite. The HP bar was thinned down and simplified. A row of task progress dots was added beneath it, one dot per task. Each dot fills white when a task is completed. The active task pulses dimly to show the current position. This gives the player a clear sense of progress at a glance without needing to count tasks. A damage flash effect was also added. When the boss takes a hit, a red ring briefly expands around the sprite and fades out. This makes successful submissions feel more impactful. Task Panel The task panel was redesigned with a header row containing two badges: one showing the current task number out of the total, and one showing the HP damage the task will deal. The description is now treated as the main heading. The example code block was simplified with a minimal left border accent. The victory screen was also cleaned up. It now shows a small “BOSS DEFEATED” label above the title, consistent with the badge style used throughout the rest of the UI. Global Styles Google Fonts were loaded globally for Inter and JetBrains Mono. Custom scrollbar styles were applied to keep the dark theme consistent throughout. Default browser margin and padding resets were added. Notes The color palette is strictly black, white, and grays. No gradients, no colored backgrounds, no glow effects. The only color exception is the red damage badge and the low-HP bar state, which are intentional signals to the player.
Architecture and Routing The application now supports multiple distinct screens and states, moving beyond a single static view: Intro Screen: A landing page that introduces the game, lists the available bosses, and explains the rules. Boss Defeated Screen: A transition state that displays the player’s statistics for the defeated boss and previews the next challenge. Victory Screen: The final state reached after completing all content, presenting a summary of the player’s total time, attempts, and overall accuracy. Multi-Boss Support The hardcoded single-boss logic has been refactored. The game state now imports a structured array of bosses. A second boss, “Array Alchemist”, has been integrated into the loop. When a boss reaches zero HP, the game seamlessly transitions to the next boss in the sequence, resetting health while preserving total accumulated statistics. Audio Feedback To improve interaction, a lightweight audio system was introduced using the native Web Audio API. This avoids the need to load external MP3 files. Synthesized tones are now played during specific events: Correct submission (Hit) Incorrect submission (Miss) Boss Defeated Game Completed (Victory) Quality of Life Improvements Keyboard Shortcuts: Added a global event listener to the Monaco Editor. Players can now execute their code using Ctrl + Enter (or Cmd + Enter), greatly speeding up the trial-and-error process. Auto-dismissing Alerts: Feedback banners (success/error messages) are now automatically cleared after 2.5 seconds to prevent visual clutter on the screen. Visual Polish: The boss UI was updated to include a brief description of the current boss, and the health/task progress bars were refined to match the strict minimalist aesthetic.
New Feature Update We have added a new boss to the game to increase the challenge and cover more JavaScript concepts. Syntax Sorcerer The Syntax Sorcerer is the third boss you will face. This boss has 150 Health Points and tests your knowledge of more advanced JavaScript syntax. Tasks included for this boss: Arrow Functions: You must write an arrow function that returns a specific value. This helps practice modern function syntax. Error Handling: You are required to write a try-catch block. This is essential for managing errors in real applications. Spread Operator: You need to use the spread operator on an array. This tests your understanding of array manipulation. DOM Demon The DOM Demon is the fourth and final boss. This boss has 200 Health Points and tests your ability to interact with the Document Object Model (DOM). Tasks included for this boss: Selecting Elements: You must use methods like getElementById. Creating Elements: You need to create new HTML elements dynamically using createElement. Modifying Classes: You are required to manipulate an element’s classList. Event Listeners: You need to attach event listeners to elements to make them interactive. Combo System We introduced a Combo System to reward accurate coding. How it works: If you complete a task correctly on your very first try, your combo increases. Visuals: Your current combo is displayed at the top of the game interface during a run. Reset: If you make a mistake and get the answer wrong, your combo resets to zero. These additions make the game longer, provide a better learning curve, and add a layer of challenge for skilled players who want to maintain a high combo.
Player Health and Game OverPlayers now have a persistent health bar starting at 100 HP. Incorrect code submissions are no longer consequence-free. Every failed attempt causes the boss to attack, dealing 15 damage to the player. If the player’s health reaches zero, a Game Over screen is triggered, wiping all progress and forcing a complete restart.Combo System and HealingTo balance the strict punishment for errors, the combo system has been fully integrated into the gameplay loop. The UI now features dynamic combo badges that appear over the boss when players submit consecutive correct answers. Reaching a 3x combo mechanically rewards the player by healing them for 15 HP. This encourages careful code construction over brute-force trial and error.Live Speedrun TimerA live timer has been added to the top navigation bar. It actively tracks the time spent on the current boss combined with the historical time from previously defeated bosses. This adds a subtle layer of pressure and allows players to track their speedrun performance in real time.
Ships:
I built “Coding Boss Fight”, a browser-based RPG where players defeat bosses by solving real JavaScript coding challenges. The main challenge was managing complex game states across multiple screens (Intro, Boss Defeated, Victory) and building a custom sound system using the native Web Audio API instead of relying on external audio files. I am particularly proud of the smooth routing between different bosses and the minimalist, distraction-free UI design. To test the project, simply open the app, read the boss’s task requirements, write valid JavaScript in the built-in editor, and press Ctrl+Enter (or click Run) to attack.
Player Health and Game Over Players now have a persistent health bar starting at 100 HP. Incorrect code submissions are no longer consequence-free. Every failed attempt causes the boss to attack, dealing 15 damage to the player. If the player’s health reaches zero, a Game Over screen is triggered, wiping all progress and forcing a complete restart. Combo System and Healing To balance the strict punishment for errors, the combo system has been fully integrated into the gameplay loop. The UI now features dynamic combo badges that appear over the boss when players submit consecutive correct answers. Reaching a 3x combo mechanically rewards the player by healing them for 15 HP. This encourages careful code construction over brute-force trial and error. Live Speedrun Timer A live timer has been added to the top navigation bar. It actively tracks the time spent on the current boss combined with the historical time from previously defeated bosses. This adds a subtle layer of pressure and allows players to track their speedrun performance in real time....
|
1792972460.9109042
|
1793058860.9109042
|
|
5309
|
Project Kobon by @Bennett_Forcier | Stardance
|
Bennett_Forcier
|
1
|
22.0
|
369
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T22:44:47Z", "hours": 22.0, "multiplier": 16.89, "payout": 369, "blessing": "neutral", "text": "Project Kobon is finally shipped!!! I made a Python project that searches for Kobon triangle line arrangements, saves the best results, and includes a viewer for loading and visualizing the generated JSON files. The hardest parts were getting the solver logic working, building the DearPyGui viewer, and then fighting with PyInstaller to make the .exe. I’m proud that it now has a full loop: run the solver, generate results, open them in the viewer, and share the app without needing Python installed.", "repo": "https://github.com/MxpleSticks/Project-Kobon", "demo": "https://github.com/MxpleSticks/Project-Kobon/releases"}]...
|
[{"post_id": 18739, "ts": "202 [{"post_id": 18739, "ts": "2026-06-29T22:30:42Z", "hours": 0.9592, "text": "Finally Finished the EXE After a lot of annoying PyInstaller issues, Project Kobon finally works as a standalone Windows executable!!! This definitely took way longer than the 57 minutes that actually got logged."}, {"post_id": 13197, "ts": "2026-06-21T16:51:49Z", "hours": 2.7283, "text": "Project Update Adding Multi-Process Support This update allows Project Kobon to run multiple instances of the solver at the same time, to find more possible solutions and allows the use of more CPU power. Added multiprocessing so that multiple solver processes can run at the same time. Split the work to be done by the solver into separate workers that will run independently of each other. Each solver worker will search for solutions in different ways (due to using different random seeds). The results from each solver worker will be collected and the best solution found will be selected. A way to set the number of solver workers that will be used, depending on the available CPUs on the machine. All results will be reported using the reporter.py script."}, {"post_id": 8740, "ts": "2026-06-14T15:20:05Z", "hours": 3.4075, "text": "Project Update Finally Building the Viewer This update focused on creating viewer.py . A lot of the triangle calculation code was able to be reused from geometry.py , which made development like 1000x easier and let me focus on building the interface. Built the first working version of the viewer using Dear PyGui . Added support for importing the JSON files generated by Project Kobon. Added a visualizer that draws line arrangements and the triangles they create. Added controls for switching between different saved results."}, {"post_id": 7921, "ts": "2026-06-13T06:20:45Z", "hours": 1.1417, "text": "Project Update Improving the Main UI This update focused on improving the UI of main.py . Redesigned the terminal UI to make it cleaner and easier to navigate. Made menu options more readable and easier to understand. Improved the overall look of the program without changing its functionality."}, {"post_id": 7616, "ts": "2026-06-12T18:51:30Z", "hours": 1.2203, "text": "One small step for man, one giant leap for mankind Ok, not really, but this is the first working version of my pipeline :) This update focused on creating the reporting system and getting the different parts of the project working together. Created reporter.py , which sends solver results to a Discord webhook. Added support for saving the best arrangements as a JSON file. Included information like the score, line angles, and line offsets in the output data. Added a results summary showing the upper bound, line count, goal and top scores found by the solver. Tested the full pipeline from generating arrangements to receiving results through Discord. This is the first point in time where Project Kobon can complete a full run and produce a usable output. My next update will be building the viewer so the generated arrangements can be visualized instead of only being viewed as raw data. Don’t even try to use the webhook URL. I already deleted it."}, {"post_id": 6010, "ts": "2026-06-10T02:22:11Z", "hours": 3.0297, "text": "Project Update Adding Simulated Annealing This update was mainly about adding simulated annealing to Project Kobon. Before this, the project could generate random arrangements, but it could not actively search for better solutions. Created annealing.py , which contains the simulated annealing solver used to search for improved arrangements. Connected main.py to the new solver so users can run simulated annealing directly from the program menu. Updated some function names to make the code easier to read and maintain. Added support for running the solver for a fixed number of iterations or until it reaches a target gap from the theoretical upper bound. Tested the project on a freshly reset computer with a new installation of Python and C++. Everything worked correctly, showing that the project can be set up and run on a clean system."}, {"post_id": 4252, "ts": "2026-06-07T14:32:34Z", "hours": 5.2922, "text": "Project Update Building the Geometry System This update focused on developing the geometry system used by Project Kobon. This system takes an arrangement of lines, finds their intersection points, and counts how many Kobon triangles are present. Developed geometry.py , which calculates line intersections and counts triangles in an arrangement. Changed the project to use CPU-based calculations with NumPy . Added requirements.txt to simplify installation of project dependencies. Added a popup window to viewer.py for displaying information and instructions. Updated README.md with project information, installation steps, and usage instructions."}, {"post_id": 2425, "ts": "2026-06-04T22:03:56Z", "hours": 1.5867, "text": "Project Update Building the State System This update focused on creating the state system used by Project Kobon. The state system stores line arrangements and provides a way to make small changes to them. Created state.py and the LineState dataclass to store the angle and offset of each line. Added createRandomState() , which generates a random arrangement of k lines. Added nudge() , which creates a copy of an arrangement and randomly adjusts one line’s angle or offset. Updated main.py to work with the new state system. Tested the new functions to ensure line arrangements could be created and modified correctly."}, {"post_id": 1893, "ts": "2026-06-04T03:34:42Z", "hours": 0.5936, "text": "Project Update Creating the Viewer This update focused on creating the first version of the project viewer. Created viewer.py and set up a basic DearPyGui window. Learned the basics of working with DearPyGui . Added the ability to open a separate viewer window from the project. Removed config.py because it was no longer needed."}, {"post_id": 1836, "ts": "2026-06-04T01:37:40Z", "hours": 0.9683, "text": "Project Update Creating the Main Program This update I just built main.py , which acts as the main menu system for Project Kobon. Created main.py and added the main menu system. Added user input handling for selecting different program options. Added basic input validation. Added a simple way for users to configure solver parameters from the terminal."}, {"post_id": 1232, "ts": "2026-06-03T02:44:28Z", "hours": 0.4108, "text": "Project Update Writing the README This update focused on creating the first version of README.md . Added an overview explaining what Project Kobon is and its goal. Wrote a description of the Kobon Triangle Problem and why it is still unsolved. Added information about how the project relates to finding arrangements of lines with many non-overlapping triangles. Began documenting how the project will be used and expanded in future updates."}, {"post_id": 1157, "ts": "2026-06-03T00:25:04Z", "hours": 0.6092, "text": "Project Update Setting Up the Project This is my first devlog :) it will focus on setting up the initial structure for Project Kobon. Created the project’s basic file and folder layout. Set up the main modules that I will be using throughout development. Added the initial imports and project structure. Organized the codebase to separate the solver, theory, and viewer components. Began planning how the different parts of the project will work together."}]...
|
Title: Project Kobon by @Bennett_Forcier | Stardan Title: Project Kobon by @Bennett_Forcier | Stardance
Devlogs:
Project Update Setting Up the Project This is my first devlog :) it will focus on setting up the initial structure for Project Kobon. Created the project’s basic file and folder layout. Set up the main modules that I will be using throughout development. Added the initial imports and project structure. Organized the codebase to separate the solver, theory, and viewer components. Began planning how the different parts of the project will work together.
Project Update Writing the README This update focused on creating the first version of README.md . Added an overview explaining what Project Kobon is and its goal. Wrote a description of the Kobon Triangle Problem and why it is still unsolved. Added information about how the project relates to finding arrangements of lines with many non-overlapping triangles. Began documenting how the project will be used and expanded in future updates.
Project Update Creating the Main Program This update I just built main.py , which acts as the main menu system for Project Kobon. Created main.py and added the main menu system. Added user input handling for selecting different program options. Added basic input validation. Added a simple way for users to configure solver parameters from the terminal.
Project Update Creating the Viewer This update focused on creating the first version of the project viewer. Created viewer.py and set up a basic DearPyGui window. Learned the basics of working with DearPyGui . Added the ability to open a separate viewer window from the project. Removed config.py because it was no longer needed.
Project Update Building the State System This update focused on creating the state system used by Project Kobon. The state system stores line arrangements and provides a way to make small changes to them. Created state.py and the LineState dataclass to store the angle and offset of each line. Added createRandomState() , which generates a random arrangement of k lines. Added nudge() , which creates a copy of an arrangement and randomly adjusts one line’s angle or offset. Updated main.py to work with the new state system. Tested the new functions to ensure line arrangements could be created and modified correctly.
Project Update Building the Geometry System This update focused on developing the geometry system used by Project Kobon. This system takes an arrangement of lines, finds their intersection points, and counts how many Kobon triangles are present. Developed geometry.py , which calculates line intersections and counts triangles in an arrangement. Changed the project to use CPU-based calculations with NumPy . Added requirements.txt to simplify installation of project dependencies. Added a popup window to viewer.py for displaying information and instructions. Updated README.md with project information, installation steps, and usage instructions.
Project Update Adding Simulated Annealing This update was mainly about adding simulated annealing to Project Kobon. Before this, the project could generate random arrangements, but it could not actively search for better solutions. Created annealing.py , which contains the simulated annealing solver used to search for improved arrangements. Connected main.py to the new solver so users can run simulated annealing directly from the program menu. Updated some function names to make the code easier to read and maintain. Added support for running the solver for a fixed number of iterations or until it reaches a target gap from the theoretical upper bound. Tested the project on a freshly reset computer with a new installation of Python and C++. Everything worked correctly, showing that the project can be set up and run on a clean system.
One small step for man, one giant leap for mankind Ok, not really, but this is the first working version of my pipeline :) This update focused on creating the reporting system and getting the different parts of the project working together. Created reporter.py , which sends solver results to a Discord webhook. Added support for saving the best arrangements as a JSON file. Included information like the score, line angles, and line offsets in the output data. Added a results summary showing the upper bound, line count, goal and top scores found by the solver. Tested the full pipeline from generating arrangements to receiving results through Discord. This is the first point in time where Project Kobon can complete a full run and produce a usable output. My next update will be building the viewer so the generated arrangements can be visualized instead of only being viewed as raw data. Don’t even try to use the webhook URL. I already deleted it.
Project Update Improving the Main UI This update focused on improving the UI of main.py . Redesigned the terminal UI to make it cleaner and easier to navigate. Made menu options more readable and easier to understand. Improved the overall look of the program without changing its functionality.
Project Update Finally Building the Viewer This update focused on creating viewer.py . A lot of the triangle calculation code was able to be reused from geometry.py , which made development like 1000x easier and let me focus on building the interface. Built the first working version of the viewer using Dear PyGui . Added support for importing the JSON files generated by Project Kobon. Added a visualizer that draws line arrangements and the triangles they create. Added controls for switching between different saved results.
Project Update Adding Multi-Process Support This update allows Project Kobon to run multiple instances of the solver at the same time, to find more possible solutions and allows the use of more CPU power. Added multiprocessing so that multiple solver processes can run at the same time. Split the work to be done by the solver into separate workers that will run independently of each other. Each solver worker will search for solutions in different ways (due to using different random seeds). The results from each solver worker will be collected and the best solution found will be selected. A way to set the number of solver workers that will be used, depending on the available CPUs on the machine. All results will be reported using the reporter.py script.
Finally Finished the EXE After a lot of annoying PyInstaller issues, Project Kobon finally works as a standalone Windows executable!!! This definitely took way longer than the 57 minutes that actually got logged.
Ships:
Project Kobon is finally shipped!!! I made a Python project that searches for Kobon triangle line arrangements, saves the best results, and includes a viewer for loading and visualizing the generated JSON files. The hardest parts were getting the solver logic working, building the DearPyGui viewer, and then fighting with PyInstaller to make the .exe. I’m proud that it now has a full loop: run the solver, generate results, open them in the viewer, and share the app without needing Python installed....
|
1792972424.1836338
|
1793058824.1836338
|
|
25598
|
itinerarey by @nate | Stardance
|
nate
|
1
|
25.0
|
369
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T03:25:36Z", "hours": 25.0, "multiplier": 14.57, "payout": 369, "blessing": "neutral", "text": "Itinerarey is the better way to plan out your trips! When getting ready for a vacation, it can be incredibly stressful to plan out flights, hotels, activities, and more! So, I built itinerarey to make it a bit easier! It uses APIs and web scrapers to compile information from across the internet to have a centralized place to get information. The most challenging part of Itinerarey was the flights and hotels system. There are no free APIs (with good limits) for showing either, so I had to get a bit creative and spend a few hours researching. The flights system runs by contacting an API that runs a python web scraper that is hosted on Render, while the hotels call from an online Booking.com scraper. I am really proud of the recap page, mainly. To me, it feels like a representation of the entire project in its entireity. It shows everything the user did, and it works as a confirmation of every system performing as it should. For testing, please be aware that the render server mmight take up to a minute to load up. Also, due to web scraping being a bit finnicky, some results might not show up. If this happens, try clearing your localstorage and using a new destination. Enjoy your vacations! -nate", "repo": "https://github.com/Np3-0/itinerarey", "demo": "https://itinerarey.vercel.app/"}]...
|
[{"post_id": 73441, "ts": "202 [{"post_id": 73441, "ts": "2026-09-25T03:12:47Z", "hours": 3.2119, "text": "Itinerarey is complete! The last thing that I needed to get done was the recap page, which takes all the data in your localstorage and displays it for you! I had to rewrite how the flights and hotels are displayed to show the booking links, but overall it was pretty simple. The main thing that I am proud of is the budget tracker, which shows the prices for everything, including how much is leftover in the budget! This is done with some pretty simple math, but it definitely ties the project together. Lastly, the user can save a copy of this page to their computer. They can then also reset their localstorage to create a brand new trip! Lastly, I got the readme and license done (id take a look if I were you!), and finished deploying everything on vercel. Overall, I am really happy with how Itinerarey came out. I learned a lot about web scrapping and hosting websites from this project, which I hope will come in handy in the future! Thank you all for the support, stardance has been incredible! feel free to dm me in slack! - nate"}, {"post_id": 72073, "ts": "2026-09-22T03:31:50Z", "hours": 3.2789, "text": "The activities portion of the website is done! I did some research, and it turns out that the best way for me to find information on local events is AI! The way it works is by using Google Gemini along with Zod, which allows me to format my API requests to return in JSON. Since it has the same information each time, I can then just treat it as a regular API call. However, I might change it and put this on the backend to try to hide the API key. Anyways, we are almost at the end! The last major portion of the project is the recap page, where I plan to show all info on the trip, let users download, and maybe more! Today went pretty well, and I am excited to finally get this thing done."}, {"post_id": 70976, "ts": "2026-09-20T04:34:37Z", "hours": 3.3614, "text": "So… quick update, I tore my ACL! havent really been able to do much since, but today I sat down and got work done. Mainly, I got the hotels done! It works pretty similar to flights system, where the user is prompted with a list, and they choose whichever they want. Now, if you remember, I have been struggling with finding a hotel API, since amadeus shut down. Originally, the plan was rapidAPI, but the rate limits are horrid for that. After some very intense googling, I found omkar.cloud ! They have a bunch of web scrappers with a 200/month limit, so their booking.com API works perfectly. I genuinely was considering dropping the project from this, and I am so happy I found something that worked. Now, the future. There is like 10 days left in stardance, and I need to do the activities, final page, and fix deployment. Activities shouldn’t be that dificult, my plan is to use gemini and prompt it for activity ideas, and then format it to look cool? Im going to still do some research. Now, the main issue is deployment. Github pages doesn’t really support having a .env, so I tried switching to vercel. However, I now need to get localstorage (which I had to use as the cookie got too big lol) working on that, plus the flight API and everything else."}, {"post_id": 65159, "ts": "2026-09-10T03:14:31Z", "hours": 2.3381, "text": "Did I get work done on the hotels part? No! BUT, I did some very needed work on the flight system so that it should work in general. The main issue was that there was no way to convert from cities to airport codes, but I sat down and actually got it done. When the user enters a city and goes to the flight screen, a modal now appears. In the background, a function runs that gets the coordinates of the city, and then creates a 100 km circle around the location, returning all airports inside of it! Originally, the plan was to use nominatim for the geolocating, since it’s free, open source, and the goat, but I may have gotten IP banned for having it run 60 times a second for a good few minutes. (This is around 60 times the amount I am supposed to do it). I forgot to remove a variable from a dependency array. ANYWAYS, I used Mapbox instead! I have some experience with it, and its free tier is pretty comprehensive. Once the locations show on the modal, they choose which ones, it reloads to show departures, and then the same system as before applies! This works SO much better, and I’m really proud of the system."}, {"post_id": 61266, "ts": "2026-09-04T03:42:26Z", "hours": 1.16, "text": "So, I got some work done on itinerarey since. Mainly, I’ve been working on error trapping and trying to find a hotel’s API. Firstly, I am trying to use airport-data-js to convert city names to airports, but it returns the incorrect values usually. Otherwise, I got the base for the hotel page done. It’s going to look pretty similar to the flights, just with different information. Currently, I need to find an API that works for hotels, but it’s going to be a bit of a struggle. I tried fast-hotels, but they are no longer maintained, or at least the current version broke on me. Wish me luck!"}, {"post_id": 59366, "ts": "2026-09-01T03:57:08Z", "hours": 1.375, "text": "The flight system is complete! To reiterate how it works, once you put in a date, a render server with an API is called that uses Python to scrape Google Flights and return (hopefully) accurate flight data. Then, a user chooses the flight they want, it gets saved to the cookie, and it does the same actions for the return flight. The main issue I had with this was getting to swap between departure and returns, since it required some refactoring of the code. It wasn’t anything too bad, though. Next up is going to be finding a hotel API. This is going to be probably just as annoying as with the flights, but there is only one way to find out. That’ll be tomorrow, though; I am so tired right now lol. Lastly, I am writing this 3 minutes before my time as a Stardance Ambassador ends. I want to thank the team for letting me take this role; Nay-nay and Alex for their help; and everyone whom I’ve interacted with. While the role is done, I’m going to finish this project!"}, {"post_id": 57779, "ts": "2026-08-30T02:17:46Z", "hours": 0.9856, "text": "Now, the flights will actually show up in the website! Using the API, I get an array, and then each flight is put into a custom object that allows it to be displayed! Each option includes basic info such as airline, price, legs, locations, timings, and more! Now that it is styled, the next goal is to save flights to the cookie, and than rerun the same process for the return flight! Overall, I think it looks pretty good!"}, {"post_id": 52020, "ts": "2026-08-22T01:49:59Z", "hours": 1.9211, "text": "This time is fully my bad, I sort of (100%) forgot about this. ANYWAYS, I got some of the biggest progress done yet. Firstly, I got trips to save as cookies in your browser, since its an easier way for me to store data across the website. dont worry, im not stealing your data or anything lol. Then, I did some research (with help from Claude) and found fast-flights, a Python library that is basically a Google Flights scraper, so it works perfectly. Except it’s a Python library… on a React website. So, I created a seperate repo that contains an API that requests the library and hosted it on render.com. One note is that the links supplied reroute to google flights, so users will have to be careful with choosing correctly. Sadly, theres really no good free options for a flight API (literally everyone shut theirs down lol). Lastly, I connected it all together by writing the base code for querying the API and getting the data back. I do need to actually format it, modify it to work with my data, and display it. But, its a good stopping point for now. By next time, I want to have the flights page looking good, and my API to be more polished!"}, {"post_id": 38419, "ts": "2026-07-31T19:38:47Z", "hours": 1.1278, "text": "So… its been a minute! I’ve been out of state doing an engineering program at ND for the past few weeks, and I am FINALLY back home! So, here’s what I got done today! I finished the layout (for now) on for the planning page. For now, you put in the departure/arrival, number of people, dates, and overall budgets. The worst part of getting it to work was the date picker. I spent like 2 hours researching different date-range pickers and trying them out, such as react aria, react-date-range, and more. Eventually, I settled on cally since its lightweight, easy to customize, and didn’t require me to spend 3 hours making it work! I also created a new input type to shrink the file size down. For the future, I plan to get data to actually save in the app, and then start looking for a flights API. The API is going to be an issue. There is really not a lot of choices for a free and large-scale API for what I want. But, its the internet. Theres gotta be something! the website thats published isn’t updated yet, since I have some code that needs to be implemented before I can redeploy."}, {"post_id": 23955, "ts": "2026-07-07T05:30:43Z", "hours": 2.0186, "text": "I started to get some work done on the planning settings! Mainly, I need to track budgets, dates, and what the user actually wants to do and spend money on. The main issue I am currently having is making the date system work. I am going to do more research, though!"}, {"post_id": 21772, "ts": "2026-07-03T21:28:54Z", "hours": 0.9672, "text": "The home page is completely done! I spent around an hour adding in all of the other info, mainly about how the program works. I also spent a decent amount of time redoing the file structure of the website, just so everything is more organized. Now, I have to find the APIs I need. Google Flights doesn’t have one, so I am going to need to do some deep research."}, {"post_id": 20522, "ts": "2026-07-02T04:20:43Z", "hours": 0.6714, "text": "Been on vacation so progress been slow but here’s what I got done! Mainly, the search bar is done! I haven’t been able to program my custom algorithm yet, so right now it just links to google maps. I tried to mimic websites like Kayak and Google Earth, and I think its pretty decent. The main issue I had was with the website crashing when clicking the search bar. ThreeJS couldnt handle the pointer event (it doesnt really make sense), but with changing the z-order and adding a LOT of e.stoppropagation() fixed it. Overall, good progress, and next post I want to get the home page done!"}, {"post_id": 18112, "ts": "2026-06-29T03:36:57Z", "hours": 0.5631, "text": "Two major things for today: I fixed responsiveness, so it looks better on small screens. Also, I started work on the search bar. I have to style it, but its coming along well! shoutout to my friends @ fallout, wish i was allowed to come with! enjoy!"}, {"post_id": 16726, "ts": "2026-06-27T05:22:25Z", "hours": 0.9508, "text": "Card system works! When you click on a point (I added more), with around 3 per continent except Australia, a popup with basic info, a photo, and a button shows up. The button will eventually go to the itinerary algorithim, but for now just links to google maps. I have to make it responsive, but tomorrow I will (hopefully) finish the base page. check it out here!"}, {"post_id": 15870, "ts": "2026-06-25T19:58:46Z", "hours": 1.4225, "text": "Itinerarey (get it?) is going to be a website where you can put in a plan for a trip and get a full detailed list of what you can do, taking into consideration price, dates, and suggested ideas. I got this idea while waiting at EWR for 3 hours before my flight got cancelled, lol. I was supposed to go to Atlanta, and I would have had a free day by myself. If I had this, I could have figured out what to do. The plan is to take data from APIs to get flights, hotels, and other stuff, and combine it with AI to get a full list of what to do! But, so far, all I got done is the start of the hero page. I want to have a globe spinning in the BG with points that can pop up some ideas, which I got done using globe.gl. The points are not coded in yet to pop up, but that’ll be later."}]...
|
Title: itinerarey by @nate | Stardance
Devlogs:
I Title: itinerarey by @nate | Stardance
Devlogs:
Itinerarey (get it?) is going to be a website where you can put in a plan for a trip and get a full detailed list of what you can do, taking into consideration price, dates, and suggested ideas. I got this idea while waiting at EWR for 3 hours before my flight got cancelled, lol. I was supposed to go to Atlanta, and I would have had a free day by myself. If I had this, I could have figured out what to do. The plan is to take data from APIs to get flights, hotels, and other stuff, and combine it with AI to get a full list of what to do! But, so far, all I got done is the start of the hero page. I want to have a globe spinning in the BG with points that can pop up some ideas, which I got done using globe.gl. The points are not coded in yet to pop up, but that’ll be later.
Card system works! When you click on a point (I added more), with around 3 per continent except Australia, a popup with basic info, a photo, and a button shows up. The button will eventually go to the itinerary algorithim, but for now just links to google maps. I have to make it responsive, but tomorrow I will (hopefully) finish the base page. check it out here!
Two major things for today: I fixed responsiveness, so it looks better on small screens. Also, I started work on the search bar. I have to style it, but its coming along well! shoutout to my friends @ fallout, wish i was allowed to come with! enjoy!
Been on vacation so progress been slow but here’s what I got done! Mainly, the search bar is done! I haven’t been able to program my custom algorithm yet, so right now it just links to google maps. I tried to mimic websites like Kayak and Google Earth, and I think its pretty decent. The main issue I had was with the website crashing when clicking the search bar. ThreeJS couldnt handle the pointer event (it doesnt really make sense), but with changing the z-order and adding a LOT of e.stoppropagation() fixed it. Overall, good progress, and next post I want to get the home page done!
The home page is completely done! I spent around an hour adding in all of the other info, mainly about how the program works. I also spent a decent amount of time redoing the file structure of the website, just so everything is more organized. Now, I have to find the APIs I need. Google Flights doesn’t have one, so I am going to need to do some deep research.
I started to get some work done on the planning settings! Mainly, I need to track budgets, dates, and what the user actually wants to do and spend money on. The main issue I am currently having is making the date system work. I am going to do more research, though!
So… its been a minute! I’ve been out of state doing an engineering program at ND for the past few weeks, and I am FINALLY back home! So, here’s what I got done today! I finished the layout (for now) on for the planning page. For now, you put in the departure/arrival, number of people, dates, and overall budgets. The worst part of getting it to work was the date picker. I spent like 2 hours researching different date-range pickers and trying them out, such as react aria, react-date-range, and more. Eventually, I settled on cally since its lightweight, easy to customize, and didn’t require me to spend 3 hours making it work! I also created a new input type to shrink the file size down. For the future, I plan to get data to actually save in the app, and then start looking for a flights API. The API is going to be an issue. There is really not a lot of choices for a free and large-scale API for what I want. But, its the internet. Theres gotta be something! the website thats published isn’t updated yet, since I have some code that needs to be implemented before I can redeploy.
This time is fully my bad, I sort of (100%) forgot about this. ANYWAYS, I got some of the biggest progress done yet. Firstly, I got trips to save as cookies in your browser, since its an easier way for me to store data across the website. dont worry, im not stealing your data or anything lol. Then, I did some research (with help from Claude) and found fast-flights, a Python library that is basically a Google Flights scraper, so it works perfectly. Except it’s a Python library… on a React website. So, I created a seperate repo that contains an API that requests the library and hosted it on render.com. One note is that the links supplied reroute to google flights, so users will have to be careful with choosing correctly. Sadly, theres really no good free options for a flight API (literally everyone shut theirs down lol). Lastly, I connected it all together by writing the base code for querying the API and getting the data back. I do need to actually format it, modify it to work with my data, and display it. But, its a good stopping point for now. By next time, I want to have the flights page looking good, and my API to be more polished!
Now, the flights will actually show up in the website! Using the API, I get an array, and then each flight is put into a custom object that allows it to be displayed! Each option includes basic info such as airline, price, legs, locations, timings, and more! Now that it is styled, the next goal is to save flights to the cookie, and than rerun the same process for the return flight! Overall, I think it looks pretty good!
The flight system is complete! To reiterate how it works, once you put in a date, a render server with an API is called that uses Python to scrape Google Flights and return (hopefully) accurate flight data. Then, a user chooses the flight they want, it gets saved to the cookie, and it does the same actions for the return flight. The main issue I had with this was getting to swap between departure and returns, since it required some refactoring of the code. It wasn’t anything too bad, though. Next up is going to be finding a hotel API. This is going to be probably just as annoying as with the flights, but there is only one way to find out. That’ll be tomorrow, though; I am so tired right now lol. Lastly, I am writing this 3 minutes before my time as a Stardance Ambassador ends. I want to thank the team for letting me take this role; Nay-nay and Alex for their help; and everyone whom I’ve interacted with. While the role is done, I’m going to finish this project!
So, I got some work done on itinerarey since. Mainly, I’ve been working on error trapping and trying to find a hotel’s API. Firstly, I am trying to use airport-data-js to convert city names to airports, but it returns the incorrect values usually. Otherwise, I got the base for the hotel page done. It’s going to look pretty similar to the flights, just with different information. Currently, I need to find an API that works for hotels, but it’s going to be a bit of a struggle. I tried fast-hotels, but they are no longer maintained, or at least the current version broke on me. Wish me luck!
Did I get work done on the hotels part? No! BUT, I did some very needed work on the flight system so that it should work in general. The main issue was that there was no way to convert from cities to airport codes, but I sat down and actually got it done. When the user enters a city and goes to the flight screen, a modal now appears. In the background, a function runs that gets the coordinates of the city, and then creates a 100 km circle around the location, returning all airports inside of it! Originally, the plan was to use nominatim for the geolocating, since it’s free, open source, and the goat, but I may have gotten IP banned for having it run 60 times a second for a good few minutes. (This is around 60 times the amount I am supposed to do it). I forgot to remove a variable from a dependency array. ANYWAYS, I used Mapbox instead! I have some experience with it, and its free tier is pretty comprehensive. Once the locations show on the modal, they choose which ones, it reloads to show departures, and then the same system as before applies! This works SO much better, and I’m really proud of the system.
So… quick update, I tore my ACL! havent really been able to do much since, but today I sat down and got work done. Mainly, I got the hotels done! It works pretty similar to flights system, where the user is prompted with a list, and they choose whichever they want. Now, if you remember, I have been struggling with finding a hotel API, since amadeus shut down. Originally, the plan was rapidAPI, but the rate limits are horrid for that. After some very intense googling, I found omkar.cloud ! They have a bunch of web scrappers with a 200/month limit, so their booking.com API works perfectly. I genuinely was considering dropping the project from this, and I am so happy I found something that worked. Now, the future. There is like 10 days left in stardance, and I need to do the activities, final page, and fix deployment. Activities shouldn’t be that dificult, my plan is to use gemini and prompt it for activity ideas, and then format it to look cool? Im going to still do some research. Now, the main issue is deployment. Github pages doesn’t really support having a .env, so I tried switching to vercel. However, I now need to get localstorage (which I had to use as the cookie got too big lol) working on that, plus the flight API and everything else.
The activities portion of the website is done! I did some research, and it turns out that the best way for me to find information on local events is AI! The way it works is by using Google Gemini along with Zod, which allows me to format my API requests to return in JSON. Since it has the same information each time, I can then just treat it as a regular API call. However, I might change it and put this on the backend to try to hide the API key. Anyways, we are almost at the end! The last major portion of the project is the recap page, where I plan to show all info on the trip, let users download, and maybe more! Today went pretty well, and I am excited to finally get this thing done.
Itinerarey is complete! The last thing that I needed to get done was the recap page, which takes all the data in your localstorage and displays it for you! I had to rewrite how the flights and hotels are displayed to show the booking links, but overall it was pretty simple. The main thing that I am proud of is the budget tracker, which shows the prices for everything, including how much is leftover in the budget! This is done with some pretty simple math, but it definitely ties the project together. Lastly, the user can save a copy of this page to their computer. They can then also reset their localstorage to create a brand new trip! Lastly, I got the readme and license done (id take a look if I were you!), and finished deploying everything on vercel. Overall, I am really happy with how Itinerarey came out. I learned a lot about web scrapping and hosting websites from this project, which I hope will come in handy in the future! Thank you all for the support, stardance has been incredible! feel free to dm me in slack! - nate
Ships:
Itinerarey is the better way to plan out your trips! When getting ready for a vacation, it can be incredibly stressful to plan out flights, hotels, activities, and more! So, I built itinerarey to make it a bit easier! It uses APIs and web scrapers to compile information from across the internet to have a centralized place to get information. The most challenging part of Itinerarey was the flights and hotels system. There are no free APIs (with good limits) for showing either, so I had to get a bit creative and spend a few hours researching. The flights system runs by contacting an API that runs a python web scraper that is hosted on Render, while the hotels call from an online Booking.com scraper. I am really proud of the recap page, mainly. To me, it feels like a representation of the entire project in its entireity. It shows everything the user did, and it works as a confirmation of every system performing as it should. For testing, please be aware that the render server mmight take up to a minute to load up. Also, due to web scraping being a bit finnicky, some results might not show up. If this happens, try clearing your localstorage and using a new destination. Enjoy your vacations! -nate...
|
1793008128.911999
|
1793094528.911999
|
|
18567
|
SecureVault by @F3rro_32 | Stardance
|
F3rro_32
|
2
|
39.0
|
367
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T18:11:39Z", "hours": 4.0, "multiplier": 12.33, "payout": 49, "blessing": "neutral", "text": "Just improved some things, mostly advices from other users.", "repo": "https://github.com/eLandoAD/Rila", "demo": "https://securevault.alessio.hackclub.app/"}, {"ship_num": 2, "ts": "2026-07-15T09:49:13Z", "hours": 35.0, "multiplier": 9.05, "payout": 318, "blessing": "neutral", "text": "SecureVault, zero knowledge, end-to-end encrypted cloud storage. Your files and their names are encrypted in the browser before they ever reach the server, which only ever stores ciphertext it can’t read.", "repo": "https://github.com/eLandoAD/Rila", "demo": "https://securevault.alessio.hackclub.app/"}]...
|
[{"post_id": 70745, "ts": "202 [{"post_id": 70745, "ts": "2026-09-19T18:11:08Z", "hours": 3.2156, "text": "devlog Hey guys, how’s going? I’m pretty well, I have loads of things to do, but there’s always time for my biggest passion, coding. Yesterday I turned on a strinct CSP (content security policy) for this project, so today the pricing section looked like the one in the first screen. The Popular badge had no pill behind it, it was just the word, with the card’s border running straight through it. The higlighted card’s border was white, instead of indigo. Also the Get Pro was the same flat grey as the two buttons next to it. It looked like a CSS mistake, but actually it wasn’t. “It worked on my machine” ng serve rendered it correctly. Same commit, same browser. That is the part that cost me the most time: I kept hunting for a rule that only existed in production. So I stopped reading CSS and read the live page instead: --color-primary → \"\" (empty) badge background → rgba(0, 0, 0, 0) (transparent) card border → rgb(255, 255, 255) --color-primary wasn’t defined at all. And when a custom property is undefined, background-color: var(--color-primary) computes to transparent , while border-color: var(--color-primary) falls back to currentColor , which on that section is white. One missing variable, and every symptom follows from it, including the ones that look unrelated. Where the variable went Angular’s production build enables inlineCritical . It inlines the critical CSS and defers the rest of the stylesheet like this: <link rel= \"stylesheet\" href= \"styles-XXXX.css\" media= \"print\" onload= \"this.media='all'\" > That onload is an inline event handler , and script-src 'self' blocks inline handlers. So the handler never ran, the stylesheet stayed at media=\"print\" , and it was never applied. For a whole day the site had been running on nothing but the inlined critical CSS, and the theme tokens live in the file that never loaded. ng serve doesn’t run inlineCritical . That’s the entire reason it only happened in production. The fix is one flag in angular.json : \"optimization\" : { \"styles\" : { \"minify\" : true , \"inlineCritical\" : false } } The stylesheet now ships as a plain blocking <link> . One render-blocking request, ~20 KB gzipped, and the CSP stays exactly as strict as it was."}, {"post_id": 32224, "ts": "2026-07-21T08:07:59Z", "hours": 0.7983, "text": "I don’t know why, but the db crashed, so the backend wasn’t working and many of you couldn’t test out the app. I just fixed this problem, and added in docker compose the restart clause, so things like this won’t happen again. Sorry for the problem"}, {"post_id": 28809, "ts": "2026-07-15T09:41:17Z", "hours": 1.2811, "text": "Finished the project. I used a seo checker to improve the seo, at least, what I can actually improve. I then focused on writing the md files. The readme and the security.md, that displays all infos about how crypto works and in general terms, security. I hope you like the project."}, {"post_id": 28422, "ts": "2026-07-14T17:36:22Z", "hours": 6.4156, "text": "Hey guys, here I am again. Lately I focused a lot on improving both the website and the overall user experience. The first thing I did was completely redesign the landing page. I switched everything to a dark theme, added a new hero section with a background image and gradient overlay, and converted every section into dark cards to make the design feel much more consistent. I also reworked the pricing section Finally, I added smooth navigation between sections using anchor links. I also redesigned the navigation bar. On desktop and tablets it stays at the top as expected, while on mobile it moves to the bottom of the screen for easier access. During this process I removed the old hamburger menu. The file manager received one of the biggest UI updates. On mobile there’s now a bottom navigation bar with a floating upload button in the center. The Files page no longer uses a traditional table; instead, files are displayed as modern cards with encryption badges and a cleaner action menu that groups all available operations together. I also fixed some spacing issues on the login page caused by the fixed navbar. Besides the UI, I spent some time improving the website from a technical perspective. I configured gzip compression, hid unnecessary server information, fixed some SEO issues like duplicated headings, and added both a robots.txt file and a sitemap. Another important feature I implemented is the new Settings page. It now includes profile information, security settings, storage usage, and account management. I decided to keep the interface honest: only features that are actually supported by the backend are available, while future ones are clearly disabled. I also implemented permanent account deletion, both on the backend and frontend, making sure all related data is safely removed before the user is deleted. I added a lot, I hope everything works as I expect. See ya"}, {"post_id": 25831, "ts": "2026-07-10T09:45:28Z", "hours": 3.4414, "text": "Okay guys, big news: I was finally able to get an SMTP server from a friend of mine, so now email verification and password recovery are working. I’m pretty satisfied; I really wanted this app to work as well as possible, and with email support, it feels even more complete. Stay tuned, because it won’t be long before it’s ready."}, {"post_id": 24603, "ts": "2026-07-08T09:57:29Z", "hours": 0.7383, "text": "Hey guys, I know this isn’t a proper devlog, but I wanted to show you this new tool I used yesterday, called graphify. Basically you take an AI, and you install graphify on it. It will create this graph, that represents the project. I find it really useful for my actual process, reviewing. As you can see, I just need to start from the biggest Node, which is the “center” of the project, and then link every other Node. The nice thing is that you can also ask questions, and the AI will respond also taking in consideration the graph, so the response will be more accurate. I strongly advice this tool for reviewing the code and improving the “style” of the code. I hope you like it"}, {"post_id": 24026, "ts": "2026-07-07T09:39:58Z", "hours": 4.4797, "text": "Hi guys Lately I did much work. First of all, security audit fixes. I bound internal ports to localhost; moved JWT secret to a real random value in .env; hardened rate limiting (to avoid spoofing); set file uploading limit to 40MB and switched uploads/downloads to streaming so files aren’t loaded whole into RAM. Sharing rework (the main piece). Before, each user had one master DEK that encrypted all their files, and sharing sent that master DEK to the server in cleartext, so the server could decrypt shared files, and sharing one file handed over the key to every file. Now the master DEK only wraps other keys. Each file has its own random DEK (encrypting its content and name), stored wrapped by the master DEK. Each user has an RSA keypair: the public key is stored in cleartext, the private key is wrapped by the master DEK (so password reset and recovery keep working without extra code). To share, the sender fetches the recipient’s public key and RSA-encrypts only that file’s DEK; the recipient decrypts it with their private key. The server never sees a key in cleartext, and the recipient gets access to only that one file. Public links work the same way, carrying the DEK for each file in the URL fragment (never sent to the server), with a revoke action. To clean the code I also made an interfaces refactor. Moved all TypeScript interfaces into core/interfaces/, one per file (I), updated imports, removed the old model files. I’m quite done, I still have to review some graphical aspects and improve some things in the code, but I think I’ll be done this week."}, {"post_id": 21523, "ts": "2026-07-03T15:14:16Z", "hours": 0.6814, "text": "Okay guys, big problem. I realized I haven’t solved my problem with sharing files. I actually made things worse. Now each user has one DEK that is used for encryption of all their files. Two issues: the server is able to read the key (it decrypts shared files, thus E2EE is not provided), and when you give a person access to one file, you give the person access to all files. The solution I need to implement: the master DEK will not be used for encrypting the files anymore, but will become a wrapping key, each file will have its own DEK which encrypts data in this particular file, and this DEK will be wrapped by the master DEK. Each user should also have a key pair for RSA encryption: the public part of the key will be in cleartext, while the private part will be wrapped by the master DEK. When a user shares a file, they encrypt only the DEK of this file with the recipient’s public RSA key, the recipient decrypts it with the private RSA key, and the server does not see any key in cleartext. Wrapping the private key with the master DEK (not the password) means it’s recovered for free via the recovery key and survives password resets, so the existing login/recovery code stays untouched. I hope to be able to fix this problem in reasonable time. I’ll stay in touch for further clarification and devlogs P.S. in the screen you can see the DEK, proof for my thesis."}, {"post_id": 21487, "ts": "2026-07-03T13:52:44Z", "hours": 1.5675, "text": "Still improving the application. I want everything to be the best as possible. I fixed some minor bugs in fronted, mostly with the crypto service. I had some problems with the sharing of files, I realized I was also sharing the DEK of the user, which is really a problem since the receiver could, from that moment, decrypt every sender file. After fixing it I improved some things in the backend, like the process of uploading and downloading files. Another important thing I fixed is the preview. The problem is that before I was opening the file directly in RAM, which, as I explained in some prev devlog, is a problem, since I have only 2 gb of ram. The important thing is that I was able to fix it, by opening it on disk."}, {"post_id": 20927, "ts": "2026-07-02T17:28:01Z", "hours": 3.2586, "text": "Still working for improving the app. I’m slowly changing simple details, and fixing bugs, like rate limiting for api, uploading dimensions and so on. As you can see from the screens, I also added the “fake” email inbox, that allows to verify the email. This was a solution I came up yesterday, to avoid using an SMTP server. I hope you find it reasonable."}, {"post_id": 19956, "ts": "2026-07-01T12:38:11Z", "hours": 3.2114, "text": "Still improving the website and checking security. I hope everything works well and is secure. I’m now focusing on fixing small bugs, and improving UI. Something I still have to figure out, is how to manage SMTP. I don’t know if I’ll just skip this part and open a link in the browser, that works like the mail. Idk In the meanwhile I’m also addressing some memory issues, since the container given by Nest is just 2 GB in ram, so I have to optimize everything, to make the app work correctly. A thing I found really useful in this project is committing with claude. Many times I don’t know what to write, and many commits are too vague, so Claude is really helpful for this task."}, {"post_id": 18321, "ts": "2026-06-29T12:57:25Z", "hours": 5.4161, "text": "I’m slowly compelting this project. I uploaded everything on #Nest, very useful. I still have to find a solution for the SMTP service, but I’m sure I’ll find something. I’m currently fixing some graphical isseus, for example I fixed the responsivety of the application, mostly the lateral navbar. Before the release, I want to fix some other problems and things I don’t like. Additionaly I want to test everything and be sure that the encryption is secure and working correctly."}, {"post_id": 9105, "ts": "2026-06-15T07:01:04Z", "hours": 4.8314, "text": "I’m currently working on secureVault, a E2E platform which allows people to store securely files and organize them in folder. Additionaly there’s the possibility to share files. It follows a lot of directives to mantain everything crypted. I had already started this project, so it isn’t fully logged. Stay tuned."}]...
|
Title: SecureVault by @F3rro_32 | Stardance
Devlo Title: SecureVault by @F3rro_32 | Stardance
Devlogs:
I’m currently working on secureVault, a E2E platform which allows people to store securely files and organize them in folder. Additionaly there’s the possibility to share files. It follows a lot of directives to mantain everything crypted. I had already started this project, so it isn’t fully logged. Stay tuned.
I’m slowly compelting this project. I uploaded everything on #Nest, very useful. I still have to find a solution for the SMTP service, but I’m sure I’ll find something. I’m currently fixing some graphical isseus, for example I fixed the responsivety of the application, mostly the lateral navbar. Before the release, I want to fix some other problems and things I don’t like. Additionaly I want to test everything and be sure that the encryption is secure and working correctly.
Still improving the website and checking security. I hope everything works well and is secure. I’m now focusing on fixing small bugs, and improving UI. Something I still have to figure out, is how to manage SMTP. I don’t know if I’ll just skip this part and open a link in the browser, that works like the mail. Idk In the meanwhile I’m also addressing some memory issues, since the container given by Nest is just 2 GB in ram, so I have to optimize everything, to make the app work correctly. A thing I found really useful in this project is committing with claude. Many times I don’t know what to write, and many commits are too vague, so Claude is really helpful for this task.
Still working for improving the app. I’m slowly changing simple details, and fixing bugs, like rate limiting for api, uploading dimensions and so on. As you can see from the screens, I also added the “fake” email inbox, that allows to verify the email. This was a solution I came up yesterday, to avoid using an SMTP server. I hope you find it reasonable.
Still improving the application. I want everything to be the best as possible. I fixed some minor bugs in fronted, mostly with the crypto service. I had some problems with the sharing of files, I realized I was also sharing the DEK of the user, which is really a problem since the receiver could, from that moment, decrypt every sender file. After fixing it I improved some things in the backend, like the process of uploading and downloading files. Another important thing I fixed is the preview. The problem is that before I was opening the file directly in RAM, which, as I explained in some prev devlog, is a problem, since I have only 2 gb of ram. The important thing is that I was able to fix it, by opening it on disk.
Okay guys, big problem. I realized I haven’t solved my problem with sharing files. I actually made things worse. Now each user has one DEK that is used for encryption of all their files. Two issues: the server is able to read the key (it decrypts shared files, thus E2EE is not provided), and when you give a person access to one file, you give the person access to all files. The solution I need to implement: the master DEK will not be used for encrypting the files anymore, but will become a wrapping key, each file will have its own DEK which encrypts data in this particular file, and this DEK will be wrapped by the master DEK. Each user should also have a key pair for RSA encryption: the public part of the key will be in cleartext, while the private part will be wrapped by the master DEK. When a user shares a file, they encrypt only the DEK of this file with the recipient’s public RSA key, the recipient decrypts it with the private RSA key, and the server does not see any key in cleartext. Wrapping the private key with the master DEK (not the password) means it’s recovered for free via the recovery key and survives password resets, so the existing login/recovery code stays untouched. I hope to be able to fix this problem in reasonable time. I’ll stay in touch for further clarification and devlogs P.S. in the screen you can see the DEK, proof for my thesis.
Hi guys Lately I did much work. First of all, security audit fixes. I bound internal ports to localhost; moved JWT secret to a real random value in .env; hardened rate limiting (to avoid spoofing); set file uploading limit to 40MB and switched uploads/downloads to streaming so files aren’t loaded whole into RAM. Sharing rework (the main piece). Before, each user had one master DEK that encrypted all their files, and sharing sent that master DEK to the server in cleartext, so the server could decrypt shared files, and sharing one file handed over the key to every file. Now the master DEK only wraps other keys. Each file has its own random DEK (encrypting its content and name), stored wrapped by the master DEK. Each user has an RSA keypair: the public key is stored in cleartext, the private key is wrapped by the master DEK (so password reset and recovery keep working without extra code). To share, the sender fetches the recipient’s public key and RSA-encrypts only that file’s DEK; the recipient decrypts it with their private key. The server never sees a key in cleartext, and the recipient gets access to only that one file. Public links work the same way, carrying the DEK for each file in the URL fragment (never sent to the server), with a revoke action. To clean the code I also made an interfaces refactor. Moved all TypeScript interfaces into core/interfaces/, one per file (I), updated imports, removed the old model files. I’m quite done, I still have to review some graphical aspects and improve some things in the code, but I think I’ll be done this week.
Hey guys, I know this isn’t a proper devlog, but I wanted to show you this new tool I used yesterday, called graphify. Basically you take an AI, and you install graphify on it. It will create this graph, that represents the project. I find it really useful for my actual process, reviewing. As you can see, I just need to start from the biggest Node, which is the “center” of the project, and then link every other Node. The nice thing is that you can also ask questions, and the AI will respond also taking in consideration the graph, so the response will be more accurate. I strongly advice this tool for reviewing the code and improving the “style” of the code. I hope you like it
Okay guys, big news: I was finally able to get an SMTP server from a friend of mine, so now email verification and password recovery are working. I’m pretty satisfied; I really wanted this app to work as well as possible, and with email support, it feels even more complete. Stay tuned, because it won’t be long before it’s ready.
Hey guys, here I am again. Lately I focused a lot on improving both the website and the overall user experience. The first thing I did was completely redesign the landing page. I switched everything to a dark theme, added a new hero section with a background image and gradient overlay, and converted every section into dark cards to make the design feel much more consistent. I also reworked the pricing section Finally, I added smooth navigation between sections using anchor links. I also redesigned the navigation bar. On desktop and tablets it stays at the top as expected, while on mobile it moves to the bottom of the screen for easier access. During this process I removed the old hamburger menu. The file manager received one of the biggest UI updates. On mobile there’s now a bottom navigation bar with a floating upload button in the center. The Files page no longer uses a traditional table; instead, files are displayed as modern cards with encryption badges and a cleaner action menu that groups all available operations together. I also fixed some spacing issues on the login page caused by the fixed navbar. Besides the UI, I spent some time improving the website from a technical perspective. I configured gzip compression, hid unnecessary server information, fixed some SEO issues like duplicated headings, and added both a robots.txt file and a sitemap. Another important feature I implemented is the new Settings page. It now includes profile information, security settings, storage usage, and account management. I decided to keep the interface honest: only features that are actually supported by the backend are available, while future ones are clearly disabled. I also implemented permanent account deletion, both on the backend and frontend, making sure all related data is safely removed before the user is deleted. I added a lot, I hope everything works as I expect. See ya
Finished the project. I used a seo checker to improve the seo, at least, what I can actually improve. I then focused on writing the md files. The readme and the security.md, that displays all infos about how crypto works and in general terms, security. I hope you like the project.
I don’t know why, but the db crashed, so the backend wasn’t working and many of you couldn’t test out the app. I just fixed this problem, and added in docker compose the restart clause, so things like this won’t happen again. Sorry for the problem
devlog Hey guys, how’s going? I’m pretty well, I have loads of things to do, but there’s always time for my biggest passion, coding. Yesterday I turned on a strinct CSP (content security policy) for this project, so today the pricing section looked like the one in the first screen. The Popular badge had no pill behind it, it was just the word, with the card’s border running straight through it. The higlighted card’s border was white, instead of indigo. Also the Get Pro was the same flat grey as the two buttons next to it. It looked like a CSS mistake, but actually it wasn’t. “It worked on my machine” ng serve rendered it correctly. Same commit, same browser. That is the part that cost me the most time: I kept hunting for a rule that only existed in production. So I stopped reading CSS and read the live page instead: --color-primary → "" (empty) badge background → rgba(0, 0, 0, 0) (transparent) card border → rgb(255, 255, 255) --color-primary wasn’t defined at all. And when a custom property is undefined, background-color: var(--color-primary) computes to transparent , while border-color: var(--color-primary) falls back to currentColor , which on that section is white. One missing variable, and every symptom follows from it, including the ones that look unrelated. Where the variable went Angular’s production build enables inlineCritical . It inlines the critical CSS and defers the rest of the stylesheet like this: <link rel= "stylesheet" href= "styles-XXXX.css" media= "print" onload= "this.media='all'" > That onload is an inline event handler , and script-src 'self' blocks inline handlers. So the handler never ran, the stylesheet stayed at media="print" , and it was never applied. For a whole day the site had been running on nothing but the inlined critical CSS, and the theme tokens live in the file that never loaded. ng serve doesn’t run inlineCritical . That’s the entire reason it only happened in production. The fix is one flag in angular.json : "optimization" : { "styles" : { "minify" : true , "inlineCritical" : false } } The stylesheet now ships as a plain blocking <link> . One render-blocking request, ~20 KB gzipped, and the CSP stays exactly as strict as it was.
Ships:
SecureVault, zero knowledge, end-to-end encrypted cloud storage. Your files and their names are encrypted in the browser before they ever reach the server, which only ever stores ciphertext it can’t read.
Just improved some things, mostly advices from other users....
|
1792986715.2186632
|
1793073115.2186632
|
|
38864
|
Grovewatch by @Nutties | Stardance
|
Nutties
|
1
|
20.0
|
367
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-08T09:11:43Z", "hours": 20.0, "multiplier": 18.05, "payout": 367, "blessing": "neutral", "text": "First Release version! 🍃 Working on this was really cool and what I have made until now has made me very happy, for this project I really tried to make everything as polished as possible from the art, devlogs and even coding. This is NOT the end of this Minecraft mod!!! I will add more features to make it even better. Currently planned: Mocha Jungle Coffee variant (noClip foliage effect) Bag of (roasted & normal) Coffee Beans block Coffee liquid (for Create automation) Coffee drink Create mixing recipe Cool ahh creature to mount (Dino?) Please suggest more ideas!", "repo": "https://github.com/NuttiesNuts/grovewatch", "demo": "https://www.curseforge.com/minecraft/mc-mods/grovewatch"}]...
|
[{"post_id": 43166, "ts": "202 [{"post_id": 43166, "ts": "2026-08-08T08:57:55Z", "hours": 3.0075, "text": "Grovewatch - Devlog 6 Alright, I added some recipes to be compatible with Create & Farmer’s Delight . Made an info tab when JEI is installed so people know where to look for coffee bushes. Things I did: Compatibility recipes for Create mod & Farmer’s Delight Finished Caffeine status effect JEI Plugin As always, building things one block at a time ."}, {"post_id": 42662, "ts": "2026-08-07T14:40:06Z", "hours": 4.8336, "text": "Grovewatch - Devlog 5 4 hours once again do not feel a lot but I spent legit 2 whole days but I guess the time spent “coding” was only 4 hours? Anyways, made some significant progress. I have come up with a way to make coffee without the Create mod but I will add compatability so it will be more viable to use Create or Farmer’s Delight . Coffee will give the Caffeinated status effect which will make you not spawn Phantoms! However it will come with a drawback too… Things I did: Coffee Bush feature generation Branding assets (for CurseForge & Modrinth) Some recipes A lot of data generation (mostly for item tags) Actual Coffee drink item As always, building things one block at a time ."}, {"post_id": 41854, "ts": "2026-08-06T10:18:11Z", "hours": 3.9464, "text": "Grovewatch - Devlog 4 I was on vacation for a couple of days but I came back and started working on the coffee. Created the Coffee Bush which will spawn in jungles and will drop the Coffee Berry. I haven’t thought of a way to turn the berry to the bean without the Create mod crushing. So next devlog I will work on making the coffee process survival-friendly! Please share ideas for the coffee! What effect should it give, what other mechanics could fit it? Things I did: Coffee Bush Coffee Berry, Bean & Roasted Bean As always, building things one block at a time ."}, {"post_id": 37468, "ts": "2026-07-30T07:34:31Z", "hours": 3.8064, "text": "Grovewatch - Devlog 3 Today I added a modifier which increases the sword’s damage if the user is standing on grass. I also struggled a bit while making the custom weapon trail. (don’t be fooled by the small hour count, I was literally ALL day reseaching and working on this) Things I did: Added standing on grass damage passive Custom trail effects As always, building things one block at a time ."}, {"post_id": 36527, "ts": "2026-07-28T18:12:05Z", "hours": 2.7867, "text": "Grovewatch - Devlog 2 I made some small texture adjustments as well as some integration for the Better Combat mod. I also found this awesome library called Embers Text API which adds the ability to use cool text formatting anywhere inside the game! Things I did: Added Better Combat integration to the Mossy Sword Added text effects As always, building things one block at a time ."}, {"post_id": 35075, "ts": "2026-07-26T08:17:10Z", "hours": 1.9383, "text": "Grovewatch - Devlog 1 This mod will be all about ancient mysteries and echoes of the past . Primary mechanic I will add is coffee and a cool ancient sword with custom abilities! Things I did: Implemented the big sword As always, building things one block at a time ."}]...
|
Title: Grovewatch by @Nutties | Stardance
Devlogs Title: Grovewatch by @Nutties | Stardance
Devlogs:
Grovewatch - Devlog 1 This mod will be all about ancient mysteries and echoes of the past . Primary mechanic I will add is coffee and a cool ancient sword with custom abilities! Things I did: Implemented the big sword As always, building things one block at a time .
Grovewatch - Devlog 2 I made some small texture adjustments as well as some integration for the Better Combat mod. I also found this awesome library called Embers Text API which adds the ability to use cool text formatting anywhere inside the game! Things I did: Added Better Combat integration to the Mossy Sword Added text effects As always, building things one block at a time .
Grovewatch - Devlog 3 Today I added a modifier which increases the sword’s damage if the user is standing on grass. I also struggled a bit while making the custom weapon trail. (don’t be fooled by the small hour count, I was literally ALL day reseaching and working on this) Things I did: Added standing on grass damage passive Custom trail effects As always, building things one block at a time .
Grovewatch - Devlog 4 I was on vacation for a couple of days but I came back and started working on the coffee. Created the Coffee Bush which will spawn in jungles and will drop the Coffee Berry. I haven’t thought of a way to turn the berry to the bean without the Create mod crushing. So next devlog I will work on making the coffee process survival-friendly! Please share ideas for the coffee! What effect should it give, what other mechanics could fit it? Things I did: Coffee Bush Coffee Berry, Bean & Roasted Bean As always, building things one block at a time .
Grovewatch - Devlog 5 4 hours once again do not feel a lot but I spent legit 2 whole days but I guess the time spent “coding” was only 4 hours? Anyways, made some significant progress. I have come up with a way to make coffee without the Create mod but I will add compatability so it will be more viable to use Create or Farmer’s Delight . Coffee will give the Caffeinated status effect which will make you not spawn Phantoms! However it will come with a drawback too… Things I did: Coffee Bush feature generation Branding assets (for CurseForge & Modrinth) Some recipes A lot of data generation (mostly for item tags) Actual Coffee drink item As always, building things one block at a time .
Grovewatch - Devlog 6 Alright, I added some recipes to be compatible with Create & Farmer’s Delight . Made an info tab when JEI is installed so people know where to look for coffee bushes. Things I did: Compatibility recipes for Create mod & Farmer’s Delight Finished Caffeine status effect JEI Plugin As always, building things one block at a time .
Ships:
First Release version! 🍃 Working on this was really cool and what I have made until now has made me very happy, for this project I really tried to make everything as polished as possible from the art, devlogs and even coding. This is NOT the end of this Minecraft mod!!! I will add more features to make it even better. Currently planned: Mocha Jungle Coffee variant (noClip foliage effect) Bag of (roasted & normal) Coffee Beans block Coffee liquid (for Create automation) Coffee drink Create mixing recipe Cool ahh creature to mount (Dino?) Please suggest more ideas!...
|
1792983341.7272382
|
1793069741.7272382
|
|
30933
|
HamOS (ham-ster, not ham) by @Luksus | Stardance
|
Luksus
|
4
|
37.0
|
361
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T19:20:33Z", "hours": 13.0, "multiplier": 16.46, "payout": 219, "blessing": "neutral", "text": "PLEASE READ LAST DEVLOG <3 Hello. This is the 3rd and last ship of HamOS. It was incredibly fun making this project. In this ship I added a lots of things which I don’t remember (CurrentOpenAppsBar, F11, animations, styles, widgets, bug fixes, QoL updates, etc..) Please checkout every app, windows, features in HamOS. There is a hidden secret for you the second, you enter the website! My main inspiration for this project was the old era of computers and my hamster “Džambule”. (May my luck find 188 stardust for grants from this ship)", "repo": "https://github.com/lkspodmol/hamos", "demo": "https://lkspodmol.github.io/hamos"}, {"ship_num": 2, "ts": "2026-08-10T20:10:55Z", "hours": 8.0, "multiplier": 9.8, "payout": 81, "blessing": "neutral", "text": "Hello everyone! This is my 3nd ship of HamOS. (2nd of WebOS 2) A lot has changed since 2nd ship and those are: Apps: Help, App for helping users with QnA Settings, App for customization of HamOS HamOS To Go, Similar app (tool) to Windows To Go, it will launch HamOS in your tab instead of Džambulas computer. A new shortcut to Wikipedia New look for existing Introduction app, in NOKIA style (hands) And the biggest nightmare…. Scaling. I had problems with scaling HamOS website to other resolutions. Only 1920x1080 was supported, but now from 720p to 4K (16:9) should work without any major issues. The most annoying thing about this were also always changing margins, so app icons are alligned, etc… And for fun, I added a little sticky note that will help visitors start up the computer with HamOS. Also please, do not mind if the window you are moving is faster or slower than your mouse pointer. (check app Help) If you have any ideas, on what I should add, comment please! Visit HamOS at: https://lkspodmol.github.io/myos1/ (Please try F11) Thanks for reading. Happy coding and happy rating!", "repo": "https://github.com/lkspodmol/hamos", "demo": "https://lkspodmol.github.io/hamos"}, {"ship_num": 3, "ts": "2026-07-24T23:17:16Z", "hours": 7.0, "multiplier": 8.65, "payout": 61, "blessing": "neutral", "text": "Hello everyone! This is 2nd ship of HamOS, that brought some cool features and that are: Crt monitor Coslop Starting and shutting down the system Sound effects! I had a lot of fun drawing in this ship. I think the crt monitor turned out very good. I am also very happy with the sounds I added. Fits in so well. I am also updating the very fine text on the “Floppy”, that says, what version you are running (always the newest). I have some ideas for the future, but I think that a little break whould be also very good idea. If you have any ideas, on what I should add, comment please! Likes are very appreciated <3. Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)", "repo": "https://github.com/lkspodmol/hamos", "demo": "https://lkspodmol.github.io/hamos"}, {"ship_num": 4, "ts": "2026-07-22T16:02:57Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Have a working webpage with multiple draggable windows, Check It should look like your own and not exactly like the guide, Check Have at least 3 devlogs showing your progress along the way, Check Have at least 1 new feature that the guide didn’t list, Check It shouldn’t have a password (so anyone can test it out!), Check Hello everyone! This is my first ship on stardance and I hope, that you will like my WebOS 1. My WebOS 1 is HamOS. Not ham like ham, but ham like ham-ster. Hamster, because of my hamster Džambule. I love him very much, so I got an idea to create WebOS, that is designed for him and you got in somehow. Little things that I liked when coding is being lost in my own code. The best things I added in my opinion are: The loading screen!! Photo gallery of him And the custom hand drew icons made by me (intentionally bad) So please, visit and try HamOS at: https://lkspodmol.github.io/myos1/ . WebOS 1 was incredibly fun and interesting and I will try to continue in WebOS 2. Should it be HamOS, or HamOS PRO? Let me know. Thank you for reading this or commenting, liking and happy coding!", "repo": "https://github.com/lkspodmol/hamos", "demo": "https://lkspodmol.github.io/hamos"}]...
|
[{"post_id": 81298, "ts": "202 [{"post_id": 81298, "ts": "2026-10-20T18:28:24Z", "hours": 1.8453, "text": "Devlog? #15 - PLEASE READ! Hello everyone… New version of HamOS v1.7 just rolled out. What have I added or fixed? Bugs: volume lowered of loud sounds Added: new styles menu new styles The end? So yeah. This will be probably the last devlog of HamOS. I had many laughs when making HamOS and I must thank the organizers of Stardance for this! I want to say thank you to the every person I have talked to on stardance / hackclub. That includes slack. Specifically: Ethan, Brahmtej, Craw, Fraud squad , mixid_mbb, LakasZada, Thunder, starviper, SeradedStripes and all of unmentioned. You made my day less boring either with just chatting in the #stardance, huddling in huddle, playing on our minecraft server or playing games in #boba-bash-greater-noida. #boba-bash-greater-noida deserves its own section. It was incredibly fun playing with all of you for a week. The best ones were Skribbl, Among Us and Gartic Phone. I will include some funny screenshots. Big + to the organizers of this event, Brahmtej and agm. I hope we will meet again next year or sooner ❤️ . I will remember (hopefully). Lukas out . Visit HamOS at: https://lkspodmol.github.io/hamos/"}, {"post_id": 77886, "ts": "2026-10-08T17:29:40Z", "hours": 1.905, "text": "Devlog #14 Hello everyone! New version of HamOS v1.6 just rolled out! What have I added or fixed? Bugs: Added: “current open apps bar” animations! New system of indexes.html and fodler structures! A whole new STYLES system!! The boring part: I had idea of different styles a long time back in time. So I implemented them in this update. You can select what style you want and it will apply. The new selection menu will be more polished in the next update. I promise. If YOU (yes, you) want to make a style for hamos, please click the link in the selection menu and dm me! I would be very happy! With the animations of “CAOB”. It was a little difficult. I need to make the timing right, make it launch or not close when app is still open. It had its bugs when in development, but it should be working flawlessly now. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!"}, {"post_id": 75899, "ts": "2026-10-01T15:22:15Z", "hours": 0.9667, "text": "The opening of community styles for HamOS! Hello everyone. Today im announcing that YOU, can create styles for HamOS, that will be added! If anyone wants to make a style (please do, I will be very happy), dm me on slack @luksus with the files, etc. (View the before last attached photo.) Everything you will need, will be in the template that I made for you (dimensions, info, restricted areas, etc.) Please download the template ( https://drive.google.com/drive/folders/1wteLNYUOm6-3gt77MpcvDc4UFpRlmfD8?usp=sharing ). You can also view the finished example. Edit 2 hours later: I just tried doing style myself and it turned out pretty okay! Check before last attached screenshot. I will be waiting for everyone’s styles ! Happy coding stardancers. ( https://lapse.hackclub.com/timelapse/7iCZKuc8ZhRJ )"}, {"post_id": 74799, "ts": "2026-09-28T09:18:33Z", "hours": 1.6833, "text": "Devlog #13 Hello everyone! What did I add in this update? Animations for “Currently opened apps bar”! And delay for the apps to launch (just like in a real life). When you open app, the little icon BOUNCES (video in attachment). This update isn’t live right now and wont be until v1.6. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!"}, {"post_id": 74152, "ts": "2026-09-26T19:42:31Z", "hours": 2.7161, "text": "Devlog #12 Hello everyone! New version of HamOS v1.5 just rolled out! What have I added or fixed? Bugs: cursor: pointer; bug fix (entire desktop was clickable) cursor: pointer; bug fix (entire app rows were clickable, not only apps) Added: Widgets! Current apps opened bar! New settings feature New QnA The boring part: In this version, I had an idea to add widgets (because I loved widgets in Windows Vista). Then I needed content for the widgets. I wanted clock, but I was lazy to create some clock, so I just used clock widget iframe. Some people dont have to like the widgets, so I added a new option in settings to hide them. And with all of the apps opened, it was a little bit difficult to navigate between them, so I added “Current apps opened bar”. When app is opened, it shows its icon in the bar, which can be clicked for focusing the app window. The order of app icons in the bar is fixed, because I was too lazy to implement some kind of order-system. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!"}, {"post_id": 69102, "ts": "2026-09-16T11:33:43Z", "hours": 2.94, "text": "Devlog #11 Hello everyone! A little devlog after a long time of inactivity. The break was amazing. Been to Bulgaria. Nice sea they’ve got. And now to HamOS. I am currently working on widgets, (little inspiration taken from my beloved Windows Vista). I am too lazy to create some clock, so I just used clock widget iframe. ( ) The version of the HamOS with a one widget added is live now, but it is in beta and not polished. (Something like a developer version of iOS) I had a lot of ideas for HamOS, but I don’t know if I will have enough time to add all of them. Visit HamOS at: https://lkspodmol.github.io/myos1/ That is all. Happy coding everyone!"}, {"post_id": 46604, "ts": "2026-08-13T23:20:19Z", "hours": 0.3886, "text": "oh my god. What am I even publishing? Before checking the code for other bugs, etc.. I shipped it, because I was very excited and wanted to get item that I very want. I checked on HamOS today if I didn’t overlook anything and I saw that newly opened app windows weren’t in the center of the crt. So I changed multiple % values. And then I noticed that Welcome and Introduction app windows weren’t getting focused when they are clicked. I left welcome app and introduction app in one div, because of one < /div >. After fixing that, the app windows weren’t in the center of the crt AGAIN. So I had to revert every % value that I changed. (Thank god for github commits) So this was a little log of fixing ONE < /DIV > that caused these issues… Happy coding everyone.. happy happy."}, {"post_id": 45451, "ts": "2026-08-11T22:18:13Z", "hours": 0.8619, "text": "Hey everyone! Quick fix happened. On some screens, there was a bug that the icons weren’t aligned properly. My dumb ah put row div in a row div in a row div. The best code you will ever see. Had to change so many % values. But it is over now. Fix is now live (thankfully, before reviewers could rate it)."}, {"post_id": 44783, "ts": "2026-08-10T19:54:34Z", "hours": 1.0506, "text": "Devlog #10 Hello everyone! Just published HamOS v1.4, version mainly about resolution scaling and small fixes. In v1.4 was alongside added Settings app that has personalization features (primary colors and set wallpapers). And if you will notice, a little sticky paper was added that will help visitors start up HamOS. After this Devlog I will ship HamOS Again! I want more opinions :> (and stardust tooo–.) Visit HamOS at: https://lkspodmol.github.io/myos1/ That is all. Happy coding everyone!"}, {"post_id": 42926, "ts": "2026-08-07T22:05:49Z", "hours": 3.1981, "text": "Devlog #9 omg this was a nightmare. Hey everyone! Just wanted to share that I finally somehow fixed scaling of HamOS! Previously, only 1920x1080 was supported, but now, 720p HD —> 4K! Yippie! : b Now I just need to add one more feature and this update will be live in the next version of HamOS v1.4. The biggest issue I encountered while making this was also applying it to the top bar. I also somehow broke a bug, bug-feature, that the top bar is always under app windows, now, app windows are under the top bar. Happy coding everyone! Ham out. –hehe"}, {"post_id": 41033, "ts": "2026-08-04T23:18:32Z", "hours": 4.0636, "text": "Devlog #8 Hey everyone! HamOS v1.3 is here. This is everything that happened in this update: The new Help app contains some problems that people issue with HamOS. In the style of QnA. If you have any questions or problems with HamOS, please comment under one of my devlogs. And the new HamOS To Go tool does something like Windows To Go tool. Windows To Go creates Windows on usb drive that you can plug into any computer and run your version of Windows. The HamOS To Go tool opens a new tab that will have only the HamOS, without the crt monitor. I added this feature to help some people with bugs or if they only want the HamOS without the crt monitor. And a new shortcut for Wikipedia. I was also playing with margins, so icons, divs look aligned. I used the existing icon of app Introduction for the new app Help and designed a new icon for it. I had idea in my mind, that well, if it is an introduction, it is like connecting people (or hamsters) no? I remembered old nokia loading screen and was inspired by it (the hands). And at the end, I added a little bit more info to the githubs README file. After the break, I had a whole set of ideas that I wrote down. One of them is Theme app suggested from anonymous that rated 2nd ship. Sadly, I have to fix a big issue first and that is screen scaling D: HamOS is only fully supported on 1920x1080 for now. Others have to workaround by scaling the site bigger or smaller. That is it. Happy coding everyone! Visit HamOS here: https://lkspodmol.github.io/myos1/"}, {"post_id": 34338, "ts": "2026-07-24T23:03:03Z", "hours": 1.3542, "text": "Devlog #7 Hey everyone! HamOS version v1.2 is here! What have I updated: Different crt monitor stand LED retextured Power-on button retextured Added Welcome SOUNDS!! (starting up, power-on button, welcome) If you have any ideas, on what I should add, comment please! Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)"}, {"post_id": 34077, "ts": "2026-07-24T15:19:18Z", "hours": 3.3767, "text": "Devlog #6 Hey everyone! HamOS version v1.1 is here! What have I updated: Copilot, but Coslop The crt monitor! Nicer power-on button Removed the Pro If you have any ideas, on what I should add, comment please! Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)"}, {"post_id": 33562, "ts": "2026-07-23T16:23:39Z", "hours": 2.3761, "text": "Hey everyone! Just added a crt monitor that will show HamOS Pro! Check it out at: https://lkspodmol.github.io/myos1/ Likes and comments are appreciated <3. (image is a sneak peak, until you check it out yourself)"}, {"post_id": 32989, "ts": "2026-07-22T14:45:45Z", "hours": 1.8106, "text": "Devlog #5 Hey everyone! Last update on HamOS. What have I updated: Removed link texts in bar Added new shortcuts with new goated icons Image optimisations ( < picture > idea @ethmarks , Thanks!) New loading screen! I will probably continue HamOS in WebOS 2, so HamOS 2, HamOS PRO? - Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)"}, {"post_id": 32503, "ts": "2026-07-21T18:36:49Z", "hours": 1.0731, "text": "Devlog #4 Hey everyone! A lot of this update wasn’t about adding huge features, just one app and fixing some small things. I added a Photos app, so Džambule finally has somewhere to keep his favorite pictures. 🐹📸 You can also click individual photo and view it in full resolution / quality. Also fyi, the icons are drawn by me. It is intentionally bad, don’t think that I cant draw. hehe.. I’m thinking about adding a very lite version of Start button. We will see if that will happen. Whould be cool. I’m also wondering how does stardances algorithm work. I’ve seen one devlog, that had one sentence and got hundreds of views. Hope algorithm will notice me. If the Start button will happen, then I’m probably gonna ship my HamOS to the stars. Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding."}, {"post_id": 29815, "ts": "2026-07-16T23:12:33Z", "hours": 0.6344, "text": "Not technically a devlog, but Devlog #3 Hey everyone! It struck me out of nowhere, that I am making a HamOS. OS for / about hamster. So should not it be about my hamster? Its logic. So, I personalized it to my hamster Džambule. You will by in my hamsters computer (please do not break anything). In the next update, I am thinking that I will make apps like Notes and Photos, that will already have something in them (Džambule’s notes or photos) Thanks everyone for reading this and happy coding!"}, {"post_id": 29565, "ts": "2026-07-16T16:16:43Z", "hours": 3.4081, "text": "Devlog #2 Hey everyone! Heres what I added to my HamOS: Draggable windows Bar at top of a window with X Closing and opening apps/windows Desktop icons Only welcome window shows up when page is loaded Window focusing… Etc. It looks very nice in this state right now. Little bit scared of part 5 in the tutorial. I have an idea for the app, but I just hope that it wont be too hard. Thanks everyone for reading this devlog and maybe visiting my HamOS? Bye! Link for HamOS: https://lkspodmol.github.io/myos1/"}, {"post_id": 29029, "ts": "2026-07-15T17:59:05Z", "hours": 1.7144, "text": "Hello everyone! Just started working on my WebOS, that will be called HamOS. No, not ham, like ham, but ham like ham-ster :D. The tutorial was super helpful even though it didn’t look like at first. This HamOS will be mainly customized to my hamster Džambule. I even added a gif of him :>. That was enough coding for the day. Finished 2 parts. Thanks stardance for this, for everything and for the STICKERS!!. Out."}]...
|
Title: HamOS (ham-ster, not ham) by @Luksus | Star Title: HamOS (ham-ster, not ham) by @Luksus | Stardance
Devlogs:
Hello everyone! Just started working on my WebOS, that will be called HamOS. No, not ham, like ham, but ham like ham-ster :D. The tutorial was super helpful even though it didn’t look like at first. This HamOS will be mainly customized to my hamster Džambule. I even added a gif of him :>. That was enough coding for the day. Finished 2 parts. Thanks stardance for this, for everything and for the STICKERS!!. Out.
Devlog #2 Hey everyone! Heres what I added to my HamOS: Draggable windows Bar at top of a window with X Closing and opening apps/windows Desktop icons Only welcome window shows up when page is loaded Window focusing… Etc. It looks very nice in this state right now. Little bit scared of part 5 in the tutorial. I have an idea for the app, but I just hope that it wont be too hard. Thanks everyone for reading this devlog and maybe visiting my HamOS? Bye! Link for HamOS: https://lkspodmol.github.io/myos1/
Not technically a devlog, but Devlog #3 Hey everyone! It struck me out of nowhere, that I am making a HamOS. OS for / about hamster. So should not it be about my hamster? Its logic. So, I personalized it to my hamster Džambule. You will by in my hamsters computer (please do not break anything). In the next update, I am thinking that I will make apps like Notes and Photos, that will already have something in them (Džambule’s notes or photos) Thanks everyone for reading this and happy coding!
Devlog #4 Hey everyone! A lot of this update wasn’t about adding huge features, just one app and fixing some small things. I added a Photos app, so Džambule finally has somewhere to keep his favorite pictures. 🐹📸 You can also click individual photo and view it in full resolution / quality. Also fyi, the icons are drawn by me. It is intentionally bad, don’t think that I cant draw. hehe.. I’m thinking about adding a very lite version of Start button. We will see if that will happen. Whould be cool. I’m also wondering how does stardances algorithm work. I’ve seen one devlog, that had one sentence and got hundreds of views. Hope algorithm will notice me. If the Start button will happen, then I’m probably gonna ship my HamOS to the stars. Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding.
Devlog #5 Hey everyone! Last update on HamOS. What have I updated: Removed link texts in bar Added new shortcuts with new goated icons Image optimisations ( < picture > idea @ethmarks , Thanks!) New loading screen! I will probably continue HamOS in WebOS 2, so HamOS 2, HamOS PRO? - Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)
Hey everyone! Just added a crt monitor that will show HamOS Pro! Check it out at: https://lkspodmol.github.io/myos1/ Likes and comments are appreciated <3. (image is a sneak peak, until you check it out yourself)
Devlog #6 Hey everyone! HamOS version v1.1 is here! What have I updated: Copilot, but Coslop The crt monitor! Nicer power-on button Removed the Pro If you have any ideas, on what I should add, comment please! Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)
Devlog #7 Hey everyone! HamOS version v1.2 is here! What have I updated: Different crt monitor stand LED retextured Power-on button retextured Added Welcome SOUNDS!! (starting up, power-on button, welcome) If you have any ideas, on what I should add, comment please! Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)
Devlog #8 Hey everyone! HamOS v1.3 is here. This is everything that happened in this update: The new Help app contains some problems that people issue with HamOS. In the style of QnA. If you have any questions or problems with HamOS, please comment under one of my devlogs. And the new HamOS To Go tool does something like Windows To Go tool. Windows To Go creates Windows on usb drive that you can plug into any computer and run your version of Windows. The HamOS To Go tool opens a new tab that will have only the HamOS, without the crt monitor. I added this feature to help some people with bugs or if they only want the HamOS without the crt monitor. And a new shortcut for Wikipedia. I was also playing with margins, so icons, divs look aligned. I used the existing icon of app Introduction for the new app Help and designed a new icon for it. I had idea in my mind, that well, if it is an introduction, it is like connecting people (or hamsters) no? I remembered old nokia loading screen and was inspired by it (the hands). And at the end, I added a little bit more info to the githubs README file. After the break, I had a whole set of ideas that I wrote down. One of them is Theme app suggested from anonymous that rated 2nd ship. Sadly, I have to fix a big issue first and that is screen scaling D: HamOS is only fully supported on 1920x1080 for now. Others have to workaround by scaling the site bigger or smaller. That is it. Happy coding everyone! Visit HamOS here: https://lkspodmol.github.io/myos1/
Devlog #9 omg this was a nightmare. Hey everyone! Just wanted to share that I finally somehow fixed scaling of HamOS! Previously, only 1920x1080 was supported, but now, 720p HD —> 4K! Yippie! : b Now I just need to add one more feature and this update will be live in the next version of HamOS v1.4. The biggest issue I encountered while making this was also applying it to the top bar. I also somehow broke a bug, bug-feature, that the top bar is always under app windows, now, app windows are under the top bar. Happy coding everyone! Ham out. –hehe
Devlog #10 Hello everyone! Just published HamOS v1.4, version mainly about resolution scaling and small fixes. In v1.4 was alongside added Settings app that has personalization features (primary colors and set wallpapers). And if you will notice, a little sticky paper was added that will help visitors start up HamOS. After this Devlog I will ship HamOS Again! I want more opinions :> (and stardust tooo–.) Visit HamOS at: https://lkspodmol.github.io/myos1/ That is all. Happy coding everyone!
Hey everyone! Quick fix happened. On some screens, there was a bug that the icons weren’t aligned properly. My dumb ah put row div in a row div in a row div. The best code you will ever see. Had to change so many % values. But it is over now. Fix is now live (thankfully, before reviewers could rate it).
oh my god. What am I even publishing? Before checking the code for other bugs, etc.. I shipped it, because I was very excited and wanted to get item that I very want. I checked on HamOS today if I didn’t overlook anything and I saw that newly opened app windows weren’t in the center of the crt. So I changed multiple % values. And then I noticed that Welcome and Introduction app windows weren’t getting focused when they are clicked. I left welcome app and introduction app in one div, because of one < /div >. After fixing that, the app windows weren’t in the center of the crt AGAIN. So I had to revert every % value that I changed. (Thank god for github commits) So this was a little log of fixing ONE < /DIV > that caused these issues… Happy coding everyone.. happy happy.
Devlog #11 Hello everyone! A little devlog after a long time of inactivity. The break was amazing. Been to Bulgaria. Nice sea they’ve got. And now to HamOS. I am currently working on widgets, (little inspiration taken from my beloved Windows Vista). I am too lazy to create some clock, so I just used clock widget iframe. ( ) The version of the HamOS with a one widget added is live now, but it is in beta and not polished. (Something like a developer version of iOS) I had a lot of ideas for HamOS, but I don’t know if I will have enough time to add all of them. Visit HamOS at: https://lkspodmol.github.io/myos1/ That is all. Happy coding everyone!
Devlog #12 Hello everyone! New version of HamOS v1.5 just rolled out! What have I added or fixed? Bugs: cursor: pointer; bug fix (entire desktop was clickable) cursor: pointer; bug fix (entire app rows were clickable, not only apps) Added: Widgets! Current apps opened bar! New settings feature New QnA The boring part: In this version, I had an idea to add widgets (because I loved widgets in Windows Vista). Then I needed content for the widgets. I wanted clock, but I was lazy to create some clock, so I just used clock widget iframe. Some people dont have to like the widgets, so I added a new option in settings to hide them. And with all of the apps opened, it was a little bit difficult to navigate between them, so I added “Current apps opened bar”. When app is opened, it shows its icon in the bar, which can be clicked for focusing the app window. The order of app icons in the bar is fixed, because I was too lazy to implement some kind of order-system. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!
Devlog #13 Hello everyone! What did I add in this update? Animations for “Currently opened apps bar”! And delay for the apps to launch (just like in a real life). When you open app, the little icon BOUNCES (video in attachment). This update isn’t live right now and wont be until v1.6. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!
The opening of community styles for HamOS! Hello everyone. Today im announcing that YOU, can create styles for HamOS, that will be added! If anyone wants to make a style (please do, I will be very happy), dm me on slack @luksus with the files, etc. (View the before last attached photo.) Everything you will need, will be in the template that I made for you (dimensions, info, restricted areas, etc.) Please download the template ( https://drive.google.com/drive/folders/1wteLNYUOm6-3gt77MpcvDc4UFpRlmfD8?usp=sharing ). You can also view the finished example. Edit 2 hours later: I just tried doing style myself and it turned out pretty okay! Check before last attached screenshot. I will be waiting for everyone’s styles ! Happy coding stardancers. ( https://lapse.hackclub.com/timelapse/7iCZKuc8ZhRJ )
Devlog #14 Hello everyone! New version of HamOS v1.6 just rolled out! What have I added or fixed? Bugs: Added: “current open apps bar” animations! New system of indexes.html and fodler structures! A whole new STYLES system!! The boring part: I had idea of different styles a long time back in time. So I implemented them in this update. You can select what style you want and it will apply. The new selection menu will be more polished in the next update. I promise. If YOU (yes, you) want to make a style for hamos, please click the link in the selection menu and dm me! I would be very happy! With the animations of “CAOB”. It was a little difficult. I need to make the timing right, make it launch or not close when app is still open. It had its bugs when in development, but it should be working flawlessly now. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!
Devlog? #15 - PLEASE READ! Hello everyone… New version of HamOS v1.7 just rolled out. What have I added or fixed? Bugs: volume lowered of loud sounds Added: new styles menu new styles The end? So yeah. This will be probably the last devlog of HamOS. I had many laughs when making HamOS and I must thank the organizers of Stardance for this! I want to say thank you to the every person I have talked to on stardance / hackclub. That includes slack. Specifically: Ethan, Brahmtej, Craw, Fraud squad , mixid_mbb, LakasZada, Thunder, starviper, SeradedStripes and all of unmentioned. You made my day less boring either with just chatting in the #stardance, huddling in huddle, playing on our minecraft server or playing games in #boba-bash-greater-noida. #boba-bash-greater-noida deserves its own section. It was incredibly fun playing with all of you for a week. The best ones were Skribbl, Among Us and Gartic Phone. I will include some funny screenshots. Big + to the organizers of this event, Brahmtej and agm. I hope we will meet again next year or sooner ❤️ . I will remember (hopefully). Lukas out . Visit HamOS at: https://lkspodmol.github.io/hamos/
Ships:
Have a working webpage with multiple draggable windows, Check It should look like your own and not exactly like the guide, Check Have at least 3 devlogs showing your progress along the way, Check Have at least 1 new feature that the guide didn’t list, Check It shouldn’t have a password (so anyone can test it out!), Check Hello everyone! This is my first ship on stardance and I hope, that you will like my WebOS 1. My WebOS 1 is HamOS. Not ham like ham, but ham like ham-ster. Hamster, because of my hamster Džambule. I love him very much, so I got an idea to create WebOS, that is designed for him and you got in somehow. Little things that I liked when coding is being lost in my own code. The best things I added in my opinion are: The loading screen!! Photo gallery of him And the custom hand drew icons made by me (intentionally bad) So please, visit and try HamOS at: https://lkspodmol.github.io/myos1/ . WebOS 1 was incredibly fun and interesting and I will try to continue in WebOS 2. Should it be HamOS, or HamOS PRO? Let me know. Thank you for reading this or commenting, liking and happy coding!
Hello everyone! This is 2nd ship of HamOS, that brought some cool features and that are: Crt monitor Coslop Starting and shutting down the system Sound effects! I had a lot of fun drawing in this ship. I think the crt monitor turned out very good. I am also very happy with the sounds I added. Fits in so well. I am also updating the very fine text on the “Floppy”, that says, what version you are running (always the newest). I have some ideas for the future, but I think that a little break whould be also very good idea. If you have any ideas, on what I should add, comment please! Likes are very appreciated <3. Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)
Hello everyone! This is my 3nd ship of HamOS. (2nd of WebOS 2) A lot has changed since 2nd ship and those are: Apps: Help, App for helping users with QnA Settings, App for customization of HamOS HamOS To Go, Similar app (tool) to Windows To Go, it will launch HamOS in your tab instead of Džambulas computer. A new shortcut to Wikipedia New look for existing Introduction app, in NOKIA style (hands) And the biggest nightmare…. Scaling. I had problems with scaling HamOS website to other resolutions. Only 1920x1080 was supported, but now from 720p to 4K (16:9) should work without any major issues. The most annoying thing about this were also always changing margins, so app icons are alligned, etc… And for fun, I added a little sticky note that will help visitors start up the computer with HamOS. Also please, do not mind if the window you are moving is faster or slower than your mouse pointer. (check app Help) If you have any ideas, on what I should add, comment please! Visit HamOS at: https://lkspodmol.github.io/myos1/ (Please try F11) Thanks for reading. Happy coding and happy rating!
PLEASE READ LAST DEVLOG <3 Hello. This is the 3rd and last ship of HamOS. It was incredibly fun making this project. In this ship I added a lots of things which I don’t remember (CurrentOpenAppsBar, F11, animations, styles, widgets, bug fixes, QoL updates, etc..) Please checkout every app, windows, features in HamOS. There is a hidden secret for you the second, you enter the website! My main inspiration for this project was the old era of computers and my hamster “Džambule”. (May my luck find 188 stardust for grants from this ship)...
|
1792972098.9094255
|
1793058498.9094255
|
|
42308
|
Skybound by @SCAMMARAS | Stardance
|
SCAMMARAS
|
1
|
23.0
|
361
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-11T12:30:52Z", "hours": 23.0, "multiplier": 15.89, "payout": 361, "blessing": "neutral", "text": "After 11 days and 23 hours spent working on this project i finally DONE!! So for those who do not know what this is here is a small description , so this is a game i made solo in Godot 4 , i use art that i found on itch.io that was public for most of the art , but there is still hints of my art. Anyway i am so happy that i have finished this even though i got sick at a time it didn’t got me down and after a day of laying in bed i was able to stand up again and continuing on this project. Special thanks to anthropics and claude that made my journey less stressing and easier", "repo": "https://github.com/Nikolaossamaras/Skybound", "demo": "https://scammaras.itch.io/skybound"}]...
|
[{"post_id": 45120, "ts": "202 [{"post_id": 45120, "ts": "2026-08-11T12:23:38Z", "hours": 0.9722, "text": "Devlog 11 | FINALLY WE ARE READY TO SHIP!!!. Today i made my readme and published my game to itchio and i think i am ready to Ship . YAY!"}, {"post_id": 44778, "ts": "2026-08-10T19:40:51Z", "hours": 2.5781, "text": "Devlog 10 | Today is the day guys !!! I finally finished making my game . I added a saving /loading system , made touch ups and finished with the Victory Screen , all that is left to do is post the game to itch.io and make the README file for github"}, {"post_id": 44268, "ts": "2026-08-09T22:09:58Z", "hours": 0.7939, "text": "Devlog 9 | Today i finished with the Boss fight last level. What i have left to do now is the winning screen and load / save process , so you can save progress . I will also make micro changes so the game feels more fair and rewarding. That’s all . Until next time"}, {"post_id": 43532, "ts": "2026-08-08T21:05:40Z", "hours": 1.8103, "text": "Devlog 8| i made the boss for my final level . I added how to kill him and how he kills you . I got some strange error that made my root of the boss not being root and some other strange things so i just remade the boss scene entirerly , but because i had the code it was fast. That’s all for today. Until tommorow"}, {"post_id": 43462, "ts": "2026-08-08T18:47:05Z", "hours": 2.2861, "text": "Devlog 7 | Today i made a coins shop , where you can buy upgrades like more health , higher jumps and more speed. I also though that it would be nice for the final level (10) to have a boss instead of just parkour and you can beat this boss by collecting diffrent stones on the map that you can access doing some platforming. That’s all for today. Until next time"}, {"post_id": 42504, "ts": "2026-08-07T09:06:48Z", "hours": 2.7111, "text": "Devlog 6 | Today i added two levels (level 8 and 9) as well as their unique traps. I added a ceiling trap and an arrow trap. Tommorow i will make the 10th and finial level and i will start thinking what can the player spend his coins on (if you have any ideas please comment them). That’s it for today . Stay tuned for more updates"}, {"post_id": 40989, "ts": "2026-08-04T21:19:15Z", "hours": 2.8894, "text": "Devlog 5 | Today i made progress!!! Wassup people , so today i made level 6-7 (no troll) of my game , it doesn’t have a name yet so i will just call it skybound as a placeholder . Anyway , what i added is two new obstacles .1. A breaking platform and 2 a Sandworm trap (looks amazing btw). Yeah that’s it for today. Stay tuned for more updates"}, {"post_id": 40197, "ts": "2026-08-03T16:29:02Z", "hours": 2.2553, "text": "Devlog 4 | Yesterday i got sick , so i couldn’t get any progress done , but atleast today i managed to make 2 new levels , as well as one new obstacle. I hope that tomorrow i will have more energy so i can complete as much of this project as i can."}, {"post_id": 39184, "ts": "2026-08-01T23:43:01Z", "hours": 1.0842, "text": "Devlog 3| I made level 3 , it was easy as i had already made the enemy sprite . i combined the ability from the previous level with the enemies of this one and i think it came out being pretty fun . See you tmr with more updates 🥳🥳🥳🥳"}, {"post_id": 39168, "ts": "2026-08-01T22:33:28Z", "hours": 3.3467, "text": "Devlog 2| Today i finished with level 1 and moved to level 2 . I added to the game an ability!! the ability is called dimensional rotation and it basicly rotates the gravity for the player allowing him to climb walls and avoid obstacles . I also added a coin system and a notification system when you get coins or an ability"}, {"post_id": 38193, "ts": "2026-07-31T13:55:11Z", "hours": 1.985, "text": "Devlog 1 | Today i started working on my platform game in godot . Today i made the player , an enemy and a jumppad . Untill now everything works as it should. Tommorow i will add spikes and make the first level . I plan making 10 level each with a new obsicle. I also will add a save and load system , but that will be when i have finished with the 10 levels."}]...
|
Title: Skybound by @SCAMMARAS | Stardance
Devlogs Title: Skybound by @SCAMMARAS | Stardance
Devlogs:
Devlog 1 | Today i started working on my platform game in godot . Today i made the player , an enemy and a jumppad . Untill now everything works as it should. Tommorow i will add spikes and make the first level . I plan making 10 level each with a new obsicle. I also will add a save and load system , but that will be when i have finished with the 10 levels.
Devlog 2| Today i finished with level 1 and moved to level 2 . I added to the game an ability!! the ability is called dimensional rotation and it basicly rotates the gravity for the player allowing him to climb walls and avoid obstacles . I also added a coin system and a notification system when you get coins or an ability
Devlog 3| I made level 3 , it was easy as i had already made the enemy sprite . i combined the ability from the previous level with the enemies of this one and i think it came out being pretty fun . See you tmr with more updates 🥳🥳🥳🥳
Devlog 4 | Yesterday i got sick , so i couldn’t get any progress done , but atleast today i managed to make 2 new levels , as well as one new obstacle. I hope that tomorrow i will have more energy so i can complete as much of this project as i can.
Devlog 5 | Today i made progress!!! Wassup people , so today i made level 6-7 (no troll) of my game , it doesn’t have a name yet so i will just call it skybound as a placeholder . Anyway , what i added is two new obstacles .1. A breaking platform and 2 a Sandworm trap (looks amazing btw). Yeah that’s it for today. Stay tuned for more updates
Devlog 6 | Today i added two levels (level 8 and 9) as well as their unique traps. I added a ceiling trap and an arrow trap. Tommorow i will make the 10th and finial level and i will start thinking what can the player spend his coins on (if you have any ideas please comment them). That’s it for today . Stay tuned for more updates
Devlog 7 | Today i made a coins shop , where you can buy upgrades like more health , higher jumps and more speed. I also though that it would be nice for the final level (10) to have a boss instead of just parkour and you can beat this boss by collecting diffrent stones on the map that you can access doing some platforming. That’s all for today. Until next time
Devlog 8| i made the boss for my final level . I added how to kill him and how he kills you . I got some strange error that made my root of the boss not being root and some other strange things so i just remade the boss scene entirerly , but because i had the code it was fast. That’s all for today. Until tommorow
Devlog 9 | Today i finished with the Boss fight last level. What i have left to do now is the winning screen and load / save process , so you can save progress . I will also make micro changes so the game feels more fair and rewarding. That’s all . Until next time
Devlog 10 | Today is the day guys !!! I finally finished making my game . I added a saving /loading system , made touch ups and finished with the Victory Screen , all that is left to do is post the game to itch.io and make the README file for github
Devlog 11 | FINALLY WE ARE READY TO SHIP!!!. Today i made my readme and published my game to itchio and i think i am ready to Ship . YAY!
Ships:
After 11 days and 23 hours spent working on this project i finally DONE!! So for those who do not know what this is here is a small description , so this is a game i made solo in Godot 4 , i use art that i found on itch.io that was public for most of the art , but there is still hints of my art. Anyway i am so happy that i have finished this even though i got sick at a time it didn’t got me down and after a day of laying in bed i was able to stand up again and continuing on this project. Special thanks to anthropics and claude that made my journey less stressing and easier...
|
1792979350.9277227
|
1793065750.9277227
|
|
57156
|
mail.swrg by @swargaraj | Stardance
|
swargaraj
|
1
|
21.0
|
361
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T12:49:16Z", "hours": 21.0, "multiplier": 17.54, "payout": 361, "blessing": "neutral", "text": "mail.swrg · a fast, minimal, disposable inbox Every sketchy site wants your email before showing you anything. That used to mean either handing over your real inbox to the spam pipeline or juggling slow, ad-infested temp-mail sites with clutter everywhere. I built mail.swrg: a fast, minimal disposable email service. What it does: One click → instant random address like [email protected] Incoming mail shows up automatically Clean inbox UI: dark, distraction-free, zero ads, zero trackers Keep / reuse your address across sessions with one-click export & import (save the session file, load it anywhere later) Wipe — delete the entire mailbox anytime, nothing lingers Everything runs on Cloudflare edge: Workers, D1, Email Routing Why I’m being honest about “fast”: mail takes about ~10 seconds to appear. Most mail clients hold outgoing messages in a queue for ~5s before actually sending them, and the inbox refreshes every ~5s after that. So if you test it and nothing shows instantly, give it a second. It’s on them, not us.", "repo": "https://gitlab.com/swrg/mail", "demo": "https://mail.swrg.dev"}]...
|
[{"post_id": 63515, "ts": "202 [{"post_id": 63515, "ts": "2026-09-07T12:45:06Z", "hours": 2.6211, "text": "#7 - it’s done the inbox now says “Pulling Emails” until the first fetch is done. way less confusing. added a small note in the footer that mail takes ~10s to show up bc most mail clients hold ur email in a queue for 5s before sending. and i spent way too long on scrollbar-gutter not working in chrome. works in firefox. anyway the project is actually finished now. it opens fast, it doesn’t freeze, and im not touching it anymore. thanks for reading i guess, this is the last one. gg"}, {"post_id": 62917, "ts": "2026-09-06T13:40:14Z", "hours": 1.3333, "text": "6th - Another cleanup session. moved message fetching to tanstack query so i could delete like 50 lines of manual polling code. fixed the notification sound not playing (browser autoplay policy is annoying). fixed delete mailbox clearing localStorage even when the server request fails. added error handling in a bunch of places where it was missing. removed dead code. tanstack query is really nice once you set it up but the default behavior around networkMode: \"online\" and staleTime can bite you. the query just silently skips if youre offline which is confusing thats it"}, {"post_id": 62760, "ts": "2026-09-06T08:52:08Z", "hours": 1.2008, "text": "#5 - Did a lot of cleanup. first thing, the refresh system was kinda broken? so i had to refactor the whole countdown logic in use-refresh.tsx to use a ref flag instead. also figured out that messages were being fetched TWICE. like useMessages had its own refetchInterval: 5000 AND useRefresh was doing the same thing with its own interval. so now useRefresh is the single source of truth for polling and i removed the redundant one from useMessages. also cleaned up a bunch of stuff that was just… messy: extracted validateSession, exportSession, and STORAGE_KEY to lib/utils.ts because they were duplicated across files the delete button had no confirmation dialog, now it has useCopyToClipboard had a timeout leak where if you copied twice fast the old timeout would still fire. fixed that with a ref the delete handler now reloads the page after success so it auto-creates a new mailbox also the countdown was ticking even when there was no session (like after deleting) which made no sense so now it checks if a session exists before counting down anyway thats pretty much it. next up i actually need to get the inbox working"}, {"post_id": 62733, "ts": "2026-09-06T07:23:56Z", "hours": 2.0186, "text": "#4 - To add a way to export and import mail sessions, i added two buttons in the header. one for export, one for import. export was pretty simple. to import, we read the file, parse the JSON, and then validate it. validateSession function checks if the object has address and key and that theyre both non-empty strings. now i wanted two different states: if the file is valid -> show a warning “this will overwrite your current session, u sure?” if the file is invalid -> just show an error with the Alert component used AlertDialog from cossui for both. the valid one has a Cancel and Continue button, and the invalid one just shows the error in a red Alert and an OK button to close also had to make sure the dialog state is controlled with open and onOpenChange because otherwise it wouldnt close properly after importing. next up i wanna work on the inbox and make it actually look good when theres no emails"}, {"post_id": 62672, "ts": "2026-09-06T04:49:19Z", "hours": 2.3631, "text": "#3 - Now i needed rate limiting because without it anyone could just spam the API and create like a million mailboxes which would be really bad. so i started looking into how to do this with cloudflare workers because thats what im using and they have this fancy Rate Limiting Binding that looked really clean. you just add some config to wrangler.toml, add the binding to your code, and boom - rate limiting. so i added the bindings, deployed, tested… and nothing. like the binding was there, wrangler showed it in the deploy output, i could even see it in the cloudflare dashboard. but when i actually hit the API with like 8 requests in a row, every single one went through. no 429s, nothing. i spent way too long on this. i was reading the docs, checking if my plan supported it, checking if the binding was actually being called, trying different keys… nothing worked. the binding just silently does nothing. like it deploys fine but then just… doesnt do anything? i dont even know whats wrong at this point. so after giving up on the official way, i just went with D1. yeah the database. im literally storing rate limit counters in a sql table which is… not great for performance obviously because now every single request has to do a database query just to check if youre rate limited. but hey at least it actually works. so right now every POST to /mailboxes does a SELECT on the rate_limits table, checks the count, either increments it or creates a new row, and THEN does the actual mailbox creation. so youre looking at like 2 extra database queries per request just for rate limiting. its not ideal but its what i got. hopefully i figure out the cloudflare one someday because this is genuinely a worse solution in every way except that it works. but for now it prevents abuse so whatever. anyway thats where im at. rate limiting works but its slow."}, {"post_id": 62214, "ts": "2026-09-05T14:03:57Z", "hours": 1.7353, "text": "#2 - For the ui i went with shadcn but not the default one, im using the coss ui variant which has nicer colors and the components feel more polished. the buttons and inputs have this subtle shadow thing that looks clean in dark mode. for state management im keeping it simple, just storing the address and recovery key in localStorage. on first load if theres nothing in storage it auto creates a mailbox. the key is needed for every request so without it you cant read any messages. when you delete the mailbox it clears storage and resets everything. right now the ui has a header with refresh and delete buttons, an input group showing the address with a copy button. gonna add the inbox next…"}, {"post_id": 62128, "ts": "2026-09-05T11:47:07Z", "hours": 9.3033, "text": "#1 - Had a domain lying around, so I thought, why not put it to some use? so basically i wanted a temp mail service. nothing crazy, just something that works fast and especially no ads . been sitting on the idea for a while and finally started it this week. first 2 days were basically me fighting cloudflare email routing. had no idea how workers could intercept emails before this. like the concept is simple but actually getting it to work took way longer than i expected. the worker handles everything now. creating mailboxes, storing incoming emails, serving them through the api. used hono for routing which is surprisingly nice for workers. postal-mime for parsing the raw email content. d1 for the database. pretty straightforward stack honestly. Still need to build the frontend properly but the backend is solid."}]...
|
Title: mail.swrg by @swargaraj | Stardance
Devlog Title: mail.swrg by @swargaraj | Stardance
Devlogs:
#1 - Had a domain lying around, so I thought, why not put it to some use? so basically i wanted a temp mail service. nothing crazy, just something that works fast and especially no ads . been sitting on the idea for a while and finally started it this week. first 2 days were basically me fighting cloudflare email routing. had no idea how workers could intercept emails before this. like the concept is simple but actually getting it to work took way longer than i expected. the worker handles everything now. creating mailboxes, storing incoming emails, serving them through the api. used hono for routing which is surprisingly nice for workers. postal-mime for parsing the raw email content. d1 for the database. pretty straightforward stack honestly. Still need to build the frontend properly but the backend is solid.
#2 - For the ui i went with shadcn but not the default one, im using the coss ui variant which has nicer colors and the components feel more polished. the buttons and inputs have this subtle shadow thing that looks clean in dark mode. for state management im keeping it simple, just storing the address and recovery key in localStorage. on first load if theres nothing in storage it auto creates a mailbox. the key is needed for every request so without it you cant read any messages. when you delete the mailbox it clears storage and resets everything. right now the ui has a header with refresh and delete buttons, an input group showing the address with a copy button. gonna add the inbox next…
#3 - Now i needed rate limiting because without it anyone could just spam the API and create like a million mailboxes which would be really bad. so i started looking into how to do this with cloudflare workers because thats what im using and they have this fancy Rate Limiting Binding that looked really clean. you just add some config to wrangler.toml, add the binding to your code, and boom - rate limiting. so i added the bindings, deployed, tested… and nothing. like the binding was there, wrangler showed it in the deploy output, i could even see it in the cloudflare dashboard. but when i actually hit the API with like 8 requests in a row, every single one went through. no 429s, nothing. i spent way too long on this. i was reading the docs, checking if my plan supported it, checking if the binding was actually being called, trying different keys… nothing worked. the binding just silently does nothing. like it deploys fine but then just… doesnt do anything? i dont even know whats wrong at this point. so after giving up on the official way, i just went with D1. yeah the database. im literally storing rate limit counters in a sql table which is… not great for performance obviously because now every single request has to do a database query just to check if youre rate limited. but hey at least it actually works. so right now every POST to /mailboxes does a SELECT on the rate_limits table, checks the count, either increments it or creates a new row, and THEN does the actual mailbox creation. so youre looking at like 2 extra database queries per request just for rate limiting. its not ideal but its what i got. hopefully i figure out the cloudflare one someday because this is genuinely a worse solution in every way except that it works. but for now it prevents abuse so whatever. anyway thats where im at. rate limiting works but its slow.
#4 - To add a way to export and import mail sessions, i added two buttons in the header. one for export, one for import. export was pretty simple. to import, we read the file, parse the JSON, and then validate it. validateSession function checks if the object has address and key and that theyre both non-empty strings. now i wanted two different states: if the file is valid -> show a warning “this will overwrite your current session, u sure?” if the file is invalid -> just show an error with the Alert component used AlertDialog from cossui for both. the valid one has a Cancel and Continue button, and the invalid one just shows the error in a red Alert and an OK button to close also had to make sure the dialog state is controlled with open and onOpenChange because otherwise it wouldnt close properly after importing. next up i wanna work on the inbox and make it actually look good when theres no emails
#5 - Did a lot of cleanup. first thing, the refresh system was kinda broken? so i had to refactor the whole countdown logic in use-refresh.tsx to use a ref flag instead. also figured out that messages were being fetched TWICE. like useMessages had its own refetchInterval: 5000 AND useRefresh was doing the same thing with its own interval. so now useRefresh is the single source of truth for polling and i removed the redundant one from useMessages. also cleaned up a bunch of stuff that was just… messy: extracted validateSession, exportSession, and STORAGE_KEY to lib/utils.ts because they were duplicated across files the delete button had no confirmation dialog, now it has useCopyToClipboard had a timeout leak where if you copied twice fast the old timeout would still fire. fixed that with a ref the delete handler now reloads the page after success so it auto-creates a new mailbox also the countdown was ticking even when there was no session (like after deleting) which made no sense so now it checks if a session exists before counting down anyway thats pretty much it. next up i actually need to get the inbox working
6th - Another cleanup session. moved message fetching to tanstack query so i could delete like 50 lines of manual polling code. fixed the notification sound not playing (browser autoplay policy is annoying). fixed delete mailbox clearing localStorage even when the server request fails. added error handling in a bunch of places where it was missing. removed dead code. tanstack query is really nice once you set it up but the default behavior around networkMode: "online" and staleTime can bite you. the query just silently skips if youre offline which is confusing thats it
#7 - it’s done the inbox now says “Pulling Emails” until the first fetch is done. way less confusing. added a small note in the footer that mail takes ~10s to show up bc most mail clients hold ur email in a queue for 5s before sending. and i spent way too long on scrollbar-gutter not working in chrome. works in firefox. anyway the project is actually finished now. it opens fast, it doesn’t freeze, and im not touching it anymore. thanks for reading i guess, this is the last one. gg
Ships:
mail.swrg · a fast, minimal, disposable inbox Every sketchy site wants your email before showing you anything. That used to mean either handing over your real inbox to the spam pipeline or juggling slow, ad-infested temp-mail sites with clutter everywhere. I built mail.swrg: a fast, minimal disposable email service. What it does: One click → instant random address like [email protected] Incoming mail shows up automatically Clean inbox UI: dark, distraction-free, zero ads, zero trackers Keep / reuse your address across sessions with one-click export & import (save the session file, load it anywhere later) Wipe — delete the entire mailbox anytime, nothing lingers Everything runs on Cloudflare edge: Workers, D1, Email Routing Why I’m being honest about “fast”: mail takes about ~10 seconds to appear. Most mail clients hold outgoing messages in a queue for ~5s before actually sending them, and the inbox refreshes every ~5s after that. So if you test it and nothing shows instantly, give it a second. It’s on them, not us....
|
1792878430.8921032
|
1793742430.8921032
|
|
4843
|
Apoplexy by @czapla | Stardance
|
czapla
|
1
|
43.34
|
360
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T20:43:36Z", "hours": 20.0, "multiplier": 19.11, "payout": 360, "blessing": "neutral", "text": "I have reached a point in development where I can’t wait any longer to finally show everyone what I’ve been working on! The game is clearly still pretty barebones, but it is enough for a MVP. I would love to see you guys try it out, and all my progress has been THOROUGHLY documented in previous devlogs, so I encourage you to have a look at those as well! Please enjoy!", "repo": "https://github.com/dawc17/Apoplexy", "demo": "https://github.com/dawc17/Apoplexy/releases/"}]...
|
[{"post_id": 20891, "ts": "202 [{"post_id": 20891, "ts": "2026-07-02T16:51:41Z", "hours": 1.1667, "text": "APOPLEXY patch notes The one about maps Updated WIP for a new map layout! I’ve come to realize that I am not the greatest level designer, but I will try my best anyway. If anyone is interested in helping, reach out!"}, {"post_id": 20198, "ts": "2026-07-01T19:03:26Z", "hours": 1.0297, "text": "APOPLEXY patch notes The one where enemies became more alive New features Enemies now utilize a mix of custom pathfinding and Unity’s Nav Mesh system Patrol points for enemies which leads them to just walk around and chill at some spots Updated Skybox Enemy AI is fun. Until it isn’t. Try it yourself!"}, {"post_id": 20132, "ts": "2026-07-01T17:46:30Z", "hours": 2.2492, "text": "APOPLEXY patch notes The one about particles New features Raylib build-like particles using Unity’s Particle System™ Updated Touched up on UI and made the code for it cleaner. Gameplay updates coming SOON™!"}, {"post_id": 19972, "ts": "2026-07-01T13:17:59Z", "hours": 1.2689, "text": "APOPLEXY announcement The one where I apologize???? Sorry for the lack of content recently, I’ve gotten a bit busy. I don’t have much to show at the moment, but I promise some saucy stuff is in the works. You will not be disappointed!"}, {"post_id": 16415, "ts": "2026-06-26T18:20:45Z", "hours": 2.0456, "text": "APOPLEXY patch notes The one where the port was (mostly) complete. New features None! Updated Added in all missing content from the latest raylib build. (UI still in progress.) This took a while. Sorry to keep you waiting!"}, {"post_id": 14083, "ts": "2026-06-23T02:06:22Z", "hours": 5.3347, "text": "APOPLEXY patch notes The one where the universe itself was made anew. New features New PSX shader which I think looks quite nice! Worse UI! Updated Engine switch from in-house to Unity 6.5 Tweaked animations (mostly shotgun) I would say the game will soon be on complete feature parity with the Raylib version. A lot of the code was virtually the same, so this rewrite moved way quicker than I initially expected…. I already feel like I’m moving so much faster compared to my Raylib attempt."}, {"post_id": 13732, "ts": "2026-06-22T14:50:35Z", "hours": 1.3175, "text": "APOPLEXY I whipped up a quick script that would parse the old JSON levels and make them into unity scenes, and rewrote my old character controller. So far so good!"}, {"post_id": 13656, "ts": "2026-06-22T12:36:58Z", "hours": 2.6675, "text": "IMPORTANT APOPLEXY ANNOUNCEMENT Hello guys! I have come to a realization recently. That is the realization that using Raylib is holding me down. I have been trying really hard to bring my vision to life for these hours I’ve been working on it, but it’s all just taking too long. And in the end, I keep reinventing the wheel and making something that already exists (and is better) in a game engine. I also have some other frustrations with Raylib and how the library limits programmers in some ways, which I won’t go in to in this post. So, I will be porting the project to Unity! That is the tool I’m most comfortable with, and I hope it helps me to iterate faster and bring you guys some interesting gameplay soon. Here are some screenshots from the last Raylib build. See you guys soon!"}, {"post_id": 12567, "ts": "2026-06-20T14:58:52Z", "hours": 1.5383, "text": "APOPLEXY patch notes The one about levels New features Early main menu with level selector Speaking of levels, added a new level, called the “Stealth Compound” (this will not make it into the beta build lol it’s still a testing map) Updated Project updated to C++26 (from C++17) Footstep sounds (went from looping 5 second clip to separate footstep files to easier align with movement speed) Bumped version number on in-game overlay"}, {"post_id": 10926, "ts": "2026-06-17T22:04:44Z", "hours": 2.5814, "text": "APOPLEXY A ship won’t stop me from further updates ;) New features UI “framework” that helps me iterate even quicker (a bunch of stuff is still hardcoded though) Decals, more about that in a future update Slow motion win sequence for dramatic effect xd Updated Old “bio-link” panel gone, replaced by a more subtle healthbar at the bottom of the screen General codebase cleanup and removal of old files Revised PSX shader I hyperfixated a bit too much on the aesthetics, I promise that the next few updates will actually be gameplay related."}, {"post_id": 10126, "ts": "2026-06-16T18:45:37Z", "hours": 2.1403, "text": "APOPLEXY New features: Redesigned UI No updates otherwise. I spent most of this time on a quick refactor to make my life a bit easier, then sketching out a proper UI on paper. This is how it turned out:"}, {"post_id": 9472, "ts": "2026-06-15T20:34:38Z", "hours": 0.9119, "text": "APOPLEXY PRE SHIP UPDATE Some finishing touches on the enemy AI, they can now hear you a lot better when you shoot the shotty, and I added a little grace timer if you’re in the enemy field of view to get time to move out of the way. The enemy AI is still far from perfect, but I thought it good enough for a PRE PRE PRE PRE PRE PRE alpha build. :D"}, {"post_id": 9280, "ts": "2026-06-15T16:07:53Z", "hours": 2.2644, "text": "APOPLEXY New features: Weapon swapping animation Shotgun reload rework Quick melee system (+ shotgun reload pushback and damage) Live noise testing for enemy AI Updated: Smarter AI, react to noise and being hurt Platform-agnostic build system (except macOS) I’ve now decided a bit more on the direction of this game. I want to create an atmospheric stealth first person shooter, with a big emphasis on the stealth part, and optionally a “go loud” playstyle. Expect future updates to work towards that goal!"}, {"post_id": 7633, "ts": "2026-06-12T19:10:59Z", "hours": 3.2106, "text": "APOPLEXY New features: New “Killhouse” map featuring some cheap lighting and wonky walls! New enemy pathfinding built from the ground up (ability to walk around walls and avoid clumping into eachother) Eyes. Dynamic spread on all weapons based on horizontal movement speed New shotgun utilizing this spread system, shoots multiple pellets that have random spread New dynamic crosshair More sounds Updated: Idle animation"}, {"post_id": 6364, "ts": "2026-06-10T18:34:08Z", "hours": 1.9408, "text": "APOPLEXY New features: Whole new audio system with 3D audio Sound effects for footsteps, shooting, reloading and hitting enemies Updated: A few collision bugs Other: Started logging my progress on TikTok (czapladaw67) and YouTube (ironfistdaw) as well. the project is looking more and more like a game every day, really proud of it so far. 😇"}, {"post_id": 5642, "ts": "2026-06-09T14:51:32Z", "hours": 0.9933, "text": "APOPLEXY New features: Skybox Updated pistol model, longer reload time Updated: World shader i had a lot of fun adding the skybox, and i think the new model looks SO sick"}, {"post_id": 5504, "ts": "2026-06-09T09:45:07Z", "hours": 2.1825, "text": "added some proper lighting (after a struggle) and some more editor QOL. it’s all coming along very nicely, check out the video below. (also refactored weapon system for futureproofing and more)"}, {"post_id": 4926, "ts": "2026-06-08T15:08:11Z", "hours": 1.8544, "text": "improved the level editor with some easier controls and a new orbital camera instead of orthographic projection, and added raygui to make selections easier. also refined the movement, headbob and weapon sway!"}, {"post_id": 4813, "ts": "2026-06-08T10:00:38Z", "hours": 1.7911, "text": "added a crude level editor controlled with the keyboard! it loads and saves json files that you can edit and then save with f6 in game (or manually if youd like.) im very proud of this one!"}, {"post_id": 2418, "ts": "2026-06-04T21:47:19Z", "hours": 0.6542, "text": "video below, but i added some visual candy to the project. i like my games to feel niceeee"}, {"post_id": 2393, "ts": "2026-06-04T21:00:10Z", "hours": 0.5369, "text": "i added some blood particles to the blood prisms that try to kill you with a custom particle system i wrote"}, {"post_id": 2365, "ts": "2026-06-04T20:24:48Z", "hours": 0.8644, "text": "finally finished the muzzle flash. it was suuuch a pain but adds a lot to the feel of the gun."}, {"post_id": 2329, "ts": "2026-06-04T19:23:19Z", "hours": 1.1958, "text": "added hitflash, started working on muzzle flash but disabled for now. also rethinking if the game should be black and white so its disabled for now."}, {"post_id": 862, "ts": "2026-06-02T16:02:18Z", "hours": 0.6136, "text": "i tweaked the shader some more because the other one was an unreadable mess. also added display of current position, will be useful for later! next, i want to work on more of the actual gameplay, i think this look is fine for now (maybe ill make the enemies fully white with a black outline)"}, {"post_id": 812, "ts": "2026-06-02T14:23:08Z", "hours": 1.2922, "text": "I got some hit detection and crude logging up (std::cout). The game is coming along nicely, and raylib is so pleasant to work with. [NOTE: this project was started yesterday when i found out about stardance]"}]...
|
Title: Apoplexy by @czapla | Stardance
Devlogs:
I Title: Apoplexy by @czapla | Stardance
Devlogs:
I got some hit detection and crude logging up (std::cout). The game is coming along nicely, and raylib is so pleasant to work with. [NOTE: this project was started yesterday when i found out about stardance]
i tweaked the shader some more because the other one was an unreadable mess. also added display of current position, will be useful for later! next, i want to work on more of the actual gameplay, i think this look is fine for now (maybe ill make the enemies fully white with a black outline)
added hitflash, started working on muzzle flash but disabled for now. also rethinking if the game should be black and white so its disabled for now.
finally finished the muzzle flash. it was suuuch a pain but adds a lot to the feel of the gun.
i added some blood particles to the blood prisms that try to kill you with a custom particle system i wrote
video below, but i added some visual candy to the project. i like my games to feel niceeee
added a crude level editor controlled with the keyboard! it loads and saves json files that you can edit and then save with f6 in game (or manually if youd like.) im very proud of this one!
improved the level editor with some easier controls and a new orbital camera instead of orthographic projection, and added raygui to make selections easier. also refined the movement, headbob and weapon sway!
added some proper lighting (after a struggle) and some more editor QOL. it’s all coming along very nicely, check out the video below. (also refactored weapon system for futureproofing and more)
APOPLEXY New features: Skybox Updated pistol model, longer reload time Updated: World shader i had a lot of fun adding the skybox, and i think the new model looks SO sick
APOPLEXY New features: Whole new audio system with 3D audio Sound effects for footsteps, shooting, reloading and hitting enemies Updated: A few collision bugs Other: Started logging my progress on TikTok (czapladaw67) and YouTube (ironfistdaw) as well. the project is looking more and more like a game every day, really proud of it so far. 😇
APOPLEXY New features: New “Killhouse” map featuring some cheap lighting and wonky walls! New enemy pathfinding built from the ground up (ability to walk around walls and avoid clumping into eachother) Eyes. Dynamic spread on all weapons based on horizontal movement speed New shotgun utilizing this spread system, shoots multiple pellets that have random spread New dynamic crosshair More sounds Updated: Idle animation
APOPLEXY New features: Weapon swapping animation Shotgun reload rework Quick melee system (+ shotgun reload pushback and damage) Live noise testing for enemy AI Updated: Smarter AI, react to noise and being hurt Platform-agnostic build system (except macOS) I’ve now decided a bit more on the direction of this game. I want to create an atmospheric stealth first person shooter, with a big emphasis on the stealth part, and optionally a “go loud” playstyle. Expect future updates to work towards that goal!
APOPLEXY PRE SHIP UPDATE Some finishing touches on the enemy AI, they can now hear you a lot better when you shoot the shotty, and I added a little grace timer if you’re in the enemy field of view to get time to move out of the way. The enemy AI is still far from perfect, but I thought it good enough for a PRE PRE PRE PRE PRE PRE alpha build. :D
APOPLEXY New features: Redesigned UI No updates otherwise. I spent most of this time on a quick refactor to make my life a bit easier, then sketching out a proper UI on paper. This is how it turned out:
APOPLEXY A ship won’t stop me from further updates ;) New features UI “framework” that helps me iterate even quicker (a bunch of stuff is still hardcoded though) Decals, more about that in a future update Slow motion win sequence for dramatic effect xd Updated Old “bio-link” panel gone, replaced by a more subtle healthbar at the bottom of the screen General codebase cleanup and removal of old files Revised PSX shader I hyperfixated a bit too much on the aesthetics, I promise that the next few updates will actually be gameplay related.
APOPLEXY patch notes The one about levels New features Early main menu with level selector Speaking of levels, added a new level, called the “Stealth Compound” (this will not make it into the beta build lol it’s still a testing map) Updated Project updated to C++26 (from C++17) Footstep sounds (went from looping 5 second clip to separate footstep files to easier align with movement speed) Bumped version number on in-game overlay
IMPORTANT APOPLEXY ANNOUNCEMENT Hello guys! I have come to a realization recently. That is the realization that using Raylib is holding me down. I have been trying really hard to bring my vision to life for these hours I’ve been working on it, but it’s all just taking too long. And in the end, I keep reinventing the wheel and making something that already exists (and is better) in a game engine. I also have some other frustrations with Raylib and how the library limits programmers in some ways, which I won’t go in to in this post. So, I will be porting the project to Unity! That is the tool I’m most comfortable with, and I hope it helps me to iterate faster and bring you guys some interesting gameplay soon. Here are some screenshots from the last Raylib build. See you guys soon!
APOPLEXY I whipped up a quick script that would parse the old JSON levels and make them into unity scenes, and rewrote my old character controller. So far so good!
APOPLEXY patch notes The one where the universe itself was made anew. New features New PSX shader which I think looks quite nice! Worse UI! Updated Engine switch from in-house to Unity 6.5 Tweaked animations (mostly shotgun) I would say the game will soon be on complete feature parity with the Raylib version. A lot of the code was virtually the same, so this rewrite moved way quicker than I initially expected…. I already feel like I’m moving so much faster compared to my Raylib attempt.
APOPLEXY patch notes The one where the port was (mostly) complete. New features None! Updated Added in all missing content from the latest raylib build. (UI still in progress.) This took a while. Sorry to keep you waiting!
APOPLEXY announcement The one where I apologize???? Sorry for the lack of content recently, I’ve gotten a bit busy. I don’t have much to show at the moment, but I promise some saucy stuff is in the works. You will not be disappointed!
APOPLEXY patch notes The one about particles New features Raylib build-like particles using Unity’s Particle System™ Updated Touched up on UI and made the code for it cleaner. Gameplay updates coming SOON™!
APOPLEXY patch notes The one where enemies became more alive New features Enemies now utilize a mix of custom pathfinding and Unity’s Nav Mesh system Patrol points for enemies which leads them to just walk around and chill at some spots Updated Skybox Enemy AI is fun. Until it isn’t. Try it yourself!
APOPLEXY patch notes The one about maps Updated WIP for a new map layout! I’ve come to realize that I am not the greatest level designer, but I will try my best anyway. If anyone is interested in helping, reach out!
Ships:
I have reached a point in development where I can’t wait any longer to finally show everyone what I’ve been working on! The game is clearly still pretty barebones, but it is enough for a MVP. I would love to see you guys try it out, and all my progress has been THOROUGHLY documented in previous devlogs, so I encourage you to have a look at those as well! Please enjoy!...
|
1792975779.178711
|
1793062179.178711
|
|
18825
|
LLM Text Compression by @Sabrina | Stardance
|
Sabrina
|
1
|
20.0
|
360
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T20:35:23Z", "hours": 20.0, "multiplier": 18.19, "payout": 360, "blessing": "neutral", "text": "I created a lossless text compression algorithm that uses an AI to guess which letter should come next! My project works best on the latin alphabet, and specifically english text! Even better with minimal punctuation! It works best with this set of characters: a-z, A-Z, 0-9, and the space Two things were challenging. First was getting even getting a model to train, I had to followed a tutorial on tensorflow, but after that google colab trained like there was no tomorrow. The second thing was making the AI deterministic and finding an optimal way to compress it. Initially, I had the ability to set seeds and then i would compress it many many many times over again with different seeds to see which one was optimal. I eventually changed the entire format and how it worked. I made it 100% deterministic and then stored the top 11 results instead of just the top result. I’m proud that in certain cases my compression beat huffman coding by a few bytes. in like 90% of the cases though I am consistently like 1-10 bytes more inflated than huffman coding. But my decoder works on all strings, but for huffman coding you need the table as well, and the optimal one changes.", "repo": "https://github.com/BoomBoomMushroom/llm-text-compression", "demo": "https://llm-text-compression.netlify.app/"}]...
|
[{"post_id": 10198, "ts": "202 [{"post_id": 10198, "ts": "2026-06-16T20:18:12Z", "hours": 0.2714, "text": "Created the readme"}, {"post_id": 10188, "ts": "2026-06-16T20:01:14Z", "hours": 2.0767, "text": "I finished the website and the API! I added a mode to stream the output of the decompression so you can watch it happen in real time. I also made a bit writer class to clean up the compress function. I was also gonan stream that but it was gonna be a little weird since i reverse all the bytes at the end and modify the head which wouldve been in the start byte. But I have deployed the website to “ https://llm-text-compression.netlify.app/ ” and I have deployed the API to nest @ “ https://aicompressapi.sabrina.hackclub.app//compress ” I shall now ship it <3 well i need a readme.md also so in like 10 mins"}, {"post_id": 9691, "ts": "2026-06-16T03:14:36Z", "hours": 5.1972, "text": "I added support for longer utf-8 characters which had me rewrite a little bit of the compression and decompression parts. It inflated the size a little bit but i’d say its manageable right now. I also started working on an API and website so its easy for people to vote. You can input hex bytes or text to compress or decompress. I also wrote a lot about how the compression and decompression algorithm works!"}, {"post_id": 9493, "ts": "2026-06-15T20:53:36Z", "hours": 1.4828, "text": "Okay I got it working!!! I huffman encoded the top 12 predicted next characters and got the size down to 57 Bytes! the huffman coding on the same string is about 56 bytes! I havent crossed the threshold of beating huffman coding but thats okay. I may experiment with arithmetic coding for the index to possibly reduce it further but im happy with this result so far"}, {"post_id": 9393, "ts": "2026-06-15T18:53:35Z", "hours": 1.37, "text": "I increased the return amount to the top 7 results because in the worse case where the correct character is at index 6, the encoded data for it would use 8 bits, which is the same as just encoding the character, and we already used the llm to generate the character i want to work on better huffman coding for the top results as currently it just encodes it by the number of 1s prefixing a 0"}, {"post_id": 9323, "ts": "2026-06-15T17:16:52Z", "hours": 0.4619, "text": "I fixed the varint4 reading and writing but as it seems right now it increases the size of the bit mask. but i think i mightve found a way to do without the bit mask. the vocab is encoded in utf-8 and so for all my characters (a-z, A-Z, 0-9, and a space), only the lowder 7 bits are used, the 8th bit is ALWAYS 0 because of this, a character will NEVER start with a 1, meaning i can see if the next bit in the compress data is a 1 and if so we read an index for the llm’s prediction!"}, {"post_id": 9081, "ts": "2026-06-15T05:35:42Z", "hours": 0.9706, "text": "I got compression and decompression w/ the top 4 predictions working!! I encoded the indexes and then just slapped them in there. i had to pad the ending of the bit stream with 0s to align it to a byte but thats fine. I had to make a bit reader class to read it back and change up my decompresser code to read a byte and keep reading until we finish reading our index, but it was quite simple. Now ive got my message being compressed to about 66 bytes, much better than the ~100 bytes from earlier with just raw prediction. For reference the input text is 110 bytes. The huffman encoding website says it compresses it down to 441 bits or ~56 bytes. Right now im working on run length encoding to compress the llm prediction bitmask down. for my example message it is 16 bytes. but since it is a bit mask there are lots of 0s and 1s in a row, so RLE should work wonders here. Hopefully i can reduce those 16 bytes donn to 6 and then i’d be tied with the huffman compression! That would be cool,,, it is a 40% reduction in bytes so not impossible but we’ll see how it goes."}, {"post_id": 9071, "ts": "2026-06-15T04:32:33Z", "hours": 3.0442, "text": "I have been working on trying to get the LLM to compress more. I tried to brute force a bunch of seeds and they only kinda worked I tried a few other leads but no cigar Now im planning on having my predict next character return the top 5 characters, check if the correct character is in there, and if so then we use entropy/huffman coding to write which one it is. the lower on the list the less example for 5 characters 11 -> 1st result 10 -> 2nd 01 -> 3rd 001 -> 4th 000 -> 5th if i return 4 characters then my tree looks like this: 0 -> 1st 10 -> 2nd 110 -> 3rd 1110 -> 4th the less probable characters have longer codes! this does have the added complexity of throwing off the bit count, but i can either just pop off bits or i can pad the current byte to 8 bits before i encode a character"}, {"post_id": 8987, "ts": "2026-06-14T23:37:23Z", "hours": 1.1539, "text": "I created utilized a wikipedia scraper via getting featured articles from a toolforge.org and then downloaded some articles using wikitext.eluni.co I then added the training support for it by reading all the wikipedia text files and loading them into an array I will now run some training on them to hopefully achieve better compression results!"}, {"post_id": 8949, "ts": "2026-06-14T21:32:40Z", "hours": 3.8536, "text": "I created a way to train a model based on text files. But more importantly i used that model to compress and decompress text. To compress text it takes the input and seed and goes letter by letter and has the ai try and predict the next letter. if it gets it correct it will mark that letter as correct and move on. if it was wrong it will mark it as needing to be remembered and then it’s memory will think it predicted it. It uses that list to make a bit mask of which letters to predict or not, and will end the file with all the letters it marked to remember. To decompress it’s pretty much the same. it’ll take a seed and set the rng to it. it will traverse the bit mask. if it reads a 1, meaning to read a remembered letter, it will read the first letter it can, add it to the output and ai memory and move on. If it reads a 0 then it will use the previous letter and states to predict the next letter. and since we have the same seeds and states the ai is deterministic so we will generate the same letter the ai though of. What do i need to do now? I need to increase it’s training data. Right now it only uses “Alice in Wonderland” by Lewis Carroll, taken from Project Gutenberg. I need to find some way to ethnically source all of the data so if you know where let me know! I’m think rn about using wikipedia, but i have to look into it first."}]...
|
Title: LLM Text Compression by @Sabrina | Stardanc Title: LLM Text Compression by @Sabrina | Stardance
Devlogs:
I created a way to train a model based on text files. But more importantly i used that model to compress and decompress text. To compress text it takes the input and seed and goes letter by letter and has the ai try and predict the next letter. if it gets it correct it will mark that letter as correct and move on. if it was wrong it will mark it as needing to be remembered and then it’s memory will think it predicted it. It uses that list to make a bit mask of which letters to predict or not, and will end the file with all the letters it marked to remember. To decompress it’s pretty much the same. it’ll take a seed and set the rng to it. it will traverse the bit mask. if it reads a 1, meaning to read a remembered letter, it will read the first letter it can, add it to the output and ai memory and move on. If it reads a 0 then it will use the previous letter and states to predict the next letter. and since we have the same seeds and states the ai is deterministic so we will generate the same letter the ai though of. What do i need to do now? I need to increase it’s training data. Right now it only uses “Alice in Wonderland” by Lewis Carroll, taken from Project Gutenberg. I need to find some way to ethnically source all of the data so if you know where let me know! I’m think rn about using wikipedia, but i have to look into it first.
I created utilized a wikipedia scraper via getting featured articles from a toolforge.org and then downloaded some articles using wikitext.eluni.co I then added the training support for it by reading all the wikipedia text files and loading them into an array I will now run some training on them to hopefully achieve better compression results!
I have been working on trying to get the LLM to compress more. I tried to brute force a bunch of seeds and they only kinda worked I tried a few other leads but no cigar Now im planning on having my predict next character return the top 5 characters, check if the correct character is in there, and if so then we use entropy/huffman coding to write which one it is. the lower on the list the less example for 5 characters 11 -> 1st result 10 -> 2nd 01 -> 3rd 001 -> 4th 000 -> 5th if i return 4 characters then my tree looks like this: 0 -> 1st 10 -> 2nd 110 -> 3rd 1110 -> 4th the less probable characters have longer codes! this does have the added complexity of throwing off the bit count, but i can either just pop off bits or i can pad the current byte to 8 bits before i encode a character
I got compression and decompression w/ the top 4 predictions working!! I encoded the indexes and then just slapped them in there. i had to pad the ending of the bit stream with 0s to align it to a byte but thats fine. I had to make a bit reader class to read it back and change up my decompresser code to read a byte and keep reading until we finish reading our index, but it was quite simple. Now ive got my message being compressed to about 66 bytes, much better than the ~100 bytes from earlier with just raw prediction. For reference the input text is 110 bytes. The huffman encoding website says it compresses it down to 441 bits or ~56 bytes. Right now im working on run length encoding to compress the llm prediction bitmask down. for my example message it is 16 bytes. but since it is a bit mask there are lots of 0s and 1s in a row, so RLE should work wonders here. Hopefully i can reduce those 16 bytes donn to 6 and then i’d be tied with the huffman compression! That would be cool,,, it is a 40% reduction in bytes so not impossible but we’ll see how it goes.
I fixed the varint4 reading and writing but as it seems right now it increases the size of the bit mask. but i think i mightve found a way to do without the bit mask. the vocab is encoded in utf-8 and so for all my characters (a-z, A-Z, 0-9, and a space), only the lowder 7 bits are used, the 8th bit is ALWAYS 0 because of this, a character will NEVER start with a 1, meaning i can see if the next bit in the compress data is a 1 and if so we read an index for the llm’s prediction!
I increased the return amount to the top 7 results because in the worse case where the correct character is at index 6, the encoded data for it would use 8 bits, which is the same as just encoding the character, and we already used the llm to generate the character i want to work on better huffman coding for the top results as currently it just encodes it by the number of 1s prefixing a 0
Okay I got it working!!! I huffman encoded the top 12 predicted next characters and got the size down to 57 Bytes! the huffman coding on the same string is about 56 bytes! I havent crossed the threshold of beating huffman coding but thats okay. I may experiment with arithmetic coding for the index to possibly reduce it further but im happy with this result so far
I added support for longer utf-8 characters which had me rewrite a little bit of the compression and decompression parts. It inflated the size a little bit but i’d say its manageable right now. I also started working on an API and website so its easy for people to vote. You can input hex bytes or text to compress or decompress. I also wrote a lot about how the compression and decompression algorithm works!
I finished the website and the API! I added a mode to stream the output of the decompression so you can watch it happen in real time. I also made a bit writer class to clean up the compress function. I was also gonan stream that but it was gonna be a little weird since i reverse all the bytes at the end and modify the head which wouldve been in the start byte. But I have deployed the website to “ https://llm-text-compression.netlify.app/ ” and I have deployed the API to nest @ “ https://aicompressapi.sabrina.hackclub.app//compress ” I shall now ship it <3 well i need a readme.md also so in like 10 mins
Created the readme
Ships:
I created a lossless text compression algorithm that uses an AI to guess which letter should come next! My project works best on the latin alphabet, and specifically english text! Even better with minimal punctuation! It works best with this set of characters: a-z, A-Z, 0-9, and the space Two things were challenging. First was getting even getting a model to train, I had to followed a tutorial on tensorflow, but after that google colab trained like there was no tomorrow. The second thing was making the AI deterministic and finding an optimal way to compress it. Initially, I had the ability to set seeds and then i would compress it many many many times over again with different seeds to see which one was optimal. I eventually changed the entire format and how it worked. I made it 100% deterministic and then stored the top 11 results instead of just the top result. I’m proud that in certain cases my compression beat huffman coding by a few bytes. in like 90% of the cases though I am consistently like 1-10 bytes more inflated than huffman coding. But my decoder works on all strings, but for huffman coding you need the table as well, and the optimal one changes....
|
1792986751.468499
|
1793073151.468499
|
|
2734
|
Robotics Game Center by @Stellar | Stardance
|
Stellar
|
1
|
67.0
|
359
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T04:36:34Z", "hours": 67.0, "multiplier": 5.38, "payout": 359, "blessing": "neutral", "text": "This is a robotics game website built specifically for the FIRST Robotics Competition (FRC) community. It has three games: FRCdle (wordle), FRC trivia, and FRC clicker. FRCdle lets you choose the region and difficulty of the team you want to guess. FRC trivia is a trivia game that lets you filter questions based on a core category, time period, difficulty, and question type. Trivia will be getting more and more questions over time. FRC clicker is like any other clicker game out there (the most famous being Cookie Clicker): buy upgrades that scale exponentially in price in return for linear gains. This project took me a lot longer than I expected it to, so I really hope you enjoy this project!", "repo": "https://github.com/Ansh2021/Flux_Robotics", "demo": "https://fluxrobotics.vercel.app"}]...
|
[{"post_id": 25943, "ts": "202 [{"post_id": 25943, "ts": "2026-07-10T13:38:25Z", "hours": 4.9681, "text": "I’m Promise I’m Done Now Devlog #12 I know I said I was done with this project in the last devlog, but I lied (I’m sorry). Why I Wasn’t Actually Finished The short answer is that I didn’t properly check my website (rookie mistake). The long answer is much more long-winded (obviously). After I fixed the issue of my static assets not showing up, I forgot to check whether FRCdle and FRC Trivia were working. Spoiler alert, they weren’t. Every time I tried fetching data from my backend, the request would always bounce back with a 404 server not found error because my backend wasn’t actually running. I eventually found that Vercel Services was a thing and tried using that to have both my Next.js frontend and Express backend run on the same project. Another spoiler alert, it didn’t work. I tried basically everything to get Vercel Services to work, but to no avail. Like before, my backend was never started by Vercel which caused requests to bounce back with a 404 error. Sometimes, I’d even have my frontend code not show up at all because Vercel would occasionally show a 404 no code error. After all this trial and error, I eventually decided to ditch Vercel Services in favor of hosting my backend on Render, a dedicated backend hosting service (my frontend is still on Vercel). Getting Render to work was so much easier than getting Vercel Services to work. It took me around half an hour to get up and running compared to probably over five hours to try and get Vercel Services running. The only potential issue with Render is that after 15 minutes of inactivity, the server “spins down” (becomes inactive) and takes around one minute to reactivate. Last Steps Get this project finally shipped! I still need to add more trivia questions (I haven’t added any since I found out that my backend fetches didn’t work). Feel free to check it out at fluxrobotics.vercel.app !"}, {"post_id": 24631, "ts": "2026-07-08T11:01:14Z", "hours": 9.4203, "text": "Done and Dusted Devlog #11 I’m finally done with this project (technically speaking). I hosted this project on Vercel which wasn’t as smooth as it should have been. The Hosting Process I ran into so many errors while hosting. WAY TOO MANY. Connecting my GitHub repository to Vercel was straightforward but everything else wasn’t at all. I first ran into build errors when pushing code to GitHub which would then get deployed to my Vercel project. If I remember correctly, the fix was to make sure Vercel tracked the correct root folder (my frontend folder in this case because that’s what it serves to the client side/frontend). After that, my website couldn’t access my Express backend. The fix to that was to have different URL fetch paths depending on whether I was running my code in my development environment or on Vercel. I believe I also had to change where my backend controller was mounted in Express (I had to add “/api” to the front of the path). My last issue was my static assets not loading while in production (they loaded just fine in development). The solution was found in my vercel.json file. I originally had a global catch all path that Vercel used to catch all frontend requests. This global path, however, caught requests that asked for my static assets, thereby not letting them appear on the frontend. Removing the global path and only having my backend redirect path solved this issue. That’s it! I will ship this project as soon as I get more questions into FRC Trivia!"}, {"post_id": 21341, "ts": "2026-07-03T07:05:44Z", "hours": 7.87, "text": "FRCdle Again Devlog #10 THE STATBOTICS API IS BACK UP AGAIN (we’re so back). This means I can finally polish up FRCdle again. Big Improvement I finally got to implement Supabase into FRCdle just like I said I would do for a while now. I’d say this makes FRCdle more fault tolerant since Supabase acts as a backup for whenever either the Blue Alliance or Statbotics API is down (or both). Essentially what I’ve done is have the user fetch data from the two APIs whenever they want area and/or team data. If one or both of these requests fail, the request(s) will fall back to the Supabase backup where a version of the data is stored. This data updates every six hours only when a user actually requests for it. This has proven to be very beneficial as large area requests such as the request for all FRC team data or regional FRC team data tend to bounce back with API error codes. What about FRC Clicker? There’s not much to say about this for this devlog. I added a few more upgrades and items, but that’s really it. Next Steps Finish up FRC Clicker Get the last items done Get their corresponding one-time upgrades done"}, {"post_id": 17394, "ts": "2026-06-28T04:46:15Z", "hours": 10.1503, "text": "I’ve Been Busy Devlog #9 It’s been way too long since my last devlog, but I’ve gotten a pretty decent amount of progress on my FRC clicker game! Progress I’ve modeled my game off of popular idle clicker games, with Cookie Clicker being my main inspiration. My game, just like Cookie Clicker, allows you to buy items such as motors and cameras (just like cursors and grandmas in Cookie Clicker) in return for more game pieces (the default is currently fuel and I plan on letting the user change which game piece from previous years they want). The prices for these items, like all clicker games, increases exponentially (around 1.2 to 1.3 times so far) while only promising linear gains. Cookie Clicker also has one-time upgrades that give permanent boosts to either your items or overall production. I have this too (though not many of them right now)! Annoying Little Thing Tooltips. They provide little bits of additional information as a sort of clarifier for what is presented before you. Creating them seemed deceptively easy. Make the child tooltip absolutely positioned in relation to your relatively positioned parent container and you’re all set, right? Wrong. The way my side bar/container is set up has the tooltip nested so far within divs that even if I were to apply the relative and absolute structure, the tooltip would be cut off by one of the ancestor divs. Literally all I had to do to fix this was not make the tooltip’s parent container relative (the tooltip is still absolute). I don’t fully know why this works, but I’m not complaining. Next Steps Get the next upgrades into FRC clicker. Also revisit FRCdle to get Supabase implemented for it (really only will happen once the Statbotics API is back up again)."}, {"post_id": 13808, "ts": "2026-06-22T17:02:35Z", "hours": 4.2469, "text": "Finished FRC Trivia Devlog #8 It has been a while since my last devlog and I haven’t gotten too much done hours wise on this project (I’ve been busy with life). I did just finish FRC Trivia though! The Game FRC Trivia is exactly what it sounds like: the user is prompted with an FRC themed trivia question that they must attempt to answer correctly. Before the questions start rolling in, the user is prompted to select items from four different categories that will affect the questions they receive: the core category (general FIRST knowledge, events, awards, team), era/time period (historical, current, upcoming), difficulty (easy, medium, hard), and answer type (MCQ, FRQ, true or false). After selecting their preferred question categories, the correct questions will be fetched from Supabase and shown on the user’s screen. I haven’t added many questions yet (I have a grand total of 53) and most of them are Hall of Fame questions that I barely know anything about. Next Steps I really want to make sure FRCdle is working, but with the Statbotics API down, there’s not much I can really do with that. I could add modes to FRC Trivia (like lightning round) but that is a low priority. I will probably shift my attention to another FRC game."}, {"post_id": 11603, "ts": "2026-06-18T21:50:23Z", "hours": 6.3392, "text": "Rough Implementation of Supabase Devlog #7 I decided to implement Supabase due to how frequently the Statbotics API has been down recently. It also doubles as a place to store hundreds of trivia questions (I currently only have 40). Since Supabase is an SQL database, data within it is stored in tables, making it much more structured compared to No-SQL databases such as Firestore. Issue (and Solution) It took me much longer than it should have to get question filtering properly implemented for FRC trivia. Each question has a core category, era (time period), difficulty (easy, medium, or hard), and answer type (multiple choice, true or false, free response). Using the Supabase typescript .in() operator (used with the WHERE function in an SQL Editor), I can filter questions by their properties using .in() as a sort of shorthand for the logical OR operator. The issue with this is that .in() only accepts a string parameter (which is easy enough) and a parameter with the type (string | readonly | null)[] (which is the issue here). Since I’m getting my second parameter from req.query, my Express backend will automatically group duplicate queries into a string array. However, any queries that are not duplicated will be saved as a string instead of a string array (even if I try forcing it to be a string array by using as string[] ). This causes .in() to break since the second parameter has to be a string array. The fix here, which took me way too long to figure out, was to create a new variable for each query requirement and assign it a value depending on if the original requirement is an array or not. If the original requirement was an array, then the new variable will just be the exact same as the original requirement (since we need a string array anyways). On the other hand, if the original requirement wasn’t a string array already, we can just wrap the original requirement in brackets. To make sure the types of this new variable and the second parameter for .in() sufficiently overlap, we get the new variable as (string | null)[] . For example, const eras = (Array.isArray(era) ? era : [era]) as (string | null)[] . This ensures that eras will be a string array (or potentially null) and lets us use it within .in() . And now I can finally fetch questions from Supabase! Next Steps Get questions to show up on the frontend (that’s really it)."}, {"post_id": 9567, "ts": "2026-06-15T22:52:17Z", "hours": 2.8628, "text": "Done With FRCdle (technically) Devlog #6 I’m finally finished with FRCdle (it took me way too long). Statbotics broke again so I’ve only been able to test with hardcoded data. I will go back and retest FRCdle once Statbotics is back up. Issues I really only faced one problem and that was my use effect refusing to fire again when I clicked on a button in the parent element. This use effect was supposed to reset FRCdle to its starting state and I fixed it by adding another use effect (fighting fire with fire here). Accomplishments The obvious one is that I finished FRCdle! The background colors for each cell in the table update based on how close the guess was to the randomly selected team. The text in each cell also indicates whether the guess was too high or too low where applicable. Next Steps I will be working on the robotics trivia portion of the app now. I’ll eventually come back and retest FRCdle when the Statbotics API is fixed (I hope it happens soon). edit : I just realized that if I wanted to circumvent the issue of Statbotics (or maybe even the Blue Alliance) API down, I could have new, changed data be pushed to a database, that way if either API goes down, the user will still be able to play albeit with potentially outdated data. My only issue with this is how annoying it was to host one of my past projects that used Firestore/Firebase (it took me around two weeks of constant debugging to get my backend properly hosted). This might be too big of an improvement to ignore though, so I might add a database. Should I stick with Firebase/Firestore or should I switch to another database like MongoDB or Supabase?"}, {"post_id": 9027, "ts": "2026-06-15T01:55:56Z", "hours": 6.4381, "text": "Mostly Done With FRCdle Devlog #5 I am nearly done with FRCdle (finally). While Statbotics was down (it’s finally back up!), I essentially had to create “pseudodata” in order to properly test adding teams to the table. Issues I had a lot of trouble with async function timings. The async function I had fetching the data for a random team tried running at the same time as the async function that fetched the data for teams in an area. This caused an error in the former function since it was trying to fetch a team before it even knew what area to fetch it from. The fix was really simple: I added another useEffect that ran whenever the area data was fully pushed to its useState or whenever the difficulty changed. Accomplishments The difficulty calculation works. It takes the EPA rank and area (points) rank for each team in an area, scales them in reverse order (in an area with 75 teams, 1st place gets 75 points all the way down to 75th place which gets 1 point), and averages the two new point values with a higher score making a team easier to guess. For example, if the user selects California in easy difficulty, the randomly selected team might be 4414 or 254 since their scores are much higher than most of the teams in their district. Next Steps I can finally get the actual guessing portion of FRCdle done (I know I’ve been saying this for several devlogs, but I will actually do it now)."}, {"post_id": 7519, "ts": "2026-06-12T15:39:29Z", "hours": 3.6486, "text": "Major Roadblock Devlog #4 Development was going pretty smoothly with my request for every single FRC team being implemented. The Roadblock As I was about to start getting the guessing part of FRCdle actually implemented, I got hit with a 500 from Statbotics. I tried again and again and again but I just couldn’t get the API data no matter how hard I tried. I tried clearing my cache and restarting my development environment to no avail. I eventually went to the REST API documentation on Statbotics and tried fetching data directly from there, but I was hit with an error where Statbotics asked me for an API key. I don’t have an API key. I asked a few other people about this issue and they were facing it as well. So now, I think that Statbotics itself is down which means I’ll have to stop backend development for who knows how long. Next Steps There isn’t much I can do. I can work more on the frontend but as long as Statbotics is down, I won’t be getting much progress."}, {"post_id": 6599, "ts": "2026-06-11T02:28:16Z", "hours": 6.015, "text": "FRC Wordle Clone Almost Complete Devlog #3 I am (finally) almost done with the data fetching portion of “FRCdle.” I’ve been fetching data from both the Blue Alliance API and Statbotics API. Annoying Issues (and Odd Solution) I had to figure out how to fetch data for teams in the regional system from the Statbotics API. This API, unlike the Blue Alliance API, doesn’t have a designated method for fetching teams in this system (as compared to the district system which it does let you directly fetch data for). To circumvent this, I used the same endpoint the API uses to send district data. However, I kept the district parameter empty, thereby (mostly) forcing the API to return regional teams. Since this particular API request can only return 1000 teams at once, I had to fetch several times, increasing the offset by 1000 each time until the length of the returned data was less than 1000. This may not be the best development practice, but it is one of, if not the only way to get regional data from Statbotics (luckily it is much easier to get regional data from the Blue Alliance API). Next Steps I have to finish the API request for fetching all FRC teams. Next, I have to finish my difficulty calculations by taking in a team’s EPA rank within the user-chosen area and their area rank (points rank), scaling them from 1-10 (the higher the rank, the higher the number from 1-10), and then taking the average of the two new values. Lastly, I have to implement the wordle part of this game (guessing teams along with color indicators for how close a player is to the correct team)."}, {"post_id": 4649, "ts": "2026-06-08T01:44:12Z", "hours": 3.8564, "text": "Beginnings of a Wordle Clone Devlog #2 I started making lots of progress on the wordle page (specifically FRC wordle). It took me way longer than I’d admit to (even though I can’t hide how much time I’ve logged on this one devlog). Big Accomplishment I finally got my backend up and running! It took me way too long mostly in part due to nodemon and express acting up. I spent way too long trying to figure out why my fetch statement on the frontend wasn’t actually fetching anything from the backend (it was basically a one line fix too). Next Steps I need to add a user input that lets the user dictate where their game of wordle goes. Right now, the only way to change the data on the table is to change the hardcoded team number (users can’t do that). Then I need to add the colors (green, yellow, and grey) for guesses and actually have new rows add onto the table (styling the table is also a priority)."}, {"post_id": 4313, "ts": "2026-06-07T15:57:01Z", "hours": 1.2669, "text": "Landing Page Devlog #1 I’m still kind of new to all of this so please bear with me! (How does one format a devlog? Is it like a READme?) This project (as the project title somewhat suggests) houses several robotics (specifically FIRST Robotics) themed games. I guess you can think of it as a neal.fun knockoff for robotics (but maybe not as fun). I did start this project before Stardance, but I didn’t get too much done with it before. The majority of the time I have spent thus far (after the start of Stardance) was spent familiarizing myself with Next JS and Tailwind as I have really only used React JS and Native along with straight CSS files before. I tried going for the effect that large companies (mainly Google from what I’ve seen) have done with their buttons and other parts of their UI with a gradient effect with their border. I think it’s coming along pretty nicely but Tailwind has a lot of constraints that make replicating it nicely very annoying (either that or I’m just not good at Tailwind). I’ve also created four buttons so far with the same border gradient effect with each button leading the user to a different game page (none of them are set up yet and each one might take a bit). You do have to scroll down to see the buttons so they aren’t included in the screenshot of the landing page. (Please name suggestions please. Flux is just an arbitrary name I chose.)"}]...
|
Title: Robotics Game Center by @Stellar | Stardanc Title: Robotics Game Center by @Stellar | Stardance
Devlogs:
Landing Page Devlog #1 I’m still kind of new to all of this so please bear with me! (How does one format a devlog? Is it like a READme?) This project (as the project title somewhat suggests) houses several robotics (specifically FIRST Robotics) themed games. I guess you can think of it as a neal.fun knockoff for robotics (but maybe not as fun). I did start this project before Stardance, but I didn’t get too much done with it before. The majority of the time I have spent thus far (after the start of Stardance) was spent familiarizing myself with Next JS and Tailwind as I have really only used React JS and Native along with straight CSS files before. I tried going for the effect that large companies (mainly Google from what I’ve seen) have done with their buttons and other parts of their UI with a gradient effect with their border. I think it’s coming along pretty nicely but Tailwind has a lot of constraints that make replicating it nicely very annoying (either that or I’m just not good at Tailwind). I’ve also created four buttons so far with the same border gradient effect with each button leading the user to a different game page (none of them are set up yet and each one might take a bit). You do have to scroll down to see the buttons so they aren’t included in the screenshot of the landing page. (Please name suggestions please. Flux is just an arbitrary name I chose.)
Beginnings of a Wordle Clone Devlog #2 I started making lots of progress on the wordle page (specifically FRC wordle). It took me way longer than I’d admit to (even though I can’t hide how much time I’ve logged on this one devlog). Big Accomplishment I finally got my backend up and running! It took me way too long mostly in part due to nodemon and express acting up. I spent way too long trying to figure out why my fetch statement on the frontend wasn’t actually fetching anything from the backend (it was basically a one line fix too). Next Steps I need to add a user input that lets the user dictate where their game of wordle goes. Right now, the only way to change the data on the table is to change the hardcoded team number (users can’t do that). Then I need to add the colors (green, yellow, and grey) for guesses and actually have new rows add onto the table (styling the table is also a priority).
FRC Wordle Clone Almost Complete Devlog #3 I am (finally) almost done with the data fetching portion of “FRCdle.” I’ve been fetching data from both the Blue Alliance API and Statbotics API. Annoying Issues (and Odd Solution) I had to figure out how to fetch data for teams in the regional system from the Statbotics API. This API, unlike the Blue Alliance API, doesn’t have a designated method for fetching teams in this system (as compared to the district system which it does let you directly fetch data for). To circumvent this, I used the same endpoint the API uses to send district data. However, I kept the district parameter empty, thereby (mostly) forcing the API to return regional teams. Since this particular API request can only return 1000 teams at once, I had to fetch several times, increasing the offset by 1000 each time until the length of the returned data was less than 1000. This may not be the best development practice, but it is one of, if not the only way to get regional data from Statbotics (luckily it is much easier to get regional data from the Blue Alliance API). Next Steps I have to finish the API request for fetching all FRC teams. Next, I have to finish my difficulty calculations by taking in a team’s EPA rank within the user-chosen area and their area rank (points rank), scaling them from 1-10 (the higher the rank, the higher the number from 1-10), and then taking the average of the two new values. Lastly, I have to implement the wordle part of this game (guessing teams along with color indicators for how close a player is to the correct team).
Major Roadblock Devlog #4 Development was going pretty smoothly with my request for every single FRC team being implemented. The Roadblock As I was about to start getting the guessing part of FRCdle actually implemented, I got hit with a 500 from Statbotics. I tried again and again and again but I just couldn’t get the API data no matter how hard I tried. I tried clearing my cache and restarting my development environment to no avail. I eventually went to the REST API documentation on Statbotics and tried fetching data directly from there, but I was hit with an error where Statbotics asked me for an API key. I don’t have an API key. I asked a few other people about this issue and they were facing it as well. So now, I think that Statbotics itself is down which means I’ll have to stop backend development for who knows how long. Next Steps There isn’t much I can do. I can work more on the frontend but as long as Statbotics is down, I won’t be getting much progress.
Mostly Done With FRCdle Devlog #5 I am nearly done with FRCdle (finally). While Statbotics was down (it’s finally back up!), I essentially had to create “pseudodata” in order to properly test adding teams to the table. Issues I had a lot of trouble with async function timings. The async function I had fetching the data for a random team tried running at the same time as the async function that fetched the data for teams in an area. This caused an error in the former function since it was trying to fetch a team before it even knew what area to fetch it from. The fix was really simple: I added another useEffect that ran whenever the area data was fully pushed to its useState or whenever the difficulty changed. Accomplishments The difficulty calculation works. It takes the EPA rank and area (points) rank for each team in an area, scales them in reverse order (in an area with 75 teams, 1st place gets 75 points all the way down to 75th place which gets 1 point), and averages the two new point values with a higher score making a team easier to guess. For example, if the user selects California in easy difficulty, the randomly selected team might be 4414 or 254 since their scores are much higher than most of the teams in their district. Next Steps I can finally get the actual guessing portion of FRCdle done (I know I’ve been saying this for several devlogs, but I will actually do it now).
Done With FRCdle (technically) Devlog #6 I’m finally finished with FRCdle (it took me way too long). Statbotics broke again so I’ve only been able to test with hardcoded data. I will go back and retest FRCdle once Statbotics is back up. Issues I really only faced one problem and that was my use effect refusing to fire again when I clicked on a button in the parent element. This use effect was supposed to reset FRCdle to its starting state and I fixed it by adding another use effect (fighting fire with fire here). Accomplishments The obvious one is that I finished FRCdle! The background colors for each cell in the table update based on how close the guess was to the randomly selected team. The text in each cell also indicates whether the guess was too high or too low where applicable. Next Steps I will be working on the robotics trivia portion of the app now. I’ll eventually come back and retest FRCdle when the Statbotics API is fixed (I hope it happens soon). edit : I just realized that if I wanted to circumvent the issue of Statbotics (or maybe even the Blue Alliance) API down, I could have new, changed data be pushed to a database, that way if either API goes down, the user will still be able to play albeit with potentially outdated data. My only issue with this is how annoying it was to host one of my past projects that used Firestore/Firebase (it took me around two weeks of constant debugging to get my backend properly hosted). This might be too big of an improvement to ignore though, so I might add a database. Should I stick with Firebase/Firestore or should I switch to another database like MongoDB or Supabase?
Rough Implementation of Supabase Devlog #7 I decided to implement Supabase due to how frequently the Statbotics API has been down recently. It also doubles as a place to store hundreds of trivia questions (I currently only have 40). Since Supabase is an SQL database, data within it is stored in tables, making it much more structured compared to No-SQL databases such as Firestore. Issue (and Solution) It took me much longer than it should have to get question filtering properly implemented for FRC trivia. Each question has a core category, era (time period), difficulty (easy, medium, or hard), and answer type (multiple choice, true or false, free response). Using the Supabase typescript .in() operator (used with the WHERE function in an SQL Editor), I can filter questions by their properties using .in() as a sort of shorthand for the logical OR operator. The issue with this is that .in() only accepts a string parameter (which is easy enough) and a parameter with the type (string | readonly | null)[] (which is the issue here). Since I’m getting my second parameter from req.query, my Express backend will automatically group duplicate queries into a string array. However, any queries that are not duplicated will be saved as a string instead of a string array (even if I try forcing it to be a string array by using as string[] ). This causes .in() to break since the second parameter has to be a string array. The fix here, which took me way too long to figure out, was to create a new variable for each query requirement and assign it a value depending on if the original requirement is an array or not. If the original requirement was an array, then the new variable will just be the exact same as the original requirement (since we need a string array anyways). On the other hand, if the original requirement wasn’t a string array already, we can just wrap the original requirement in brackets. To make sure the types of this new variable and the second parameter for .in() sufficiently overlap, we get the new variable as (string | null)[] . For example, const eras = (Array.isArray(era) ? era : [era]) as (string | null)[] . This ensures that eras will be a string array (or potentially null) and lets us use it within .in() . And now I can finally fetch questions from Supabase! Next Steps Get questions to show up on the frontend (that’s really it).
Finished FRC Trivia Devlog #8 It has been a while since my last devlog and I haven’t gotten too much done hours wise on this project (I’ve been busy with life). I did just finish FRC Trivia though! The Game FRC Trivia is exactly what it sounds like: the user is prompted with an FRC themed trivia question that they must attempt to answer correctly. Before the questions start rolling in, the user is prompted to select items from four different categories that will affect the questions they receive: the core category (general FIRST knowledge, events, awards, team), era/time period (historical, current, upcoming), difficulty (easy, medium, hard), and answer type (MCQ, FRQ, true or false). After selecting their preferred question categories, the correct questions will be fetched from Supabase and shown on the user’s screen. I haven’t added many questions yet (I have a grand total of 53) and most of them are Hall of Fame questions that I barely know anything about. Next Steps I really want to make sure FRCdle is working, but with the Statbotics API down, there’s not much I can really do with that. I could add modes to FRC Trivia (like lightning round) but that is a low priority. I will probably shift my attention to another FRC game.
I’ve Been Busy Devlog #9 It’s been way too long since my last devlog, but I’ve gotten a pretty decent amount of progress on my FRC clicker game! Progress I’ve modeled my game off of popular idle clicker games, with Cookie Clicker being my main inspiration. My game, just like Cookie Clicker, allows you to buy items such as motors and cameras (just like cursors and grandmas in Cookie Clicker) in return for more game pieces (the default is currently fuel and I plan on letting the user change which game piece from previous years they want). The prices for these items, like all clicker games, increases exponentially (around 1.2 to 1.3 times so far) while only promising linear gains. Cookie Clicker also has one-time upgrades that give permanent boosts to either your items or overall production. I have this too (though not many of them right now)! Annoying Little Thing Tooltips. They provide little bits of additional information as a sort of clarifier for what is presented before you. Creating them seemed deceptively easy. Make the child tooltip absolutely positioned in relation to your relatively positioned parent container and you’re all set, right? Wrong. The way my side bar/container is set up has the tooltip nested so far within divs that even if I were to apply the relative and absolute structure, the tooltip would be cut off by one of the ancestor divs. Literally all I had to do to fix this was not make the tooltip’s parent container relative (the tooltip is still absolute). I don’t fully know why this works, but I’m not complaining. Next Steps Get the next upgrades into FRC clicker. Also revisit FRCdle to get Supabase implemented for it (really only will happen once the Statbotics API is back up again).
FRCdle Again Devlog #10 THE STATBOTICS API IS BACK UP AGAIN (we’re so back). This means I can finally polish up FRCdle again. Big Improvement I finally got to implement Supabase into FRCdle just like I said I would do for a while now. I’d say this makes FRCdle more fault tolerant since Supabase acts as a backup for whenever either the Blue Alliance or Statbotics API is down (or both). Essentially what I’ve done is have the user fetch data from the two APIs whenever they want area and/or team data. If one or both of these requests fail, the request(s) will fall back to the Supabase backup where a version of the data is stored. This data updates every six hours only when a user actually requests for it. This has proven to be very beneficial as large area requests such as the request for all FRC team data or regional FRC team data tend to bounce back with API error codes. What about FRC Clicker? There’s not much to say about this for this devlog. I added a few more upgrades and items, but that’s really it. Next Steps Finish up FRC Clicker Get the last items done Get their corresponding one-time upgrades done
Done and Dusted Devlog #11 I’m finally done with this project (technically speaking). I hosted this project on Vercel which wasn’t as smooth as it should have been. The Hosting Process I ran into so many errors while hosting. WAY TOO MANY. Connecting my GitHub repository to Vercel was straightforward but everything else wasn’t at all. I first ran into build errors when pushing code to GitHub which would then get deployed to my Vercel project. If I remember correctly, the fix was to make sure Vercel tracked the correct root folder (my frontend folder in this case because that’s what it serves to the client side/frontend). After that, my website couldn’t access my Express backend. The fix to that was to have different URL fetch paths depending on whether I was running my code in my development environment or on Vercel. I believe I also had to change where my backend controller was mounted in Express (I had to add “/api” to the front of the path). My last issue was my static assets not loading while in production (they loaded just fine in development). The solution was found in my vercel.json file. I originally had a global catch all path that Vercel used to catch all frontend requests. This global path, however, caught requests that asked for my static assets, thereby not letting them appear on the frontend. Removing the global path and only having my backend redirect path solved this issue. That’s it! I will ship this project as soon as I get more questions into FRC Trivia!
I’m Promise I’m Done Now Devlog #12 I know I said I was done with this project in the last devlog, but I lied (I’m sorry). Why I Wasn’t Actually Finished The short answer is that I didn’t properly check my website (rookie mistake). The long answer is much more long-winded (obviously). After I fixed the issue of my static assets not showing up, I forgot to check whether FRCdle and FRC Trivia were working. Spoiler alert, they weren’t. Every time I tried fetching data from my backend, the request would always bounce back with a 404 server not found error because my backend wasn’t actually running. I eventually found that Vercel Services was a thing and tried using that to have both my Next.js frontend and Express backend run on the same project. Another spoiler alert, it didn’t work. I tried basically everything to get Vercel Services to work, but to no avail. Like before, my backend was never started by Vercel which caused requests to bounce back with a 404 error. Sometimes, I’d even have my frontend code not show up at all because Vercel would occasionally show a 404 no code error. After all this trial and error, I eventually decided to ditch Vercel Services in favor of hosting my backend on Render, a dedicated backend hosting service (my frontend is still on Vercel). Getting Render to work was so much easier than getting Vercel Services to work. It took me around half an hour to get up and running compared to probably over five hours to try and get Vercel Services running. The only potential issue with Render is that after 15 minutes of inactivity, the server “spins down” (becomes inactive) and takes around one minute to reactivate. Last Steps Get this project finally shipped! I still need to add more trivia questions (I haven’t added any since I found out that my backend fetches didn’t work). Feel free to check it out at fluxrobotics.vercel.app !
Ships:
This is a robotics game website built specifically for the FIRST Robotics Competition (FRC) community. It has three games: FRCdle (wordle), FRC trivia, and FRC clicker. FRCdle lets you choose the region and difficulty of the team you want to guess. FRC trivia is a trivia game that lets you filter questions based on a core category, time period, difficulty, and question type. Trivia will be getting more and more questions over time. FRC clicker is like any other clicker game out there (the most famous being Cookie Clicker): buy upgrades that scale exponentially in price in return for linear gains. This project took me a lot longer than I expected it to, so I really hope you enjoy this project!...
|
1792993693.0771954
|
1793080093.0771954
|
|
16896
|
3-Body JS Simulation by @dkh | Stardance
|
dkh
|
1
|
19.0
|
359
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T02:37:18Z", "hours": 19.0, "multiplier": 18.91, "payout": 359, "blessing": "neutral", "text": "I made a real-time 3D physics simulation of a fully configurable three-body solar system using Three.js. It can run in your browser and is compatible with a wide range of devices. Players can move their camera, adjust simulation parameters, and explore the system’s chaotic behavior. Instructions are in the README along with a downloadable tutorial video file on the itch.io page. The biggest challenge I faced was that I hadn’t programmed with JavaScript, HTML, or CSS in a while. Designed and built by me using Three.js and GitHub Codespaces. I decided to build this project in honor of one of my favorite book series ever called the Three Body Problem. I was also fascinated by three-body physics and wanted to share that fascination with others. Thank you Stardance!", "repo": "https://github.com/dkhdev25/Three-Body-Sim", "demo": "https://dkhdev.itch.io/3-body-sim-3d"}]...
|
[{"post_id": 19656, "ts": "202 [{"post_id": 19656, "ts": "2026-07-01T01:08:50Z", "hours": 0.2669, "text": "Finished the readme so much styling stuff I had to do! Added some fixes and features to the game like following suns and resetting cam positions properly. Then I uploaded the polished version to itch io to ship. Made video tutorial and fixed the layout of the terminal so judges won’t be confused."}, {"post_id": 19531, "ts": "2026-06-30T21:08:54Z", "hours": 1.3189, "text": "Ready to SHIP my project! In this last hour of my work, I have finished the local settings panel that displays the selected body tab, I have made the physics more REALISTIC, and I have polished the simulation up a bit! Now I’m just going to make a README, upload to itch.io, and make a video tutorial to hopefully maximize the stardust I gain from my first ever project on Stardance! Thank you everyone for this opportunity that was given to me!"}, {"post_id": 18865, "ts": "2026-06-30T02:02:53Z", "hours": 0.6419, "text": "Ok, this is the SHORTEST logged time in a devlog I have ever made for this project so far, but an important feature has been finally added. What is the most important part of the simulation? Well a simulation RECORDS… think about that for a minute. Would it be best to have gravity/velocity arrows, the three body spheres, or the TRAILS. Well, it would be the trails, wouldn’t it? Because they are the HISTORY of the simulation. I have failed at making the 3D trails work 2 TIMES already (some sort of problem with the rendering), because after hours of debugging they just WOULD NOT work. But finally I took a simpler approach (after procrastinating them till like the end of the project almost) and they finally work! Basically it just records data points of the star positions then renders them. Let me know if any of you have feedback!"}, {"post_id": 18786, "ts": "2026-06-30T00:04:08Z", "hours": 3.2194, "text": "Just working on getting the global settings panel to finally work with JS after styling it with CSS. Here is this beautiful screenshot of the panel with an interesting image in the viewport XD One thing I have to say, I got dropdowns, off and ons, and number inputs but some of the global settings are unnecessary so I’m gonna get rid of those, fine tune the others, and fix reset/restart terminal commands, then I will finish local settings panel and ship this project."}, {"post_id": 13423, "ts": "2026-06-21T23:46:18Z", "hours": 1.735, "text": "So close to finishing the terminal! Here is a brief explanation on the difference between the two setting types: the terminal RUNS the simulation and the panels specify HOW the simulation will run, the two panels also play two different roles, one of them is the global settings, the other is the individual LOCAL settings for each body in the simulation. I hope this gives some understanding on how I plan to finish the settings before I go over on what I have been doing recently with the terminal which means ONE step closer to shipping this project! So: most of the work being done so far has been with the terminal right now. I polished up the look so it gets a nice default terminal style. Then I fixed some problems with the text line heights and the input/output contrast. I also made a script to sense certain key words in the terminal to color them so that you know that the word EXISTS and you typed it in correctly. I then added a help cmd function so that it will list all of the cmds. I narrowed down the list of cmds to: run, restart, reset, pause, resume, and debug. I’ve been working on getting them all integrated and am almost done. Next is the panels after the terminal is done."}, {"post_id": 8945, "ts": "2026-06-14T21:29:12Z", "hours": 1.9411, "text": "Added the skeleton of the UI!!! It looks nice right now I think, and you can select which sun you want to edit now. Finished ARROWS with contrast yet cohesion because they are velocity and gravity for each star, so same color and stuff, but different lengths, like clock hands. Worked for so LOOOOOOONG on trails but they just wouldn’t show no matter the debugging I tried so I’m giving up on trails (which I didn’t really need anyways). Just need to make the settings and then we can SHIP this project! YASSSSSSS HOORAY!!!"}, {"post_id": 8828, "ts": "2026-06-14T17:58:26Z", "hours": 5.3031, "text": "FINISHED THE 3-BODY PHYSICS!!! Awesome! Then I worked on making all of the simulation settings (already made & newly added) as some neat vars clustered together in the top of the code. After that I started working on the UI, my vision right now is a terminal on the bottom, a banner on the top, and two panels on top of each other on the left, the top one will be the global sim settings and the bottom one will be the selected sun settings. I finished the terminal UI but I need to make it where you can type into it and stuff. Finally, I posted the current version of the unfinished demo onto itch.io! Next I will finish the UI and work on trails + velocity and pull arrows.(Btw, that blue building icon in the screenshot isn’t part of the project, this was made on my school Chromebook so that’s an annoying thing on my screen!)"}, {"post_id": 7647, "ts": "2026-06-12T19:43:27Z", "hours": 2.5744, "text": "I was adding three unique yet COHESIVE suns together in a solar system (for our THREE bodies), adding a cluster system to the new procedural background star generation function I replaced the texture with and a color tint (looks more NATURAL), adding coronas to the three suns and removed their textures, working on orbit and zoom (especially the START position and min/max zoom), removed sphere for background since we don’t use a texture for that ANYMORE, cleaned up the code and polished some stuff. Now I can start working on the physics and then the UI after that."}, {"post_id": 7213, "ts": "2026-06-12T01:22:12Z", "hours": 2.0619, "text": "I started by joining Stardance, connecting my project to Hackatime, creating a GitHub codespace, and a repository with it. I began working on the sun, orbit controls with camera, glow through bloom effect, rotation animations, and background. (It’s all 3D) In fact, I made my first sun sphere (so first body) and then put it INSIDE of a sphere with the looping PNG to achieve a HDRI effect. Next I will set parameters for the zoom, make three suns, and work on trails + physics. (Which isn’t to be taken lightly cause the physics is going to be CRAZY) Thank you Stardance for letting me join! -dkh"}]...
|
Title: 3-Body JS Simulation by @dkh | Stardance
D Title: 3-Body JS Simulation by @dkh | Stardance
Devlogs:
I started by joining Stardance, connecting my project to Hackatime, creating a GitHub codespace, and a repository with it. I began working on the sun, orbit controls with camera, glow through bloom effect, rotation animations, and background. (It’s all 3D) In fact, I made my first sun sphere (so first body) and then put it INSIDE of a sphere with the looping PNG to achieve a HDRI effect. Next I will set parameters for the zoom, make three suns, and work on trails + physics. (Which isn’t to be taken lightly cause the physics is going to be CRAZY) Thank you Stardance for letting me join! -dkh
I was adding three unique yet COHESIVE suns together in a solar system (for our THREE bodies), adding a cluster system to the new procedural background star generation function I replaced the texture with and a color tint (looks more NATURAL), adding coronas to the three suns and removed their textures, working on orbit and zoom (especially the START position and min/max zoom), removed sphere for background since we don’t use a texture for that ANYMORE, cleaned up the code and polished some stuff. Now I can start working on the physics and then the UI after that.
FINISHED THE 3-BODY PHYSICS!!! Awesome! Then I worked on making all of the simulation settings (already made & newly added) as some neat vars clustered together in the top of the code. After that I started working on the UI, my vision right now is a terminal on the bottom, a banner on the top, and two panels on top of each other on the left, the top one will be the global sim settings and the bottom one will be the selected sun settings. I finished the terminal UI but I need to make it where you can type into it and stuff. Finally, I posted the current version of the unfinished demo onto itch.io! Next I will finish the UI and work on trails + velocity and pull arrows.(Btw, that blue building icon in the screenshot isn’t part of the project, this was made on my school Chromebook so that’s an annoying thing on my screen!)
Added the skeleton of the UI!!! It looks nice right now I think, and you can select which sun you want to edit now. Finished ARROWS with contrast yet cohesion because they are velocity and gravity for each star, so same color and stuff, but different lengths, like clock hands. Worked for so LOOOOOOONG on trails but they just wouldn’t show no matter the debugging I tried so I’m giving up on trails (which I didn’t really need anyways). Just need to make the settings and then we can SHIP this project! YASSSSSSS HOORAY!!!
So close to finishing the terminal! Here is a brief explanation on the difference between the two setting types: the terminal RUNS the simulation and the panels specify HOW the simulation will run, the two panels also play two different roles, one of them is the global settings, the other is the individual LOCAL settings for each body in the simulation. I hope this gives some understanding on how I plan to finish the settings before I go over on what I have been doing recently with the terminal which means ONE step closer to shipping this project! So: most of the work being done so far has been with the terminal right now. I polished up the look so it gets a nice default terminal style. Then I fixed some problems with the text line heights and the input/output contrast. I also made a script to sense certain key words in the terminal to color them so that you know that the word EXISTS and you typed it in correctly. I then added a help cmd function so that it will list all of the cmds. I narrowed down the list of cmds to: run, restart, reset, pause, resume, and debug. I’ve been working on getting them all integrated and am almost done. Next is the panels after the terminal is done.
Just working on getting the global settings panel to finally work with JS after styling it with CSS. Here is this beautiful screenshot of the panel with an interesting image in the viewport XD One thing I have to say, I got dropdowns, off and ons, and number inputs but some of the global settings are unnecessary so I’m gonna get rid of those, fine tune the others, and fix reset/restart terminal commands, then I will finish local settings panel and ship this project.
Ok, this is the SHORTEST logged time in a devlog I have ever made for this project so far, but an important feature has been finally added. What is the most important part of the simulation? Well a simulation RECORDS… think about that for a minute. Would it be best to have gravity/velocity arrows, the three body spheres, or the TRAILS. Well, it would be the trails, wouldn’t it? Because they are the HISTORY of the simulation. I have failed at making the 3D trails work 2 TIMES already (some sort of problem with the rendering), because after hours of debugging they just WOULD NOT work. But finally I took a simpler approach (after procrastinating them till like the end of the project almost) and they finally work! Basically it just records data points of the star positions then renders them. Let me know if any of you have feedback!
Ready to SHIP my project! In this last hour of my work, I have finished the local settings panel that displays the selected body tab, I have made the physics more REALISTIC, and I have polished the simulation up a bit! Now I’m just going to make a README, upload to itch.io, and make a video tutorial to hopefully maximize the stardust I gain from my first ever project on Stardance! Thank you everyone for this opportunity that was given to me!
Finished the readme so much styling stuff I had to do! Added some fixes and features to the game like following suns and resetting cam positions properly. Then I uploaded the polished version to itch io to ship. Made video tutorial and fixed the layout of the terminal so judges won’t be confused.
Ships:
I made a real-time 3D physics simulation of a fully configurable three-body solar system using Three.js. It can run in your browser and is compatible with a wide range of devices. Players can move their camera, adjust simulation parameters, and explore the system’s chaotic behavior. Instructions are in the README along with a downloadable tutorial video file on the itch.io page. The biggest challenge I faced was that I hadn’t programmed with JavaScript, HTML, or CSS in a while. Designed and built by me using Three.js and GitHub Codespaces. I decided to build this project in honor of one of my favorite book series ever called the Three Body Problem. I was also fascinated by three-body physics and wanted to share that fascination with others. Thank you Stardance!...
|
1792975742.4763184
|
1793062142.4763184
|
|
26238
|
Marten by @tosterabgx | Stardance
|
tosterabgx
|
1
|
23.83
|
359
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T23:13:03Z", "hours": 23.0, "multiplier": 15.53, "payout": 359, "blessing": "neutral", "text": "Marten is ready for its first release! I’ve created a free, open-source reverse tunnel tool for both raw TCP and HTTP traffic, with everything secured using TLS. This is definitely not the final version. There’s still so much more to add, like accounts, tunnel management and statistics. Stay tuned for more updates!", "repo": "https://github.com/tosterabgx/marten", "demo": "https://usemarten.tech"}]...
|
[{"post_id": 31182, "ts": "202 [{"post_id": 31182, "ts": "2026-07-19T11:49:08Z", "hours": 0.83, "text": "Law update I added the Terms of Service page to withdraw any responsibility. I don’t want to go to jail if someone uses marten for some illegal stuff Also, fixed some minor bugs in a client (like incorrect url for tcp connections)"}, {"post_id": 27972, "ts": "2026-07-13T22:36:19Z", "hours": 0.9003, "text": "Website update Made the /status page actually useful, showing the time since the start and the number of active tunnels. btw, this page helped me to detect a memory leak of the http listeners :p Old listeners weren’t closed when their control connection dropped, so they would accumulate and crash the server."}, {"post_id": 27110, "ts": "2026-07-12T11:42:02Z", "hours": 8.1161, "text": "Huge update HTTPS is here! From now on, all http connections are redirected from random subdomains. They are also secured with tls, thanks to cloudflare. Updated website Added /docs/ and /status/ pages on my website."}, {"post_id": 19118, "ts": "2026-06-30T11:06:48Z", "hours": 0.8119, "text": "Small update Updated the README. Now it looks clean and much more informative than it was before"}, {"post_id": 18012, "ts": "2026-06-28T23:51:15Z", "hours": 3.7658, "text": "Now we have a mascot! (and a landing page) Designed a polygonal vector logo that resembles a marten (what a coincidence) What was made Built a minimalistic landing page with the Astro framework. There’s not much here for now, but just the basic info. What’s next? I want to add http support with random address assignment, so websites can be served on port 443 with https."}, {"post_id": 17113, "ts": "2026-06-27T19:44:23Z", "hours": 7.1231, "text": "Yay, it’s working I’ve finally managed to finish the TCP tunnel part. As always, I overengineered at least something. This time, it was the deployment. Now every push to main starts a GitHub Actions workflow that automatically builds and deploys the server. It was fun, but it took a pretty long time to figure out CI/CD for the first time :D"}, {"post_id": 16540, "ts": "2026-06-26T22:01:18Z", "hours": 2.5086, "text": "What is Marten? Marten is a free reverse tunnel (just like ngrok) that I’m building with Go. It’s my first project in Go, so it’s also a good way to learn the language itself :p My TCP design and a first connection Designed the connection process (for tcp only) and build a simple server and a client that can send messages to each other! Big thanks to bore for inspiration on how to do this."}]...
|
Title: Marten by @tosterabgx | Stardance
Devlogs: Title: Marten by @tosterabgx | Stardance
Devlogs:
What is Marten? Marten is a free reverse tunnel (just like ngrok) that I’m building with Go. It’s my first project in Go, so it’s also a good way to learn the language itself :p My TCP design and a first connection Designed the connection process (for tcp only) and build a simple server and a client that can send messages to each other! Big thanks to bore for inspiration on how to do this.
Yay, it’s working I’ve finally managed to finish the TCP tunnel part. As always, I overengineered at least something. This time, it was the deployment. Now every push to main starts a GitHub Actions workflow that automatically builds and deploys the server. It was fun, but it took a pretty long time to figure out CI/CD for the first time :D
Now we have a mascot! (and a landing page) Designed a polygonal vector logo that resembles a marten (what a coincidence) What was made Built a minimalistic landing page with the Astro framework. There’s not much here for now, but just the basic info. What’s next? I want to add http support with random address assignment, so websites can be served on port 443 with https.
Small update Updated the README. Now it looks clean and much more informative than it was before
Huge update HTTPS is here! From now on, all http connections are redirected from random subdomains. They are also secured with tls, thanks to cloudflare. Updated website Added /docs/ and /status/ pages on my website.
Website update Made the /status page actually useful, showing the time since the start and the number of active tunnels. btw, this page helped me to detect a memory leak of the http listeners :p Old listeners weren’t closed when their control connection dropped, so they would accumulate and crash the server.
Law update I added the Terms of Service page to withdraw any responsibility. I don’t want to go to jail if someone uses marten for some illegal stuff Also, fixed some minor bugs in a client (like incorrect url for tcp connections)
Ships:
Marten is ready for its first release! I’ve created a free, open-source reverse tunnel tool for both raw TCP and HTTP traffic, with everything secured using TLS. This is definitely not the final version. There’s still so much more to add, like accounts, tunnel management and statistics. Stay tuned for more updates!...
|
1792979519.452627
|
1793065919.452627
|
|
42911
|
MineAscii by @renanfartes | Stardance
|
renanfartes
|
1
|
43.35
|
359
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T16:11:23Z", "hours": 40.0, "multiplier": 9.06, "payout": 359, "blessing": "neutral", "text": "I made a OpenGL based voxel engine with a terminal Renderer in raw C! The game uses RGB TrueColors ansi scape codes in a buffer before printing it all ar once. It also compreses the RGB colors. The main problem i handled was developing hours without seeing something opn the screen in C. But i managed to got it working with block clulling, chunk and mesh generation logic.", "repo": "https://github.com/Renan-G-projec/MineAscii", "demo": "https://github.com/Renan-G-projec/MineAscii/releases/tag/v0.1.0"}]...
|
[{"post_id": 58747, "ts": "202 [{"post_id": 58747, "ts": "2026-08-31T09:43:02Z", "hours": 3.3486, "text": "Devlog 19 Tree shaking, RLE and terminal checking. I tried to implement a feature that would make the terminal scale accordingly with the users terminal. It was the hardest thing i would have to handle in C. I tried callbacks to resize, signals and so more and it didn’t work. The feature would detect any changes on the size and adapt itself. After hours i just deleted the branch and focused on developing the tree shaking (it is complete!) and now the game does not start when the terminal is not big enough. Next step is to change line breaks with move cursor instructions and move the syscalls to macros so i can add a windows version asap! Also, now the z key exits gracefully unloading everything. AMDG"}, {"post_id": 55540, "ts": "2026-08-27T13:44:47Z", "hours": 0.275, "text": "Devlog 18 Just imprved the readme and added demo video. I also improve the resolution!"}, {"post_id": 55531, "ts": "2026-08-27T13:22:01Z", "hours": 3.0394, "text": "Devlog 17 Finally got it to work!!!! I refactored the code so it supports easy tree shaking (yet is not fully implemented) The termios reads input nonblock and then the game can effectivelly be played (bu terminals reads only one key at a time. This issue i cannot fix right now and it if i try to take input another way the game shall not work on wayland by now.)"}, {"post_id": 54446, "ts": "2026-08-25T13:52:05Z", "hours": 2.9392, "text": "Devlog 16 Terminal Rendering and block placing changed to Stone I implemented a reallyh bad way of printing the terminal to the screen. It works by copyting the pixels from the opengl context, but the code is a mess and the line breaking is weird at dicfferent terminals (i’m using kitty) I will refactor and optimize this by making a component which is responsibgle from receivend the pixels, mounting a ultra optimized string and printing it in one single syscall. Also i may use unicode characters because this shall gave me a better resolutui9on and a better experience overall I"}, {"post_id": 51660, "ts": "2026-08-21T13:43:48Z", "hours": 1.4514, "text": "Devlog 15 Hitbox Interface and Infinite chunk generation I changed the sky color and finally added infinite chunk generation. I was getting weird bugs but it was all negative coordinates stuff, so i added a offset to the perlin noise calculation. It is alfuw and to big negative coordinates it will happen again. I may need to change the lib itself or come with another solution. I also removed a dynamic memory allocation on the chunk generation, it could be made static and now the OS handles the basic allocation. Now the game loads and unloads chunks dynamically. But the render distacne can’t be above 6 or my pc starts to cry. I need to optimize this. Next steps are to add collision and maybe aw few blocks. For the first ship i don’t think i need trees or clouds or complex illumination. AMDG!"}, {"post_id": 50367, "ts": "2026-08-19T15:19:30Z", "hours": 3.2514, "text": "Devlog 14 Chunk with hashmaps and big refactor I Had TONS of headaches with my current code. The mess was a lot more messy than i thought. I changed a lot of the old code and refactored the chunk rendering system. Now the chunks can be on negative coords, the world position unit is calculated in chunks. I implemented a hashmap to calculate the chunks and implemented chunk unloading. It is not performatic (i may have to use greedy culling or even frustum culling). The dynamic chunk loading is not implemented yet but it is easy with this refactor Also i think the code leaks memory because of the hashmap implmenentaiton. I will take a look on that later."}, {"post_id": 49972, "ts": "2026-08-18T23:58:21Z", "hours": 1.8006, "text": "Devlog 13 Block deleting and Block placing Just finished the core block manegment system. The raytracing engine determines which face it has touched and the player puts the block based on that. The code is a mess. I tried implementing a face culling between chunks but failed miserably. I tried making the chunk receive the world context and it didn’t work because of circular dependency (the world imports the chunk and then imports the chunk again), and forward definitions also wasn’t solving My next urgency is to refactor and turn this mess legible. AMDG"}, {"post_id": 48904, "ts": "2026-08-17T13:49:58Z", "hours": 0.8056, "text": "Devlog 12 Visual for the raytracing! So.. I hardcoded this cube so the player can clearly see what block he is looking at. I’m really surprised that this was a lot more fast than the raytracing itself. Deleting blocks will be the next step and will be easy this this help. Unfornatly i had to use gemini to help me debug some little strange issues, even that the code itself was written by me it makes me feel dependent. I wish someone makes an AI blocker lol AMDG"}, {"post_id": 47803, "ts": "2026-08-16T00:32:16Z", "hours": 3.8569, "text": "Devlog 11 Gravity, Jump, Refactor and Raycasting I implemented a very raw way of handling with gravity and a very messy snap logic. It still works but i really do not like the code quality for that. I also added the jump logiac and refactor a lot o the code of the engine itself. Also i implemented the bassic raycasting to the next steps, which are deleting and creating blocks. I think i will have a hard time with these since there’s all the logic of which face is the player looking etc. I used gemini to decide some architectural decisions and some debugging, i’m sad to use ai even for that. Ps: Writing this Devlog for the 3rd time because i didn’t notice that the video was over 50mb. AMDG"}, {"post_id": 47274, "ts": "2026-08-15T03:02:48Z", "hours": 1.0928, "text": "Devlog 10 World generation, stone and perlin noise fized! I fixed that weird bug and added the texture to the dirt, improved a little the terrain generation system and the movimentation. The code for that is still a mess but it works. I also do not know how i can turn this terrain more natural. Just seems so uniform and feels kinda weird. Next steps are making the chunks load and unload on RAM (They’re fixed at the moment) and making the world infinite. I also need to implement gravity and collision to the player. AMDG"}, {"post_id": 47217, "ts": "2026-08-14T23:57:54Z", "hours": 3.8075, "text": "Devlog 09 Raw Chunk generation! I refactored Tons of lines of code, improved the performance and readibility and added a random and undocumented perlin noise library to generate the chunk. I also made the camera and the player 2 separated entities, so in the future if i want to add another persapective a state machine would be more easy. I added the stone block (yet it still not visible on the video) and the chunk generation stills weird. I’m gonna fix that. Also, this perlin noise library is from 12 yearss ago. It is small so maybe i can improve the documentation by opening a pull request (it doesn’t even have a README or License… So i added a reference at external/perlin/LICENSE.md AMDG"}, {"post_id": 45872, "ts": "2026-08-12T16:38:22Z", "hours": 2.9658, "text": "Devlog 08 BLock culling. Finally added block clulling to my voxel engine game! I also refactored all teh mesh generation logic and made MANY refactors to the engine. The first was to break the code into smaller pieces with different responsabilities so i can think only on the problem i am handliing with. I added CubeFace and removed hardcoded pieces. As seen on the video, faces between 2 solid blocks are not generated anymore…. my code looks dangerous on the border btw but the getBlock returns air block when out-of-index."}, {"post_id": 44145, "ts": "2026-08-09T18:25:49Z", "hours": 2.905, "text": "Devlog 07 Chunk Rendering added! I added a lot of things since last devlog. I Encapsulated the textures, organized project structure and started working on the chunk logic. I really do not like the result, it is not optimized but the goal was to see something on the screen fast. I added a block interfacee with the chunk. But i used a lot of pointers and i might be in danger if i not refactor this later or take really care with malloc. I plan to refactor and optimize the logic (faces between solid blocks still being rendered) and i really wonder how i shall add the texture mapping to this. I also had a hard time debugging this because buffer underflows were being caused by premature optimization (yall can even see in the src/core/chunk.c the comment). I used Gemini to debug the logic, but i plan to refactor and using AI makes me kidna sad even for debugging"}, {"post_id": 43548, "ts": "2026-08-08T21:37:24Z", "hours": 2.4325, "text": "Devlog 06 Movimentation + sensitivity + textures added! I added some really simple textures based on the minecraf t classic ones. I created also a texture interface class and modded some shaders because i was troubleshotting to make the atlas work. I want now to work on the core logic as we have all the basic interfaces we need (I just need to put the texture encapsulated and everything shall be ready). Chunks and mesh building will be probably next. As this is a simple model for testing the texture atlas, i raw coded the vertices and this was kinda a headache. Not doing this again for a long time. Also my index buffer was not needed because the faces had shared vertcices but the UV was totally different PS: The texture of the top face is grey because the atlas expect me to color it, but i`m to tired to do this now.. XD"}, {"post_id": 42976, "ts": "2026-08-07T23:39:04Z", "hours": 1.2256, "text": "Devlog 05 Working camera! I was trying to make the camera workingh and i had hard times with it, because opengl does not warn about anything that goes wrong with the shader stuff so it just desapears. I also learned a lot about matrices and this beautiful opengl course is helping me a lot: OpenGL by Victor Gordan . I also added really basic movements for testing. It is not a 3d object yet, it is more like a paper. I need to work in textures and model matrices while making a renderer to organize and optimize the graphical pipeline. Also all the minecraft logic needs to initialize urgently."}, {"post_id": 42310, "ts": "2026-08-06T23:27:04Z", "hours": 2.3978, "text": "Devlog 04 Added matrices library and meshs Ok, so first i coded the mesh logics and it worked well. I do not remember but i have in my memory that it was successfully added, but when i opened vs code today i realised i’ve pushed a code that didn’t compile and even don’t display anything because i did not test the logic after encapsulated. I had to go to gemini and ask it about the bug. I feel bad fort that. I also added the cglm bind to C and it worked well, i even made the square rotates with some matrices (and that was in teh commit that couldn’t compile). I removed it to debug and i’m not likelly to code this again. Next steps is to add some more logic to the Mesh such as model matrices. I plan to make the camera and start going 3d next. Also as seen on the image i added input! I made a wrapper as the GLFW will after be hidden so i don’t need to rewrite input handling in 70 different files."}, {"post_id": 41054, "ts": "2026-08-05T00:27:58Z", "hours": 2.9536, "text": "Devlog 03 Added triangles and mini library! So i learned a little techniques in C while doing this code. I coded some helper functions to handle Shaders (w/ file reading), VAOs, EBOs and VBOs, which are kinda weird to look into the raw call to opengl The functions kinda look like POO but as these objects are just simple unsigned integers i didn’t made any cache miss on that, and no allocation was indeed made. I learned to make it work alos! I hard coded everything on main then refactored line by line commiting it. The result is just a square but the base is readdy!!!"}, {"post_id": 39468, "ts": "2026-08-02T13:09:14Z", "hours": 1.5714, "text": "Devlog 02 Added basic window and linked libraries! So i spent some time adding CMAKE to the project. I do not like the semantics of these metabuild system but it is necessary and useful. I downloaded the GLAD loader and put in a external/folder. I also put by FetchContent the GLFW module so it is not on the source tree. I now have a basic window. But yall may think that this is strange, if it is ascii why would i have a window? My objective is to use the GPU to process the pixels but instead of putting it on the screen, it writes to a buffer and then my code prints using these ANSI escape codes to do RGB. I will disable the window, that’s called offscreen rendering. But to my next tests i will do the framebuffer (i changed the previous class name to ascii buffer because it’s goal is to only print on the terminal. The framebuffer shall be the OpenGL target. The framebuffer functions shall also optimize the asciibuffer by compressing those ANSI scape codes) If it works i can develop the entire game into a big screen and at the last time try to put it on the terminal. Do not know if this is a good idea. Forever"}, {"post_id": 39236, "ts": "2026-08-02T02:11:38Z", "hours": 0.8919, "text": "Devlog 01 Just started the project! I wanna make a minecraft in C that runs on the terminal. I know that will be hard as terminals were not supposed to do that kind of work but this is exactly the reason i’m using C I started developing basic framebuffer functions and got the baaasic pixel rendering."}]...
|
Title: MineAscii by @renanfartes | Stardance
Devl Title: MineAscii by @renanfartes | Stardance
Devlogs:
Devlog 01 Just started the project! I wanna make a minecraft in C that runs on the terminal. I know that will be hard as terminals were not supposed to do that kind of work but this is exactly the reason i’m using C I started developing basic framebuffer functions and got the baaasic pixel rendering.
Devlog 02 Added basic window and linked libraries! So i spent some time adding CMAKE to the project. I do not like the semantics of these metabuild system but it is necessary and useful. I downloaded the GLAD loader and put in a external/folder. I also put by FetchContent the GLFW module so it is not on the source tree. I now have a basic window. But yall may think that this is strange, if it is ascii why would i have a window? My objective is to use the GPU to process the pixels but instead of putting it on the screen, it writes to a buffer and then my code prints using these ANSI escape codes to do RGB. I will disable the window, that’s called offscreen rendering. But to my next tests i will do the framebuffer (i changed the previous class name to ascii buffer because it’s goal is to only print on the terminal. The framebuffer shall be the OpenGL target. The framebuffer functions shall also optimize the asciibuffer by compressing those ANSI scape codes) If it works i can develop the entire game into a big screen and at the last time try to put it on the terminal. Do not know if this is a good idea. Forever
Devlog 03 Added triangles and mini library! So i learned a little techniques in C while doing this code. I coded some helper functions to handle Shaders (w/ file reading), VAOs, EBOs and VBOs, which are kinda weird to look into the raw call to opengl The functions kinda look like POO but as these objects are just simple unsigned integers i didn’t made any cache miss on that, and no allocation was indeed made. I learned to make it work alos! I hard coded everything on main then refactored line by line commiting it. The result is just a square but the base is readdy!!!
Devlog 04 Added matrices library and meshs Ok, so first i coded the mesh logics and it worked well. I do not remember but i have in my memory that it was successfully added, but when i opened vs code today i realised i’ve pushed a code that didn’t compile and even don’t display anything because i did not test the logic after encapsulated. I had to go to gemini and ask it about the bug. I feel bad fort that. I also added the cglm bind to C and it worked well, i even made the square rotates with some matrices (and that was in teh commit that couldn’t compile). I removed it to debug and i’m not likelly to code this again. Next steps is to add some more logic to the Mesh such as model matrices. I plan to make the camera and start going 3d next. Also as seen on the image i added input! I made a wrapper as the GLFW will after be hidden so i don’t need to rewrite input handling in 70 different files.
Devlog 05 Working camera! I was trying to make the camera workingh and i had hard times with it, because opengl does not warn about anything that goes wrong with the shader stuff so it just desapears. I also learned a lot about matrices and this beautiful opengl course is helping me a lot: OpenGL by Victor Gordan . I also added really basic movements for testing. It is not a 3d object yet, it is more like a paper. I need to work in textures and model matrices while making a renderer to organize and optimize the graphical pipeline. Also all the minecraft logic needs to initialize urgently.
Devlog 06 Movimentation + sensitivity + textures added! I added some really simple textures based on the minecraf t classic ones. I created also a texture interface class and modded some shaders because i was troubleshotting to make the atlas work. I want now to work on the core logic as we have all the basic interfaces we need (I just need to put the texture encapsulated and everything shall be ready). Chunks and mesh building will be probably next. As this is a simple model for testing the texture atlas, i raw coded the vertices and this was kinda a headache. Not doing this again for a long time. Also my index buffer was not needed because the faces had shared vertcices but the UV was totally different PS: The texture of the top face is grey because the atlas expect me to color it, but i`m to tired to do this now.. XD
Devlog 07 Chunk Rendering added! I added a lot of things since last devlog. I Encapsulated the textures, organized project structure and started working on the chunk logic. I really do not like the result, it is not optimized but the goal was to see something on the screen fast. I added a block interfacee with the chunk. But i used a lot of pointers and i might be in danger if i not refactor this later or take really care with malloc. I plan to refactor and optimize the logic (faces between solid blocks still being rendered) and i really wonder how i shall add the texture mapping to this. I also had a hard time debugging this because buffer underflows were being caused by premature optimization (yall can even see in the src/core/chunk.c the comment). I used Gemini to debug the logic, but i plan to refactor and using AI makes me kidna sad even for debugging
Devlog 08 BLock culling. Finally added block clulling to my voxel engine game! I also refactored all teh mesh generation logic and made MANY refactors to the engine. The first was to break the code into smaller pieces with different responsabilities so i can think only on the problem i am handliing with. I added CubeFace and removed hardcoded pieces. As seen on the video, faces between 2 solid blocks are not generated anymore…. my code looks dangerous on the border btw but the getBlock returns air block when out-of-index.
Devlog 09 Raw Chunk generation! I refactored Tons of lines of code, improved the performance and readibility and added a random and undocumented perlin noise library to generate the chunk. I also made the camera and the player 2 separated entities, so in the future if i want to add another persapective a state machine would be more easy. I added the stone block (yet it still not visible on the video) and the chunk generation stills weird. I’m gonna fix that. Also, this perlin noise library is from 12 yearss ago. It is small so maybe i can improve the documentation by opening a pull request (it doesn’t even have a README or License… So i added a reference at external/perlin/LICENSE.md AMDG
Devlog 10 World generation, stone and perlin noise fized! I fixed that weird bug and added the texture to the dirt, improved a little the terrain generation system and the movimentation. The code for that is still a mess but it works. I also do not know how i can turn this terrain more natural. Just seems so uniform and feels kinda weird. Next steps are making the chunks load and unload on RAM (They’re fixed at the moment) and making the world infinite. I also need to implement gravity and collision to the player. AMDG
Devlog 11 Gravity, Jump, Refactor and Raycasting I implemented a very raw way of handling with gravity and a very messy snap logic. It still works but i really do not like the code quality for that. I also added the jump logiac and refactor a lot o the code of the engine itself. Also i implemented the bassic raycasting to the next steps, which are deleting and creating blocks. I think i will have a hard time with these since there’s all the logic of which face is the player looking etc. I used gemini to decide some architectural decisions and some debugging, i’m sad to use ai even for that. Ps: Writing this Devlog for the 3rd time because i didn’t notice that the video was over 50mb. AMDG
Devlog 12 Visual for the raytracing! So.. I hardcoded this cube so the player can clearly see what block he is looking at. I’m really surprised that this was a lot more fast than the raytracing itself. Deleting blocks will be the next step and will be easy this this help. Unfornatly i had to use gemini to help me debug some little strange issues, even that the code itself was written by me it makes me feel dependent. I wish someone makes an AI blocker lol AMDG
Devlog 13 Block deleting and Block placing Just finished the core block manegment system. The raytracing engine determines which face it has touched and the player puts the block based on that. The code is a mess. I tried implementing a face culling between chunks but failed miserably. I tried making the chunk receive the world context and it didn’t work because of circular dependency (the world imports the chunk and then imports the chunk again), and forward definitions also wasn’t solving My next urgency is to refactor and turn this mess legible. AMDG
Devlog 14 Chunk with hashmaps and big refactor I Had TONS of headaches with my current code. The mess was a lot more messy than i thought. I changed a lot of the old code and refactored the chunk rendering system. Now the chunks can be on negative coords, the world position unit is calculated in chunks. I implemented a hashmap to calculate the chunks and implemented chunk unloading. It is not performatic (i may have to use greedy culling or even frustum culling). The dynamic chunk loading is not implemented yet but it is easy with this refactor Also i think the code leaks memory because of the hashmap implmenentaiton. I will take a look on that later.
Devlog 15 Hitbox Interface and Infinite chunk generation I changed the sky color and finally added infinite chunk generation. I was getting weird bugs but it was all negative coordinates stuff, so i added a offset to the perlin noise calculation. It is alfuw and to big negative coordinates it will happen again. I may need to change the lib itself or come with another solution. I also removed a dynamic memory allocation on the chunk generation, it could be made static and now the OS handles the basic allocation. Now the game loads and unloads chunks dynamically. But the render distacne can’t be above 6 or my pc starts to cry. I need to optimize this. Next steps are to add collision and maybe aw few blocks. For the first ship i don’t think i need trees or clouds or complex illumination. AMDG!
Devlog 16 Terminal Rendering and block placing changed to Stone I implemented a reallyh bad way of printing the terminal to the screen. It works by copyting the pixels from the opengl context, but the code is a mess and the line breaking is weird at dicfferent terminals (i’m using kitty) I will refactor and optimize this by making a component which is responsibgle from receivend the pixels, mounting a ultra optimized string and printing it in one single syscall. Also i may use unicode characters because this shall gave me a better resolutui9on and a better experience overall I
Devlog 17 Finally got it to work!!!! I refactored the code so it supports easy tree shaking (yet is not fully implemented) The termios reads input nonblock and then the game can effectivelly be played (bu terminals reads only one key at a time. This issue i cannot fix right now and it if i try to take input another way the game shall not work on wayland by now.)
Devlog 18 Just imprved the readme and added demo video. I also improve the resolution!
Devlog 19 Tree shaking, RLE and terminal checking. I tried to implement a feature that would make the terminal scale accordingly with the users terminal. It was the hardest thing i would have to handle in C. I tried callbacks to resize, signals and so more and it didn’t work. The feature would detect any changes on the size and adapt itself. After hours i just deleted the branch and focused on developing the tree shaking (it is complete!) and now the game does not start when the terminal is not big enough. Next step is to change line breaks with move cursor instructions and move the syscalls to macros so i can add a windows version asap! Also, now the z key exits gracefully unloading everything. AMDG
Ships:
I made a OpenGL based voxel engine with a terminal Renderer in raw C! The game uses RGB TrueColors ansi scape codes in a buffer before printing it all ar once. It also compreses the RGB colors. The main problem i handled was developing hours without seeing something opn the screen in C. But i managed to got it working with block clulling, chunk and mesh generation logic....
|
1792972500.0708797
|
1793058900.0708797
|
|
41053
|
Fizzy Sea by @Nik0la_278 | Stardance
|
Nik0la_278
|
5
|
36.0
|
355
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-25T18:26:11Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "New Ship! I have got some feedback on performance of the game by you guys so I updated this Tutorial Level that I am currently making to make the gameplay better! :3 I made a bit of rearrangement of buttons and changed the Open Menu key to ESC instade of P! I added a Button to Resume Game (earlyer you could only quit, now you can resume) I added a button that sets FPS to 60 Max (If you want and the game is lagging). 2 buttons that sets your resolution of your screen (50 or 100% of your full screen) If you fall off and drown (if you fall off you will automatically drown… the Fox can’t swim (yet)). Now when you drown, the Drown screen also has a Quit Game Button! The Game is still far from done, but ilI will get to designing main level after the core mechanics, animations and Tutorial map are done so everything goes smoothly! :3", "repo": "https://github.com/Nik0la278/Fizzy_Sea", "demo": "https://nik0la278.itch.io/fizzy-sea"}, {"ship_num": 2, "ts": "2026-10-11T00:59:03Z", "hours": 8.0, "multiplier": 16.45, "payout": 137, "blessing": "neutral", "text": "The game got a few key functions, changes and optimizations! -The game is more light weight due to water optimization! -The map had some changes with more stuff added to it like Soda barrels and an additional cocoa tree! -Now when you press P, a pause menu appears where you can quit game! -Assets like Rafts and Targets are now re textured! -Lighting optimized for better appearance! Crosshair more accurate! WAY MORE STUFF COMING SOON!", "repo": "https://github.com/Nik0la278/Fizzy_Sea", "demo": "https://nik0la278.itch.io/fizzy-sea"}, {"ship_num": 3, "ts": "2026-10-01T16:23:43Z", "hours": 6.0, "multiplier": 14.51, "payout": 90, "blessing": "neutral", "text": "WHATS NEW IN MY GAME! Shootable Canzzzz and Bottlezzzzz New UI (Crosshair and Health Bar) Tutorial Signs! COCOA PODS!!! That you can shoot off the trees New shooting ability where you shoot a bigger water ball! (It has a 3s cooldown) Trash bags!….. they just sit there and take up space to fill in the map! Much more coming SOON!", "repo": "https://github.com/Nik0la278/Fizzy_Sea", "demo": "https://nik0la278.itch.io/fizzy-sea"}, {"ship_num": 4, "ts": "2026-09-21T19:47:29Z", "hours": 9.0, "multiplier": 9.86, "payout": 93, "blessing": "neutral", "text": "Fizzy Sea, Ship: 2 I added a WHOLE NEW MAP that include animated water, a tree (That will have a function later on), fences and targets to shoot! I also added the ability to shoot with left click! The blue spheres are projectiles you shoot! The spheres are placeholders for water shot from a water gun! When you change the camera to third person (by pressing C), you can see the main character model is included with a water gun attached to his wrist! Animation for walking, jumping and shooting will be added later on (When I figure out how in the world animation works), but for now he stays in a T-Pose! The game is still in progress but I’m working as best and fast I can! :3", "repo": "https://github.com/Nik0la278/Fizzy_Sea", "demo": "https://nik0la278.itch.io/fizzy-sea"}, {"ship_num": 5, "ts": "2026-08-16T18:29:42Z", "hours": 10.0, "multiplier": 3.51, "payout": 35, "blessing": "neutral", "text": "I made mechanics for a game I am making in unreal engine! Current mechanics feature WASD movement, Shift for sprint and 2 cameras that switch when pressed C, switching from 1st to 3rd person. The most challenging part (and the part I was most proud of) was figuring out the 3rd person camera movement because the code didn’t let camera move vertically at first but now it does!", "repo": "https://github.com/Nik0la278/Fizzy_Sea", "demo": "https://nik0la278.itch.io/fizzy-sea"}]...
|
[{"post_id": 82679, "ts": "202 [{"post_id": 82679, "ts": "2026-10-25T16:06:19Z", "hours": 1.1272, "text": "Menu Update I made a few more options to od in menus in game, when you pause game, you have more resolution and frame options and in death menu you can quit game!"}, {"post_id": 81502, "ts": "2026-10-21T14:51:28Z", "hours": 1.6167, "text": "I made a Projectile (Fire Ball) model and texture in blender that will be thrown by a BurninWag (Skeleton on fire) who is one of the main enemys in the maps of my game. It was really painful and took me a while because Red parts are meant to glow on their own and I forgot to save a few times which caused the textures to disappear and black out (Which made me wanna cry a lot…) which made me have to redo everything a bunch of times!"}, {"post_id": 78503, "ts": "2026-10-11T00:31:29Z", "hours": 1.7053, "text": "I have made custom textures for the Rafts and Targets in my game, switching from temporary templates. had complications where I had to reimport assets multiple times to get them in the engine properly and I was having a lot of changes of mind when it comes to color shades!"}, {"post_id": 78183, "ts": "2026-10-09T22:00:20Z", "hours": 1.6942, "text": "First I modeled and textured a barrel for my game, then I placed some placeholder textures on the ship I have modeled to see what I want, then I added the barrels to the game and I made a Game Pause Function and an option to quit game! Also I adjusted the crosshair to match the shooting area."}, {"post_id": 76826, "ts": "2026-10-04T18:45:16Z", "hours": 3.0006, "text": "Optimization So first thing I did was optimize the trash bags because they had a ton of polygons, then I optimized the ocean around the rafts because it was lagging the packaged game a lot, then I adjusted the lighting and added shadows which took more time than I wanted! I went through pain to get the shadows working."}, {"post_id": 76541, "ts": "2026-10-03T21:29:11Z", "hours": 1.9328, "text": "New Map I made a base mesh for the ship that will be in the next scene/stage/level of my game, had some trouble recording this lapse due to Blender crashing while I was messing with polygons (My mini pc wasn’t built for this ;-;). I am proud of how it all turned out BUT it’s still undone. The plan is that my character will walk around the ship doing chores. The ship will be the first real story related level after tutorial!"}, {"post_id": 75728, "ts": "2026-09-30T21:34:12Z", "hours": 1.1844, "text": "Today I fixed the shooting ability a little bit, I have added tutorial signs, fixed some collisions that didn’t match objects and a few code checks."}, {"post_id": 75356, "ts": "2026-09-29T20:40:22Z", "hours": 1.81, "text": "I have built a few things today! First, I optimized my trash bag models and put them on the map to fill in the empty space. I added armature to my enemy model and tried a little bit of posing with it. Made a new WaterBlast shooting ability (took a lot of time on that), I had problems with it but menaged to code it out. And finally added a few minor fixes to the drowned screen like stoping error messages and updating the drowned screen a tiny bit."}, {"post_id": 74209, "ts": "2026-09-26T22:23:49Z", "hours": 1.3503, "text": "I have cocoa fruits to the trees and gave them physics, making them fall off when shot and I added a “Drowned Screen” that shows when you fall off the platform with a functioning “Try Again” Button! I have tried to animate health to be bubbles that pop but I didn’t finish it."}, {"post_id": 72813, "ts": "2026-09-23T19:39:30Z", "hours": 1.8525, "text": "I HAVE ADDED PHYSICS Mainly I made it so when you shoot the cans and bottles, they actually get physics. On paper it sounds simple and it is, until for some reason they’d just fall on their side before getting shot, so I had to make them not have physics until shot!"}, {"post_id": 62983, "ts": "2026-09-06T15:34:17Z", "hours": 1.4097, "text": "I added a water gun and shooting mechanic to my game."}, {"post_id": 61107, "ts": "2026-09-03T20:37:40Z", "hours": 0.4994, "text": "Texturing and Modeling Clothes! The physics will be added in engine! But for now I like how clothes turned out (Even if I might change them laer) Currently, clothes feature A cap and a shorts!"}, {"post_id": 60482, "ts": "2026-09-02T20:40:21Z", "hours": 0.7333, "text": "I made a shorts for my character to wear. It looks rough around he edges but it will look good in engine!"}, {"post_id": 59838, "ts": "2026-09-01T20:16:02Z", "hours": 1.4639, "text": "I have placed the player character into the game! This is Barnaby! The main character of my RPG game! I him into the game and had a lot of trouble with positioning him to not gloat or walk inside the floor! At the end I managed to get him to the floor and now its time to add animation and functions!"}, {"post_id": 57966, "ts": "2026-08-30T09:32:31Z", "hours": 0.35, "text": "A watter bottle that will be given physics code to be shot at!"}, {"post_id": 57589, "ts": "2026-08-29T19:42:59Z", "hours": 0.4497, "text": "A Fish Can that will have physics so it can be knocked over with a water gun."}, {"post_id": 57170, "ts": "2026-08-29T08:39:41Z", "hours": 0.9356, "text": "I made a few assets for my game! Fence will (try) to keep the player (you) from falling (on accident), The tree will grow Cocoa on it and the cocoa will be shot with water making it fall and when you eat the Cocoa you gain health! as for Lifebuoy, it will just be a decoration on the side."}, {"post_id": 54970, "ts": "2026-08-26T12:23:43Z", "hours": 1.3169, "text": "I made a raft where my games Tutorial testing Map will be happening on!"}, {"post_id": 51938, "ts": "2026-08-21T21:37:51Z", "hours": 2.2314, "text": "BurninWag is a min enemy that will appear throughout the game and this is a 3d model of one of 3+ variants. The idea is that this variant will be in a areas on the map and once it spots the player it throws fireballs on the player. When shot with waer it will turn into a pile of bones but if the player stays in one place for too long, the bones will reignite and reform into a fresh BurninWag that will attack the player again!"}, {"post_id": 48378, "ts": "2026-08-16T18:15:19Z", "hours": 0.3931, "text": "Fixed Some Code! I removed blur and fixed the camera movement in 3rd person! Try out what I did in the demo!"}, {"post_id": 40988, "ts": "2026-08-04T21:19:03Z", "hours": 1.2333, "text": "Prototype Model For The Boss. Materials are allright but the model might be a little rough around the edges but that is fixable in animation part."}, {"post_id": 40941, "ts": "2026-08-04T19:52:32Z", "hours": 2.8442, "text": "Oil Monster Boss Concept Concept Art for Materials, 3D Model and Animation"}, {"post_id": 40341, "ts": "2026-08-03T19:43:33Z", "hours": 2.9683, "text": "Fizzy Sea Concept! One of the parts of the Game and title screen background concept! The guy siting under the palm… thing is the main character with a water gun and the big glowing thing on a rocky island is A Beacon with a special purpose!"}, {"post_id": 38948, "ts": "2026-08-01T15:45:17Z", "hours": 1.265, "text": "Water Gun for my game! Textures will come next but I wanna have a few models upfront before texturing!"}, {"post_id": 38760, "ts": "2026-08-01T10:05:09Z", "hours": 1.2392, "text": "Trash Bag Asset for Game Environment"}]...
|
Title: Fizzy Sea by @Nik0la_278 | Stardance
Devlo Title: Fizzy Sea by @Nik0la_278 | Stardance
Devlogs:
Trash Bag Asset for Game Environment
Water Gun for my game! Textures will come next but I wanna have a few models upfront before texturing!
Fizzy Sea Concept! One of the parts of the Game and title screen background concept! The guy siting under the palm… thing is the main character with a water gun and the big glowing thing on a rocky island is A Beacon with a special purpose!
Oil Monster Boss Concept Concept Art for Materials, 3D Model and Animation
Prototype Model For The Boss. Materials are allright but the model might be a little rough around the edges but that is fixable in animation part.
Fixed Some Code! I removed blur and fixed the camera movement in 3rd person! Try out what I did in the demo!
BurninWag is a min enemy that will appear throughout the game and this is a 3d model of one of 3+ variants. The idea is that this variant will be in a areas on the map and once it spots the player it throws fireballs on the player. When shot with waer it will turn into a pile of bones but if the player stays in one place for too long, the bones will reignite and reform into a fresh BurninWag that will attack the player again!
I made a raft where my games Tutorial testing Map will be happening on!
I made a few assets for my game! Fence will (try) to keep the player (you) from falling (on accident), The tree will grow Cocoa on it and the cocoa will be shot with water making it fall and when you eat the Cocoa you gain health! as for Lifebuoy, it will just be a decoration on the side.
A Fish Can that will have physics so it can be knocked over with a water gun.
A watter bottle that will be given physics code to be shot at!
I have placed the player character into the game! This is Barnaby! The main character of my RPG game! I him into the game and had a lot of trouble with positioning him to not gloat or walk inside the floor! At the end I managed to get him to the floor and now its time to add animation and functions!
I made a shorts for my character to wear. It looks rough around he edges but it will look good in engine!
Texturing and Modeling Clothes! The physics will be added in engine! But for now I like how clothes turned out (Even if I might change them laer) Currently, clothes feature A cap and a shorts!
I added a water gun and shooting mechanic to my game.
I HAVE ADDED PHYSICS Mainly I made it so when you shoot the cans and bottles, they actually get physics. On paper it sounds simple and it is, until for some reason they’d just fall on their side before getting shot, so I had to make them not have physics until shot!
I have cocoa fruits to the trees and gave them physics, making them fall off when shot and I added a “Drowned Screen” that shows when you fall off the platform with a functioning “Try Again” Button! I have tried to animate health to be bubbles that pop but I didn’t finish it.
I have built a few things today! First, I optimized my trash bag models and put them on the map to fill in the empty space. I added armature to my enemy model and tried a little bit of posing with it. Made a new WaterBlast shooting ability (took a lot of time on that), I had problems with it but menaged to code it out. And finally added a few minor fixes to the drowned screen like stoping error messages and updating the drowned screen a tiny bit.
Today I fixed the shooting ability a little bit, I have added tutorial signs, fixed some collisions that didn’t match objects and a few code checks.
New Map I made a base mesh for the ship that will be in the next scene/stage/level of my game, had some trouble recording this lapse due to Blender crashing while I was messing with polygons (My mini pc wasn’t built for this ;-;). I am proud of how it all turned out BUT it’s still undone. The plan is that my character will walk around the ship doing chores. The ship will be the first real story related level after tutorial!
Optimization So first thing I did was optimize the trash bags because they had a ton of polygons, then I optimized the ocean around the rafts because it was lagging the packaged game a lot, then I adjusted the lighting and added shadows which took more time than I wanted! I went through pain to get the shadows working.
First I modeled and textured a barrel for my game, then I placed some placeholder textures on the ship I have modeled to see what I want, then I added the barrels to the game and I made a Game Pause Function and an option to quit game! Also I adjusted the crosshair to match the shooting area.
I have made custom textures for the Rafts and Targets in my game, switching from temporary templates. had complications where I had to reimport assets multiple times to get them in the engine properly and I was having a lot of changes of mind when it comes to color shades!
I made a Projectile (Fire Ball) model and texture in blender that will be thrown by a BurninWag (Skeleton on fire) who is one of the main enemys in the maps of my game. It was really painful and took me a while because Red parts are meant to glow on their own and I forgot to save a few times which caused the textures to disappear and black out (Which made me wanna cry a lot…) which made me have to redo everything a bunch of times!
Menu Update I made a few more options to od in menus in game, when you pause game, you have more resolution and frame options and in death menu you can quit game!
Ships:
I made mechanics for a game I am making in unreal engine! Current mechanics feature WASD movement, Shift for sprint and 2 cameras that switch when pressed C, switching from 1st to 3rd person. The most challenging part (and the part I was most proud of) was figuring out the 3rd person camera movement because the code didn’t let camera move vertically at first but now it does!
Fizzy Sea, Ship: 2 I added a WHOLE NEW MAP that include animated water, a tree (That will have a function later on), fences and targets to shoot! I also added the ability to shoot with left click! The blue spheres are projectiles you shoot! The spheres are placeholders for water shot from a water gun! When you change the camera to third person (by pressing C), you can see the main character model is included with a water gun attached to his wrist! Animation for walking, jumping and shooting will be added later on (When I figure out how in the world animation works), but for now he stays in a T-Pose! The game is still in progress but I’m working as best and fast I can! :3
WHATS NEW IN MY GAME! Shootable Canzzzz and Bottlezzzzz New UI (Crosshair and Health Bar) Tutorial Signs! COCOA PODS!!! That you can shoot off the trees New shooting ability where you shoot a bigger water ball! (It has a 3s cooldown) Trash bags!….. they just sit there and take up space to fill in the map! Much more coming SOON!
The game got a few key functions, changes and optimizations! -The game is more light weight due to water optimization! -The map had some changes with more stuff added to it like Soda barrels and an additional cocoa tree! -Now when you press P, a pause menu appears where you can quit game! -Assets like Rafts and Targets are now re textured! -Lighting optimized for better appearance! Crosshair more accurate! WAY MORE STUFF COMING SOON!
New Ship! I have got some feedback on performance of the game by you guys so I updated this Tutorial Level that I am currently making to make the gameplay better! :3 I made a bit of rearrangement of buttons and changed the Open Menu key to ESC instade of P! I added a Button to Resume Game (earlyer you could only quit, now you can resume) I added a button that sets FPS to 60 Max (If you want and the game is lagging). 2 buttons that sets your resolution of your screen (50 or 100% of your full screen) If you fall off and drown (if you fall off you will automatically drown… the Fox can’t swim (yet)). Now when you drown, the Drown screen also has a Quit Game Button! The Game is still far from done, but ilI will get to designing main level after the core mechanics, animations and Tutorial map are done so everything goes smoothly! :3...
|
1792972129.4830027
|
1793058529.4830027
|
|
36826
|
Whats Your IP Human ~ WYIPH by @wtfisquantum | Sta Whats Your IP Human ~ WYIPH by @wtfisquantum | Stardance...
|
wtfisquantum
|
3
|
29.0
|
353
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T16:29:52Z", "hours": 18.0, "multiplier": 11.58, "payout": 213, "blessing": "neutral", "text": "I built What’s Your IP Human (WYIPH) , an IP intelligence and networking exploration tool that lets you inspect IPv4 and IPv6 addresses while also showing what happens behind the scenes. The project provides detailed information such as geolocation, ISP, ASN, proxy and hosting detection, network metadata and now a much more complete WHOIS lookup experience. One of the biggest updates in this version was expanding the WHOIS system. I researched different WHOIS APIs, worked through CORS and deployment issues, and eventually built and deployed my own API layer to reliably process the registry data. The application can now surface information such as IP ranges, network and organization details, registry information, abuse contacts, administrative and technical contacts, routes and origin AS information, while filtering and formatting the raw responses into something much easier to understand. I also spent a lot of time improving the overall experience around this data. The WHOIS results have been redesigned into structured sections instead of displaying raw registry responses, while the existing geolocation and network information continues to work alongside the interactive Leaflet map. I also worked on the backend and deployment setup to make the whole lookup pipeline more reliable. The project has also started moving beyond being just an educational IP lookup tool. I’m currently experimenting with turning it into a more practical service for location and website tracking, with several ideas planned for future versions. To test it, simply open the website and it will automatically look up your current public IP on your first visit. You can then search for any valid IPv4 or IPv6 address and explore its geolocation, network information and WHOIS data. The How it Works section is also available if you want to understand the networking concepts behind the information being displayed. The project is now live and ready to try! I’d really appreciate it if you could check it out, leave a rating and let me know what you think. ❤️ last time i got some decent feedback on my project, but it was still pretty limited, so i’m hoping this one reaches a few more people. i genuinely enjoy building technical and educational projects that explain how things work under the hood, and i hope that comes across in this one. There are already quite a few more ideas in my head for where this can go next, so this definitely isn’t the final version. Thanks for checking it out and supporting the project! :)", "repo": "https://github.com/wtfisquantum/whats-your-ip", "demo": "https://whats-your-ip-human.vercel.app"}, {"ship_num": 2, "ts": "2026-07-31T07:27:12Z", "hours": 7.0, "multiplier": 17.76, "payout": 129, "blessing": "neutral", "text": "I built What’s Your IP Human (WYIPH), an educational IP intelligence tool that not only lets you inspect IPv4 and IPv6 addresses, but also explains what’s happening behind the scenes. Alongside detailed lookup information like geolocation, ISP, ASN, proxy/hosting detection and network metadata, the project includes an interactive documentation experience that walks through concepts such as WHOIS, Regional Internet Registries, Autonomous Systems, BGP routing, coordinate generation, IP accuracy and much more. The biggest challenge was making complex networking concepts understandable without oversimplifying them. I spent a lot of time researching official documentation, verifying information, and designing the interface so users could learn how IP lookups actually work instead of treating the results as a black box. Keeping the documentation visually consistent with the lookup experience while integrating interactive elements like Leaflet maps was another fun challenge. I’m most proud of turning what started as a simple IP lookup tool into something educational. Instead of only displaying data, it explains where the data comes from, how reliable it is, and why different services return different results. Hopefully it helps people learn a little more about how the Internet actually works. To test it, simply open the website. On your first visit it automatically analyzes your current public IP address. You can then search for any valid IPv4 or IPv6 address, explore the interactive map, and switch to the How it Works section to dive into the networking concepts behind each piece of information displayed. Feedback is always welcome, and I already have a few more features planned for future updates! if you enjoyed exploring the project, i’d really appreciate a good rating! ❤️ my last project didn’t receive many ratings, so i’m hoping this one reaches a few more people. i genuinely enjoy building technical and educational projects that explain how things work under the hood, and i hope that comes across in this one. there are already more updates planned, so if you like the project, consider following it and leaving a rating. every bit of feedback helps me make it even better. thank you! :)", "repo": "https://github.com/wtfisquantum/whats-your-ip", "demo": "https://whats-your-ip-human.vercel.app"}, {"ship_num": 3, "ts": "2026-07-22T20:09:04Z", "hours": 4.0, "multiplier": 2.78, "payout": 11, "blessing": "neutral", "text": "I built What’s Your IP..?, a web application that lets users inspect any IPv4 or IPv6 address and view detailed information including geolocation, ISP, ASN, hosting/proxy detection, timezone and more, all alongside an interactive Leaflet map. The most challenging part was integrating multiple APIs while keeping the UI responsive and making sure the map, loading states and data components stayed in sync throughout the lookup process. I’m especially proud of the overall UI, the modular component architecture and the smooth search experience. To test the project, simply open the site. On your first visit it automatically analyzes your current public IP. After that, you can enter any valid IP address in the search bar to inspect its details and see its approximate location on the interactive map.", "repo": "https://github.com/wtfisquantum/whats-your-ip", "demo": "https://whats-your-ip-human.vercel.app"}]...
|
[{"post_id": 55629, "ts": "202 [{"post_id": 55629, "ts": "2026-08-27T16:20:45Z", "hours": 9.2442, "text": "Continued working on the existing lookup system and made a few more improvements to both the frontend and backend Expanded the WHOIS integration further and added more of the raw registry information into the processed response The WHOIS section can now surface details such as the inetnum/IP range, network name, organization, country, abuse contact, admin and technical contacts, ASN, route and origin AS , along with the relevant registry information For example, an APNIC response can now expose information like the 2.2.2.2 - 2.2.255.255 address range, organization details, abuse mailbox, AS55836 route information and the corresponding network contacts instead of showing only basic IP metadata Refined the WHOIS parsing and presentation so the large responses are filtered and displayed in a much more readable format Worked on the backend again to make the lookup pipeline more reliable and prepared the system for the bigger location and website-tracking direction i’m planning to take this project towards Ran into another unexpected issue with the map tile provider, which recently started requiring an API key for requests even though the same setup had been working without one before. since buying a key isn’t really an option for this project, i’m currently looking into alternative tile providers that can work reliably without introducing another paid dependency Also ran into a few deployment issues while putting the updated backend and frontend online, but tracked them down, fixed the server-side and frontend build issues and got the complete application deployed successfully Did a final pass over the lookup flow, WHOIS data rendering and the rest of the interface to make sure everything was working together properly and that’s basically it for this version. the WHOIS system is now fully integrated and the project is live again. i’m also working on turning this into something more useful than just an IP lookup tool, with a proper location and website tracking workflow planned for the next few updates. :)"}, {"post_id": 49927, "ts": "2026-08-18T21:54:17Z", "hours": 6.5375, "text": "Continued working on the WHOIS integration and completed the main lookup flow, with the returned data now being properly processed and rendered inside the application Fixed an issue where some WHOIS responses contained special characters and percentage-encoded values that were being rendered directly as text, causing formatting issues. Added filtering and cleanup so these values are handled properly before reaching the UI Improved the overall WHOIS presentation with better typography, spacing and visual hierarchy so the large amount of returned information feels easier to scan Added more useful WHOIS information, including relevant registration and contact details that could help when looking for the appropriate organization or ISP contact for reporting network-related issues Made a few improvements to the Leaflet map experience as well, particularly around map spanning and tile loading performance Switched the map tile delivery to a faster CDN to reduce loading delays and make the interactive map feel more responsive Started experimenting with a proper theme toggle for the application. The initial approach uses CSS filters to test the dark/light transition, although image and color inversion still causes a few visual issues that need to be cleaned up The next step is to replace the experimental theme approach with a more reliable implementation and polish the remaining edge cases also started thinking about the bigger direction of the project. instead of keeping it purely as an educational IP intelligence experience, i’m considering turning it into an actual service that people could use for real networking, IP intelligence or troubleshooting workflows. still exploring the possibilities, but i think there could be something much more useful to build on top of what is already here."}, {"post_id": 46850, "ts": "2026-08-14T11:44:44Z", "hours": 2.6056, "text": "Started expanding the lookup experience beyond the existing Geolocation, System Context and Network sections by working on a complete WHOIS lookup system Researched how WHOIS data is structured and what kind of information can be extracted from IP registration records Explored and tested multiple APIs for retrieving WHOIS information and worked through the deployment and integration requirements Ran into a few CORS-related issues while testing the external services, so I spent some time debugging the requests and figuring out a reliable way to access the data from the frontend Eventually deployed my own API layer to handle the WHOIS requests and integrated that service into the application Started successfully retrieving WHOIS information for the searched IP addresses, including registration and network-related details Began designing the new WHOIS section so the returned information can be presented in a clean and readable way instead of dumping the raw API response Added the initial UI structure and data components for organizing the different WHOIS fields and making the information easier to understand Tested the complete flow from IP lookup - WHOIS API - processed response - formatted UI and fixed a few issues along the way there’s still more i want to do with the WHOIS section, especially around organizing and explaining some of the returned fields, but the core lookup and integration are now working properly and the next step is mostly about polishing the experience."}, {"post_id": 38049, "ts": "2026-07-31T07:20:40Z", "hours": 0.4856, "text": "Wrapped up the final release and deployed the latest version to Vercel Updated the live deployment URL, README and project documentation to reflect all of the latest changes Added a few final educational sections explaining: How geographic coordinates are determined from an IP address Why IP lookups are usually so fast How integer IP conversion works behind the scenes The expected accuracy of different pieces of IP metadata Created a dedicated accuracy comparison table so users can easily understand which fields are highly reliable and which are only approximate Fixed a handful of deployment-related issues that appeared during the production build before successfully publishing the updated version Cleaned up the remaining codebase, pushed the final commits and verified the complete lookup flow one last time The project is now live with both the interactive lookup experience and the in-depth networking documentation working together in a single interface really happy with how this turned out! if you get a chance to try it out, i’d love to hear your thoughts and feedback. there are already a few more ideas planned for future updates, so this definitely won’t be the last release :)"}, {"post_id": 38039, "ts": "2026-07-31T06:35:05Z", "hours": 0.8158, "text": "Continued expanding the networking documentation by adding a dedicated section on Autonomous Systems (ASNs) and Border Gateway Protocol (BGP) Researched how internet routing actually works beyond simple IP ownership and documented the relationship between IP addresses, IP prefixes, ASNs and Internet Service Providers Added step-by-step explanations showing how routers determine the correct destination network instead of routing directly to individual IP addresses Built a visual flow diagram illustrating the complete lookup pipeline: IP Address IP Prefix Origin Autonomous System ISP / Organization Simplified several networking concepts into beginner-friendly explanations while keeping the technical details accurate Refined the typography, spacing and content hierarchy to improve readability across the documentation page Continued maintaining design consistency by reusing existing components and styling patterns throughout the blog Spent additional time validating routing examples and ASN information to ensure the documentation reflects real-world networking concepts as closely as possible This section now serves as the foundation for explaining how global internet traffic is routed before moving into more advanced networking topics"}, {"post_id": 37764, "ts": "2026-07-30T17:57:51Z", "hours": 1.2481, "text": "Continued expanding the What’s Your IP Human documentation with a few more in-depth networking concepts Researched Regional Internet Registries (RIRs) and added a dedicated section explaining how global IP address allocation works Collected the official names, logos and branding assets for each registry and integrated them into the page to make the content more visual and easier to follow Added another section covering WHOIS records , explaining what they are, what information they contain and how they’re commonly used during IP lookups Designed new information grids and data cards with consistent borders, icons and spacing to improve readability while maintaining the overall design language of the application Fixed the documentation flow so every section now references the currently searched IP address instead of placeholder values, making the explanations feel much more contextual and easier to understand Started documenting the fundamentals of Autonomous Systems (ASN) and BGP routing , laying the groundwork for explaining how IP traffic is routed across the internet Spent some time experimenting with different approaches for visualizing networking concepts, including Mermaid diagrams , React Flow , and pure CSS-based layouts before deciding on the final direction Continued refining the overall design consistency so the documentation feels like a natural extension of the main application rather than a separate page More interactive diagrams and networking sections are planned once the final visualization approach is finalized"}, {"post_id": 37522, "ts": "2026-07-30T10:25:10Z", "hours": 0.96, "text": "Continued building the What’s Your IP Human documentation experience with a focus on making the lookup process easier to understand Completed the first major section explaining how everything starts , including: How a user’s public IP address is fetched What happens when a lookup request is made The initial request flow before any data is processed Added a highlighted example of the actual request payload to make the explanation easier to follow Documented a few common misconceptions around IP lookups and clarified what information can (and cannot) be determined from an IP address Built another section explaining how IP address ranges are allocated to different organizations, ISPs and cloud providers Researched and collected branding assets for major providers, then organized them into a structured dataset alongside their corresponding IP ranges Created reusable data structures to power the provider showcase and present everything in a clean, consistent layout Focused on keeping the new documentation visually consistent with the rest of the application by maintaining the same spacing, typography, colors and component styling throughout The core structure is now in place, with more sections planned to cover geolocation, network metadata, accuracy and the complete lookup pipeline"}, {"post_id": 36413, "ts": "2026-07-28T14:58:33Z", "hours": 1.8931, "text": "Started working on What’s Your IP Human ~ WYIPH experience after receiving feedback that people were interested in understanding what happens behind the scenes during an IP lookup Began building a dedicated “How it Works” page to explain: How IP information is collected Which data is returned directly by lookup providers The expected accuracy of different fields How geolocation and network information are determined Added a new “How it Works” action that replaces the interactive map with a dedicated documentation-style page Designed the initial landing section with a proper hero layout while keeping the overall design language consistent with the rest of the application Reused the current Leaflet map as a dynamic background to create a smoother transition between the dashboard and documentation page Focused on maintaining visual consistency across typography, spacing, colors and component styling so the new page doesn’t feel disconnected from the main interface Built the foundation for future sections that will document the complete lookup pipeline, data sources and processing flow in a much more transparent way More content and diagrams will be added in the next development session"}, {"post_id": 35052, "ts": "2026-07-26T07:10:39Z", "hours": 2.0586, "text": "spent some time giving the project a final polish before calling it done. cleaned up a few remaining ui inconsistencies, refactored parts of the component structure and simplified some of the rendering logic to make the codebase a bit easier to maintain. also fixed a handful of small bugs around ip lookups, improved error handling for invalid inputs and polished loading and transition states throughout the application. made a few tweaks to spacing, typography and responsive layouts so everything feels more consistent across different screen sizes. finished by doing another full pass over the project, removing some leftover code, improving overall stability and verifying the complete lookup workflow one last time before shipping."}, {"post_id": 33155, "ts": "2026-07-22T20:02:18Z", "hours": 0.7417, "text": "Wrapped up the remaining implementation work and cleaned up the entire codebase Fixed the remaining UI and CSS issues across the application Finished integrating all remaining React components and connected them with the existing data flow Completed the Leaflet map implementation and finalized the interactive location view Polished the overall lookup workflow to ensure everything works smoothly from search to map rendering Deployed the project to Vercel Ran into a deployment issue during the first build, tracked it down and resolved it, then successfully deployed the application Experimented with a clean light theme after deployment, but it didn’t feel quite right for the overall design Designed and implemented a complete dark theme and decided to make it the final look of the project Added the final polish, tested the complete application and verified that everything works as expected finally calling this one done! hope you all enjoy using it, and if you get a chance to check it out, i’d love to hear what you think :)"}, {"post_id": 33103, "ts": "2026-07-22T18:38:16Z", "hours": 1.0717, "text": "Implemented a proper loading experience while IP and geolocation data are being fetched Added dedicated loading states to provide a smoother and more responsive user experience Built reusable components for displaying fetched network information in a clean and structured layout Refactored the details section into individual rows to improve readability and maintainability Formatted the IP address by splitting it into individual octets for a more distinctive visual presentation Displayed detailed information returned by the IP lookup service, including: Mobile / Cellular detection Proxy and VPN status Hosting provider detection Geolocation data Timezone ISP and ASN information Country, region and city details Improved the overall presentation of network metadata with a cleaner information hierarchy Added support for both default and manual lookups: On the first visit, the application automatically fetches the user’s current public IP Afterward, users can search and analyze any valid IP address through the search interface Polished the overall data flow to ensure smooth transitions between loading, fetching and rendering states Fixed minor UI inconsistencies and improved component synchronization throughout the lookup workflow"}, {"post_id": 32485, "ts": "2026-07-21T18:18:14Z", "hours": 2.1939, "text": "Implemented interactive map support using Leaflet with OpenStreetMap tile layers Built the initial mapping system to visualize the user’s approximate location based on IP geolocation data Integrated an external IP geolocation API to automatically retrieve: Public IP address Approximate location ISP / Network provider Timezone and additional network metadata Refactored the frontend into reusable React components for improved maintainability and cleaner project architecture Created dedicated components for: Formatted IP address rendering Data rows Status badges Interactive map container Improved the data flow between the API layer and UI, making updates more predictable and easier to extend Polished the overall dashboard layout with better spacing, organization and information hierarchy Resolved rendering and state synchronization issues while connecting API responses to the map and interface Verified the complete end-to-end workflow from IP lookup → API response → data processing → map rendering → real-time UI updates Added the foundation for future location-based features by keeping the mapping and data-fetching layers modular and scalable"}]...
|
Title: Whats Your IP Human ~ WYIPH by @wtfisquantu Title: Whats Your IP Human ~ WYIPH by @wtfisquantum | Stardance
Devlogs:
Implemented interactive map support using Leaflet with OpenStreetMap tile layers Built the initial mapping system to visualize the user’s approximate location based on IP geolocation data Integrated an external IP geolocation API to automatically retrieve: Public IP address Approximate location ISP / Network provider Timezone and additional network metadata Refactored the frontend into reusable React components for improved maintainability and cleaner project architecture Created dedicated components for: Formatted IP address rendering Data rows Status badges Interactive map container Improved the data flow between the API layer and UI, making updates more predictable and easier to extend Polished the overall dashboard layout with better spacing, organization and information hierarchy Resolved rendering and state synchronization issues while connecting API responses to the map and interface Verified the complete end-to-end workflow from IP lookup → API response → data processing → map rendering → real-time UI updates Added the foundation for future location-based features by keeping the mapping and data-fetching layers modular and scalable
Implemented a proper loading experience while IP and geolocation data are being fetched Added dedicated loading states to provide a smoother and more responsive user experience Built reusable components for displaying fetched network information in a clean and structured layout Refactored the details section into individual rows to improve readability and maintainability Formatted the IP address by splitting it into individual octets for a more distinctive visual presentation Displayed detailed information returned by the IP lookup service, including: Mobile / Cellular detection Proxy and VPN status Hosting provider detection Geolocation data Timezone ISP and ASN information Country, region and city details Improved the overall presentation of network metadata with a cleaner information hierarchy Added support for both default and manual lookups: On the first visit, the application automatically fetches the user’s current public IP Afterward, users can search and analyze any valid IP address through the search interface Polished the overall data flow to ensure smooth transitions between loading, fetching and rendering states Fixed minor UI inconsistencies and improved component synchronization throughout the lookup workflow
Wrapped up the remaining implementation work and cleaned up the entire codebase Fixed the remaining UI and CSS issues across the application Finished integrating all remaining React components and connected them with the existing data flow Completed the Leaflet map implementation and finalized the interactive location view Polished the overall lookup workflow to ensure everything works smoothly from search to map rendering Deployed the project to Vercel Ran into a deployment issue during the first build, tracked it down and resolved it, then successfully deployed the application Experimented with a clean light theme after deployment, but it didn’t feel quite right for the overall design Designed and implemented a complete dark theme and decided to make it the final look of the project Added the final polish, tested the complete application and verified that everything works as expected finally calling this one done! hope you all enjoy using it, and if you get a chance to check it out, i’d love to hear what you think :)
spent some time giving the project a final polish before calling it done. cleaned up a few remaining ui inconsistencies, refactored parts of the component structure and simplified some of the rendering logic to make the codebase a bit easier to maintain. also fixed a handful of small bugs around ip lookups, improved error handling for invalid inputs and polished loading and transition states throughout the application. made a few tweaks to spacing, typography and responsive layouts so everything feels more consistent across different screen sizes. finished by doing another full pass over the project, removing some leftover code, improving overall stability and verifying the complete lookup workflow one last time before shipping.
Started working on What’s Your IP Human ~ WYIPH experience after receiving feedback that people were interested in understanding what happens behind the scenes during an IP lookup Began building a dedicated “How it Works” page to explain: How IP information is collected Which data is returned directly by lookup providers The expected accuracy of different fields How geolocation and network information are determined Added a new “How it Works” action that replaces the interactive map with a dedicated documentation-style page Designed the initial landing section with a proper hero layout while keeping the overall design language consistent with the rest of the application Reused the current Leaflet map as a dynamic background to create a smoother transition between the dashboard and documentation page Focused on maintaining visual consistency across typography, spacing, colors and component styling so the new page doesn’t feel disconnected from the main interface Built the foundation for future sections that will document the complete lookup pipeline, data sources and processing flow in a much more transparent way More content and diagrams will be added in the next development session
Continued building the What’s Your IP Human documentation experience with a focus on making the lookup process easier to understand Completed the first major section explaining how everything starts , including: How a user’s public IP address is fetched What happens when a lookup request is made The initial request flow before any data is processed Added a highlighted example of the actual request payload to make the explanation easier to follow Documented a few common misconceptions around IP lookups and clarified what information can (and cannot) be determined from an IP address Built another section explaining how IP address ranges are allocated to different organizations, ISPs and cloud providers Researched and collected branding assets for major providers, then organized them into a structured dataset alongside their corresponding IP ranges Created reusable data structures to power the provider showcase and present everything in a clean, consistent layout Focused on keeping the new documentation visually consistent with the rest of the application by maintaining the same spacing, typography, colors and component styling throughout The core structure is now in place, with more sections planned to cover geolocation, network metadata, accuracy and the complete lookup pipeline
Continued expanding the What’s Your IP Human documentation with a few more in-depth networking concepts Researched Regional Internet Registries (RIRs) and added a dedicated section explaining how global IP address allocation works Collected the official names, logos and branding assets for each registry and integrated them into the page to make the content more visual and easier to follow Added another section covering WHOIS records , explaining what they are, what information they contain and how they’re commonly used during IP lookups Designed new information grids and data cards with consistent borders, icons and spacing to improve readability while maintaining the overall design language of the application Fixed the documentation flow so every section now references the currently searched IP address instead of placeholder values, making the explanations feel much more contextual and easier to understand Started documenting the fundamentals of Autonomous Systems (ASN) and BGP routing , laying the groundwork for explaining how IP traffic is routed across the internet Spent some time experimenting with different approaches for visualizing networking concepts, including Mermaid diagrams , React Flow , and pure CSS-based layouts before deciding on the final direction Continued refining the overall design consistency so the documentation feels like a natural extension of the main application rather than a separate page More interactive diagrams and networking sections are planned once the final visualization approach is finalized
Continued expanding the networking documentation by adding a dedicated section on Autonomous Systems (ASNs) and Border Gateway Protocol (BGP) Researched how internet routing actually works beyond simple IP ownership and documented the relationship between IP addresses, IP prefixes, ASNs and Internet Service Providers Added step-by-step explanations showing how routers determine the correct destination network instead of routing directly to individual IP addresses Built a visual flow diagram illustrating the complete lookup pipeline: IP Address IP Prefix Origin Autonomous System ISP / Organization Simplified several networking concepts into beginner-friendly explanations while keeping the technical details accurate Refined the typography, spacing and content hierarchy to improve readability across the documentation page Continued maintaining design consistency by reusing existing components and styling patterns throughout the blog Spent additional time validating routing examples and ASN information to ensure the documentation reflects real-world networking concepts as closely as possible This section now serves as the foundation for explaining how global internet traffic is routed before moving into more advanced networking topics
Wrapped up the final release and deployed the latest version to Vercel Updated the live deployment URL, README and project documentation to reflect all of the latest changes Added a few final educational sections explaining: How geographic coordinates are determined from an IP address Why IP lookups are usually so fast How integer IP conversion works behind the scenes The expected accuracy of different pieces of IP metadata Created a dedicated accuracy comparison table so users can easily understand which fields are highly reliable and which are only approximate Fixed a handful of deployment-related issues that appeared during the production build before successfully publishing the updated version Cleaned up the remaining codebase, pushed the final commits and verified the complete lookup flow one last time The project is now live with both the interactive lookup experience and the in-depth networking documentation working together in a single interface really happy with how this turned out! if you get a chance to try it out, i’d love to hear your thoughts and feedback. there are already a few more ideas planned for future updates, so this definitely won’t be the last release :)
Started expanding the lookup experience beyond the existing Geolocation, System Context and Network sections by working on a complete WHOIS lookup system Researched how WHOIS data is structured and what kind of information can be extracted from IP registration records Explored and tested multiple APIs for retrieving WHOIS information and worked through the deployment and integration requirements Ran into a few CORS-related issues while testing the external services, so I spent some time debugging the requests and figuring out a reliable way to access the data from the frontend Eventually deployed my own API layer to handle the WHOIS requests and integrated that service into the application Started successfully retrieving WHOIS information for the searched IP addresses, including registration and network-related details Began designing the new WHOIS section so the returned information can be presented in a clean and readable way instead of dumping the raw API response Added the initial UI structure and data components for organizing the different WHOIS fields and making the information easier to understand Tested the complete flow from IP lookup - WHOIS API - processed response - formatted UI and fixed a few issues along the way there’s still more i want to do with the WHOIS section, especially around organizing and explaining some of the returned fields, but the core lookup and integration are now working properly and the next step is mostly about polishing the experience.
Continued working on the WHOIS integration and completed the main lookup flow, with the returned data now being properly processed and rendered inside the application Fixed an issue where some WHOIS responses contained special characters and percentage-encoded values that were being rendered directly as text, causing formatting issues. Added filtering and cleanup so these values are handled properly before reaching the UI Improved the overall WHOIS presentation with better typography, spacing and visual hierarchy so the large amount of returned information feels easier to scan Added more useful WHOIS information, including relevant registration and contact details that could help when looking for the appropriate organization or ISP contact for reporting network-related issues Made a few improvements to the Leaflet map experience as well, particularly around map spanning and tile loading performance Switched the map tile delivery to a faster CDN to reduce loading delays and make the interactive map feel more responsive Started experimenting with a proper theme toggle for the application. The initial approach uses CSS filters to test the dark/light transition, although image and color inversion still causes a few visual issues that need to be cleaned up The next step is to replace the experimental theme approach with a more reliable implementation and polish the remaining edge cases also started thinking about the bigger direction of the project. instead of keeping it purely as an educational IP intelligence experience, i’m considering turning it into an actual service that people could use for real networking, IP intelligence or troubleshooting workflows. still exploring the possibilities, but i think there could be something much more useful to build on top of what is already here.
Continued working on the existing lookup system and made a few more improvements to both the frontend and backend Expanded the WHOIS integration further and added more of the raw registry information into the processed response The WHOIS section can now surface details such as the inetnum/IP range, network name, organization, country, abuse contact, admin and technical contacts, ASN, route and origin AS , along with the relevant registry information For example, an APNIC response can now expose information like the 2.2.2.2 - 2.2.255.255 address range, organization details, abuse mailbox, AS55836 route information and the corresponding network contacts instead of showing only basic IP metadata Refined the WHOIS parsing and presentation so the large responses are filtered and displayed in a much more readable format Worked on the backend again to make the lookup pipeline more reliable and prepared the system for the bigger location and website-tracking direction i’m planning to take this project towards Ran into another unexpected issue with the map tile provider, which recently started requiring an API key for requests even though the same setup had been working without one before. since buying a key isn’t really an option for this project, i’m currently looking into alternative tile providers that can work reliably without introducing another paid dependency Also ran into a few deployment issues while putting the updated backend and frontend online, but tracked them down, fixed the server-side and frontend build issues and got the complete application deployed successfully Did a final pass over the lookup flow, WHOIS data rendering and the rest of the interface to make sure everything was working together properly and that’s basically it for this version. the WHOIS system is now fully integrated and the project is live again. i’m also working on turning this into something more useful than just an IP lookup tool, with a proper location and website tracking workflow planned for the next few updates. :)
Ships:
I built What’s Your IP..?, a web application that lets users inspect any IPv4 or IPv6 address and view detailed information including geolocation, ISP, ASN, hosting/proxy detection, timezone and more, all alongside an interactive Leaflet map. The most challenging part was integrating multiple APIs while keeping the UI responsive and making sure the map, loading states and data components stayed in sync throughout the lookup process. I’m especially proud of the overall UI, the modular component architecture and the smooth search experience. To test the project, simply open the site. On your first visit it automatically analyzes your current public IP. After that, you can enter any valid IP address in the search bar to inspect its details and see its approximate location on the interactive map.
I built What’s Your IP Human (WYIPH), an educational IP intelligence tool that not only lets you inspect IPv4 and IPv6 addresses, but also explains what’s happening behind the scenes. Alongside detailed lookup information like geolocation, ISP, ASN, proxy/hosting detection and network metadata, the project includes an interactive documentation experience that walks through concepts such as WHOIS, Regional Internet Registries, Autonomous Systems, BGP routing, coordinate generation, IP accuracy and much more. The biggest challenge was making complex networking concepts understandable without oversimplifying them. I spent a lot of time researching official documentation, verifying information, and designing the interface so users could learn how IP lookups actually work instead of treating the results as a black box. Keeping the documentation visually consistent with the lookup experience while integrating interactive elements like Leaflet maps was another fun challenge. I’m most proud of turning what started as a simple IP lookup tool into something educational. Instead of only displaying data, it explains where the data comes from, how reliable it is, and why different services return different results. Hopefully it helps people learn a little more about how the Internet actually works. To test it, simply open the website. On your first visit it automatically analyzes your current public IP address. You can then search for any valid IPv4 or IPv6 address, explore the interactive map, and switch to the How it Works section to dive into the networking concepts behind each piece of information displayed. Feedback is always welcome, and I already have a few more features planned for future updates! if you enjoyed exploring the project, i’d really appreciate a good rating! ❤️ my last project didn’t receive many ratings, so i’m hoping this one reaches a few more people. i genuinely enjoy building technical and educational projects that explain how things work under the hood, and i hope that comes across in this one. there are already more updates planned, so if you like the project, consider following it and leaving a rating. every bit of feedback helps me make it even better. thank you! :)
I built What’s Your IP Human (WYIPH) , an IP intelligence and networking exploration tool that lets you inspect IPv4 and IPv6 addresses while also showing what happens behind the scenes. The project provides detailed information such as geolocation, ISP, ASN, proxy and hosting detection, network metadata and now a much more complete WHOIS lookup experience. One of the biggest updates in this version was expanding the WHOIS system. I researched different WHOIS APIs, worked through CORS and deployment issues, and eventually built and deployed my own API layer to reliably process the registry data. The application can now surface information such as IP ranges, network and organization details, registry information, abuse contacts, administrative and technical contacts, routes and origin AS information, while filtering and formatting the raw responses into something much easier to understand. I also spent a lot of time improving the overall experience around this data. The WHOIS results have been redesigned into structured sections instead of displaying raw registry responses, while the existing geolocation and network information continues to work alongside the interactive Leaflet map. I also worked on the backend and deployment setup to make the whole lookup pipeline more reliable. The project has also started moving beyond being just an educational IP lookup tool. I’m currently experimenting with turning it into a more practical service for location and website tracking, with several ideas planned for future versions. To test it, simply open the website and it will automatically look up your current public IP on your first visit. You can then search for any valid IPv4 or IPv6 address and explore its geolocation, network information and WHOIS data. The How it Works section is also available if you want to understand the networking concepts behind the information being displayed. The project is now live and ready to try! I’d really appreciate it if you could check it out, leave a rating and let me know what you think. ❤️ last time i got some decent feedback on my project, but it was still pretty limited, so i’m hoping this one reaches a few more people. i genuinely enjoy building technical and educational projects that explain how things work under the hood, and i hope that comes across in this one. There are already quite a few more ideas in my head for where this can go next, so this definitely isn’t the final version. Thanks for checking it out and supporting the project! :)...
|
1792986878.925749
|
1793073278.925749
|
|
50849
|
floating-computer-portfolio-site by @Broken_Proof floating-computer-portfolio-site by @Broken_Proof | Stardance...
|
Broken_Proof
|
1
|
22.0
|
353
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T15:39:28Z", "hours": 22.0, "multiplier": 15.8, "payout": 353, "blessing": "neutral", "text": "I’ve made a personal portfolio site that involves a computer floating in space. Basically it’s a 3D model within a custom made starfied in a Three js scene. When clicked it zooms in and overlays my own custom OS terminal. The OS has cool things like puzzles I made, resume download features and more. I had challenges setting up the conditional orbit controls and some of the UI features, but I eventually got it to work. So proud of this project and in the future I want to make it an option to navigate via terminal or through a static html page. This is because some people may not want to go through the work of figuring out commands on my terminal.", "repo": "https://github.com/broken-proof/personal-portfolio", "demo": "https://broken-proof.github.io/personal-portfolio/"}]...
|
[{"post_id": 64855, "ts": "202 [{"post_id": 64855, "ts": "2026-09-09T15:30:43Z", "hours": 0.6978, "text": "Devlog #8: Alright, so I’m ready to ship. I just added some more comments, organized my assets, fixed some terminal bugs and then improved my ReadMe. Here’s a demo of the final product:"}, {"post_id": 64616, "ts": "2026-09-09T04:31:33Z", "hours": 4.9083, "text": "Devlog #7: Almost ready to ship! Did the following: Added a settings menu with a mute button, fullscreen button, and a help button which renders and auto types help into the computer component. Fixed resizing issues Added Puzzles to it Added a simple start screen. Hosted site on Github Pages using github actions. I had fun making my icons on piskelapp.com. What’s left is probably to refine the site, add proper comments and I should be good."}, {"post_id": 63343, "ts": "2026-09-07T03:27:53Z", "hours": 1.6022, "text": "Devlog #6: Added Some Audio! Used use useSound React hook to add powerOn, powerOff and a Space void default sound. Also added a mute button which I will definitely improve later in a settings kind of layout. In the future I need a starter screen that is like “click to play” or sm cause browser audio only starts after an interaction. There’s also some UI issues with resizing so I need to fix those aswell."}, {"post_id": 63234, "ts": "2026-09-06T22:37:33Z", "hours": 1.6942, "text": "Devlog #5: I got the OrbitControls working finally. Took me a while because the Camera Rig and Orbit Controls were fighting for control but I got the scene working. Now the transition is pretty seamless except for the fact that the text is different. That’ll be fixed when I make my own custom model. For now I’ll keep this public model because I’m not tryna learn modeling. The next step is probably adding sound and some icons to the top that help the user figure out what’s going on."}, {"post_id": 63026, "ts": "2026-09-06T16:20:26Z", "hours": 3.9125, "text": "Devlog #4: Lots of new progress. I made my own MOTD, added a history navigation (up/down arrow keys), and a new projects catalog. After that, I refactored the star field to be in React Three fiber and experimented with some views for my computer. As of now, I’m using a model I found online, but I plan to make my own later on. I am also using react three drei’s presentation controls but I don’t really like them so maybe Orbit Controls would fit better. Just going to continue experimenting until I get a transition I like."}, {"post_id": 61909, "ts": "2026-09-05T02:37:01Z", "hours": 4.4378, "text": "Devlog #3: Basically, I turned the screen into a proper terminal that runs my personal os. It has some nice commands that allow the user to get a brief bio, download my resume, contact me, customize themes and clear the screen. I was inspired by linux terminal for some of the commands/output formatting and I wish to add further features in the future. I also added features that are usual for a typical terminal including autofocusing and going to the input on clicking any part of the screen. For now, the next step is to add the transition between a computer floating in space to the actual screen."}, {"post_id": 56236, "ts": "2026-08-27T22:15:51Z", "hours": 3.3108, "text": "Devlog #2: Created CSS for the monitor screen. Also had a lot of fun creating the crt terminal like background using a double layered linear gradient with two moving divs on top of it for the scanning effect. The redirects to the different components are functional and the next step is to fill in About.jsx, Projects.jsx … Currently, the crt’s border image is just something I made using pixel art, but I plan to make it look better afterwards. The background effect does not fix with resizing so I have to fix that also. Then, I’ll work on the transition to the monitor screen and the whole experience in general. I’ve gotten good progress so far :)"}, {"post_id": 50086, "ts": "2026-08-19T04:32:58Z", "hours": 1.81, "text": "devlog#1: The idea for the portfolio is that the user will be controlling a retro computer that is floating in space. All my portfolio details will probably go into the monitor ui, but the design will have some more features to play around with. Took me a while to figure out how to use vanilla THREE.js with React useEffect hooks. I later saw there is something called react three fiber but I might implement using that later."}]...
|
Title: floating-computer-portfolio-site by @Broken Title: floating-computer-portfolio-site by @Broken_Proof | Stardance
Devlogs:
devlog#1: The idea for the portfolio is that the user will be controlling a retro computer that is floating in space. All my portfolio details will probably go into the monitor ui, but the design will have some more features to play around with. Took me a while to figure out how to use vanilla THREE.js with React useEffect hooks. I later saw there is something called react three fiber but I might implement using that later.
Devlog #2: Created CSS for the monitor screen. Also had a lot of fun creating the crt terminal like background using a double layered linear gradient with two moving divs on top of it for the scanning effect. The redirects to the different components are functional and the next step is to fill in About.jsx, Projects.jsx … Currently, the crt’s border image is just something I made using pixel art, but I plan to make it look better afterwards. The background effect does not fix with resizing so I have to fix that also. Then, I’ll work on the transition to the monitor screen and the whole experience in general. I’ve gotten good progress so far :)
Devlog #3: Basically, I turned the screen into a proper terminal that runs my personal os. It has some nice commands that allow the user to get a brief bio, download my resume, contact me, customize themes and clear the screen. I was inspired by linux terminal for some of the commands/output formatting and I wish to add further features in the future. I also added features that are usual for a typical terminal including autofocusing and going to the input on clicking any part of the screen. For now, the next step is to add the transition between a computer floating in space to the actual screen.
Devlog #4: Lots of new progress. I made my own MOTD, added a history navigation (up/down arrow keys), and a new projects catalog. After that, I refactored the star field to be in React Three fiber and experimented with some views for my computer. As of now, I’m using a model I found online, but I plan to make my own later on. I am also using react three drei’s presentation controls but I don’t really like them so maybe Orbit Controls would fit better. Just going to continue experimenting until I get a transition I like.
Devlog #5: I got the OrbitControls working finally. Took me a while because the Camera Rig and Orbit Controls were fighting for control but I got the scene working. Now the transition is pretty seamless except for the fact that the text is different. That’ll be fixed when I make my own custom model. For now I’ll keep this public model because I’m not tryna learn modeling. The next step is probably adding sound and some icons to the top that help the user figure out what’s going on.
Devlog #6: Added Some Audio! Used use useSound React hook to add powerOn, powerOff and a Space void default sound. Also added a mute button which I will definitely improve later in a settings kind of layout. In the future I need a starter screen that is like “click to play” or sm cause browser audio only starts after an interaction. There’s also some UI issues with resizing so I need to fix those aswell.
Devlog #7: Almost ready to ship! Did the following: Added a settings menu with a mute button, fullscreen button, and a help button which renders and auto types help into the computer component. Fixed resizing issues Added Puzzles to it Added a simple start screen. Hosted site on Github Pages using github actions. I had fun making my icons on piskelapp.com. What’s left is probably to refine the site, add proper comments and I should be good.
Devlog #8: Alright, so I’m ready to ship. I just added some more comments, organized my assets, fixed some terminal bugs and then improved my ReadMe. Here’s a demo of the final product:
Ships:
I’ve made a personal portfolio site that involves a computer floating in space. Basically it’s a 3D model within a custom made starfied in a Three js scene. When clicked it zooms in and overlays my own custom OS terminal. The OS has cool things like puzzles I made, resume download features and more. I had challenges setting up the conditional orbit controls and some of the UI features, but I eventually got it to work. So proud of this project and in the future I want to make it an option to navigate via terminal or through a static html page. This is because some people may not want to go through the work of figuring out commands on my terminal....
|
1793004809.333251
|
1793091209.333251
|
|
43792
|
Teach Terminal by @Arsen | Stardance
|
Arsen
|
1
|
42.0
|
351
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-01T15:29:32Z", "hours": 42.0, "multiplier": 18.43, "payout": 351, "blessing": "neutral", "text": "Teach Terminal I made Teach Terminal - a browser-based Linux terminal simulator for learning basic Linux commands. The main problem I wanted to solve is that learning Linux from documentation can be very passive. You read what cd or chmod does, but you don’t really remember it until you use it yourself. Also, using a real Linux system can be a little scary for beginners because one wrong command can cause problems. Teach Terminal gives you a fake Linux filesystem where you can practice without breaking a real computer. You can log in, choose a mode, and start learning. There are 25 lessons in 5 sections: Introduction, Navigation, Files, Text & Redirection, and Permissions. Every lesson has a small lecture and then practice. In the practice you need to type commands yourself, for example pwd , ls -la , chmod 755 , or sudo chown root file.txt . The terminal gives output and errors similar to what you can get in a real Ubuntu terminal. Note: This is a simulation. It does not enforce all Linux permissions and security rules, so some commands may behave differently than on a real system. What was challenging The fake filesystem was one of the harder parts. I made two classes for it. FileSystem handles the filesystem tree and navigation, and file represents the individual files and folders. It also stores things like permissions, owner, size and modification date. Getting absolute paths working was also a little difficult. I needed to go from the current file or folder to its parents until I reach the root. It is kind of like following a linked list backwards. Another problem was checking commands in multi-step practices. For example, when a user runs sudo chown root file.txt , the practice checker needs to check the whole command and not only chown root file.txt . I also had problems with resetting the practice state. If I make a folder with mkdir projects and then start the same practice again, it will fail because the folder already exists. So I needed to reset the practice filesystem when starting it again. Things I am happy with The lesson engine is probably the part I worked most on. It handles the lecture, practice, success state, and the progress for each step. I also made the lesson window draggable and minimizable. Pressing Escape can toggle the window. The terminal currently supports 16 commands and some extra features like flags, redirection ( > , >> , < , 2> ), tab autocomplete, arrow-key command history, and sudo with password checking. I also added 3 themes: Ubuntu, Hacker and Kali. The themes are used across the different pages. How to test Open the demo link. Go to Settings and choose a theme: Ubuntu, Hacker, or Kali. Log in with a valid username, machine name and password. Choose Guided Path if you want to try the lessons, or Free Exploration if you just want to use the terminal. In a lesson, read the lecture and click Start Practice . Type the commands in the terminal and follow the steps. Some commands you can try: pwd ls -la mkdir test cd test touch file.txt chmod 755 file.txt sudo chown root file.txt The project is made with plain HTML, CSS and JavaScript. I didn’t use frameworks or external dependencies.", "repo": "https://github.com/Arsen-Gevorgyan/teach-terminal", "demo": "https://arsen-gevorgyan.github.io/teach-terminal/"}]...
|
[{"post_id": 75823, "ts": "202 [{"post_id": 75823, "ts": "2026-10-01T08:23:43Z", "hours": 4.2042, "text": "Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I finished writing all 25 lessons and fixed several issues with the lesson system. The lessons are organized into 5 sections - Introduction, Navigation, Files, Text & Redirection, and Permissions - plus a final congratulations lesson. Each practice lesson has multiple steps, so instead of a single command to type, the user might create a file, change its permissions, and verify with ls -l . The window tracks progress with markers like [x] , [>] , and [ ] so it is clear where the user is. I also fixed bugs I found while testing the flow: The lesson window didn’t reset the filesystem between practices. If you completed mkdir projects once, replaying the lesson would fail because the folder already existed. Now the filesystem resets to a clean state at the start of every practice lesson. Sudo commands weren’t detected by the practice check. The checker only saw the inner command ( chown root file.txt ), not the full sudo chown root file.txt . Fixed by passing the full command through. Lesson 25 no longer has a practice - it just says “Congratulations! You finished Teach Terminal.” with a short message about what the user learned. Completed index.html - Start menu with Start and Settings buttons settings.html - Settings page with three themes (Ubuntu, Hacker, Kali) login.html - Login page with username, machine name, and password validation mode.html - Mode selection: Free Exploration or Guided Path lessons.html - Course overview with sections and lesson cards main.html - Interactive terminal interface style.css - Main styling, animated gradients, glassmorphism UI, theme colors login.css - Login page styling with themed backgrounds settings.js - Saves the selected theme using localStorage theme.js - Loads the saved theme and applies it automatically login.js - Form validation and redirect to mode page filesystem.js - Fake Linux filesystem with files, folders, permissions, owners, groups, sizes, and modification times terminal.js - Terminal input handling, prompt display, line management, colored output, sudo flow command.js - Command recognition and execution lessons-data.js - All 25 lessons organized into 5 sections lesson.js - Renders the lessons page timeline lesson-window.js - Runs the lesson window inside the terminal Current Commands pwd , ls , cd , mkdir , touch , echo , cat , rm , cp , mv , chmod , chown , sudo , clear , help , history With flags for most commands, redirection ( > , >> , < , 2> ), Tab autocomplete, arrow-key history, !! and !n expansion, and per-command help. Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Add grep , head , tail Add pipes ( | ) and shell operators ( && , || , ; ) Wildcards and brace expansion Try It Live Demo"}, {"post_id": 74998, "ts": "2026-09-28T20:14:08Z", "hours": 2.3608, "text": "Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I built the lesson window - the floating panel that runs inside the terminal during lessons. This is the piece that connects the lessons page to the terminal itself. When a user picks a lesson from the overview, the terminal opens with ?lesson=N in the URL. The lesson window reads that number, finds the lesson in the data file, and appears in the top-right corner of the screen. The window has three states: Lecture - shows the lesson text explaining the concept. The user reads and clicks “Start Practice” (or “Complete” for intro lessons). Practice - the window changes visually. Its border and title switch to an amber color, and a “PRACTICE:” prefix appears in the title. This makes it obvious that it’s time to do something, not just read. The user types the command in the terminal below. Success - when the expected command is typed, the window shows the success message and a “Next Lesson” button appears. Clicking it swaps the window content to the next lesson without reloading the page. The window is also draggable by its title bar. The user can move it anywhere, minimize it with - , or close it with × (which returns to the lessons page). Pressing Escape hides and shows the window. I also added replay support. If a lesson is already complete, the user can open it again, read the lecture, and try the practice a second time. The window still shows the success message, but the lesson status stays DONE - it does not re-mark anything. Some issues I hit: The intro lessons blocked the “Next Lesson” button because they were being re-completed in a loop. I fixed this by tracking a showingSuccess variable that tells the code whether we’re on the success screen or the lecture. The practice mode class wasn’t being added because the flow checked lessonComplete before checking whether we were in the practice phase. I reordered the checks so practice renders correctly even for replayed lessons. Completed index.html - Start menu with Start and Settings buttons settings.html - Settings page with three themes (Ubuntu, Hacker, Kali) login.html - Login page with username, machine name, and password validation mode.html - Mode selection: Free Exploration or Guided Path lessons.html - Course overview with sections and lesson cards main.html - Interactive terminal interface style.css - Main styling, animated gradients, glassmorphism UI, theme colors login.css - Login page styling with themed backgrounds settings.js - Saves the selected theme using localStorage theme.js - Loads the saved theme and applies it automatically login.js - Form validation and redirect to mode page filesystem.js - Fake Linux filesystem with files, folders, permissions, owners, groups, sizes, and modification times terminal.js - Terminal input handling, prompt display, line management, colored output command.js - Command recognition and execution lessons-data.js - All 25 lessons organized into 6 sections lesson.js - Renders the lessons page timeline lesson-window.js - Runs the lesson window inside the terminal Current Commands pwd , ls , cd , mkdir , touch , echo , cat , rm , cp , mv , clear , help , history With flags for most commands, redirection ( > , >> , < , 2> ), Tab autocomplete, arrow-key history, !! and !n expansion, and per-command help. Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Build chmod , chown , sudo for the Permissions section Write lesson content for lessons 21-24 Build the Final Mission with a timer and game-style objectives Try It Live Demo"}, {"post_id": 73734, "ts": "2026-09-25T20:12:13Z", "hours": 6.7292, "text": "Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I built the lessons system. This is the biggest step so far - the part that turns the terminal into a real teaching tool. The lessons system has three parts: The lessons overview page ( lessons.html ) shows all lessons organized into sections: Introduction Navigation Files Text & Redirection Permissions Final Mission Each lesson appears as a card with a status: START (unlocked), DONE (completed), or LOCK (not yet unlocked). Intro lessons are always open so users can read them or skip. Navigation lessons unlock one at a time. Later sections unlock when the previous section is finished. The lessons data file ( lessons-data.js ) stores all lesson content in one place. Each lesson has a lecture that explains the concept and a practice task with an expected command. The lesson engine ( lesson-window.js ) will run inside main.html . It opens a floating window with the current lesson, shows the lecture, then the practice. When the user types the correct command, the lesson completes and unlocks the next one. I also built the mode selection page ( mode.html ). After login, the user picks between two paths: Free Exploration : opens the terminal with no lessons Guided Path : opens the lessons overview Progress saves to localStorage so completed lessons stay completed. Some issues I hit: The unlock logic had a bug where Intro lessons blocked Navigation. I fixed it by skipping intro sections in the unlock check. CSS conflicts between .lesson-subtitle (used inside lesson cards) and .lessons-subtitle (used on the page). I renamed them to avoid mixing styles. The lessons page inherited overflow: hidden from the body, so it could not scroll. I added a body.lessons-page override. Completed index.html - Start menu with Start and Settings buttons settings.html - Settings page with three themes (Ubuntu, Hacker, Kali) login.html - Login page with username, machine name, and password validation mode.html - Mode selection: Free Exploration or Guided Path lessons.html - Course overview with sections and lesson cards main.html - Interactive terminal interface style.css - Main styling, animated gradients, glassmorphism UI, theme colors login.css - Login page styling with themed backgrounds settings.js - Saves the selected theme using localStorage theme.js - Loads the saved theme and applies it automatically login.js - Form validation and redirect to mode page filesystem.js - Fake Linux filesystem with files, folders, permissions, owners, groups, sizes, and modification times terminal.js - Terminal input handling, prompt display, line management, colored output commands.js - Command recognition and execution lessons-data.js - All 25 lessons organized into 6 sections lesson.js - Renders the lessons page timeline Current Commands pwd , ls , cd , mkdir , touch , echo , cat , rm , cp , mv , clear , help , history With flags for most commands, redirection ( > , >> , < , 2> ), Tab autocomplete, arrow-key history, !! and !n expansion, and per-command help. Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Build the lesson window inside main.html (lecture, practice, success phases) Make the window draggable and minimizable with an Escape key toggle Build the Final Mission with game-style objectives Add remaining commands ( grep , head , tail , chmod , chown ) Try It Live Demo"}, {"post_id": 72453, "ts": "2026-09-23T00:38:08Z", "hours": 8.2353, "text": "Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I added redirection to the terminal. Commands can now read from files and write to them instead of only printing to the screen. The terminal now supports: > - write output to a file (overwrites) >> - append output to a file < - read input from a file 2> - redirect error output to a file I also connected < to cat so it can read from a file through stdin. To make this work, I had to refactor how commands run. The old processCommand returned output directly. I renamed it to executeCommand and wrote a new processCommand wrapper above it that parses redirection operators before the command runs, then decides where the output goes. The refactor was harder than expected. I hit several bugs - a typo in stderrMatch , a missing $ anchor in a regex, and a duplicate if block that used the wrong variable. I also had to fix catResults and lineNumber which I deleted during the refactor without realizing. Completed index.html - Start menu with Start and Settings buttons settings.html - Settings page with three themes (Ubuntu, Hacker, Kali) login.html - Login page with username, machine name, and password validation main.html - Interactive terminal interface style.css - Main styling, animated gradients, glassmorphism UI, and theme colors login.css - Login page styling with themed backgrounds settings.js - Saves the selected theme using localStorage theme.js - Loads the saved theme and applies it automatically login.js - Form validation and redirect to terminal filesystem.js - Fake Linux filesystem with files, folders, permissions, owners, groups, sizes, and modification times terminal.js - Terminal input handling, prompt display, line management, colored output commands.js - Command recognition and execution Current Commands pwd , ls , cd , mkdir , touch , echo , cat , rm , cp , mv , clear , help With flags for most commands, redirection ( > , >> , < , 2> ), and per-command help. Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Command history (up/down arrow keys) Tab autocomplete history command, !! , !n Add grep , head , tail Add chmod , chown Wildcards, brace expansion, && , || Build the lesson system (lectures + practice missions) Try It Live Demo"}, {"post_id": 51663, "ts": "2026-08-21T13:49:47Z", "hours": 2.9792, "text": "Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I built the fake filesystem and connected it to the terminal. The terminal now feels like a real Linux system. The filesystem supports: pwd - shows current directory ls - lists files and folders with colors (blue for directories, green for executables, white for files) ls -l - shows permissions, owner, group, and name cd - navigate with ~ , . , .. , and absolute paths mkdir - create folders touch - create files The prompt updates when navigating directories. It shows ~ for the home directory and the full path everywhere else. I also added realistic bash error messages. Invalid flags, missing arguments, and wrong paths all show proper errors like a real terminal would. The terminal now has 7 working commands with real filesystem behavior. Next step is building the lesson system that teaches these commands one by one. Completed index.html - Start menu with Start and Settings buttons settings.html - Settings page with three themes (Ubuntu, Hacker, Kali) login.html - Login page with username, machine name, and password validation main.html - Interactive terminal interface style.css - Main styling, animated gradients, glassmorphism UI, and theme colors login.css - Login page styling with themed backgrounds settings.js - Saves the selected theme using localStorage theme.js - Loads the saved theme and applies it automatically login.js - Form validation and redirect to terminal filesystem.js - Fake Linux filesystem with files, folders, permissions, and navigation terminal.js - Terminal input handling, prompt display, line management, colored output commands.js - Command recognition ( help , pwd , clear , ls , cd , mkdir , touch ) Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Build the lesson system (lectures + practice missions) Add more commands ( cat , rm , cp , mv , chmod , chown ) Add command history (up/down arrow keys) Add redirection ( > , >> , < ) Improve mobile experience Try It Live Demo"}, {"post_id": 45917, "ts": "2026-08-12T18:06:17Z", "hours": 3.5864, "text": "Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I built the login page. It’s a page where the user enters their username, machine name, and password before entering the terminal. The form validates each field: Username must be 4–9 characters, start with a letter, and contain only letters and numbers Machine name follows the same rules Password must be 8–19 characters If something is wrong, an error message appears below the form showing what needs to be fixed. After all fields are entered correctly, the data is saved and the user is redirected to the terminal. The terminal itself is not fully finished yet — commands work, but there’s no filesystem and no lessons. That’s the next step. Completed index.html — Start menu with Start and Settings buttons settings.html — Settings page with three themes (Ubuntu, Hacker, Kali) login.html — Login page with username, machine name, and password validation main.html — Interactive terminal interface style.css — Main styling, animated gradients, glassmorphism UI, and theme colors login.css — Login page styling with themed backgrounds settings.js — Saves the selected theme using localStorage theme.js — Loads the saved theme and applies it automatically login.js — Form validation and redirect to terminal terminal.js — Terminal input handling, prompt display, line management commands.js — Command recognition ( help , pwd , clear , whoami , date , echo ) Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Build a fake filesystem ( cd , ls , mkdir , touch ) Add file permissions ( chmod , chown , sudo ) Create lessons and practice missions Add command history (up/down arrow keys) Try It Live Demo"}, {"post_id": 40664, "ts": "2026-08-04T11:00:02Z", "hours": 13.4225, "text": "Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. What I Built I started the project by creating the basic structure of the website and the main navigation. Completed index.html — Start menu with Start and Settings buttons. settings.html — Settings page. main.html — Initial game page. style.css — Main styling, animated gradients, glassmorphism UI, and theme colors. settings.js — Saves the selected theme using localStorage . theme.js — Loads the saved theme and applies it automatically. Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Build the interactive terminal. Add Linux commands and command processing. Create lessons and practice missions. Improve the mobile experience."}]...
|
Title: Teach Terminal by @Arsen | Stardance
Devlo Title: Teach Terminal by @Arsen | Stardance
Devlogs:
Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. What I Built I started the project by creating the basic structure of the website and the main navigation. Completed index.html — Start menu with Start and Settings buttons. settings.html — Settings page. main.html — Initial game page. style.css — Main styling, animated gradients, glassmorphism UI, and theme colors. settings.js — Saves the selected theme using localStorage . theme.js — Loads the saved theme and applies it automatically. Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Build the interactive terminal. Add Linux commands and command processing. Create lessons and practice missions. Improve the mobile experience.
Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I built the login page. It’s a page where the user enters their username, machine name, and password before entering the terminal. The form validates each field: Username must be 4–9 characters, start with a letter, and contain only letters and numbers Machine name follows the same rules Password must be 8–19 characters If something is wrong, an error message appears below the form showing what needs to be fixed. After all fields are entered correctly, the data is saved and the user is redirected to the terminal. The terminal itself is not fully finished yet — commands work, but there’s no filesystem and no lessons. That’s the next step. Completed index.html — Start menu with Start and Settings buttons settings.html — Settings page with three themes (Ubuntu, Hacker, Kali) login.html — Login page with username, machine name, and password validation main.html — Interactive terminal interface style.css — Main styling, animated gradients, glassmorphism UI, and theme colors login.css — Login page styling with themed backgrounds settings.js — Saves the selected theme using localStorage theme.js — Loads the saved theme and applies it automatically login.js — Form validation and redirect to terminal terminal.js — Terminal input handling, prompt display, line management commands.js — Command recognition ( help , pwd , clear , whoami , date , echo ) Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Build a fake filesystem ( cd , ls , mkdir , touch ) Add file permissions ( chmod , chown , sudo ) Create lessons and practice missions Add command history (up/down arrow keys) Try It Live Demo
Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I built the fake filesystem and connected it to the terminal. The terminal now feels like a real Linux system. The filesystem supports: pwd - shows current directory ls - lists files and folders with colors (blue for directories, green for executables, white for files) ls -l - shows permissions, owner, group, and name cd - navigate with ~ , . , .. , and absolute paths mkdir - create folders touch - create files The prompt updates when navigating directories. It shows ~ for the home directory and the full path everywhere else. I also added realistic bash error messages. Invalid flags, missing arguments, and wrong paths all show proper errors like a real terminal would. The terminal now has 7 working commands with real filesystem behavior. Next step is building the lesson system that teaches these commands one by one. Completed index.html - Start menu with Start and Settings buttons settings.html - Settings page with three themes (Ubuntu, Hacker, Kali) login.html - Login page with username, machine name, and password validation main.html - Interactive terminal interface style.css - Main styling, animated gradients, glassmorphism UI, and theme colors login.css - Login page styling with themed backgrounds settings.js - Saves the selected theme using localStorage theme.js - Loads the saved theme and applies it automatically login.js - Form validation and redirect to terminal filesystem.js - Fake Linux filesystem with files, folders, permissions, and navigation terminal.js - Terminal input handling, prompt display, line management, colored output commands.js - Command recognition ( help , pwd , clear , ls , cd , mkdir , touch ) Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Build the lesson system (lectures + practice missions) Add more commands ( cat , rm , cp , mv , chmod , chown ) Add command history (up/down arrow keys) Add redirection ( > , >> , < ) Improve mobile experience Try It Live Demo
Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I added redirection to the terminal. Commands can now read from files and write to them instead of only printing to the screen. The terminal now supports: > - write output to a file (overwrites) >> - append output to a file < - read input from a file 2> - redirect error output to a file I also connected < to cat so it can read from a file through stdin. To make this work, I had to refactor how commands run. The old processCommand returned output directly. I renamed it to executeCommand and wrote a new processCommand wrapper above it that parses redirection operators before the command runs, then decides where the output goes. The refactor was harder than expected. I hit several bugs - a typo in stderrMatch , a missing $ anchor in a regex, and a duplicate if block that used the wrong variable. I also had to fix catResults and lineNumber which I deleted during the refactor without realizing. Completed index.html - Start menu with Start and Settings buttons settings.html - Settings page with three themes (Ubuntu, Hacker, Kali) login.html - Login page with username, machine name, and password validation main.html - Interactive terminal interface style.css - Main styling, animated gradients, glassmorphism UI, and theme colors login.css - Login page styling with themed backgrounds settings.js - Saves the selected theme using localStorage theme.js - Loads the saved theme and applies it automatically login.js - Form validation and redirect to terminal filesystem.js - Fake Linux filesystem with files, folders, permissions, owners, groups, sizes, and modification times terminal.js - Terminal input handling, prompt display, line management, colored output commands.js - Command recognition and execution Current Commands pwd , ls , cd , mkdir , touch , echo , cat , rm , cp , mv , clear , help With flags for most commands, redirection ( > , >> , < , 2> ), and per-command help. Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Command history (up/down arrow keys) Tab autocomplete history command, !! , !n Add grep , head , tail Add chmod , chown Wildcards, brace expansion, && , || Build the lesson system (lectures + practice missions) Try It Live Demo
Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I built the lessons system. This is the biggest step so far - the part that turns the terminal into a real teaching tool. The lessons system has three parts: The lessons overview page ( lessons.html ) shows all lessons organized into sections: Introduction Navigation Files Text & Redirection Permissions Final Mission Each lesson appears as a card with a status: START (unlocked), DONE (completed), or LOCK (not yet unlocked). Intro lessons are always open so users can read them or skip. Navigation lessons unlock one at a time. Later sections unlock when the previous section is finished. The lessons data file ( lessons-data.js ) stores all lesson content in one place. Each lesson has a lecture that explains the concept and a practice task with an expected command. The lesson engine ( lesson-window.js ) will run inside main.html . It opens a floating window with the current lesson, shows the lecture, then the practice. When the user types the correct command, the lesson completes and unlocks the next one. I also built the mode selection page ( mode.html ). After login, the user picks between two paths: Free Exploration : opens the terminal with no lessons Guided Path : opens the lessons overview Progress saves to localStorage so completed lessons stay completed. Some issues I hit: The unlock logic had a bug where Intro lessons blocked Navigation. I fixed it by skipping intro sections in the unlock check. CSS conflicts between .lesson-subtitle (used inside lesson cards) and .lessons-subtitle (used on the page). I renamed them to avoid mixing styles. The lessons page inherited overflow: hidden from the body, so it could not scroll. I added a body.lessons-page override. Completed index.html - Start menu with Start and Settings buttons settings.html - Settings page with three themes (Ubuntu, Hacker, Kali) login.html - Login page with username, machine name, and password validation mode.html - Mode selection: Free Exploration or Guided Path lessons.html - Course overview with sections and lesson cards main.html - Interactive terminal interface style.css - Main styling, animated gradients, glassmorphism UI, theme colors login.css - Login page styling with themed backgrounds settings.js - Saves the selected theme using localStorage theme.js - Loads the saved theme and applies it automatically login.js - Form validation and redirect to mode page filesystem.js - Fake Linux filesystem with files, folders, permissions, owners, groups, sizes, and modification times terminal.js - Terminal input handling, prompt display, line management, colored output commands.js - Command recognition and execution lessons-data.js - All 25 lessons organized into 6 sections lesson.js - Renders the lessons page timeline Current Commands pwd , ls , cd , mkdir , touch , echo , cat , rm , cp , mv , clear , help , history With flags for most commands, redirection ( > , >> , < , 2> ), Tab autocomplete, arrow-key history, !! and !n expansion, and per-command help. Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Build the lesson window inside main.html (lecture, practice, success phases) Make the window draggable and minimizable with an Escape key toggle Build the Final Mission with game-style objectives Add remaining commands ( grep , head , tail , chmod , chown ) Try It Live Demo
Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I built the lesson window - the floating panel that runs inside the terminal during lessons. This is the piece that connects the lessons page to the terminal itself. When a user picks a lesson from the overview, the terminal opens with ?lesson=N in the URL. The lesson window reads that number, finds the lesson in the data file, and appears in the top-right corner of the screen. The window has three states: Lecture - shows the lesson text explaining the concept. The user reads and clicks “Start Practice” (or “Complete” for intro lessons). Practice - the window changes visually. Its border and title switch to an amber color, and a “PRACTICE:” prefix appears in the title. This makes it obvious that it’s time to do something, not just read. The user types the command in the terminal below. Success - when the expected command is typed, the window shows the success message and a “Next Lesson” button appears. Clicking it swaps the window content to the next lesson without reloading the page. The window is also draggable by its title bar. The user can move it anywhere, minimize it with - , or close it with × (which returns to the lessons page). Pressing Escape hides and shows the window. I also added replay support. If a lesson is already complete, the user can open it again, read the lecture, and try the practice a second time. The window still shows the success message, but the lesson status stays DONE - it does not re-mark anything. Some issues I hit: The intro lessons blocked the “Next Lesson” button because they were being re-completed in a loop. I fixed this by tracking a showingSuccess variable that tells the code whether we’re on the success screen or the lecture. The practice mode class wasn’t being added because the flow checked lessonComplete before checking whether we were in the practice phase. I reordered the checks so practice renders correctly even for replayed lessons. Completed index.html - Start menu with Start and Settings buttons settings.html - Settings page with three themes (Ubuntu, Hacker, Kali) login.html - Login page with username, machine name, and password validation mode.html - Mode selection: Free Exploration or Guided Path lessons.html - Course overview with sections and lesson cards main.html - Interactive terminal interface style.css - Main styling, animated gradients, glassmorphism UI, theme colors login.css - Login page styling with themed backgrounds settings.js - Saves the selected theme using localStorage theme.js - Loads the saved theme and applies it automatically login.js - Form validation and redirect to mode page filesystem.js - Fake Linux filesystem with files, folders, permissions, owners, groups, sizes, and modification times terminal.js - Terminal input handling, prompt display, line management, colored output command.js - Command recognition and execution lessons-data.js - All 25 lessons organized into 6 sections lesson.js - Renders the lessons page timeline lesson-window.js - Runs the lesson window inside the terminal Current Commands pwd , ls , cd , mkdir , touch , echo , cat , rm , cp , mv , clear , help , history With flags for most commands, redirection ( > , >> , < , 2> ), Tab autocomplete, arrow-key history, !! and !n expansion, and per-command help. Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Build chmod , chown , sudo for the Permissions section Write lesson content for lessons 21-24 Build the Final Mission with a timer and game-style objectives Try It Live Demo
Teach Terminal A browser-based game that teaches Linux terminal commands through interactive lessons and missions. Today Today I finished writing all 25 lessons and fixed several issues with the lesson system. The lessons are organized into 5 sections - Introduction, Navigation, Files, Text & Redirection, and Permissions - plus a final congratulations lesson. Each practice lesson has multiple steps, so instead of a single command to type, the user might create a file, change its permissions, and verify with ls -l . The window tracks progress with markers like [x] , [>] , and [ ] so it is clear where the user is. I also fixed bugs I found while testing the flow: The lesson window didn’t reset the filesystem between practices. If you completed mkdir projects once, replaying the lesson would fail because the folder already existed. Now the filesystem resets to a clean state at the start of every practice lesson. Sudo commands weren’t detected by the practice check. The checker only saw the inner command ( chown root file.txt ), not the full sudo chown root file.txt . Fixed by passing the full command through. Lesson 25 no longer has a practice - it just says “Congratulations! You finished Teach Terminal.” with a short message about what the user learned. Completed index.html - Start menu with Start and Settings buttons settings.html - Settings page with three themes (Ubuntu, Hacker, Kali) login.html - Login page with username, machine name, and password validation mode.html - Mode selection: Free Exploration or Guided Path lessons.html - Course overview with sections and lesson cards main.html - Interactive terminal interface style.css - Main styling, animated gradients, glassmorphism UI, theme colors login.css - Login page styling with themed backgrounds settings.js - Saves the selected theme using localStorage theme.js - Loads the saved theme and applies it automatically login.js - Form validation and redirect to mode page filesystem.js - Fake Linux filesystem with files, folders, permissions, owners, groups, sizes, and modification times terminal.js - Terminal input handling, prompt display, line management, colored output, sudo flow command.js - Command recognition and execution lessons-data.js - All 25 lessons organized into 5 sections lesson.js - Renders the lessons page timeline lesson-window.js - Runs the lesson window inside the terminal Current Commands pwd , ls , cd , mkdir , touch , echo , cat , rm , cp , mv , chmod , chown , sudo , clear , help , history With flags for most commands, redirection ( > , >> , < , 2> ), Tab autocomplete, arrow-key history, !! and !n expansion, and per-command help. Goal My goal is to create a realistic Linux terminal that teaches beginners how to use common commands through interactive lessons instead of just reading documentation. Next Steps Add grep , head , tail Add pipes ( | ) and shell operators ( && , || , ; ) Wildcards and brace expansion Try It Live Demo
Ships:
Teach Terminal I made Teach Terminal - a browser-based Linux terminal simulator for learning basic Linux commands. The main problem I wanted to solve is that learning Linux from documentation can be very passive. You read what cd or chmod does, but you don’t really remember it until you use it yourself. Also, using a real Linux system can be a little scary for beginners because one wrong command can cause problems. Teach Terminal gives you a fake Linux filesystem where you can practice without breaking a real computer. You can log in, choose a mode, and start learning. There are 25 lessons in 5 sections: Introduction, Navigation, Files, Text & Redirection, and Permissions. Every lesson has a small lecture and then practice. In the practice you need to type commands yourself, for example pwd , ls -la , chmod 755 , or sudo chown root file.txt . The terminal gives output and errors similar to what you can get in a real Ubuntu terminal. Note: This is a simulation. It does not enforce all Linux permissions and security rules, so some commands may behave differently than on a real system. What was challenging The fake filesystem was one of the harder parts. I made two classes for it. FileSystem handles the filesystem tree and navigation, and file represents the individual files and folders. It also stores things like permissions, owner, size and modification date. Getting absolute paths working was also a little difficult. I needed to go from the current file or folder to its parents until I reach the root. It is kind of like following a linked list backwards. Another problem was checking commands in multi-step practices. For example, when a user runs sudo chown root file.txt , the practice checker needs to check the whole command and not only chown root file.txt . I also had problems with resetting the practice state. If I make a folder with mkdir projects and then start the same practice again, it will fail because the folder already exists. So I needed to reset the practice filesystem when starting it again. Things I am happy with The lesson engine is probably the part I worked most on. It handles the lecture, practice, success state, and the progress for each step. I also made the lesson window draggable and minimizable. Pressing Escape can toggle the window. The terminal currently supports 16 commands and some extra features like flags, redirection ( > , >> , < , 2> ), tab autocomplete, arrow-key command history, and sudo with password checking. I also added 3 themes: Ubuntu, Hacker and Kali. The themes are used across the different pages. How to test Open the demo link. Go to Settings and choose a theme: Ubuntu, Hacker, or Kali. Log in with a valid username, machine name and password. Choose Guided Path if you want to try the lessons, or Free Exploration if you just want to use the terminal. In a lesson, read the lecture and click Start Practice . Type the commands in the terminal and follow the steps. Some commands you can try: pwd ls -la mkdir test cd test touch file.txt chmod 755 file.txt sudo chown root file.txt The project is made with plain HTML, CSS and JavaScript. I didn’t use frameworks or external dependencies....
|
1793004625.997672
|
1793091025.997672
|
|
39420
|
Mini Veshrown by @Cy | Stardance
|
Cy
|
1
|
38.0
|
350
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T22:42:49Z", "hours": 38.0, "multiplier": 9.1, "payout": 350, "blessing": "neutral", "text": "Mini Veshrown! A arena fantasy roguelike with many races and weapons to choose from. This is a early release of the game so many things will change (like the ui) and possibly there are some bugs. I had a blast creating this game and improving the little details like the rain but the hardest part had to be debugging the hitboxes which took a while. I am always up for ideas and critiques for this game, but in the end I hope you enjoy it! -Cy", "repo": "https://github.com/Cybrock9000/tinyrougelike", "demo": "https://cyberwolfgames.itch.io/mini-veshrown"}]...
|
[{"post_id": 48518, "ts": "202 [{"post_id": 48518, "ts": "2026-08-16T22:22:08Z", "hours": 5.1261, "text": "I am going to be busy for a bit so i have done some touchups to this game to make it playable and is now ready for a demo ship!!!"}, {"post_id": 43117, "ts": "2026-08-08T06:30:52Z", "hours": 6.8886, "text": "Man I have done quite a bit lately. One of the main things that I have done Is I have added screen shake to make hitting enemies more satisfying. I added “pets” which help attack. I added the first boss. I have started work on a moon cycle that gives the player different advantages based on the cycle (in full moon there is also blood moon, blue moon and solar eclipse). I have also added some secret things too. I think that is most of what I have done ;|. -Cy."}, {"post_id": 39903, "ts": "2026-08-03T06:17:18Z", "hours": 4.7597, "text": "Things have been going smoothly lately and I have been getting a lot done. One of the things I have started is races. so far there a only 4 playable races in the game right now (Human, Werewolf, Kitsune, Voidwalker) and I am currently making them have special attributes. I have added 2 new maps and a secret song that plays when you get a rare item (the song gives a hint on my next major game that I have been spending the whole year on). I made the rain more realistic by having each rain droplet go at a random speed. I have also been working on the magic system, specifically shadow magic. Thats all I can think of right now that I did today. This game is set on the world I have been creating: Pomehgza. So my end goal is to have it as close to that as possible. I have also decided that this game is not set in a certain era so there are no extinct races or other conflicts. welp that’s that. - Cy."}, {"post_id": 38684, "ts": "2026-08-01T06:05:48Z", "hours": 7.8294, "text": "I have done so much to the point where I probably wont even cover some of the stuff in this devlog. One of the main things is I added descriptions to items in the shop and when you choose your weapon. Ive added multiple new items that do cool things like the Torch will have a chance shoot out a flaming arrow when you attack (this stacks), and the Water Bottle that causes it to rain and damages enemy’s if they get splashed (this stacks too). I have added new weapons like the phoenix katana (that needs a nerf), crossbow and arcane staff. I have added a new enemy that sits there and shoots at you with shadow orbs that go mach 10. Also I have not posted the new map I mentioned in the last devlog to i added it here too. - Cy."}, {"post_id": 36227, "ts": "2026-07-28T05:15:24Z", "hours": 6.13, "text": "Ive been working on this a lot lately and added multiple features, like: homing projectiles, another map, slight development on the different races you can play, and 2 new swords (3 in total now). there is the default Sword with ok range and a 90 degree AOD cone, then there is the Rapier which has a tiny 20 degree AOD cone but far attack range (attack range buffs are doubled for this sword), and lastly there is the Great Sword which has a huge 180 degree AOD cone and double damage but attack range buffs are halved and has a short attack range too. I also added a very simple hud (just the health and wave right now). and that is about it. - Cy :)"}, {"post_id": 35059, "ts": "2026-07-26T07:34:56Z", "hours": 4.2867, "text": "I have done a lot of work today! I have removed the ai boid code and made something better (and more simpler). I have added a wave system, so when you kill all the enemies, you will be taken to the shop then back to the game. When you hit a enemy, particles will emit to make the enemy look like its bleeding. You can attack now with a feature that haunts all my projects: raycasting. I also added a song that I made the other day into this game that uses organs from my pipe organ sim too! (the first picture is the heavy WIP shop, and the second is the arena). I will start working on the Cobra programing language once its accepted and recommendations come in :)."}, {"post_id": 34472, "ts": "2026-07-25T06:29:58Z", "hours": 3.4331, "text": "first devlog of another project. I like to have 2-3 projects going at once so I dont loose interest in any. but anyway, I am making a tiny roguelike. I have normal enemys that chase you and then enemys that have boid ai and go in groups to attack you. I have many plans for this game and I hope I be able to finish it. (the cobra programing language and cyber game engine is still being worked on, the pipe organ simulation might get an update, but I think I call it finished)"}]...
|
Title: Mini Veshrown by @Cy | Stardance
Devlogs:
Title: Mini Veshrown by @Cy | Stardance
Devlogs:
first devlog of another project. I like to have 2-3 projects going at once so I dont loose interest in any. but anyway, I am making a tiny roguelike. I have normal enemys that chase you and then enemys that have boid ai and go in groups to attack you. I have many plans for this game and I hope I be able to finish it. (the cobra programing language and cyber game engine is still being worked on, the pipe organ simulation might get an update, but I think I call it finished)
I have done a lot of work today! I have removed the ai boid code and made something better (and more simpler). I have added a wave system, so when you kill all the enemies, you will be taken to the shop then back to the game. When you hit a enemy, particles will emit to make the enemy look like its bleeding. You can attack now with a feature that haunts all my projects: raycasting. I also added a song that I made the other day into this game that uses organs from my pipe organ sim too! (the first picture is the heavy WIP shop, and the second is the arena). I will start working on the Cobra programing language once its accepted and recommendations come in :).
Ive been working on this a lot lately and added multiple features, like: homing projectiles, another map, slight development on the different races you can play, and 2 new swords (3 in total now). there is the default Sword with ok range and a 90 degree AOD cone, then there is the Rapier which has a tiny 20 degree AOD cone but far attack range (attack range buffs are doubled for this sword), and lastly there is the Great Sword which has a huge 180 degree AOD cone and double damage but attack range buffs are halved and has a short attack range too. I also added a very simple hud (just the health and wave right now). and that is about it. - Cy :)
I have done so much to the point where I probably wont even cover some of the stuff in this devlog. One of the main things is I added descriptions to items in the shop and when you choose your weapon. Ive added multiple new items that do cool things like the Torch will have a chance shoot out a flaming arrow when you attack (this stacks), and the Water Bottle that causes it to rain and damages enemy’s if they get splashed (this stacks too). I have added new weapons like the phoenix katana (that needs a nerf), crossbow and arcane staff. I have added a new enemy that sits there and shoots at you with shadow orbs that go mach 10. Also I have not posted the new map I mentioned in the last devlog to i added it here too. - Cy.
Things have been going smoothly lately and I have been getting a lot done. One of the things I have started is races. so far there a only 4 playable races in the game right now (Human, Werewolf, Kitsune, Voidwalker) and I am currently making them have special attributes. I have added 2 new maps and a secret song that plays when you get a rare item (the song gives a hint on my next major game that I have been spending the whole year on). I made the rain more realistic by having each rain droplet go at a random speed. I have also been working on the magic system, specifically shadow magic. Thats all I can think of right now that I did today. This game is set on the world I have been creating: Pomehgza. So my end goal is to have it as close to that as possible. I have also decided that this game is not set in a certain era so there are no extinct races or other conflicts. welp that’s that. - Cy.
Man I have done quite a bit lately. One of the main things that I have done Is I have added screen shake to make hitting enemies more satisfying. I added “pets” which help attack. I added the first boss. I have started work on a moon cycle that gives the player different advantages based on the cycle (in full moon there is also blood moon, blue moon and solar eclipse). I have also added some secret things too. I think that is most of what I have done ;|. -Cy.
I am going to be busy for a bit so i have done some touchups to this game to make it playable and is now ready for a demo ship!!!
Ships:
Mini Veshrown! A arena fantasy roguelike with many races and weapons to choose from. This is a early release of the game so many things will change (like the ui) and possibly there are some bugs. I had a blast creating this game and improving the little details like the rain but the hardest part had to be debugging the hitboxes which took a while. I am always up for ideas and critiques for this game, but in the end I hope you enjoy it! -Cy...
|
1792990272.9357038
|
1793076672.9357038
|
|
47682
|
MedSite by @theodora | Stardance
|
theodora
|
1
|
21.0
|
350
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T08:32:31Z", "hours": 21.0, "multiplier": 16.88, "payout": 350, "blessing": "neutral", "text": "About Medisite MedSite is a website designed to help people who are struggling to understand and navigate the UK healthcare system. I built MedSite because I know how confusing the NHS can be, especially when you are unfamiliar with how the system works. I was born in Hong Kong and moved to the UK when I was 14. The healthcare system here was completely different from what I used to. Then, when I was 17, my health suddenly started declining. That began my own NHS journey–from visiting my GP and local pharmacy to A&E, hospital appointments and everything in between. Over the past two years, I’ve had to learn how to navigate the system, figure out what questions to ask, understand what support was available and sometimes work out where I was supposed to go next. That experience is what led me to start building MedSite. MedSite Component: Guide: The guide is separated into 6 different categories, from self-care to calling 999. This site has input for common symptoms and illnesses, explains what you can expect from the NHS, what questions you can ask, and when you need further help. Support: Support is a place to support your healthcare journey, what you can get away from the NHS, what you can ask for when you are discharged from the hospital, etc. Sometimes the hardest part isn’t the treatment itself- it’s knowing what happens afterwards. Story: Story is a place where I documented what has happened throughout these past two years, what I’ve experienced, what I’ve asked, what I’ve been told and what support I’ve been given. Find nearest function Find nearest function allows users to find the nearest pharmacy, GP, urgent treatment centre, and A&E. This feature requires users to permit the website to have access to their location before using Google Maps as an external tool to find the nearest services. Declaration Page This indicates that the information on the website is meant to be useful but not entirely accurate and applicable to all users and cases; thus, seeking professional medical advice is strongly recommended. First Aid: First aid explains when first aid may be needed and provides clear, step-by-step guidance to help users understand what they should do. The information comes from trusted medical sources (Mayo Clinic, NHS) Condition A-Z: Condition A-Z this provide a complete browse of the 45 conditions included in the guide, organised into different health categories. AI Usage: I have used Claude AI to translate between English and traditional Chinese, and it also helps me debug my code. The whole website is made based on personal experience. The website layout, idea, and main coding come from my idea.", "repo": "https://github.com/theodora-sin/medsite", "demo": "https://theodora-sin.github.io/medsite/index.html"}]...
|
[{"post_id": 55438, "ts": "202 [{"post_id": 55438, "ts": "2026-08-27T08:27:20Z", "hours": 1.2989, "text": "Devlog 4: Hi, and welcome to my final devlog. This devlog records my final tidy-up of the website."}, {"post_id": 52222, "ts": "2026-08-22T10:04:26Z", "hours": 8.0464, "text": "Devlog 3: Hi and welcome to another Devlog What have I added? Story update: Orginally, I had added a section called story. I finished styling the section and added both languages, making it more engaging and accessible. I have also added a timeline to show what has happened throughout my journey and make the story easier to follow. The story will continue to be updated as I am still investigating my illness. Conditions A-Z Adding a new tab called Condition A-Z provides a complete browse of the 45 conditions included in the guide, organised into different health categories. Each condition has a ‘View in Guide’ button that links back to the first tab of the guide. This allows users to quickly find the condition and see the recommended steps and information provided in the guide. I also added an NHS reference for each condition. This links to a Google search for relevant NHS information, making it easier for users to find trusted guidance and learn more about each condition. First Aid I have also added a new tab called First Aid. It is designed to teach users what to do during an emergency situation. This section explains when first aid may be needed and provides clear, step-by-step guidance to help users understand what they should do. The information comes from trusted medical sources (Mayo Clinic, NHS) Thanks for reading! 😊"}, {"post_id": 50222, "ts": "2026-08-19T11:25:17Z", "hours": 5.0422, "text": "Devlog 2: Hi and welcome back to another Devlog. What have I added?: Find nearest function A new feature has been added called Find Nearest under some cards, where users can find the nearest pharmacy, GP, urgent treatment centre, and A&E. This feature requires users to permit the website to have access to their location before using Google Maps as an external tool to find the nearest services. Declaration Page In addition to that, a Declaration section has been added in Legal & Privacy. This indicates that the information on the website is meant to be useful but not entirely accurate and applicable to all users and cases, thus, seeking professional medical advice is strongly recommended. Zoom In/Out Zoom-in/out features have been added to make the website more accessible to elderly users and those who have difficulty reading. Thanks for reading! 😊"}, {"post_id": 46895, "ts": "2026-08-14T13:12:11Z", "hours": 6.3617, "text": "Devlog 1: Welcome to my first devlog of MedSite: What is MedSite? MedSite is a website designed to help people who are struggling to understand and navigate the UK healthcare system. I built MedSite because I know how confusing the NHS can be, especially when you are unfamiliar with how the system works. I was born in Hong Kong and moved to the UK when I was 14. The healthcare system here was completely different from what I used to. Then, when I was 17, my health suddenly started declining. That began my own NHS journey–from visiting my GP and local pharmacy to A&E, hospital appointments and everything in between. Over the past two years, I’ve had to learn how to navigate the system, figure out what questions to ask, understand what support was available and sometimes work out where I was supposed to go next. That experience is what led me to start building MedSite. At the moment, MedSite is made up of three main components: Guide: Guide is designed to help people understand where they might need to go when they have a particular symptom or health problem. This site has input information on common symptoms and illnesses; it will explain what you can expect from the NHS, what questions you can ask, and when you may need to seek further help. This is not a diagnostics tools. This is used to make the healthcare system easier to navigate and help people feel more prepared when seeking care. Support: Support is a place to support your healthcare journey, what you can get away from the NHS, what you can ask for when you are discharged from the hospital, etc… Sometimes the hardest part isn’t the treatment itself- it’s knowing what happens afterwards. Story: Story is the most personal part of MedSite. It’s where I want to document what has happened throughout these past two years, what I’ve experienced, what I’ve asked, what I’ve been told and what support I’ve been given. I want to share my experience because I know other people may be going through something similar and wondering, ‘What am I supposed to do?’ Thanks for reading."}]...
|
Title: MedSite by @theodora | Stardance
Devlogs:
Title: MedSite by @theodora | Stardance
Devlogs:
Devlog 1: Welcome to my first devlog of MedSite: What is MedSite? MedSite is a website designed to help people who are struggling to understand and navigate the UK healthcare system. I built MedSite because I know how confusing the NHS can be, especially when you are unfamiliar with how the system works. I was born in Hong Kong and moved to the UK when I was 14. The healthcare system here was completely different from what I used to. Then, when I was 17, my health suddenly started declining. That began my own NHS journey–from visiting my GP and local pharmacy to A&E, hospital appointments and everything in between. Over the past two years, I’ve had to learn how to navigate the system, figure out what questions to ask, understand what support was available and sometimes work out where I was supposed to go next. That experience is what led me to start building MedSite. At the moment, MedSite is made up of three main components: Guide: Guide is designed to help people understand where they might need to go when they have a particular symptom or health problem. This site has input information on common symptoms and illnesses; it will explain what you can expect from the NHS, what questions you can ask, and when you may need to seek further help. This is not a diagnostics tools. This is used to make the healthcare system easier to navigate and help people feel more prepared when seeking care. Support: Support is a place to support your healthcare journey, what you can get away from the NHS, what you can ask for when you are discharged from the hospital, etc… Sometimes the hardest part isn’t the treatment itself- it’s knowing what happens afterwards. Story: Story is the most personal part of MedSite. It’s where I want to document what has happened throughout these past two years, what I’ve experienced, what I’ve asked, what I’ve been told and what support I’ve been given. I want to share my experience because I know other people may be going through something similar and wondering, ‘What am I supposed to do?’ Thanks for reading.
Devlog 2: Hi and welcome back to another Devlog. What have I added?: Find nearest function A new feature has been added called Find Nearest under some cards, where users can find the nearest pharmacy, GP, urgent treatment centre, and A&E. This feature requires users to permit the website to have access to their location before using Google Maps as an external tool to find the nearest services. Declaration Page In addition to that, a Declaration section has been added in Legal & Privacy. This indicates that the information on the website is meant to be useful but not entirely accurate and applicable to all users and cases, thus, seeking professional medical advice is strongly recommended. Zoom In/Out Zoom-in/out features have been added to make the website more accessible to elderly users and those who have difficulty reading. Thanks for reading! 😊
Devlog 3: Hi and welcome to another Devlog What have I added? Story update: Orginally, I had added a section called story. I finished styling the section and added both languages, making it more engaging and accessible. I have also added a timeline to show what has happened throughout my journey and make the story easier to follow. The story will continue to be updated as I am still investigating my illness. Conditions A-Z Adding a new tab called Condition A-Z provides a complete browse of the 45 conditions included in the guide, organised into different health categories. Each condition has a ‘View in Guide’ button that links back to the first tab of the guide. This allows users to quickly find the condition and see the recommended steps and information provided in the guide. I also added an NHS reference for each condition. This links to a Google search for relevant NHS information, making it easier for users to find trusted guidance and learn more about each condition. First Aid I have also added a new tab called First Aid. It is designed to teach users what to do during an emergency situation. This section explains when first aid may be needed and provides clear, step-by-step guidance to help users understand what they should do. The information comes from trusted medical sources (Mayo Clinic, NHS) Thanks for reading! 😊
Devlog 4: Hi, and welcome to my final devlog. This devlog records my final tidy-up of the website.
Ships:
About Medisite MedSite is a website designed to help people who are struggling to understand and navigate the UK healthcare system. I built MedSite because I know how confusing the NHS can be, especially when you are unfamiliar with how the system works. I was born in Hong Kong and moved to the UK when I was 14. The healthcare system here was completely different from what I used to. Then, when I was 17, my health suddenly started declining. That began my own NHS journey–from visiting my GP and local pharmacy to A&E, hospital appointments and everything in between. Over the past two years, I’ve had to learn how to navigate the system, figure out what questions to ask, understand what support was available and sometimes work out where I was supposed to go next. That experience is what led me to start building MedSite. MedSite Component: Guide: The guide is separated into 6 different categories, from self-care to calling 999. This site has input for common symptoms and illnesses, explains what you can expect from the NHS, what questions you can ask, and when you need further help. Support: Support is a place to support your healthcare journey, what you can get away from the NHS, what you can ask for when you are discharged from the hospital, etc. Sometimes the hardest part isn’t the treatment itself- it’s knowing what happens afterwards. Story: Story is a place where I documented what has happened throughout these past two years, what I’ve experienced, what I’ve asked, what I’ve been told and what support I’ve been given. Find nearest function Find nearest function allows users to find the nearest pharmacy, GP, urgent treatment centre, and A&E. This feature requires users to permit the website to have access to their location before using Google Maps as an external tool to find the nearest services. Declaration Page This indicates that the information on the website is meant to be useful but not entirely accurate and applicable to all users and cases; thus, seeking professional medical advice is strongly recommended. First Aid: First aid explains when first aid may be needed and provides clear, step-by-step guidance to help users understand what they should do. The information comes from trusted medical sources (Mayo Clinic, NHS) Condition A-Z: Condition A-Z this provide a complete browse of the 45 conditions included in the guide, organised into different health categories. AI Usage: I have used Claude AI to translate between English and traditional Chinese, and it also helps me debug my code. The whole website is made based on personal experience. The website layout, idea, and main coding come from my idea....
|
1792972125.1927311
|
1793058525.1927311
|
|
7338
|
PC Stats by @dubbyy | Stardance
|
dubbyy
|
1
|
38.0
|
349
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T00:15:30Z", "hours": 38.0, "multiplier": 10.53, "payout": 349, "blessing": "neutral", "text": "Taken from my last devlog: … I’ve been making an app to track information about how I use my computer, and a companion website to display the data. Right now, it logs every click, as well as the positions and dimensions of apps every 5 minutes. The dashboard website then displays that data in a variety of interesting ways. The collection takes a long time and only works on Linux, so I’m using the dashboard as the demo. You can find the collector on the GithTub. The most challenging part was figuring out how to collect the data, especially the clicks, however I think I spent the most time on the dashboard. It was my first time using Javascript for something complex, so I’m pretty happy with how it turned out I hope you enjoy :)", "repo": "https://github.com/dubbyy1/pc-stats", "demo": "https://pc-stats.dubbyy.com/?db=https%3A%2F%2Fraw.githubusercontent.com%2Fdubbyy1%2Fpc-stats%2Fmain%2Fexamples%2Fstats.db"}]...
|
[{"post_id": 17266, "ts": "202 [{"post_id": 17266, "ts": "2026-06-28T00:01:16Z", "hours": 2.095, "text": "FINISHED Its finally finished! If you don’t know, I’ve been making an app to track information about how I use my computer, and a companion website to display the data. Right now, it logs every click, as well as the positions and dimensions of apps every 5 minutes. The dashboard website then displays that data in a variety of interesting ways. The collector is now (in theory) compatible with the majority of Linux desktops (sorry Windows users, maybe next year). I also added a small config file. Right now this only stores the window-snapshot interval, which you can change through the UI. I originally planned on adding a list of apps to ignore, but there were too many problems. Primarily, I wasn’t sure how to reliably handle the focused app being blocked without making it null, which is very messy, and the whole thing seemed too complicated for a feature I’m don’t really plan on using. I also considered making it a frontend filter, but chose not to for a similar reason. Once again, you can try it yourself here with my data. If you want to collect your own data, you can download the collector here (note: you need to give your user input permissions for this to detect clicks, more details in the README). I’ve only tested this on my machine (KDE Wayland) so if you have a different setup, tell me how it goes! Afterword I had a lot of fun making this. This was my deepest dive into web development yet and I learned so much. This is also the first time I’ve shipped a project for public use, which was a has been a valuable experience. I could definitely do more with this (more config, more charts, more data), and I do plan on revisiting it in the future, but I think this is a good place to leave it for now. Thanks for reading, see you next project :)"}, {"post_id": 17047, "ts": "2026-06-27T17:53:20Z", "hours": 15.2803, "text": "Day ?? - New Features! After 15 hours (got a bit carried away) the next feature is (mostly) finished! You can now monitor and display window data. Every 5 minutes, the collector logs what apps are open and their positions on screen, which you can then visualize on the dashboard. I thought it would be interesting to combine the click data and the window data in some way, but I decided against it. The reason being that I technically don’t know what app the user clicked since it could have changed in the 5 minutes. To collect the data I had to run a separate KWin script to get around the restrictions, same as with the clicks. This script gave me the windows as JSON, which I then stored in 2 SQLite tables. One containing general info (one entry per snapshot), and the other containing info about specific windows. The second major change is the collector’s new UI. It was a relatively small addition, but it makes the whole experience a lot smoother. It also uses the same UI library I was already using to get the monitor configuration which was nice. Finally, the dashboard now stores the database in cache so everything is preserved when you reload. This change was mostly for me, because having to re-upload the file every time I changed the code got really annoying. What’s Next There’s a few finishing touches I need to add before shipping, Specifically: Compatibility (KDE only right now) Config options (Snapshot frequency, apps to ignore, etc) Possibly more window features yap I definitely could have done all this way faster but I spent a lot of time fiddling, trying to fully understand everything. Now between the KWin scripts and the dashboard I have a much deeper understanding of Javascript than before which will help in the future. Hopefully I can ship this today or tomorrow so I can start working on my next project"}, {"post_id": 10289, "ts": "2026-06-16T22:34:09Z", "hours": 6.7747, "text": "Days 5 + 6? Changes I added filters for time and button type to make it more interactive. I also added new charts, specifically pie charts for button and monitor usage, and bar charts for hourly and daily activity. I used chart.js to make the charts, because it makes the programming way simpler while still giving me full control. The final change was reworking the heatmap again. instead of each click being an individual element, they’re now drawn on a canvas which boosts performance significantly. Try it! What’s Next Now that the dashboard is mostly finished. I want to add some quality of life things (namely caching the database so I don’t have to reupload it every time) before adding the next feature. Speaking of, the next feature is going to track what applications are open at what times, which I think will make for some really interesting data."}, {"post_id": 4535, "ts": "2026-06-07T21:35:10Z", "hours": 5.6419, "text": "Day 4 - Cleanup Changes Cleaned up the UI a lot. I like the new heatmap visualization a lot, but it’s a bit slow so I’ll continue to experiment with it. I optimized the backend a lot, it used to block a full CPU core but now it sleeps properly when idling. I also expanded compatibility to other Linux environments. This was actually way simpler than I expected, I just happened to start with KDE which is really complex for some reason. Notes The dashboard is now live on my website , which you can test with this sample data . My aim right now is to get the project ship-ready, and then add features one by one."}, {"post_id": 3823, "ts": "2026-06-06T21:37:25Z", "hours": 3.3017, "text": "Day 3 - Dashboard Today I started making the dashboard, to present the data. I decided to make it a website and have the user upload their data. This makes demoing a lot easier, as well as being good for compatibility. Right now it’s a very bare bones prototype with only a heatmap, but all the set up for reading the data should be finished, which means I can focus on polishing the UI and adding features. I also fixed some bugs in the backend. Previously the code would fail if your mouse disconnected, but now it can handle disconnects and reconnects, as well as detect multiple mice at the same time."}, {"post_id": 2918, "ts": "2026-06-05T20:23:31Z", "hours": 3.0511, "text": "Day 2 Continuing work on my data collection project. Yesterday finished the core of the first feature — a click heatmap. Today was mostly polish and fixing the structure to make shipping easier when the time comes. Changes Organisation Instead of having everything in one big ugly python file, I created a module and separated all each part into it’s own file. This will make things much easier as I continue to add new features. As well as organising the python code, the project uses a JavaScript script to get the position of the mouse, and a bash script to run it. Neither of these can be packaged, so I updated the code to generate the JS file in the user’s share directory and run it directly from python. Compatibility The original code was highly specific to my setup, and couldn’t be shipped. The fix came in two parts. I previously had my exact model of mouse hard-coded, so I added the ability to detect what mouse the user has The code only worked for my specific Window Manager. This is still the case, but I added the structure to detect the WM and adjust for it. I plan on adding support for other’s in the coming days Storage All data is now stored persistently in an SQLite database. In the future this will be read and displayed by the dashboard program. What’s Next Create the dashboard to start displaying data Expand compatibility to other Linux systems (might take a while)"}, {"post_id": 2454, "ts": "2026-06-04T23:05:57Z", "hours": 2.2456, "text": "Day 1 Making an app to track a bunch of data about how i use my computer. Currently trying to make a heatmap of where i click the most. No UI yet because getting the mouse position on Wayland took wayyy too long to figure out"}]...
|
Title: PC Stats by @dubbyy | Stardance
Devlogs:
D Title: PC Stats by @dubbyy | Stardance
Devlogs:
Day 1 Making an app to track a bunch of data about how i use my computer. Currently trying to make a heatmap of where i click the most. No UI yet because getting the mouse position on Wayland took wayyy too long to figure out
Day 2 Continuing work on my data collection project. Yesterday finished the core of the first feature — a click heatmap. Today was mostly polish and fixing the structure to make shipping easier when the time comes. Changes Organisation Instead of having everything in one big ugly python file, I created a module and separated all each part into it’s own file. This will make things much easier as I continue to add new features. As well as organising the python code, the project uses a JavaScript script to get the position of the mouse, and a bash script to run it. Neither of these can be packaged, so I updated the code to generate the JS file in the user’s share directory and run it directly from python. Compatibility The original code was highly specific to my setup, and couldn’t be shipped. The fix came in two parts. I previously had my exact model of mouse hard-coded, so I added the ability to detect what mouse the user has The code only worked for my specific Window Manager. This is still the case, but I added the structure to detect the WM and adjust for it. I plan on adding support for other’s in the coming days Storage All data is now stored persistently in an SQLite database. In the future this will be read and displayed by the dashboard program. What’s Next Create the dashboard to start displaying data Expand compatibility to other Linux systems (might take a while)
Day 3 - Dashboard Today I started making the dashboard, to present the data. I decided to make it a website and have the user upload their data. This makes demoing a lot easier, as well as being good for compatibility. Right now it’s a very bare bones prototype with only a heatmap, but all the set up for reading the data should be finished, which means I can focus on polishing the UI and adding features. I also fixed some bugs in the backend. Previously the code would fail if your mouse disconnected, but now it can handle disconnects and reconnects, as well as detect multiple mice at the same time.
Day 4 - Cleanup Changes Cleaned up the UI a lot. I like the new heatmap visualization a lot, but it’s a bit slow so I’ll continue to experiment with it. I optimized the backend a lot, it used to block a full CPU core but now it sleeps properly when idling. I also expanded compatibility to other Linux environments. This was actually way simpler than I expected, I just happened to start with KDE which is really complex for some reason. Notes The dashboard is now live on my website , which you can test with this sample data . My aim right now is to get the project ship-ready, and then add features one by one.
Days 5 + 6? Changes I added filters for time and button type to make it more interactive. I also added new charts, specifically pie charts for button and monitor usage, and bar charts for hourly and daily activity. I used chart.js to make the charts, because it makes the programming way simpler while still giving me full control. The final change was reworking the heatmap again. instead of each click being an individual element, they’re now drawn on a canvas which boosts performance significantly. Try it! What’s Next Now that the dashboard is mostly finished. I want to add some quality of life things (namely caching the database so I don’t have to reupload it every time) before adding the next feature. Speaking of, the next feature is going to track what applications are open at what times, which I think will make for some really interesting data.
Day ?? - New Features! After 15 hours (got a bit carried away) the next feature is (mostly) finished! You can now monitor and display window data. Every 5 minutes, the collector logs what apps are open and their positions on screen, which you can then visualize on the dashboard. I thought it would be interesting to combine the click data and the window data in some way, but I decided against it. The reason being that I technically don’t know what app the user clicked since it could have changed in the 5 minutes. To collect the data I had to run a separate KWin script to get around the restrictions, same as with the clicks. This script gave me the windows as JSON, which I then stored in 2 SQLite tables. One containing general info (one entry per snapshot), and the other containing info about specific windows. The second major change is the collector’s new UI. It was a relatively small addition, but it makes the whole experience a lot smoother. It also uses the same UI library I was already using to get the monitor configuration which was nice. Finally, the dashboard now stores the database in cache so everything is preserved when you reload. This change was mostly for me, because having to re-upload the file every time I changed the code got really annoying. What’s Next There’s a few finishing touches I need to add before shipping, Specifically: Compatibility (KDE only right now) Config options (Snapshot frequency, apps to ignore, etc) Possibly more window features yap I definitely could have done all this way faster but I spent a lot of time fiddling, trying to fully understand everything. Now between the KWin scripts and the dashboard I have a much deeper understanding of Javascript than before which will help in the future. Hopefully I can ship this today or tomorrow so I can start working on my next project
FINISHED Its finally finished! If you don’t know, I’ve been making an app to track information about how I use my computer, and a companion website to display the data. Right now, it logs every click, as well as the positions and dimensions of apps every 5 minutes. The dashboard website then displays that data in a variety of interesting ways. The collector is now (in theory) compatible with the majority of Linux desktops (sorry Windows users, maybe next year). I also added a small config file. Right now this only stores the window-snapshot interval, which you can change through the UI. I originally planned on adding a list of apps to ignore, but there were too many problems. Primarily, I wasn’t sure how to reliably handle the focused app being blocked without making it null, which is very messy, and the whole thing seemed too complicated for a feature I’m don’t really plan on using. I also considered making it a frontend filter, but chose not to for a similar reason. Once again, you can try it yourself here with my data. If you want to collect your own data, you can download the collector here (note: you need to give your user input permissions for this to detect clicks, more details in the README). I’ve only tested this on my machine (KDE Wayland) so if you have a different setup, tell me how it goes! Afterword I had a lot of fun making this. This was my deepest dive into web development yet and I learned so much. This is also the first time I’ve shipped a project for public use, which was a has been a valuable experience. I could definitely do more with this (more config, more charts, more data), and I do plan on revisiting it in the future, but I think this is a good place to leave it for now. Thanks for reading, see you next project :)
Ships:
Taken from my last devlog: … I’ve been making an app to track information about how I use my computer, and a companion website to display the data. Right now, it logs every click, as well as the positions and dimensions of apps every 5 minutes. The dashboard website then displays that data in a variety of interesting ways. The collection takes a long time and only works on Linux, so I’m using the dashboard as the demo. You can find the collector on the GithTub. The most challenging part was figuring out how to collect the data, especially the clicks, however I think I spent the most time on the dashboard. It was my first time using Javascript for something complex, so I’m pretty happy with how it turned out I hope you enjoy :)...
|
1792968788.877119
|
1793055188.877119
|
|
17830
|
UTAU.js by @NellowTCS | Stardance
|
NellowTCS
|
1
|
21.0
|
349
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T06:38:31Z", "hours": 21.0, "multiplier": 17.25, "payout": 349, "blessing": "neutral", "text": "I built UTAU.js, a fully synthetic singing voice engine that runs in the browser using pure DSP instead of samples or AI. It supports English, Japanese, and Mandarin, and it can import almost every major vocal synth format through a unified score system. The demo includes a piano roll editor, real-time streaming playback, voice presets, and a full set of controls for shaping the glottal source and formant model. I am proud of the coarticulation system, the pitch bend renderer, and the fact that the entire engine sings from math alone. You can try the demo, draw notes, type lyrics, and hear it perform immediately!!!!!!!!!!", "repo": "https://github.com/NellowTCS/UTAU.js", "demo": "https://nellowtcs.me/UTAU.js/"}]...
|
[{"post_id": 11132, "ts": "202 [{"post_id": 11132, "ts": "2026-06-18T06:36:00Z", "hours": 0.2928, "text": "v0.1.0 Well Stardance told me this: Warning You have 1h 14m logged that you haven't posted a devlog for. If you ship without posting a devlog, this time will be lost! IDK why, but i was planning to devlog my silly anyways so: five commits. all tagged v0.1.0. all fixing things that should have been done before I said “the project is ready.” the classic “wait I forgot” sequence. “Oops” - CI was trying to build docs without running npm ci first. added the install step. three words of actual code change. (this was wrong) “Huh. where did that come from.” - the pages deploy was creating a docs/ directory but the docs copy was still commented out. the demo was deploying fine but docs were going nowhere. fixed the mkdir. “Oooops guess who forgot to uncomment some code” - uncommented the actual docs copy in static.yml. also fixed the docs URL from nisoku.org (wrong domain) to nellowtcs.me/UTAU.js/docs. details. “You never saw that coming did you /sarc” - added all the npm publish metadata to package.json. license, author, repository, homepage, bugs URL, and keywords. the keywords are: utau, synthesis, singing, voice, speech, audio, dsp, lf-glottal, source-filter, formant. so if you npm search for any of those things, maybe you’ll find this. someday. (NPM release failed lol, that’s why I did this) “Badges hehe” - npm version badge, CI status badge, MIT license badge at the top of the README. because a project isn’t real until it has badges. everyone knows that. (/j) five commits to go from “done” to actually done. four of them are CI fixes. like i just said, this is software development. CI is green. docs are deployed. npm metadata is set. badges are shiny. v0.1.0 is tagged. so. that’s UTAU.js. six days. from “idk my voice tho” in an Obsidian doc to a parametric singing synthesizer with three languages, 14+ import/export formats, a Svelte demo app, a docs site, 160+ tests, and a v0.1.0 tag. it sounds mid. like, genuinely. the vowels are recognizable but the consonants are strange and the whole thing has this uncanny valley quality where you can tell it’s trying to be a voice but isn’t quite there. it’s really adorable when it tries :3 but it makes sound. from math. in a browser. and that’s the whole point of v0.1.0. it doesn’t have to be good. it has to exist. it exists now. :)"}, {"post_id": 11120, "ts": "2026-06-18T05:56:37Z", "hours": 1.6403, "text": "the docs exist and the README isn’t “Web-Template” anymore so uh. the README has said “Web-Template: My typical web dev starter project” for the entire life of this repo. six days. dozens of commits. a full synthesizer. and the README was still introducing it as a starter template. fixed that. also wrote an entire documentation site. in one sitting. because apparently that’s how I do things now. the README 133 lines replacing the 3-line placeholder. features list, quickstart code (Node.js WAV rendering + browser streaming in like 10 lines each), API overview table with every public export, development instructions, and a Mermaid architecture diagram. the mermaid diagram is a mindmap and it renders SO PRETTY on GitHub. multicolored branches for Core DSP, Languages, Synth, Voices, and IO. each branch fans out into its components. it’s AMAZINGGGGGGGGGGG I spent way too long picking which mermaid diagram type to use and I regret nothing. the docs site ten markdown pages built with DocMD. custom Ruby theme with blue/cyan gradient accents, dark mode support, semantic search via HuggingFace transformers, and a proper navigation structure: getting started : quickstart (5-step guide with code), installation (npm/CDN/source), core concepts (source-filter model explanation with a Mermaid flowchart showing glottal source -> formant cascade -> output) guide : architecture (module layout, data flow diagram, design decisions), renderer (6-step pipeline walkthrough from lyric to audio), languages (built-in language docs + how to register custom languages + cross-language aliasing) API reference : full export table, DSP primitives with code examples, VoiceConfig reference (264 lines of parameter documentation with perceptual effect tables for every single field. “openQuotient 0.3 = pressed tense voice, 0.5 = neutral modal voice, 0.7 = breathy soft voice.” that kind of detail.), import/export format support table the VoiceConfig page alone is probably the most thorough documentation of a formant synthesizer’s parameter space I’ve ever seen in a JS library. I might be biased. I’ve not seen many others. We don’t talk about that. also added UST and TSSLN to the export format list (they were import-only before). fixed the export function to handle generators that return arrays instead of single Uint8Arrays. CI workflows now build and audit the docs workspace too. the TODO is almost empty. just “README: quickstart, API overview, architecture diagram” which is now done. the project has: a synthesizer, three languages, 14+ import formats, 14+ export formats, a demo app with a piano roll, voice presets, undo/redo, settings, file import/export, WAV export, tempo control, buffer management, 160+ tests, JSDoc on everything, a full documentation site, and CI that’s green. six days :O"}, {"post_id": 11091, "ts": "2026-06-18T04:09:58Z", "hours": 0.5989, "text": "the documentation commit (part 1) JSDoc everywhere this is the kind of commit where the line count looks impressive and the actual behavior changes are zero. 118 lines became 216 lines in types.ts alone. every interface, every field, every function got documented. some highlights: (don’t ask why i did a double dash. i was being silly and just noticed somehow idk how) openQuotient : “fraction of the glottal cycle the vocal folds are open. Higher values produce a breathier, softer sound (0.2–0.9)” speedQuotient : “ratio of the opening phase to the closing phase. Higher values give a faster closure, increasing brightness (0.3–3.0)” FormantCascade : “cascade of anti-resonators followed by resonators, modelling the vocal-tract transfer function. Anti-resonators (zeros) come first, followed by resonators (poles), matching the source-filter model: S(f) = G(f) * Z(f) / P(f)” LFGlottalSource : “Liljencrants-Fant (LF) glottal pulse source with jitter, shimmer, aspiration noise, and DC blocking. See Fant (1986), Liljencrants (1985)” renderNote : documents the full pipeline: “lyric -> phoneme symbols -> phoneme lookup -> LF glottal pulse -> formant cascade -> noise mix -> amplitude envelope -> normalisation” every DSP class, every language module, every player method, every import/export function. the person reading this code in six months (probably me) will thank me. docs soon Docs next time, I will not be long heheeee TODO cleanup the languages section is fully checked off now. English CMUDict (124,911 words), Japanese EDICT2 (224,808 kanji-to-kana entries), Mandarin with full pinyin decomposition, and phoneme alias maps for cross-language compatibility. all done. all in previous commits I apparently forgot to devlog. oops. reorganized the remaining items: Documentation (JSDoc done, README and docs site still needed) and Future (scroll-to-playhead, seek, loop, Web Worker rendering). the TODO is getting short. that’s a weird feeling for a project that’s six days old."}, {"post_id": 11073, "ts": "2026-06-18T03:30:48Z", "hours": 3.4428, "text": "567,211 lines of “code” so about that line count. I added the CMU Pronouncing Dictionary as a git submodule. 134,000+ English words with their ARPABET pronunciations. the cmudict repo is… large. like, genuinely enormous. the diff says 567k lines and it’s almost entirely a text file of words and their phoneme sequences. the actual code changes across these four commits? probably 280 lines. the submodule? 567,131 lines. software engineering. the real G2P Build/data/cmudict is now a submodule pointing to cmusphinx/cmudict. this is THE pronunciation dictionary. the one that every TTS and speech recognition system uses. “BEAUTIFUL” -> “B Y UW1 T AH0 F AH0 L”. “SQUIRREL” -> “S K W ER1 AH0 L”. every word, every pronunciation variant, every stress marker. the 100-word hand-rolled dictionary was cute. this is the real thing. (chunk size warning in vite went from 500 to 13000 because bundling the dictionary is… yeah.) glottal pulse fix the LF glottal source had an audible click on every single cycle. the return phase (after the glottis closes) was a bare exponential decay: -exp(-epsilon * x * period) . the problem: it starts at -1 with non-zero slope, so at the boundary between cycles there’s a discontinuity. click. every. cycle. fix: multiply by sin(pi * x) . the sine term makes the slope match the open phase at t=te (C1 continuity) and reach 0 at t=tc. smooth transition. no click. this is how the actual LF model paper describes it but I’d skipped the sine modulation the first time around because I thought it was just cosmetic. it was not cosmetic. also killed the 0.8/0.2 smoothing filter. it was supposed to prevent clicks but was actually just low-passing the glottal pulse and adding phase distortion. the DC blocker handles drift on its own. coefficient went from 0.995 to 0.99 for faster response. renderer performance formant coefficient updates were happening every sample. that’s setFormants() with trig functions 44,100 times per second. formants don’t actually change that fast. throttled to every 5ms (221 samples at 44.1k). no audible difference, meaningful CPU savings. cascade reset came back at phoneme boundaries. I removed it two commits ago thinking filter state carryover was smoother. it is smoother, but it also causes wideband clicks when the coefficients jump. the reset is the right call. aspiration lowpass aspiration noise on vowels was full-spectrum white noise. real breathy voice has most of its noise energy below 4kHz. added a one-pole lowpass at 4kHz on the aspiration path. sounds warmer and less harsh. also re-added parallel filter resets at phoneme boundaries (matched the cascade reset fix). signal quality tests new test category: signal quality. a long 8-beat note must stay in [-1, 1], be finite throughout, and not be dominated by white noise. the “not white noise” check uses a crude HF proxy: ratio of RMS(sample-to-sample difference) to RMS(signal) in the steady state portion. pure white noise scores ~1.4, a clean tonal signal scores ~0.2. test asserts between 0.05 and 0.8. wrote these tests because the glottal fix could have easily introduced NaN propagation or DC drift and I wanted to catch it automatically."}, {"post_id": 10947, "ts": "2026-06-17T23:12:38Z", "hours": 7.0989, "text": "four commits, and failure I did not intend to do all of this in one sitting. and yet. player batching + buffer pool the player was creating a new AudioBuffer for every single chunk. for a 100-note score that’s 200 buffer allocations (stereo) plus 200 BufferSourceNodes. the garbage collector was not happy. rewrote the scheduling layer. chunks now accumulate into batches (~0.5s each) and get merged into a single AudioBuffer per channel before scheduling. acquireBuffer() checks a pool of previously used buffers by sampleRate and length before allocating new ones. onended releases them back to the pool. pre-buffer threshold bumped to 1.0s for more runway. the result: way fewer Web Audio nodes, way less GC pressure, smoother playback on longer scores. japanese UTAU compatibility imported UST files from real UTAU projects were breaking because Japanese has a bunch of special lyric conventions I didn’t handle: っ (sokuon) : geminate consonant marker. maps to a new sil (silence) phoneme. ※ (pronunciation alias) : text after ※ is the actual pronunciation. あ※ka uses “ka” not “あ”. dot-prefixed lyrics ( .sil , .S ): UTAU rest/silence commands. treated as empty. @ and % : stripped. @ also acts as a note-join marker in the renderer: if present, the initial consonant gets suppressed so the vowel carries through from the previous note. also removed the cascade.reset() between phonemes. filter state now carries through for smoother formant transitions instead of clicking at every phoneme boundary. settings panel new SettingsPanel.svelte . modal overlay, dark theme, closes on Escape or click-outside. currently has one setting: auto-scroll toggle (for a future scroll-to-playhead feature). settings gear icon in the header bar. undo/redo integrated undora for undo/redo history. 50-state capacity. snapshots are saved on mouse-up in the piano roll, delete key, pitch point changes, and lyric/note-number edits (on blur, not on every keystroke). Ctrl/Cmd+Z to undo. Ctrl/Cmd+Shift+Z or Ctrl/Cmd+Y to redo. Undo2 and Redo2 icons in the header bar, disabled when there’s nothing to undo/redo. history clears on language switch and file import. the formatting commit ran prettier again. removed a dead MIN_POOL_SIZE constant and an unused import. cleaned up a few TODO items. the usual. scrollToNotes also got a fix: it was centering on the midpoint of all notes which looked weird when the first note started late. now it clamps to the start of the earliest note so you always see the beginning. also I tried to fix the hissing and static and clicking but to no avail. i tried fixing a LOT of stuff. but. sadly ir only made things worse, so I had to retry. and retry. and retry. and retry. with no luck I’m not sure what the problem is tbh. Let me use Satori to debug some stuff ig"}, {"post_id": 8849, "ts": "2026-06-14T18:34:21Z", "hours": 1.2458, "text": "making it sound less terrible (two commits, one mission) these two commits are about one thing: the output was robotic and buzzy and I was tired of it. every change here is about making the synthesizer sound more like a voice and less like a modem. the renderer got smarter cross-note co-articulation. renderNote() now returns { chunk, finalFormants } . the stream passes the previous note’s final formants into the next note’s renderer, and the first phoneme interpolates from those formants instead of jumping cold. gaps between notes reset the chain. notes that follow each other seamlessly now blend their formants across the boundary. per-phoneme envelopes. the old global 5ms attack / 10ms release is gone. replaced with getPhonemeEnvelopeSamples() which gives each phoneme type its own envelope: plosives get 2ms attack / 15ms decay (sharp burst), consonants and vowels get 5ms / 3ms. every phoneme segment fades independently. diphthong formant sweeping. PhonemeDef got an endFormants field. if a diphthong has both formants and endFormants , the renderer sweeps between them over the phoneme duration. AY now actually glides from /aa/ to /ih/. EY glides from /eh/ to /ih/. OW glides from /oh/ to /uh/. they sound like diphthongs now instead of static vowels. vibratoOverride. was defined on Note but never read. now it is. per-note vibrato control works. everything got retuned glottal source. added shimmer (per-cycle amplitude variation driven by jitter, so the volume wobbles slightly like a real voice). aspiration noise is now high-pass filtered (subtract a lowpass from the raw noise) so it’s airy instead of muddy. aspiration gain bumped from 0.1 to 0.15. plosive bursts. noise envelope for plosives changed from symmetric fade to a fast 12ms exponential decay. “pa” now sounds like a burst instead of a pop. formant data for everything. Z, ZH, V, DH, Y, W, HH, JH in English all got formant targets. same for z, h, y, w, j in Japanese. consonants that were previously just noise bursts now resonate through the vocal tract. the difference is huge. vowel bandwidths tightened. defaults went from 80/100/120 to 70/90/130 Hz. narrower bandwidths = sharper resonant peaks = more vowel-like quality. voice presets retuned. male voice: lower open quotient (0.4), lower speed quotient (0.65), higher tenseness (0.65), less aspiration (0.05). sounds less breathy, more chest voice. female: formant scale 1.18. gender slider in scaleVoice now affects speed quotient and has a gender-dependent tenseness base. pitch accent. Japanese got resolveAccents() implementing heiban pattern (low first mora, high rest). the stream groups consecutive notes into phrases, calls resolveAccents, and applies the offsets as constant pitch shifts. it’s basic but it makes Japanese phrases have some melodic contour beyond what the score provides. four TODO items checked off in one go: co-articulation, phoneme envelopes, diphthong sweeping, vibratoOverride. pitch accent too. it still doesn’t sound human. but it’s starting to sound like it’s trying. and that’s a big step from where it was. if you can identify the song in the editor image, good job, you’re cool :D"}, {"post_id": 8467, "ts": "2026-06-14T02:23:14Z", "hours": 1.0867, "text": "CI arc (three commits, one story) three commits that are really one story: getting CI from “permanently red” to green. the setup “wrote” (aka copied and modified) six GitHub Actions workflows in one go: ci.yml : lint + test + build on push/PR. matrix tests Node 20 and 22. builds the library first, then typechecks the demo. (docs build is commented out because docs don’t exist yet. they will. eventually.) test.yml : dedicated test runner. same Node 20/22 matrix. runs jest in the Build workspace. release-npm.yml : publishes to npm on GitHub release. strips private/scripts/devDependencies from package.json, copies README and LICENSE into Build/, publishes with --provenance . has a workflow_dispatch with a dry-run option so I can test without actually publishing. security-audit.yml : runs npm audit --audit-level=high on all three workspaces (root, Build, Demo). daily cron plus on push when package files change. static.yml : reworked the GitHub Pages deployment. it was pointed at Build/dist (wrong, that’s the library output). now it builds the library, builds the demo, and deploys Demo/dist as the pages root. docs will go in pages-root/docs/ when they exist. single-file.yml : was still referencing Web-Template (the old template name). fixed to point at Demo, output file is now UTAUjsEditor.html. also integrated Updato (my own auto-updater library) into the demo. on load it checks the current build hash against the latest commit on main and shows an update notification if there’s a newer version. the build hash gets injected at build time via __BUILD_HASH__ in the vite config. cleaned up the TODO: removed all the completed checkboxes (they were cluttering the file), added detail to the remaining items. the fixes CI was 0/3 passing. then 1/8 passing. then 2/8. then eventually 8/8. the classic experience. the single-file and updato workflows needed the library built before the demo (workspace dependency). added npm ci at root level and a “Build Library” step before the demo build. also added vite-plugin-singlefile and cross-env for the build:single script. second fix commit added ts-node and unrun as dev deps because the ESM config loading was unhappy without them. three commits to go from red to green. could be worse honestly but whatever"}, {"post_id": 8388, "ts": "2026-06-13T23:00:15Z", "hours": 0.6642, "text": "the prettier commit (and a tiny bugfix) two commits. one has 19 lines of actual code. the other touched every single file in the project. the bugfix the piano roll’s resize handle wasn’t working for already-selected notes. you could resize on first click, but if you clicked a note to select it and THEN tried to drag the right edge, it would move the note instead of resizing. added a resize zone check that fires before the drag-to-move handler when a note is already selected. 19 lines. the formatting pass ran prettier on the entire codebase. every file. the diff is enormous and the actual logic changes are: zero. added .prettierrc (semicolons, double quotes, trailing commas, 140 char width, svelte plugin), .prettierignore , and eslint.config.ts . bumped eslint to 10.5 and typescript-eslint to 8.61. added jiti for ESM config loading. the one real improvement buried in here: replaced the Function type in ufdata.ts with a proper ParseFn type alias. eslint was right to yell at me for using bare Function . everything else is semicolons and line breaks. the codebase has a consistent style now. that’s the whole commit. sometimes you just gotta."}, {"post_id": 8353, "ts": "2026-06-13T21:40:48Z", "hours": 0.5894, "text": "open any vocal synth file ever made so you know how the TODO said “MIDI file import” as one little checkbox? I may have slightly exceeded scope on that one. UTAU.js can now import UST, USTX, VPR, VSQX, VSQ, SVP, MIDI, MusicXML, PPSF, S5P, TSSLN, CCS, DV, and UFData files. that’s UTAU, OpenUTAU, Vocaloid, Synthesizer V, Piapro Studio, CeVIO, DeepVocal, and standard MIDI. basically every vocal synth format that exists. this is thanks to utaformatix-ts by sevenc-nanashi, which is a universal parser for vocal synth project files. it converts everything into a common UfData format. I wrote a 145-line adapter ( ufdata.ts ) that converts UfData into UTAU.js Scores. lazy-loaded so the parser only gets pulled in when you actually import a file. pitch bends this was the hard part. vocal synth files have pitch curves. track-level arrays of tick-value pairs that describe how the pitch deviates from the written note. the importer splits the track-level curve into per-note pitch bends, handling absolute-to-relative conversion, null value filtering, start/end padding, and extrapolation from preceding points. the renderer now reads note.pitchBend and interpolates it per-sample alongside vibrato. the math: f0 = baseF0 * 2^((bendSemitones * 100 + vibratoCents) / 1200) . pitch bends and vibrato stack correctly in cents space. piano roll overhaul the piano roll was hardcoded to 3 octaves (ik bad, but will fix soon) and a fixed width. now it covers the full MIDI range (0-127) with virtual scrolling. wheel scrolls vertically, shift+wheel or trackpad scrolls horizontally. viewport culling so only visible notes and key labels get drawn. auto-scrolls to center on notes when you import a file. also: pitch curves render as yellow lines overlaid on note blocks. you can see the imported pitch data right there on the piano roll. other stuff added await setTimeout(0) in the streaming loop so the UI doesn’t freeze during long scores. the demo has an “Open” button that accepts all 14 supported file extensions. TODO got updated with a lot of checkboxes ticked. Some amount of lines of import tests covering note mapping, tempo conversion, pitch splitting (absolute, relative, null filtering, extrapolation, out-of-range skipping, pitch:false opt-out), and edge cases."}, {"post_id": 8316, "ts": "2026-06-13T20:40:13Z", "hours": 0.7764, "text": "uhhh tests (that was fast huh) the commit message says it all. 961 lines added. 10 test files. plus a WAV encoder, a bunch of bug fixes, and the entire player got an upgrade. in one sitting. tests jest config, ts-jest, ESM mode. ten test files covering everything that exists: envelope.test.ts : attack/release shape, mixBuffers offset and gain, edge cases filter.test.ts : FormantFilter resonator, FormantCascade noise.test.ts : NoiseSource output oscillator.test.ts : LFGlottalSource waveform shape wav.test.ts : encodeWav RIFF header english.test.ts : lexicon hits and fallback japanese.test.ts : hiragana, romaji, special cases renderer.test.ts : renderNote output shape, sample count, non-zero output stream.test.ts : streamScore chunk boundaries, mixChunks voices/index.test.ts : buildVoice, scaleVoice parameter ranges writing tests found bugs. writing tests always finds bugs. the bugs tests found OW was missing. the English phoneme table had every ARPABET vowel except OW. “HELLO” ends with OW. the demo word was literally broken and I didn’t notice because the fallback produced silence instead of crashing. added it. F1=470 F2=1000 F3=2400. anti-resonator formula was wrong. the pole radius was hardcoded to 0.99 with a random 0.95 frequency offset. now it derives the pole from bw * 1.5 like a real anti-resonator should. nasals sound less terrible. jitter was per-sample. it was recalculating a random f0 every single sample, which made the pitch wobble chaotically instead of naturally. moved it to recalculate once per glottal cycle. much more realistic. noise fadeout could go negative. phDur - segPos - 1 can be negative at the boundary. clamped to 0. gain normalization could divide by zero. clamped overallPeak to 1e-6 and gain to max 100. buildVoice spread order was wrong. ...overrides was before the sub-objects, so the glottal/formant/vibrato defaults always overwrote user values. flipped the order. WAV encoder (i’ve written manual WAV encoders before, I just copy-pasted that, it’s not that bad tbh) 62 lines. encodeWav() takes AudioChunks and writes a proper RIFF/WAVE file. 16-bit PCM, little-endian, handles mono and stereo. float-to-int16 conversion with clamping. exported from the barrel file. player upgrades setVolume() API. volume parameter on play() . progress events actually fire now (the type existed but was never emitted). stop does a 50ms gain ramp to zero before closing the AudioContext so it doesn’t click. scheduling uses Math.max(ctx.currentTime + 0.01, ...) to prevent scheduling in the past if rendering falls behind. stream tempo handling streamScore() was using a single currentTempo for the whole note. now it has tempoAt() for point lookups and noteSampleDuration() that integrates across tempo changes within a note. a note that spans a tempo change gets the right duration now. also added a cascade reset between phonemes in the renderer (was carrying filter state across phoneme boundaries causing ringing), added a missing phoneme console.warn so you can actually debug G2P failures, and fixed the Japanese romaji parser to skip spaces instead of treating them as unknown consonants. the TODO list is getting shorter. slowly but surely. …and i forgot to update it oops"}, {"post_id": 8294, "ts": "2026-06-13T19:45:25Z", "hours": 1.8264, "text": "it makes sound now okay so. I may have blacked out and written an entire synthesizer in one commit. 210 lines of renderer, 65 lines of streaming, a full Svelte demo app with a piano roll, and a dozen DSP fixes. this is flo-era hyperfocus energy except I can HEAR it this time. (well I could hear flo, it’s a audio format, so like, duh, but yk what i mean loll) the renderer renderNote() takes a Note + VoiceConfig + LanguageModule and produces actual audio. per-sample processing: vibrato with attack ramp, 30ms smoothstep formant interpolation between phonemes, glottal pulse through the cascade, shaped noise for consonants with per-segment fade in/out, smoothstep attack/release envelope, peak normalization. consonants get their default duration, vowels split the remaining time. if consonants would eat more than 40% of the note they get compressed. every filter, oscillator, and cascade got refactored from batch to per-sample. slower but I can morph formants sample-by-sample for smooth transitions. DSP fixes (there were several) the LF oscillator’s open phase was inverted. added a DC blocking filter because the pulse was making everything drift. added jitter for natural-sounding pitch variation. the resonator gain formula was wrong ( b0 = 1 - r*r should be b0 = 1 - B - C ). FormantCascade now runs anti-resonators before resonators (correct order for nasals). added setPassthrough() for unused filter slots. female formant scale went from 0.88 to 1.15. I had it backwards. scaling down shrinks the tract and sounds childlike. scaling up is what you want. streaming + demo streamScore() is an async generator. walks the score note by note, handles tempo changes, yields chunks. player starts playing before the score finishes rendering. the demo is a full Svelte 5 app. canvas piano roll (click to create, drag to move/resize, delete to remove), voice panel with easy sliders + expandable advanced params, transport bar, language switcher. Japanese demo says “ka na ta shi i ne”. English says “HELLO WORLD THIS IS A TEST”. press play and it synthesizes through Web Audio in real time. from math. everything else Japanese plosives got formant data (were noise-only). added “l” as an r-alias for loanwords. barrel file exports the full public API. wrote a comprehensive TODO.md because the list of things that aren’t done is very long. it sounds terrible. robotic and buzzy and the consonants are more like clicks. but it’s SOUND. generated from MATH. in a BROWSER. Peterson and Barney would be proud. (or horrified.)"}, {"post_id": 7973, "ts": "2026-06-13T09:17:37Z", "hours": 0.3825, "text": "voices, a player, and oh look a demo app three things in one commit because I couldn’t decide which to work on so I did all of them. voice presets two built-in voices: Male and Female. the male voice has a lower open quotient (0.45, vocal folds close faster), lower aspiration (0.08, less breathy), and formant scale of 1.0. the female voice has higher open quotient (0.55), more aspiration (0.12), and formant scale of 0.88 which shifts all the formant frequencies up to simulate a shorter vocal tract. vibrato differs too. male is 5.5 Hz rate with 30 cents depth. female is 6.0 Hz with 40 cents. these are rough averages from the singing voice literature. real vibrato varies wildly between singers but you have to start somewhere. buildVoice() lets you construct a custom voice with partial overrides. scaleVoice() is the fun one. it takes a voice config and five intuitive sliders: gender (-1 to +1), breathiness, tension, brightness, vibratoAmount. the gender parameter interpolates formant scale between 0.88 and 1.0. breathiness maps to open quotient and aspiration. tension maps to glottal tenseness. brightness maps to formant bandwidth (narrower bandwidths = brighter, more resonant sound). vibrato amount scales depth. the idea is you start with a preset and then tweak it with human-readable parameters instead of raw acoustic values. “make this voice breathier” is easier to think about than “increase open quotient to 0.55 and aspiration to 0.12”. registry pattern same as languages. getVoice(\"male\") , registerVoice(\"my-voice\", config) . stream player this is the thing that actually makes sound come out of your speakers. StreamPlayer takes an AsyncGenerator<AudioChunk> and schedules the audio through the Web Audio API. each chunk gets turned into an AudioBuffer, wired through a GainNode (fixed at 0.8 for now), and scheduled at its exact start time using ctx.currentTime + chunk.startSample / sampleRate . the generator can yield chunks as fast or as slow as it wants. the player just keeps scheduling them. async generator as the interface is the key design decision. the synthesizer can stream audio chunk by chunk as it renders each phoneme, and the player starts playing before the whole score is done. no waiting for the full render. just start. pause suspends the AudioContext. resume resumes it. stop aborts the generator via AbortController and closes the context. event system emits stateChange, progress, done, error. on() returns an unsubscribe function. clean lifecycle. the demo app svelte 5 + vite. the Demo/ workspace finally has code in it. just scaffolding for now, no UI components yet. but the package.json is wired up: utaujs as a workspace dependency so it pulls from the Build/ output, @sveltejs /vite-plugin-svelte, vite 8. I picked svelte because it’s the lightest framework that still gives me reactivity and components without a virtual DOM. for a music app where audio timing matters, I don’t want React’s reconciliation cycle anywhere near my render loop. svelte compiles to vanilla JS. no runtime overhead. (also I just like svelte.) the engine is almost wirable end to end now. language module produces phonemes, voice config provides the acoustic parameters, the DSP layer renders audio chunks, the stream player schedules them through Web Audio. the only missing piece is the actual synthesizer that takes a Score + Voice + Language and yields AudioChunks. that’s next. getting close to hearing actual sound."}, {"post_id": 7955, "ts": "2026-06-13T08:49:48Z", "hours": 0.6944, "text": "two languages walk into a synthesizer… so I said “next step is a basic ARPABET phoneme dictionary” and then I just… did both English AND Japanese in one sitting. because apparently my brain doesn’t know how to do things incrementally. english every phoneme in ARPABET, with real formant data from real papers. I’m going to be responsible and cite my sources (gasp): vowel formants are Peterson & Barney 1952 male speaker means. the classic dataset. 76 speakers, 10 monophthongal vowels. /IY/ is F1=270 F2=2290 F3=3010. /AA/ is F1=730 F2=1090 F3=2440. these numbers are from a 74-year-old paper and they’re still the standard reference. wild. consonant noise centres follow Jongman et al. 2000 for fricatives (sibilant spectral peaks), Stevens 1998 for plosive burst loci, and Fujimura 1962 for nasal formants/antiformants. I feel like an actual phonetician typing these citations. I am not an actual phonetician. the full set: 10 vowels, 4 diphthongs, 6 plosives, 9 fricatives, 3 nasals, 4 approximants, 2 affricates. every consonant has its noise shaping config. every nasal has antiformant data. every vowel has 5 formant targets (F1 through F5). there’s also a grapheme-to-phoneme dictionary with like 100 common English words. “HELLO” -> [“HH”, “EH”, “L”, “OW”]. “BEAUTIFUL” -> [“B”, “Y”, “UW”, “T”, “IH”, “F”, “UH”, “L”]. it’s a smol subset but it covers the words you’d actually want a singing synthesizer to say. sun, moon, star, dream, love, forever, together. very anime opening core vocabulary. I should expand it eventually but it’s fine for testing. the fallback for unknown words is fun: first it checks if the input is already ARPABET symbols separated by spaces/underscores. if not, it falls back to a dead simple single-character mapping where each letter gets one phoneme. it’s terrible but it won’t crash. japanese honestly? mapping Japanese to phonemes is SO much easier than English. kana are basically a syllabary. each character maps to exactly one consonant-vowel pair (or just a vowel). no ambiguity. no “through” being pronounced nothing like it looks. English is a disaster and Japanese is a joy. (I still don’t know Japanese. sighhh. but the internet is very helpful.) vowel formants are from Yazawa & Kondo 2019, specifically the short-vowel midpoint averages for male speakers from their ICPhS paper. that Japanese vowel formant displacement paper I was reading earlier today. /a/ F1=687 F2=1283, /i/ F1=301 F2=2154, etc. F3 values come from Kitamura et al. 2009, the ATR MRI vocal tract study. different paper, different research group, but the F3 data fills a gap that Yazawa didn’t cover in detail. the lyric parser handles: raw romaji (“ka”, “shi”, “tsu”), hiragana (あ, き, しゃ), and compound kana (きゃ, しゅ, ちょ). hiragana gets converted to romaji via a lookup table, then romaji gets split into consonant-vowel pairs via romajiToPhonemes() . special cases for し -> “shi”, ち -> “chi”, つ -> “tsu”, ふ -> “fu”. word-final ん becomes the moraic nasal N. geminate consonants (double letters) get handled. it’s not perfect but it covers standard Hepburn romanisation. the registry a Map of language IDs to modules. getLanguage(\"en\") or getLanguage(\"jp\") . registerLanguage() for future additions. both “jp” and “ja” point to Japanese because people use both and I’m not going to pick a side. the LanguageModule interface from types.ts is earning its keep already. both languages implement the same lyricToPhonemes() contract. the synthesizer won’t know or care which language is active. plug in English, plug in Japanese, plug in anything. the architecture handles it. I love this."}, {"post_id": 7946, "ts": "2026-06-13T08:00:27Z", "hours": 0.9586, "text": "new project. yes, another one. (penumbra is on pause btw) so uh. hi. I’m starting a new thing. penumbra is on pause. not abandoned, just… paused. the backend is solid, the architecture is clean, and the UI needs to catch up but I need to do the HTML mockup thing first and I’m not in the headspace for that right now. it’ll come back. I promise. in the meantime: UTAU.js. the idea: a browser-based singing synthesizer inspired by UTAU. but here’s the thing. it’s not sample-based like the original. it’s parametric. formant synthesis. generate the entire voice from math. no voicebank files, no platform dependencies, no 200MB sample libraries. just DSP and physics and the human vocal tract modeled in TypeScript. why TypeScript and not Rust this time? because. I scaffolded the repo from my Web-Template and then immediately ripped out everything that made it a web template. I replaced it with a proper library setup: tsdown for bundling (ESM + CJS + type declarations), npm workspaces (Build for the engine, Demo for a future demo app), TypeScript strict mode. renamed to utaujs. added jest, eslint, prettier, typescript-eslint. the foundation is there. also brought in @nisoku /satori as a dependency because I’ll want observability later and I might as well wire it up now. And like, it’s such a great observatory library like smh my head, why wouldn’t I use it the research rabbit hole (aka I read way too many papers) okay so today was one of those days where hackatime probably says like less than a hour but reality says 4-5. I spent most of half of today reading. papers. reference tables. phonetics Wikipedia articles. I have 20 browser tabs open right now (thank goodness for tab groups) and they’re all about formants and audio and human vocal behaviors. here’s the reading list: Peterson & Barney 1952 (a classic formant frequency dataset, 76 speakers, 10 American English vowels, F0 through F3) the Stanford CCRMA formant table (Peterson’s data averaged by gender and age group, the numbers everyone cites) ARPABET (the phonetic notation system CMU uses, 39 phonemes for General American English) CMU Pronouncing Dictionary (134,000+ words mapped to ARPABET, sheesh) a paper on Japanese vowel formant displacement (short vs long vowels have different formant targets, which matters a lot) Kitamura et al on vocal tract transfer functions from MRI-derived solid models (they literally 3D printed vocal tracts and measured the acoustic response) the MRI one is wild. they took volumetric MRI scans of people saying Japanese vowels, built physical 3D models of their vocal tracts via stereolithography, and then measured the frequency response by pumping sound through the models. but I also wrote code I remember a LOT of this from working on flo. types.ts is the big one. 91 lines of the full type stuff oscillator.ts is the glottal source. an LF (Liljencrants-Fant) model. this is the buzzing sound your vocal folds make before your throat and mouth shape it into speech. lots of math that i don’t want to talk about. filter.ts is the formant cascade. second-order IIR resonator (biquad) that can operate as either a resonator or anti-resonator. noise.ts is simple. white noise generator plus a function to shape it through formant resonators. this is how you get consonants like “s” and “sh”. they’re just filtered noise. envelope.ts is attack/release shaping with smoothstep curves plus a buffer mixing utility. Fun!"}]...
|
Title: UTAU.js by @NellowTCS | Stardance
Devlogs: Title: UTAU.js by @NellowTCS | Stardance
Devlogs:
new project. yes, another one. (penumbra is on pause btw) so uh. hi. I’m starting a new thing. penumbra is on pause. not abandoned, just… paused. the backend is solid, the architecture is clean, and the UI needs to catch up but I need to do the HTML mockup thing first and I’m not in the headspace for that right now. it’ll come back. I promise. in the meantime: UTAU.js. the idea: a browser-based singing synthesizer inspired by UTAU. but here’s the thing. it’s not sample-based like the original. it’s parametric. formant synthesis. generate the entire voice from math. no voicebank files, no platform dependencies, no 200MB sample libraries. just DSP and physics and the human vocal tract modeled in TypeScript. why TypeScript and not Rust this time? because. I scaffolded the repo from my Web-Template and then immediately ripped out everything that made it a web template. I replaced it with a proper library setup: tsdown for bundling (ESM + CJS + type declarations), npm workspaces (Build for the engine, Demo for a future demo app), TypeScript strict mode. renamed to utaujs. added jest, eslint, prettier, typescript-eslint. the foundation is there. also brought in @nisoku /satori as a dependency because I’ll want observability later and I might as well wire it up now. And like, it’s such a great observatory library like smh my head, why wouldn’t I use it the research rabbit hole (aka I read way too many papers) okay so today was one of those days where hackatime probably says like less than a hour but reality says 4-5. I spent most of half of today reading. papers. reference tables. phonetics Wikipedia articles. I have 20 browser tabs open right now (thank goodness for tab groups) and they’re all about formants and audio and human vocal behaviors. here’s the reading list: Peterson & Barney 1952 (a classic formant frequency dataset, 76 speakers, 10 American English vowels, F0 through F3) the Stanford CCRMA formant table (Peterson’s data averaged by gender and age group, the numbers everyone cites) ARPABET (the phonetic notation system CMU uses, 39 phonemes for General American English) CMU Pronouncing Dictionary (134,000+ words mapped to ARPABET, sheesh) a paper on Japanese vowel formant displacement (short vs long vowels have different formant targets, which matters a lot) Kitamura et al on vocal tract transfer functions from MRI-derived solid models (they literally 3D printed vocal tracts and measured the acoustic response) the MRI one is wild. they took volumetric MRI scans of people saying Japanese vowels, built physical 3D models of their vocal tracts via stereolithography, and then measured the frequency response by pumping sound through the models. but I also wrote code I remember a LOT of this from working on flo. types.ts is the big one. 91 lines of the full type stuff oscillator.ts is the glottal source. an LF (Liljencrants-Fant) model. this is the buzzing sound your vocal folds make before your throat and mouth shape it into speech. lots of math that i don’t want to talk about. filter.ts is the formant cascade. second-order IIR resonator (biquad) that can operate as either a resonator or anti-resonator. noise.ts is simple. white noise generator plus a function to shape it through formant resonators. this is how you get consonants like “s” and “sh”. they’re just filtered noise. envelope.ts is attack/release shaping with smoothstep curves plus a buffer mixing utility. Fun!
two languages walk into a synthesizer… so I said “next step is a basic ARPABET phoneme dictionary” and then I just… did both English AND Japanese in one sitting. because apparently my brain doesn’t know how to do things incrementally. english every phoneme in ARPABET, with real formant data from real papers. I’m going to be responsible and cite my sources (gasp): vowel formants are Peterson & Barney 1952 male speaker means. the classic dataset. 76 speakers, 10 monophthongal vowels. /IY/ is F1=270 F2=2290 F3=3010. /AA/ is F1=730 F2=1090 F3=2440. these numbers are from a 74-year-old paper and they’re still the standard reference. wild. consonant noise centres follow Jongman et al. 2000 for fricatives (sibilant spectral peaks), Stevens 1998 for plosive burst loci, and Fujimura 1962 for nasal formants/antiformants. I feel like an actual phonetician typing these citations. I am not an actual phonetician. the full set: 10 vowels, 4 diphthongs, 6 plosives, 9 fricatives, 3 nasals, 4 approximants, 2 affricates. every consonant has its noise shaping config. every nasal has antiformant data. every vowel has 5 formant targets (F1 through F5). there’s also a grapheme-to-phoneme dictionary with like 100 common English words. “HELLO” -> [“HH”, “EH”, “L”, “OW”]. “BEAUTIFUL” -> [“B”, “Y”, “UW”, “T”, “IH”, “F”, “UH”, “L”]. it’s a smol subset but it covers the words you’d actually want a singing synthesizer to say. sun, moon, star, dream, love, forever, together. very anime opening core vocabulary. I should expand it eventually but it’s fine for testing. the fallback for unknown words is fun: first it checks if the input is already ARPABET symbols separated by spaces/underscores. if not, it falls back to a dead simple single-character mapping where each letter gets one phoneme. it’s terrible but it won’t crash. japanese honestly? mapping Japanese to phonemes is SO much easier than English. kana are basically a syllabary. each character maps to exactly one consonant-vowel pair (or just a vowel). no ambiguity. no “through” being pronounced nothing like it looks. English is a disaster and Japanese is a joy. (I still don’t know Japanese. sighhh. but the internet is very helpful.) vowel formants are from Yazawa & Kondo 2019, specifically the short-vowel midpoint averages for male speakers from their ICPhS paper. that Japanese vowel formant displacement paper I was reading earlier today. /a/ F1=687 F2=1283, /i/ F1=301 F2=2154, etc. F3 values come from Kitamura et al. 2009, the ATR MRI vocal tract study. different paper, different research group, but the F3 data fills a gap that Yazawa didn’t cover in detail. the lyric parser handles: raw romaji (“ka”, “shi”, “tsu”), hiragana (あ, き, しゃ), and compound kana (きゃ, しゅ, ちょ). hiragana gets converted to romaji via a lookup table, then romaji gets split into consonant-vowel pairs via romajiToPhonemes() . special cases for し -> “shi”, ち -> “chi”, つ -> “tsu”, ふ -> “fu”. word-final ん becomes the moraic nasal N. geminate consonants (double letters) get handled. it’s not perfect but it covers standard Hepburn romanisation. the registry a Map of language IDs to modules. getLanguage("en") or getLanguage("jp") . registerLanguage() for future additions. both “jp” and “ja” point to Japanese because people use both and I’m not going to pick a side. the LanguageModule interface from types.ts is earning its keep already. both languages implement the same lyricToPhonemes() contract. the synthesizer won’t know or care which language is active. plug in English, plug in Japanese, plug in anything. the architecture handles it. I love this.
voices, a player, and oh look a demo app three things in one commit because I couldn’t decide which to work on so I did all of them. voice presets two built-in voices: Male and Female. the male voice has a lower open quotient (0.45, vocal folds close faster), lower aspiration (0.08, less breathy), and formant scale of 1.0. the female voice has higher open quotient (0.55), more aspiration (0.12), and formant scale of 0.88 which shifts all the formant frequencies up to simulate a shorter vocal tract. vibrato differs too. male is 5.5 Hz rate with 30 cents depth. female is 6.0 Hz with 40 cents. these are rough averages from the singing voice literature. real vibrato varies wildly between singers but you have to start somewhere. buildVoice() lets you construct a custom voice with partial overrides. scaleVoice() is the fun one. it takes a voice config and five intuitive sliders: gender (-1 to +1), breathiness, tension, brightness, vibratoAmount. the gender parameter interpolates formant scale between 0.88 and 1.0. breathiness maps to open quotient and aspiration. tension maps to glottal tenseness. brightness maps to formant bandwidth (narrower bandwidths = brighter, more resonant sound). vibrato amount scales depth. the idea is you start with a preset and then tweak it with human-readable parameters instead of raw acoustic values. “make this voice breathier” is easier to think about than “increase open quotient to 0.55 and aspiration to 0.12”. registry pattern same as languages. getVoice("male") , registerVoice("my-voice", config) . stream player this is the thing that actually makes sound come out of your speakers. StreamPlayer takes an AsyncGenerator<AudioChunk> and schedules the audio through the Web Audio API. each chunk gets turned into an AudioBuffer, wired through a GainNode (fixed at 0.8 for now), and scheduled at its exact start time using ctx.currentTime + chunk.startSample / sampleRate . the generator can yield chunks as fast or as slow as it wants. the player just keeps scheduling them. async generator as the interface is the key design decision. the synthesizer can stream audio chunk by chunk as it renders each phoneme, and the player starts playing before the whole score is done. no waiting for the full render. just start. pause suspends the AudioContext. resume resumes it. stop aborts the generator via AbortController and closes the context. event system emits stateChange, progress, done, error. on() returns an unsubscribe function. clean lifecycle. the demo app svelte 5 + vite. the Demo/ workspace finally has code in it. just scaffolding for now, no UI components yet. but the package.json is wired up: utaujs as a workspace dependency so it pulls from the Build/ output, @sveltejs /vite-plugin-svelte, vite 8. I picked svelte because it’s the lightest framework that still gives me reactivity and components without a virtual DOM. for a music app where audio timing matters, I don’t want React’s reconciliation cycle anywhere near my render loop. svelte compiles to vanilla JS. no runtime overhead. (also I just like svelte.) the engine is almost wirable end to end now. language module produces phonemes, voice config provides the acoustic parameters, the DSP layer renders audio chunks, the stream player schedules them through Web Audio. the only missing piece is the actual synthesizer that takes a Score + Voice + Language and yields AudioChunks. that’s next. getting close to hearing actual sound.
it makes sound now okay so. I may have blacked out and written an entire synthesizer in one commit. 210 lines of renderer, 65 lines of streaming, a full Svelte demo app with a piano roll, and a dozen DSP fixes. this is flo-era hyperfocus energy except I can HEAR it this time. (well I could hear flo, it’s a audio format, so like, duh, but yk what i mean loll) the renderer renderNote() takes a Note + VoiceConfig + LanguageModule and produces actual audio. per-sample processing: vibrato with attack ramp, 30ms smoothstep formant interpolation between phonemes, glottal pulse through the cascade, shaped noise for consonants with per-segment fade in/out, smoothstep attack/release envelope, peak normalization. consonants get their default duration, vowels split the remaining time. if consonants would eat more than 40% of the note they get compressed. every filter, oscillator, and cascade got refactored from batch to per-sample. slower but I can morph formants sample-by-sample for smooth transitions. DSP fixes (there were several) the LF oscillator’s open phase was inverted. added a DC blocking filter because the pulse was making everything drift. added jitter for natural-sounding pitch variation. the resonator gain formula was wrong ( b0 = 1 - r*r should be b0 = 1 - B - C ). FormantCascade now runs anti-resonators before resonators (correct order for nasals). added setPassthrough() for unused filter slots. female formant scale went from 0.88 to 1.15. I had it backwards. scaling down shrinks the tract and sounds childlike. scaling up is what you want. streaming + demo streamScore() is an async generator. walks the score note by note, handles tempo changes, yields chunks. player starts playing before the score finishes rendering. the demo is a full Svelte 5 app. canvas piano roll (click to create, drag to move/resize, delete to remove), voice panel with easy sliders + expandable advanced params, transport bar, language switcher. Japanese demo says “ka na ta shi i ne”. English says “HELLO WORLD THIS IS A TEST”. press play and it synthesizes through Web Audio in real time. from math. everything else Japanese plosives got formant data (were noise-only). added “l” as an r-alias for loanwords. barrel file exports the full public API. wrote a comprehensive TODO.md because the list of things that aren’t done is very long. it sounds terrible. robotic and buzzy and the consonants are more like clicks. but it’s SOUND. generated from MATH. in a BROWSER. Peterson and Barney would be proud. (or horrified.)
uhhh tests (that was fast huh) the commit message says it all. 961 lines added. 10 test files. plus a WAV encoder, a bunch of bug fixes, and the entire player got an upgrade. in one sitting. tests jest config, ts-jest, ESM mode. ten test files covering everything that exists: envelope.test.ts : attack/release shape, mixBuffers offset and gain, edge cases filter.test.ts : FormantFilter resonator, FormantCascade noise.test.ts : NoiseSource output oscillator.test.ts : LFGlottalSource waveform shape wav.test.ts : encodeWav RIFF header english.test.ts : lexicon hits and fallback japanese.test.ts : hiragana, romaji, special cases renderer.test.ts : renderNote output shape, sample count, non-zero output stream.test.ts : streamScore chunk boundaries, mixChunks voices/index.test.ts : buildVoice, scaleVoice parameter ranges writing tests found bugs. writing tests always finds bugs. the bugs tests found OW was missing. the English phoneme table had every ARPABET vowel except OW. “HELLO” ends with OW. the demo word was literally broken and I didn’t notice because the fallback produced silence instead of crashing. added it. F1=470 F2=1000 F3=2400. anti-resonator formula was wrong. the pole radius was hardcoded to 0.99 with a random 0.95 frequency offset. now it derives the pole from bw * 1.5 like a real anti-resonator should. nasals sound less terrible. jitter was per-sample. it was recalculating a random f0 every single sample, which made the pitch wobble chaotically instead of naturally. moved it to recalculate once per glottal cycle. much more realistic. noise fadeout could go negative. phDur - segPos - 1 can be negative at the boundary. clamped to 0. gain normalization could divide by zero. clamped overallPeak to 1e-6 and gain to max 100. buildVoice spread order was wrong. ...overrides was before the sub-objects, so the glottal/formant/vibrato defaults always overwrote user values. flipped the order. WAV encoder (i’ve written manual WAV encoders before, I just copy-pasted that, it’s not that bad tbh) 62 lines. encodeWav() takes AudioChunks and writes a proper RIFF/WAVE file. 16-bit PCM, little-endian, handles mono and stereo. float-to-int16 conversion with clamping. exported from the barrel file. player upgrades setVolume() API. volume parameter on play() . progress events actually fire now (the type existed but was never emitted). stop does a 50ms gain ramp to zero before closing the AudioContext so it doesn’t click. scheduling uses Math.max(ctx.currentTime + 0.01, ...) to prevent scheduling in the past if rendering falls behind. stream tempo handling streamScore() was using a single currentTempo for the whole note. now it has tempoAt() for point lookups and noteSampleDuration() that integrates across tempo changes within a note. a note that spans a tempo change gets the right duration now. also added a cascade reset between phonemes in the renderer (was carrying filter state across phoneme boundaries causing ringing), added a missing phoneme console.warn so you can actually debug G2P failures, and fixed the Japanese romaji parser to skip spaces instead of treating them as unknown consonants. the TODO list is getting shorter. slowly but surely. …and i forgot to update it oops
open any vocal synth file ever made so you know how the TODO said “MIDI file import” as one little checkbox? I may have slightly exceeded scope on that one. UTAU.js can now import UST, USTX, VPR, VSQX, VSQ, SVP, MIDI, MusicXML, PPSF, S5P, TSSLN, CCS, DV, and UFData files. that’s UTAU, OpenUTAU, Vocaloid, Synthesizer V, Piapro Studio, CeVIO, DeepVocal, and standard MIDI. basically every vocal synth format that exists. this is thanks to utaformatix-ts by sevenc-nanashi, which is a universal parser for vocal synth project files. it converts everything into a common UfData format. I wrote a 145-line adapter ( ufdata.ts ) that converts UfData into UTAU.js Scores. lazy-loaded so the parser only gets pulled in when you actually import a file. pitch bends this was the hard part. vocal synth files have pitch curves. track-level arrays of tick-value pairs that describe how the pitch deviates from the written note. the importer splits the track-level curve into per-note pitch bends, handling absolute-to-relative conversion, null value filtering, start/end padding, and extrapolation from preceding points. the renderer now reads note.pitchBend and interpolates it per-sample alongside vibrato. the math: f0 = baseF0 * 2^((bendSemitones * 100 + vibratoCents) / 1200) . pitch bends and vibrato stack correctly in cents space. piano roll overhaul the piano roll was hardcoded to 3 octaves (ik bad, but will fix soon) and a fixed width. now it covers the full MIDI range (0-127) with virtual scrolling. wheel scrolls vertically, shift+wheel or trackpad scrolls horizontally. viewport culling so only visible notes and key labels get drawn. auto-scrolls to center on notes when you import a file. also: pitch curves render as yellow lines overlaid on note blocks. you can see the imported pitch data right there on the piano roll. other stuff added await setTimeout(0) in the streaming loop so the UI doesn’t freeze during long scores. the demo has an “Open” button that accepts all 14 supported file extensions. TODO got updated with a lot of checkboxes ticked. Some amount of lines of import tests covering note mapping, tempo conversion, pitch splitting (absolute, relative, null filtering, extrapolation, out-of-range skipping, pitch:false opt-out), and edge cases.
the prettier commit (and a tiny bugfix) two commits. one has 19 lines of actual code. the other touched every single file in the project. the bugfix the piano roll’s resize handle wasn’t working for already-selected notes. you could resize on first click, but if you clicked a note to select it and THEN tried to drag the right edge, it would move the note instead of resizing. added a resize zone check that fires before the drag-to-move handler when a note is already selected. 19 lines. the formatting pass ran prettier on the entire codebase. every file. the diff is enormous and the actual logic changes are: zero. added .prettierrc (semicolons, double quotes, trailing commas, 140 char width, svelte plugin), .prettierignore , and eslint.config.ts . bumped eslint to 10.5 and typescript-eslint to 8.61. added jiti for ESM config loading. the one real improvement buried in here: replaced the Function type in ufdata.ts with a proper ParseFn type alias. eslint was right to yell at me for using bare Function . everything else is semicolons and line breaks. the codebase has a consistent style now. that’s the whole commit. sometimes you just gotta.
CI arc (three commits, one story) three commits that are really one story: getting CI from “permanently red” to green. the setup “wrote” (aka copied and modified) six GitHub Actions workflows in one go: ci.yml : lint + test + build on push/PR. matrix tests Node 20 and 22. builds the library first, then typechecks the demo. (docs build is commented out because docs don’t exist yet. they will. eventually.) test.yml : dedicated test runner. same Node 20/22 matrix. runs jest in the Build workspace. release-npm.yml : publishes to npm on GitHub release. strips private/scripts/devDependencies from package.json, copies README and LICENSE into Build/, publishes with --provenance . has a workflow_dispatch with a dry-run option so I can test without actually publishing. security-audit.yml : runs npm audit --audit-level=high on all three workspaces (root, Build, Demo). daily cron plus on push when package files change. static.yml : reworked the GitHub Pages deployment. it was pointed at Build/dist (wrong, that’s the library output). now it builds the library, builds the demo, and deploys Demo/dist as the pages root. docs will go in pages-root/docs/ when they exist. single-file.yml : was still referencing Web-Template (the old template name). fixed to point at Demo, output file is now UTAUjsEditor.html. also integrated Updato (my own auto-updater library) into the demo. on load it checks the current build hash against the latest commit on main and shows an update notification if there’s a newer version. the build hash gets injected at build time via __BUILD_HASH__ in the vite config. cleaned up the TODO: removed all the completed checkboxes (they were cluttering the file), added detail to the remaining items. the fixes CI was 0/3 passing. then 1/8 passing. then 2/8. then eventually 8/8. the classic experience. the single-file and updato workflows needed the library built before the demo (workspace dependency). added npm ci at root level and a “Build Library” step before the demo build. also added vite-plugin-singlefile and cross-env for the build:single script. second fix commit added ts-node and unrun as dev deps because the ESM config loading was unhappy without them. three commits to go from red to green. could be worse honestly but whatever
making it sound less terrible (two commits, one mission) these two commits are about one thing: the output was robotic and buzzy and I was tired of it. every change here is about making the synthesizer sound more like a voice and less like a modem. the renderer got smarter cross-note co-articulation. renderNote() now returns { chunk, finalFormants } . the stream passes the previous note’s final formants into the next note’s renderer, and the first phoneme interpolates from those formants instead of jumping cold. gaps between notes reset the chain. notes that follow each other seamlessly now blend their formants across the boundary. per-phoneme envelopes. the old global 5ms attack / 10ms release is gone. replaced with getPhonemeEnvelopeSamples() which gives each phoneme type its own envelope: plosives get 2ms attack / 15ms decay (sharp burst), consonants and vowels get 5ms / 3ms. every phoneme segment fades independently. diphthong formant sweeping. PhonemeDef got an endFormants field. if a diphthong has both formants and endFormants , the renderer sweeps between them over the phoneme duration. AY now actually glides from /aa/ to /ih/. EY glides from /eh/ to /ih/. OW glides from /oh/ to /uh/. they sound like diphthongs now instead of static vowels. vibratoOverride. was defined on Note but never read. now it is. per-note vibrato control works. everything got retuned glottal source. added shimmer (per-cycle amplitude variation driven by jitter, so the volume wobbles slightly like a real voice). aspiration noise is now high-pass filtered (subtract a lowpass from the raw noise) so it’s airy instead of muddy. aspiration gain bumped from 0.1 to 0.15. plosive bursts. noise envelope for plosives changed from symmetric fade to a fast 12ms exponential decay. “pa” now sounds like a burst instead of a pop. formant data for everything. Z, ZH, V, DH, Y, W, HH, JH in English all got formant targets. same for z, h, y, w, j in Japanese. consonants that were previously just noise bursts now resonate through the vocal tract. the difference is huge. vowel bandwidths tightened. defaults went from 80/100/120 to 70/90/130 Hz. narrower bandwidths = sharper resonant peaks = more vowel-like quality. voice presets retuned. male voice: lower open quotient (0.4), lower speed quotient (0.65), higher tenseness (0.65), less aspiration (0.05). sounds less breathy, more chest voice. female: formant scale 1.18. gender slider in scaleVoice now affects speed quotient and has a gender-dependent tenseness base. pitch accent. Japanese got resolveAccents() implementing heiban pattern (low first mora, high rest). the stream groups consecutive notes into phrases, calls resolveAccents, and applies the offsets as constant pitch shifts. it’s basic but it makes Japanese phrases have some melodic contour beyond what the score provides. four TODO items checked off in one go: co-articulation, phoneme envelopes, diphthong sweeping, vibratoOverride. pitch accent too. it still doesn’t sound human. but it’s starting to sound like it’s trying. and that’s a big step from where it was. if you can identify the song in the editor image, good job, you’re cool :D
four commits, and failure I did not intend to do all of this in one sitting. and yet. player batching + buffer pool the player was creating a new AudioBuffer for every single chunk. for a 100-note score that’s 200 buffer allocations (stereo) plus 200 BufferSourceNodes. the garbage collector was not happy. rewrote the scheduling layer. chunks now accumulate into batches (~0.5s each) and get merged into a single AudioBuffer per channel before scheduling. acquireBuffer() checks a pool of previously used buffers by sampleRate and length before allocating new ones. onended releases them back to the pool. pre-buffer threshold bumped to 1.0s for more runway. the result: way fewer Web Audio nodes, way less GC pressure, smoother playback on longer scores. japanese UTAU compatibility imported UST files from real UTAU projects were breaking because Japanese has a bunch of special lyric conventions I didn’t handle: っ (sokuon) : geminate consonant marker. maps to a new sil (silence) phoneme. ※ (pronunciation alias) : text after ※ is the actual pronunciation. あ※ka uses “ka” not “あ”. dot-prefixed lyrics ( .sil , .S ): UTAU rest/silence commands. treated as empty. @ and % : stripped. @ also acts as a note-join marker in the renderer: if present, the initial consonant gets suppressed so the vowel carries through from the previous note. also removed the cascade.reset() between phonemes. filter state now carries through for smoother formant transitions instead of clicking at every phoneme boundary. settings panel new SettingsPanel.svelte . modal overlay, dark theme, closes on Escape or click-outside. currently has one setting: auto-scroll toggle (for a future scroll-to-playhead feature). settings gear icon in the header bar. undo/redo integrated undora for undo/redo history. 50-state capacity. snapshots are saved on mouse-up in the piano roll, delete key, pitch point changes, and lyric/note-number edits (on blur, not on every keystroke). Ctrl/Cmd+Z to undo. Ctrl/Cmd+Shift+Z or Ctrl/Cmd+Y to redo. Undo2 and Redo2 icons in the header bar, disabled when there’s nothing to undo/redo. history clears on language switch and file import. the formatting commit ran prettier again. removed a dead MIN_POOL_SIZE constant and an unused import. cleaned up a few TODO items. the usual. scrollToNotes also got a fix: it was centering on the midpoint of all notes which looked weird when the first note started late. now it clamps to the start of the earliest note so you always see the beginning. also I tried to fix the hissing and static and clicking but to no avail. i tried fixing a LOT of stuff. but. sadly ir only made things worse, so I had to retry. and retry. and retry. and retry. with no luck I’m not sure what the problem is tbh. Let me use Satori to debug some stuff ig
567,211 lines of “code” so about that line count. I added the CMU Pronouncing Dictionary as a git submodule. 134,000+ English words with their ARPABET pronunciations. the cmudict repo is… large. like, genuinely enormous. the diff says 567k lines and it’s almost entirely a text file of words and their phoneme sequences. the actual code changes across these four commits? probably 280 lines. the submodule? 567,131 lines. software engineering. the real G2P Build/data/cmudict is now a submodule pointing to cmusphinx/cmudict. this is THE pronunciation dictionary. the one that every TTS and speech recognition system uses. “BEAUTIFUL” -> “B Y UW1 T AH0 F AH0 L”. “SQUIRREL” -> “S K W ER1 AH0 L”. every word, every pronunciation variant, every stress marker. the 100-word hand-rolled dictionary was cute. this is the real thing. (chunk size warning in vite went from 500 to 13000 because bundling the dictionary is… yeah.) glottal pulse fix the LF glottal source had an audible click on every single cycle. the return phase (after the glottis closes) was a bare exponential decay: -exp(-epsilon * x * period) . the problem: it starts at -1 with non-zero slope, so at the boundary between cycles there’s a discontinuity. click. every. cycle. fix: multiply by sin(pi * x) . the sine term makes the slope match the open phase at t=te (C1 continuity) and reach 0 at t=tc. smooth transition. no click. this is how the actual LF model paper describes it but I’d skipped the sine modulation the first time around because I thought it was just cosmetic. it was not cosmetic. also killed the 0.8/0.2 smoothing filter. it was supposed to prevent clicks but was actually just low-passing the glottal pulse and adding phase distortion. the DC blocker handles drift on its own. coefficient went from 0.995 to 0.99 for faster response. renderer performance formant coefficient updates were happening every sample. that’s setFormants() with trig functions 44,100 times per second. formants don’t actually change that fast. throttled to every 5ms (221 samples at 44.1k). no audible difference, meaningful CPU savings. cascade reset came back at phoneme boundaries. I removed it two commits ago thinking filter state carryover was smoother. it is smoother, but it also causes wideband clicks when the coefficients jump. the reset is the right call. aspiration lowpass aspiration noise on vowels was full-spectrum white noise. real breathy voice has most of its noise energy below 4kHz. added a one-pole lowpass at 4kHz on the aspiration path. sounds warmer and less harsh. also re-added parallel filter resets at phoneme boundaries (matched the cascade reset fix). signal quality tests new test category: signal quality. a long 8-beat note must stay in [-1, 1], be finite throughout, and not be dominated by white noise. the “not white noise” check uses a crude HF proxy: ratio of RMS(sample-to-sample difference) to RMS(signal) in the steady state portion. pure white noise scores ~1.4, a clean tonal signal scores ~0.2. test asserts between 0.05 and 0.8. wrote these tests because the glottal fix could have easily introduced NaN propagation or DC drift and I wanted to catch it automatically.
the documentation commit (part 1) JSDoc everywhere this is the kind of commit where the line count looks impressive and the actual behavior changes are zero. 118 lines became 216 lines in types.ts alone. every interface, every field, every function got documented. some highlights: (don’t ask why i did a double dash. i was being silly and just noticed somehow idk how) openQuotient : “fraction of the glottal cycle the vocal folds are open. Higher values produce a breathier, softer sound (0.2–0.9)” speedQuotient : “ratio of the opening phase to the closing phase. Higher values give a faster closure, increasing brightness (0.3–3.0)” FormantCascade : “cascade of anti-resonators followed by resonators, modelling the vocal-tract transfer function. Anti-resonators (zeros) come first, followed by resonators (poles), matching the source-filter model: S(f) = G(f) * Z(f) / P(f)” LFGlottalSource : “Liljencrants-Fant (LF) glottal pulse source with jitter, shimmer, aspiration noise, and DC blocking. See Fant (1986), Liljencrants (1985)” renderNote : documents the full pipeline: “lyric -> phoneme symbols -> phoneme lookup -> LF glottal pulse -> formant cascade -> noise mix -> amplitude envelope -> normalisation” every DSP class, every language module, every player method, every import/export function. the person reading this code in six months (probably me) will thank me. docs soon Docs next time, I will not be long heheeee TODO cleanup the languages section is fully checked off now. English CMUDict (124,911 words), Japanese EDICT2 (224,808 kanji-to-kana entries), Mandarin with full pinyin decomposition, and phoneme alias maps for cross-language compatibility. all done. all in previous commits I apparently forgot to devlog. oops. reorganized the remaining items: Documentation (JSDoc done, README and docs site still needed) and Future (scroll-to-playhead, seek, loop, Web Worker rendering). the TODO is getting short. that’s a weird feeling for a project that’s six days old.
the docs exist and the README isn’t “Web-Template” anymore so uh. the README has said “Web-Template: My typical web dev starter project” for the entire life of this repo. six days. dozens of commits. a full synthesizer. and the README was still introducing it as a starter template. fixed that. also wrote an entire documentation site. in one sitting. because apparently that’s how I do things now. the README 133 lines replacing the 3-line placeholder. features list, quickstart code (Node.js WAV rendering + browser streaming in like 10 lines each), API overview table with every public export, development instructions, and a Mermaid architecture diagram. the mermaid diagram is a mindmap and it renders SO PRETTY on GitHub. multicolored branches for Core DSP, Languages, Synth, Voices, and IO. each branch fans out into its components. it’s AMAZINGGGGGGGGGGG I spent way too long picking which mermaid diagram type to use and I regret nothing. the docs site ten markdown pages built with DocMD. custom Ruby theme with blue/cyan gradient accents, dark mode support, semantic search via HuggingFace transformers, and a proper navigation structure: getting started : quickstart (5-step guide with code), installation (npm/CDN/source), core concepts (source-filter model explanation with a Mermaid flowchart showing glottal source -> formant cascade -> output) guide : architecture (module layout, data flow diagram, design decisions), renderer (6-step pipeline walkthrough from lyric to audio), languages (built-in language docs + how to register custom languages + cross-language aliasing) API reference : full export table, DSP primitives with code examples, VoiceConfig reference (264 lines of parameter documentation with perceptual effect tables for every single field. “openQuotient 0.3 = pressed tense voice, 0.5 = neutral modal voice, 0.7 = breathy soft voice.” that kind of detail.), import/export format support table the VoiceConfig page alone is probably the most thorough documentation of a formant synthesizer’s parameter space I’ve ever seen in a JS library. I might be biased. I’ve not seen many others. We don’t talk about that. also added UST and TSSLN to the export format list (they were import-only before). fixed the export function to handle generators that return arrays instead of single Uint8Arrays. CI workflows now build and audit the docs workspace too. the TODO is almost empty. just “README: quickstart, API overview, architecture diagram” which is now done. the project has: a synthesizer, three languages, 14+ import formats, 14+ export formats, a demo app with a piano roll, voice presets, undo/redo, settings, file import/export, WAV export, tempo control, buffer management, 160+ tests, JSDoc on everything, a full documentation site, and CI that’s green. six days :O
v0.1.0 Well Stardance told me this: Warning You have 1h 14m logged that you haven't posted a devlog for. If you ship without posting a devlog, this time will be lost! IDK why, but i was planning to devlog my silly anyways so: five commits. all tagged v0.1.0. all fixing things that should have been done before I said “the project is ready.” the classic “wait I forgot” sequence. “Oops” - CI was trying to build docs without running npm ci first. added the install step. three words of actual code change. (this was wrong) “Huh. where did that come from.” - the pages deploy was creating a docs/ directory but the docs copy was still commented out. the demo was deploying fine but docs were going nowhere. fixed the mkdir. “Oooops guess who forgot to uncomment some code” - uncommented the actual docs copy in static.yml. also fixed the docs URL from nisoku.org (wrong domain) to nellowtcs.me/UTAU.js/docs. details. “You never saw that coming did you /sarc” - added all the npm publish metadata to package.json. license, author, repository, homepage, bugs URL, and keywords. the keywords are: utau, synthesis, singing, voice, speech, audio, dsp, lf-glottal, source-filter, formant. so if you npm search for any of those things, maybe you’ll find this. someday. (NPM release failed lol, that’s why I did this) “Badges hehe” - npm version badge, CI status badge, MIT license badge at the top of the README. because a project isn’t real until it has badges. everyone knows that. (/j) five commits to go from “done” to actually done. four of them are CI fixes. like i just said, this is software development. CI is green. docs are deployed. npm metadata is set. badges are shiny. v0.1.0 is tagged. so. that’s UTAU.js. six days. from “idk my voice tho” in an Obsidian doc to a parametric singing synthesizer with three languages, 14+ import/export formats, a Svelte demo app, a docs site, 160+ tests, and a v0.1.0 tag. it sounds mid. like, genuinely. the vowels are recognizable but the consonants are strange and the whole thing has this uncanny valley quality where you can tell it’s trying to be a voice but isn’t quite there. it’s really adorable when it tries :3 but it makes sound. from math. in a browser. and that’s the whole point of v0.1.0. it doesn’t have to be good. it has to exist. it exists now. :)
Ships:
I built UTAU.js, a fully synthetic singing voice engine that runs in the browser using pure DSP instead of samples or AI. It supports English, Japanese, and Mandarin, and it can import almost every major vocal synth format through a unified score system. The demo includes a piano roll editor, real-time streaming playback, voice presets, and a full set of controls for shaping the glottal source and formant model. I am proud of the coarticulation system, the pitch bend renderer, and the fact that the entire engine sings from math alone. You can try the demo, draw notes, type lyrics, and hear it perform immediately!!!!!!!!!!...
|
1792997272.697554
|
1793083672.697554
|
|
54456
|
Handwritten Digit Prediction (MNIST) Webpage by @A Handwritten Digit Prediction (MNIST) Webpage by @Ash-ioL | Stardance...
|
Ash-ioL
|
2
|
22.0
|
349
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T01:04:18Z", "hours": 5.0, "multiplier": 9.71, "payout": 50, "blessing": "neutral", "text": "Important information below! I present to you my Handwritten Digit Predictor! It uses a CNN made with TensorFlow. I’m proud that it’s a polished project I can put on my portfolio :D The biggest challenge was the preprocessing part of the image to make it know what part of the image is a number and what is the background. It can still be a little stubborn though so go easy on it by keeping the number clear and isolated when testing it out. You can either draw it on a piece of paper and upload the picture of the number or you can simply just use the paint app or something like excalidraw.com and upload the screenshot (or drag and drop it). For that reason I didn’t include a canvas feature in the website so I don’t have to reinvent the wheel. It’s important that the background and number have a clear contrast and make sure you have the inversion toggle set properly. (I wouldn’t mess with the threshold scale unless you know what your doing).", "repo": "https://github.com/bhsmlc/mnist-web-demo", "demo": "https://bhsmachinelearning.com/mnist-web-demo"}, {"ship_num": 2, "ts": "2026-09-02T04:52:35Z", "hours": 17.0, "multiplier": 14.7, "payout": 299, "blessing": "neutral", "text": "SHIPWRIGHTS : Please read the instructions below 🙏❤️. And please take the time to try this out fully; I promise you’ll like it :D I made a web app with a frontend and backend that demonstrates an AI model that predicts numbers. The most challenging part was preprocessing the image, there were so many conditions like shadows, blur, center, size, and properties of the input image that needed to be nullified as much as possible. I am proud of everything honestly… not much to say. But I am especially proud of how usable it is. I had a couple friends test it out and they said it was really friendly with all the guides and facts inside the webpage, and it worked like a charm. Shipwrights please read below : Instructions to try: Grab a quick white sheet of paper and with a black marker or pen, write a random digit from 0 to 9. Make sure the digit is relatively thick. Now here’s the tricky part. It’s a bit easier on phone. If your trying it out on a PC, you might have to take a picture on your phone and transfer the image to your PC and upload it in the website. But on phone, you can take a picture directly on the website. When taking a picture, make sure you have distanced the number from the camera so there aren’t any shadows, try to zoom in and keep it centered, focused, and clear. Once you’ve uploaded the image or have taken the picture in the website, It will load for a bit. You might run into an issue here and it’s not in my control. The backend service I’m using, Render, falls asleep every 15 minutes and will take up to 1 minute to wake. So if you’re confused and its loading for over a minute, refresh the page and retake/reupload the image. Sorry for this inconvienience. After it’s done loading, it will show you the prediction and the confidence and as well as a couple of facts on how the project works. Thank you for reading till the end!", "repo": "https://github.com/bhsmlc/mnist-web-demo", "demo": "https://bhsmachinelearning.com/mnist-web-demo"}]...
|
[{"post_id": 61905, "ts": "202 [{"post_id": 61905, "ts": "2026-09-05T02:28:37Z", "hours": 3.1558, "text": "SETTINGS PANEL! When using this project there can be a lot of issues such as bad lighting, no accessible black on white resources, etc. And I was actually inspired to add this when I was walking around school and I saw that most of the numbers in places were white numbers on a dark background. So I thought why not make this program be able to read those? This took me surprising not as long as I thought it would take. I spend a quick 20-30 minutes making a rough draft, then I did the typescript, and in the end I styled it and tested it out and 3 hours is great honestly by my standards. Signing off, Ash-ioL"}, {"post_id": 61070, "ts": "2026-09-03T19:41:27Z", "hours": 2.0389, "text": "Switched to a better deployment My ship had changes requested to it to not deploy the project on services like render that go to sleep and take a minute to wake up. I switched to vercel’s serverless function which doesn’t have that issue. I had to swap out my requirements for packages to more lightweight versions of them in order to make it compatible for this deployment. It took a couple of tinkering. Signing off, Ashwath Arasuraj Sankar"}, {"post_id": 59987, "ts": "2026-09-02T02:18:28Z", "hours": 4.5847, "text": "lots of tuning & mobile support I spend the majority of my time in the preprocessing code trying to get it to work. I tried things like finding contours, adaptive threshold, and other things but I ended up just using thresh otsu and multiplying that threshold value by something near 2 and it ended up working out. After that I was setting up cors allowed origins with the production domain, and I went through all my css and made sure its responsive and supports mobile devices. My biggest challenge was honestly finding time to do this. I’m taking a heavy classload this year and with other commitments I could only squeeze out like an hour of my afternoon on this every day and I worked on it mostly in class and during lunch. But however it bugged me so much (and still does) of how fragile this model is to shadows and such, although I made it less impactful. Signing off, Ash-ioL"}, {"post_id": 58572, "ts": "2026-08-31T01:04:56Z", "hours": 2.5936, "text": "Loading Screen Complete and Results Screen Layout Complete I created a simple loading screen to transition into the final result after the image is uploaded. For the loading screen I just put the image they uploaded and underneath it the name of the image they uploaded. For the animated ray, I used a parent container to remove overflow and a pseudo-element to have the moving ray. The biggest challenge was messing around with the perfect amounts of blur, opacity, ray width, and direction to make it look put together. I also started working on the results UI. It displays the preprocessed image, prediction, confidence score, and some information about the pipeline behind this project. Since I am done with the UI, now I just need to use the fetch api in Javascript to get the response and feed it into the results. And some other polishing. In the backend, I still need to fix the preprocessing bug but I figured it would be easier to debug if I finish the frontend first since I can use it as a tool to take a picture and see what it gives."}, {"post_id": 57899, "ts": "2026-08-30T07:15:12Z", "hours": 1.2014, "text": "Added a Footer and Some Logos So I added a footer in the bottom with social links and in the top I added a logo, along with a big transparent one in the background. I also made the file input button a html file input tag so it utilizes the file inputting and camera use. I’ve really just been adding stuff and not worrying too much about organization. I’m hoping I’ll be done with the project before that impacts me. Signing off, Ash-ioL"}, {"post_id": 57674, "ts": "2026-08-29T22:00:39Z", "hours": 2.1475, "text": "Webpage diagrams and icons added I generated the svgs for the icons and the diagrams with AI. I manually did the colors and layout. Next I am going to make it responsive and compatible with phones. After that, I need to fix an issue with the preprocessing of the image in the backend. Testing it out was kind of a hassle with taking a picture, uploading it to drive, using my laptop to send it to the model. But since I tested it out, I was able to know that something was wrong."}, {"post_id": 54872, "ts": "2026-08-26T02:21:51Z", "hours": 6.4233, "text": "Backend Complete I completed the API part of the project. It allows users send a post request with the image and gives the prediction as the response. I also have it deployed publicly. I spent a huge amount of time in the preprocessing step for the image since there were a lot of steps involved and lots of places for things to go wrong. Started testing with a frontend to make sure it works but I haven’t added any elements to it yet. Signing off, Ash-ioL"}]...
|
Title: Handwritten Digit Prediction (MNIST) Webpag Title: Handwritten Digit Prediction (MNIST) Webpage by @Ash-ioL | Stardance
Devlogs:
Backend Complete I completed the API part of the project. It allows users send a post request with the image and gives the prediction as the response. I also have it deployed publicly. I spent a huge amount of time in the preprocessing step for the image since there were a lot of steps involved and lots of places for things to go wrong. Started testing with a frontend to make sure it works but I haven’t added any elements to it yet. Signing off, Ash-ioL
Webpage diagrams and icons added I generated the svgs for the icons and the diagrams with AI. I manually did the colors and layout. Next I am going to make it responsive and compatible with phones. After that, I need to fix an issue with the preprocessing of the image in the backend. Testing it out was kind of a hassle with taking a picture, uploading it to drive, using my laptop to send it to the model. But since I tested it out, I was able to know that something was wrong.
Added a Footer and Some Logos So I added a footer in the bottom with social links and in the top I added a logo, along with a big transparent one in the background. I also made the file input button a html file input tag so it utilizes the file inputting and camera use. I’ve really just been adding stuff and not worrying too much about organization. I’m hoping I’ll be done with the project before that impacts me. Signing off, Ash-ioL
Loading Screen Complete and Results Screen Layout Complete I created a simple loading screen to transition into the final result after the image is uploaded. For the loading screen I just put the image they uploaded and underneath it the name of the image they uploaded. For the animated ray, I used a parent container to remove overflow and a pseudo-element to have the moving ray. The biggest challenge was messing around with the perfect amounts of blur, opacity, ray width, and direction to make it look put together. I also started working on the results UI. It displays the preprocessed image, prediction, confidence score, and some information about the pipeline behind this project. Since I am done with the UI, now I just need to use the fetch api in Javascript to get the response and feed it into the results. And some other polishing. In the backend, I still need to fix the preprocessing bug but I figured it would be easier to debug if I finish the frontend first since I can use it as a tool to take a picture and see what it gives.
lots of tuning & mobile support I spend the majority of my time in the preprocessing code trying to get it to work. I tried things like finding contours, adaptive threshold, and other things but I ended up just using thresh otsu and multiplying that threshold value by something near 2 and it ended up working out. After that I was setting up cors allowed origins with the production domain, and I went through all my css and made sure its responsive and supports mobile devices. My biggest challenge was honestly finding time to do this. I’m taking a heavy classload this year and with other commitments I could only squeeze out like an hour of my afternoon on this every day and I worked on it mostly in class and during lunch. But however it bugged me so much (and still does) of how fragile this model is to shadows and such, although I made it less impactful. Signing off, Ash-ioL
Switched to a better deployment My ship had changes requested to it to not deploy the project on services like render that go to sleep and take a minute to wake up. I switched to vercel’s serverless function which doesn’t have that issue. I had to swap out my requirements for packages to more lightweight versions of them in order to make it compatible for this deployment. It took a couple of tinkering. Signing off, Ashwath Arasuraj Sankar
SETTINGS PANEL! When using this project there can be a lot of issues such as bad lighting, no accessible black on white resources, etc. And I was actually inspired to add this when I was walking around school and I saw that most of the numbers in places were white numbers on a dark background. So I thought why not make this program be able to read those? This took me surprising not as long as I thought it would take. I spend a quick 20-30 minutes making a rough draft, then I did the typescript, and in the end I styled it and tested it out and 3 hours is great honestly by my standards. Signing off, Ash-ioL
Ships:
SHIPWRIGHTS : Please read the instructions below 🙏❤️. And please take the time to try this out fully; I promise you’ll like it :D I made a web app with a frontend and backend that demonstrates an AI model that predicts numbers. The most challenging part was preprocessing the image, there were so many conditions like shadows, blur, center, size, and properties of the input image that needed to be nullified as much as possible. I am proud of everything honestly… not much to say. But I am especially proud of how usable it is. I had a couple friends test it out and they said it was really friendly with all the guides and facts inside the webpage, and it worked like a charm. Shipwrights please read below : Instructions to try: Grab a quick white sheet of paper and with a black marker or pen, write a random digit from 0 to 9. Make sure the digit is relatively thick. Now here’s the tricky part. It’s a bit easier on phone. If your trying it out on a PC, you might have to take a picture on your phone and transfer the image to your PC and upload it in the website. But on phone, you can take a picture directly on the website. When taking a picture, make sure you have distanced the number from the camera so there aren’t any shadows, try to zoom in and keep it centered, focused, and clear. Once you’ve uploaded the image or have taken the picture in the website, It will load for a bit. You might run into an issue here and it’s not in my control. The backend service I’m using, Render, falls asleep every 15 minutes and will take up to 1 minute to wake. So if you’re confused and its loading for over a minute, refresh the page and retake/reupload the image. Sorry for this inconvienience. After it’s done loading, it will show you the prediction and the confidence and as well as a couple of facts on how the project works. Thank you for reading till the end!
Important information below! I present to you my Handwritten Digit Predictor! It uses a CNN made with TensorFlow. I’m proud that it’s a polished project I can put on my portfolio :D The biggest challenge was the preprocessing part of the image to make it know what part of the image is a number and what is the background. It can still be a little stubborn though so go easy on it by keeping the number clear and isolated when testing it out. You can either draw it on a piece of paper and upload the picture of the number or you can simply just use the paint app or something like excalidraw.com and upload the screenshot (or drag and drop it). For that reason I didn’t include a canvas feature in the website so I don’t have to reinvent the wheel. It’s important that the background and number have a clear contrast and make sure you have the inversion toggle set properly. (I wouldn’t mess with the threshold scale unless you know what your doing)....
|
1792972067.541875
|
1793058467.541875
|
|
24807
|
browserMCP by @stuff1ee | Stardance
|
stuff1ee
|
1
|
22.26
|
348
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-03T13:29:32Z", "hours": 21.0, "multiplier": 16.94, "payout": 348, "blessing": "neutral", "text": "browserMCP is a QoL browser management tool for MCP clients to manage your browser! It includes major QoL improvements such as: Group-related actions (grouping, ungrouping tabs, properties of groups) Tab-related actions (opening tabs, closing tabs) History actions (getting browser history max 24h, opt-in) This is strictly not an automation tool for page actions. I took so many hours because i had to port things from python to node.js etc..", "repo": "https://gitlab.com/mystuffyt/browserMCP", "demo": "https://gitlab.com/mystuffyt/browserMCP/-/releases"}]...
|
[{"post_id": 36560, "ts": "202 [{"post_id": 36560, "ts": "2026-07-28T19:12:22Z", "hours": 1.2569, "text": "Had a lot of commits and trouble w/ GitLab CI, also created GitLab pages for demo link! It’s just the README but it includes instructions on how to install the client + server quick install. I unironically took 1h for all of this, because i am very slow at things :("}, {"post_id": 21470, "ts": "2026-07-03T13:15:50Z", "hours": 1.9747, "text": "finally done! ive added uh getting active tab contents for the purpose of summarizing text or whatever"}, {"post_id": 18419, "ts": "2026-06-29T15:51:21Z", "hours": 4.2381, "text": "devlog 6 The MCP client has a BUNCH of new features. Opening tabs Closing tabs Unloading tabs Grouping tabs Changing color and name of groups History access (opt-in) Happy with how it’s turning out still. I think its time to fix more bugs now. if i figure out the situation on keeping websocket open w/ the service worker, i might make this work for firefox. Its been tough tho, so much bugs…"}, {"post_id": 16920, "ts": "2026-06-27T14:12:16Z", "hours": 5.0031, "text": "Devlog 5 Created a quick install python script! Right now it only supports adding the mcp to claude code and opencode, and it supports all macos, windows and linux! (someone test it on macos and windows for me pls..) As for the MCP, grouping a tab now returns the group ID normally, and now you can change title of group! Still dont know which customization features to add.. but ill figure it out hopefully (i took 4h 58m because i have never created an installation script, chrome extension or even a node.js server in general.. and i learned alot)"}, {"post_id": 15947, "ts": "2026-06-25T22:11:25Z", "hours": 1.4583, "text": "Devlog 4 finally!!!!!!!!!! The extension now handles closed connections, and reconnects… and the whole server is coded in node.js without python. Now that the app completely works, the only thing left for me is to add more customization and etc features. Right now there is: getting tabs and their titles, and grouping them.. If you want to, suggest any ideas."}, {"post_id": 15827, "ts": "2026-06-25T18:49:45Z", "hours": 2.445, "text": "Devlog 3 Finally finished the core MCP! Really fragile.. but it works. fsr some hours are marked as ai coding even though i did not vibecode the MCP at all :( (because i was testing the MCP using opencode) but the MCP works enough. The server is a bit fragile and will hope for a better server in the future."}, {"post_id": 15358, "ts": "2026-06-24T23:34:42Z", "hours": 1.9975, "text": "dev log 2…. ive recoded how the server works, and made the service worker in my extension keepalive. The project is starting to come together at least. Gonna work on the MCP finally next time."}, {"post_id": 15187, "ts": "2026-06-24T18:03:45Z", "hours": 3.4425, "text": "first devlog!! None of the MCP works yet, but i have gotten the communication between browser and websocket server to work. I might switch to node.js for the mcp server as i personally think it’s easier to handle websocket there. to be fair it is my first time creating a chrome extension and doing anything with websocket in general.."}]...
|
Title: browserMCP by @stuff1ee | Stardance
Devlog Title: browserMCP by @stuff1ee | Stardance
Devlogs:
first devlog!! None of the MCP works yet, but i have gotten the communication between browser and websocket server to work. I might switch to node.js for the mcp server as i personally think it’s easier to handle websocket there. to be fair it is my first time creating a chrome extension and doing anything with websocket in general..
dev log 2…. ive recoded how the server works, and made the service worker in my extension keepalive. The project is starting to come together at least. Gonna work on the MCP finally next time.
Devlog 3 Finally finished the core MCP! Really fragile.. but it works. fsr some hours are marked as ai coding even though i did not vibecode the MCP at all :( (because i was testing the MCP using opencode) but the MCP works enough. The server is a bit fragile and will hope for a better server in the future.
Devlog 4 finally!!!!!!!!!! The extension now handles closed connections, and reconnects… and the whole server is coded in node.js without python. Now that the app completely works, the only thing left for me is to add more customization and etc features. Right now there is: getting tabs and their titles, and grouping them.. If you want to, suggest any ideas.
Devlog 5 Created a quick install python script! Right now it only supports adding the mcp to claude code and opencode, and it supports all macos, windows and linux! (someone test it on macos and windows for me pls..) As for the MCP, grouping a tab now returns the group ID normally, and now you can change title of group! Still dont know which customization features to add.. but ill figure it out hopefully (i took 4h 58m because i have never created an installation script, chrome extension or even a node.js server in general.. and i learned alot)
devlog 6 The MCP client has a BUNCH of new features. Opening tabs Closing tabs Unloading tabs Grouping tabs Changing color and name of groups History access (opt-in) Happy with how it’s turning out still. I think its time to fix more bugs now. if i figure out the situation on keeping websocket open w/ the service worker, i might make this work for firefox. Its been tough tho, so much bugs…
finally done! ive added uh getting active tab contents for the purpose of summarizing text or whatever
Had a lot of commits and trouble w/ GitLab CI, also created GitLab pages for demo link! It’s just the README but it includes instructions on how to install the client + server quick install. I unironically took 1h for all of this, because i am very slow at things :(
Ships:
browserMCP is a QoL browser management tool for MCP clients to manage your browser! It includes major QoL improvements such as: Group-related actions (grouping, ungrouping tabs, properties of groups) Tab-related actions (opening tabs, closing tabs) History actions (getting browser history max 24h, opt-in) This is strictly not an automation tool for page actions. I took so many hours because i had to port things from python to node.js etc.....
|
1792982870.6062484
|
1793069270.6062484
|
|
18571
|
Flit by @reimunyancat | Stardance
|
reimunyancat
|
1
|
18.0
|
344
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-14T16:35:56Z", "hours": 18.0, "multiplier": 17.73, "payout": 344, "blessing": "neutral", "text": "Flit is my answer to a problem I hit every single day: moving a link, a bit of text, or a file between my own devices. The normal fixes all have friction. You email yourself, message yourself, or upload to a cloud drive just to download it thirty seconds later on the machine sitting right next to it. Every one of those involves accounts, apps, and steps that have nothing to do with the actual job. Flit is a self-hosted drop inbox. One Rust binary, no accounts, no cloud. Open the URL on any device and everything you drop shows up on every other device in real time. What it actually improves day to day: Real-time sync over SSE. Paste on the desktop and it’s on your phone before you pick it up, no refresh button. QR pairing, because scanning a code beats typing an IP address and a token on a phone keyboard. Share links and drop links. Hand someone exactly one item (one-time or expiring if you want), or give them a post-only page where they can send files into your box without seeing what’s already in it. It installs as a PWA, so on Android “share to Flit” works from any app. Optional browser-side end-to-end encryption (PBKDF2 into AES-GCM), so a public box stores nothing the server can read. On top of that there’s dark mode, an English/Korean toggle, rate limiting, and an ephemeral mode that spins the box down after it sits idle. It’s live at the link, it survived me recording a demo (barely, devlog #5 has the carnage), and it’s built from scratch in Rust with axum.", "repo": "https://github.com/reimunyancat/Flit", "demo": "https://flit.reimunyancat.com"}]...
|
[{"post_id": 28379, "ts": "202 [{"post_id": 28379, "ts": "2026-07-14T16:31:03Z", "hours": 9.1375, "text": "Flit Devlog #5 Last time I ended on “it’s live, it’s public, anyone can hit the URL.” That felt great for about a day, until I thought about what “anyone can hit the URL” actually means. A public drop box where every visitor can read every drop isn’t a feature, it’s a liability. So this entry is me getting paranoid and cleaning up after myself. The public box problem I wanted encryption without a server that holds keys. If the box is public, the server should store gibberish. So it happens in the browser: type a passphrase and everything runs through PBKDF2 (150k rounds, SHA-256) into an AES-256-GCM key before it leaves the tab. The server only ever sees a FLITENC1: blob. Great, until I tested over the LAN and got TypeError: Cannot read properties of undefined (reading 'deriveKey') . crypto.subtle wasn’t there. Web Crypto only exists in a secure context, so localhost and HTTPS work, but http://192.168.x.x on another device is undefined. So I documented it (HTTPS or a VPN hostname for off-localhost encryption) instead of pretending. A status light that lied The “Live” dot is driven by the SSE onopen . Locally it fired instantly; on the deployed box it sat on “Connecting…” while drops streamed in fine. The proxy was buffering the first chunk, so onopen fired late. Fix: send one byte on connect (a ready event prepended to the stream) so the proxy flushes and the client knows it’s open. A server that wouldn’t die Added graceful shutdown; Ctrl+C then did nothing. with_graceful_shutdown waits for every connection to close, and the SSE stream never closes, that’s its whole point. So it waited forever. I stopped being clever: print, spawn a 500ms timer, std::process::exit(0) . Not elegant, but it actually turns off. Handing over one thing, not the keys Two mirrored features. Share links ( /s/{id} ) hand someone a single item, optionally one-time or expiring, without exposing the inbox. Drop links ( /d/{id} ) are post-only: a guest can send something into my box but can’t see what’s inside. Making it a real app A manifest and service worker so Flit installs to the home screen and loads offline. Web Share Target so Android’s “share” can target it. A server-rendered SVG QR ( qrcode , default-features = false ) so pairing a phone is a scan, not a typed IP. And then it all broke on camera Not proud of this. I’d rewritten the whole front-end in one sitting, shipped it, hit record for the demo, and watched it faceplant. Clicked “Share”: dead button, no request. Console: Uncaught ReferenceError: POST is not defined . I’d written method: POST instead of \"POST\" — a bare identifier that threw before fetch . The drop link “worked”: it copied the string undefined . The culprit was await r.json without the () , so j.url read off the function, not the body. One () fixed it. Once I actually read the file, the rest tumbled out: uploads sent fd.append(\"file\", blob.name) (the filename as text, not the file), download was a.href - URL.createObjectURL(...) (a minus sign, evaluates to NaN), files never rendered because the check was it.kind === \"kind\" , and the status indicator pointed at a #status element that no longer existed. The infuriating part: the Rust backend was innocent. I traced the whole request path expecting a bug in create_drop or the router and found nothing wrong. The crime scene was entirely the front-end, a pile of one-character typos I’d never have caught without reading it line by line. “It compiles / it loads” is not “it works,” and the front-end has no compiler to yell at you. You find out on camera. Where Flit stands Real-time public/private drop box: text, links, files Browser-side E2E encryption Share links and post-only guest drops Installable PWA: offline shell, share target, QR pairing Dark mode, EN/KO, rate limiting, ephemeral mode One binary, Docker image, on Render"}, {"post_id": 24756, "ts": "2026-07-08T15:20:28Z", "hours": 4.8031, "text": "Flit Devlog #4 Devlog #3 ended on software’s most dangerous sentence: it works great on my machine. This one’s about every other machine — a real flit command, a lock on the door, prebuilt binaries for three OSes, a copy on the open internet, and the devices with no terminal at all. Where Flit stops being my tool and becomes a tool. A CLI that respects the pipe The flit client is a thin wrapper around curl with opinions: flit \"text\" , flit -f file , cmd | flit , flit -l . The stdin branch is my favorite — if the script sees it’s on the end of a pipe, whatever flows in becomes a drop, no flags, no quoting. So git log --oneline -5 | flit lands on my iPad before I’ve switched windows. Then I wrote the PowerShell sibling and relearned it isn’t “bash with different keywords”: headers are a hashtable, multipart a whole other ritual, and one missing dash cost me embarrassing time. A lock for the door Flit was wide open — fine on localhost, horrifying anywhere else. The rule: no FLIT_TOKEN , nothing changes; set it, and everything except /health demands it. The interesting part wasn’t whether to check a token but how you hand it over . A CLI sends Authorization: Bearer ; but you can’t staple a header onto a QR code. So the middleware speaks three dialects — Bearer header, ?token= , or cookie — and when the token arrives by URL, the server upgrades it to a cookie so it doesn’t live in your address bar: if from_query { if let Ok ( v ) = format! ( \"flit_token={expected}; Path=/; HttpOnly; SameSite=Lax\" ) .parse () { res .headers_mut () .insert ( header :: SET_COOKIE , v ); } } Open the link once, authed from then on. I also turned the upload cap into a knob ( FLIT_MAX_MB ). Three OSes, one tag Push a v* tag and GitHub Actions builds on three native runners — ubuntu, macos, windows — while a fourth gathers the artifacts into one release. But three OSes means three sets of opinions: Windows insists on .exe , wants shell: bash spelled out, and each names its artifact differently so the release job merges them cleanly. None of it hard in hindsight; all of it a red X on the first try. v0.1.0 now ships Linux, macOS, and Windows binaries from one git tag . Finding a home (the actual hard part) Nobody says this: deploying was easy, finding where was the fight. My first pick ambushed me mid-signup with a credit-card wall on the “free” tier. Closed the tab, went to Render, which read the Dockerfile from the repo and worked first try — thanks to one patch: check PORT first, fall back to FLIT_ADDR , else 0.0.0.0:7777 . Every platform injects PORT and expects you to listen on it; respect that one variable and the container runs anywhere, ignore it and you stare at “deploy succeeded” beside a site that never answers. Flit’s public face: https://flit-xw2a.onrender.com — open on purpose, drops expire in 10 min, uploads cap at 5 MB. The free box dozes when idle, so the first hit yawns before it wakes. The last mile: devices with no terminal The piece it was born for. My laptop has a shell; my iPad and phone don’t. Same trick on both — hijack the system share sheet so “Share → Flit” fires an HTTP request. On iPad that’s Apple Shortcuts; Android uses the open-source HTTP Shortcuts app — identical job. One mental model: the share sheet is the send button. A screenshot goes thumb-to-laptop with no computer in the middle — the entire point. Where Flit stands Real-time receive — drops appear instantly (#2) Clipboard-direct — text/links hit your clipboard (#3) Auto-expiry — drops delete themselves on a TTL (#3) Send from anything — Linux/macOS/Windows CLI, any browser, iPad, Android One binary, downloadable for three OSes, curl -able like a caveman or token-locked if you’re not, plus a live demo at https://flit-xw2a.onrender.com . That’s the build. Flit is shipped."}, {"post_id": 16996, "ts": "2026-06-27T16:05:04Z", "hours": 2.9097, "text": "Flit Devlog #3 Flit has one job: move a thing from one device to another without making you think about it. After devlog #2 it could already do the hard part — receive in real time over SSE, no refresh. But there was still a dumb gap at the end: a link would land, and I’d reach for the mouse, click the card, hit copy. For a project whose whole personality is “frictionless,” that last inch was embarrassing. This entry kills it: paste-on-arrival, and drops that take themselves out when they’re done. Paste before you ask for it The plan felt trivial. The SSE stream already fires an item event whenever something new shows up, so: listen for it, grab the newest text, drop it on the clipboard. No button. You copy on your phone, tab to your laptop, and it’s already under Ctrl+V. source . addEventListener ( \" item \" , async () => { const items = await fetch ( \" /api/items \" ). then (( r ) => r . json ()); if ( items [ 0 ]?. text ) await navigator . clipboard . writeText ( items [ 0 ]. text ); }); Ship it, right? …except the browser quietly says no It didn’t work — and the cruel part is how . No crash, no console error, the text just never landed. The only tell was a buried NotAllowedError . Here’s what nobody warns you about: clipboard.writeText() needs transient user activation . The browser only allows a clipboard write in the short window right after a real gesture — a click, a keypress. A message arriving over SSE is not a gesture. To the browser, a background script grabbing your clipboard is exactly what it should block. Fair. This also explained a bug that was driving me up the wall: auto-copy “only worked after toggling it off and on.” Of course — the toggle click itself was the gesture. So the honest fix was to lean in: the auto-copy switch IS the gesture. You arm it with a click, and the browser trusts the page to keep copying. Not magic — just asking permission in the only language the browser accepts. Drops that clean up after themselves The other half of frictionless is never having to remember to delete things. A drop inbox that fills up forever is just a junk drawer with a URL. So every item gets an expires timestamp at creation, and a reaper task wakes up every 30 seconds to sweep anything past it: let mut tick = tokio :: time :: interval ( Duration :: from_secs ( 30 )); loop { tick .tick () .await ; let t = now (); state .items .lock () .unwrap () .retain (| _ , it | it .expires == 0 || it .expires > t ); } I chose an active reaper over lazy “check on read” expiry on purpose: lazy expiry lets stale items linger until someone looks, and the list can briefly lie about what’s still alive. A background sweep keeps memory and the UI honest. Default is one hour ( FLIT_TTL_SECS=3600 ); 0 means keep forever. Where Flit stands The three quality-of-life wins are all in: Real-time receive — drops appear instantly (devlog #2) Clipboard-direct — text and links land on your clipboard Auto-expiry — drops delete themselves on a TTL And it’s still one binary you can curl at like a caveman if you feel like it. Next up It works great on my machine — the most dangerous sentence in software. Step 5 makes it real for other machines: a proper flit CLI (plus a PowerShell sibling), an auth layer so it isn’t wide open the second it leaves localhost, and a release workflow that ships prebuilt binaries for all three platforms. See you in #4."}, {"post_id": 16063, "ts": "2026-06-26T03:13:29Z", "hours": 1.2758, "text": "Devlog #2 session Flit could swallow things — text, links, files — but the only way to see what was in there was to keep poking it with curl . Functional, sure, but it felt like checking a mailbox by reaching in with my eyes closed. This time I wanted the moment that actually makes Flit worth building: you drop something on one device and it just appears on another, no refresh, no waiting. So I built the inbox page, and then I taught the server how to tap you on the shoulder. The tap is the fun part. My first thought was to have the page ask “anything new?” every couple of seconds, which works but always feels a half-step behind, and it hammers the server for nothing most of the time. WebSockets would do it, but that’s a full two-way phone line when all I need is the server occasionally shouting “hey, look!” down a one-way hallway. That’s exactly what Server-Sent Events are — plain HTTP, the browser reconnects on its own, and I get to keep the whole thing stupidly simple. Under the hood there’s a little broadcast channel. Whenever something gets stored, the server drops the new item’s id into the channel, and every browser that’s currently watching /api/events hears it and re-pulls the list. I left a 15-second background poll in there too, just as a safety net for the one time a connection quietly dies — belt and suspenders, because the entire promise of this thing is “it just shows up,” and I’d rather it be boringly reliable than clever. The first time it worked I had two terminals open. One sitting on curl -N /api/events , the other posting a note — and the event popped out the instant I hit enter, while the browser tab in the corner of my eye updated in the same breath. I may have said “oh, nice” out loud to an empty room. Next I want the drop to land where my hands already are : auto-copy the newest text straight to the clipboard the second it arrives, and let old stuff quietly expire so there’s never anything to tidy up. That clipboard moment is the one I’m most excited about — it’s the whole difference between “a place I go to check” and “it’s already there.“"}, {"post_id": 13662, "ts": "2026-06-22T12:44:23Z", "hours": 0.0, "text": "Devlog #1 — From an empty folder to a working drop box So I finally started building Drop — the little “throw a file/link/note from one device and just grab it on another” thing I keep wishing existed pretty much every day. The whole pitch is no friction: no login, no app-store download, no database to babysit. You run one binary and suddenly there’s a shared inbox sitting on your network. What actually works now I started from literally nothing — cargo new drop –name drop-server — and by the end of the session the server accepts stuff and hands it back. Stood up an axum 0.8 + tokio server with / and /health just to confirm it was breathing. Designed one Item type and tossed everything into an in-memory Arc<Mutex>. No database, on purpose — the point is to be instant and disposable, not durable. POST /api/text takes raw text and is smart enough to tag it as a link when it looks like a URL, otherwise text. POST /api/file accepts a multipart upload and keeps the original filename + content type. GET /api/items returns everything newest-first as JSON. I deliberately strip the raw bytes out of the list so it stays light. GET /api/items/{id}/raw streams the original file back with Content-Disposition: inline. Stuff that tripped me up axum 0.8 changed route params from :id to {id}. I pasted a 0.7 example first and the server panicked on boot. Easy fix once I knew what I was looking at. Multipart is a stream you drain with next_field(), so it has to be mut multipart — the borrow checker kept yelling until I gave in. My first instinct was to shove file bytes straight into the JSON list. Terrible idea for anything big, so the bytes are now #[serde(skip_serializing)] and only ever come out of the /raw endpoint. Quick proof it works curl -d “ship it” localhost:7777/api/text # ok curl -F “ [email protected] ” localhost:7777/api/file # ok curl -s localhost:7777/api/items | jq ‘.[].kind’ # “file” “link” “text” Next up Right now it’s all curl, which is fine for me but not exactly the dream. Next session I’m building the actual inbox web page and wiring up SSE, so a new drop pops up on my other devices instantly — that real-time moment is the whole reason I’m making this."}]...
|
Title: Flit by @reimunyancat | Stardance
Devlogs: Title: Flit by @reimunyancat | Stardance
Devlogs:
Devlog #1 — From an empty folder to a working drop box So I finally started building Drop — the little “throw a file/link/note from one device and just grab it on another” thing I keep wishing existed pretty much every day. The whole pitch is no friction: no login, no app-store download, no database to babysit. You run one binary and suddenly there’s a shared inbox sitting on your network. What actually works now I started from literally nothing — cargo new drop –name drop-server — and by the end of the session the server accepts stuff and hands it back. Stood up an axum 0.8 + tokio server with / and /health just to confirm it was breathing. Designed one Item type and tossed everything into an in-memory Arc<Mutex>. No database, on purpose — the point is to be instant and disposable, not durable. POST /api/text takes raw text and is smart enough to tag it as a link when it looks like a URL, otherwise text. POST /api/file accepts a multipart upload and keeps the original filename + content type. GET /api/items returns everything newest-first as JSON. I deliberately strip the raw bytes out of the list so it stays light. GET /api/items/{id}/raw streams the original file back with Content-Disposition: inline. Stuff that tripped me up axum 0.8 changed route params from :id to {id}. I pasted a 0.7 example first and the server panicked on boot. Easy fix once I knew what I was looking at. Multipart is a stream you drain with next_field(), so it has to be mut multipart — the borrow checker kept yelling until I gave in. My first instinct was to shove file bytes straight into the JSON list. Terrible idea for anything big, so the bytes are now #[serde(skip_serializing)] and only ever come out of the /raw endpoint. Quick proof it works curl -d “ship it” localhost:7777/api/text # ok curl -F “ [email protected] ” localhost:7777/api/file # ok curl -s localhost:7777/api/items | jq ‘.[].kind’ # “file” “link” “text” Next up Right now it’s all curl, which is fine for me but not exactly the dream. Next session I’m building the actual inbox web page and wiring up SSE, so a new drop pops up on my other devices instantly — that real-time moment is the whole reason I’m making this.
Devlog #2 session Flit could swallow things — text, links, files — but the only way to see what was in there was to keep poking it with curl . Functional, sure, but it felt like checking a mailbox by reaching in with my eyes closed. This time I wanted the moment that actually makes Flit worth building: you drop something on one device and it just appears on another, no refresh, no waiting. So I built the inbox page, and then I taught the server how to tap you on the shoulder. The tap is the fun part. My first thought was to have the page ask “anything new?” every couple of seconds, which works but always feels a half-step behind, and it hammers the server for nothing most of the time. WebSockets would do it, but that’s a full two-way phone line when all I need is the server occasionally shouting “hey, look!” down a one-way hallway. That’s exactly what Server-Sent Events are — plain HTTP, the browser reconnects on its own, and I get to keep the whole thing stupidly simple. Under the hood there’s a little broadcast channel. Whenever something gets stored, the server drops the new item’s id into the channel, and every browser that’s currently watching /api/events hears it and re-pulls the list. I left a 15-second background poll in there too, just as a safety net for the one time a connection quietly dies — belt and suspenders, because the entire promise of this thing is “it just shows up,” and I’d rather it be boringly reliable than clever. The first time it worked I had two terminals open. One sitting on curl -N /api/events , the other posting a note — and the event popped out the instant I hit enter, while the browser tab in the corner of my eye updated in the same breath. I may have said “oh, nice” out loud to an empty room. Next I want the drop to land where my hands already are : auto-copy the newest text straight to the clipboard the second it arrives, and let old stuff quietly expire so there’s never anything to tidy up. That clipboard moment is the one I’m most excited about — it’s the whole difference between “a place I go to check” and “it’s already there.“
Flit Devlog #3 Flit has one job: move a thing from one device to another without making you think about it. After devlog #2 it could already do the hard part — receive in real time over SSE, no refresh. But there was still a dumb gap at the end: a link would land, and I’d reach for the mouse, click the card, hit copy. For a project whose whole personality is “frictionless,” that last inch was embarrassing. This entry kills it: paste-on-arrival, and drops that take themselves out when they’re done. Paste before you ask for it The plan felt trivial. The SSE stream already fires an item event whenever something new shows up, so: listen for it, grab the newest text, drop it on the clipboard. No button. You copy on your phone, tab to your laptop, and it’s already under Ctrl+V. source . addEventListener ( " item " , async () => { const items = await fetch ( " /api/items " ). then (( r ) => r . json ()); if ( items [ 0 ]?. text ) await navigator . clipboard . writeText ( items [ 0 ]. text ); }); Ship it, right? …except the browser quietly says no It didn’t work — and the cruel part is how . No crash, no console error, the text just never landed. The only tell was a buried NotAllowedError . Here’s what nobody warns you about: clipboard.writeText() needs transient user activation . The browser only allows a clipboard write in the short window right after a real gesture — a click, a keypress. A message arriving over SSE is not a gesture. To the browser, a background script grabbing your clipboard is exactly what it should block. Fair. This also explained a bug that was driving me up the wall: auto-copy “only worked after toggling it off and on.” Of course — the toggle click itself was the gesture. So the honest fix was to lean in: the auto-copy switch IS the gesture. You arm it with a click, and the browser trusts the page to keep copying. Not magic — just asking permission in the only language the browser accepts. Drops that clean up after themselves The other half of frictionless is never having to remember to delete things. A drop inbox that fills up forever is just a junk drawer with a URL. So every item gets an expires timestamp at creation, and a reaper task wakes up every 30 seconds to sweep anything past it: let mut tick = tokio :: time :: interval ( Duration :: from_secs ( 30 )); loop { tick .tick () .await ; let t = now (); state .items .lock () .unwrap () .retain (| _ , it | it .expires == 0 || it .expires > t ); } I chose an active reaper over lazy “check on read” expiry on purpose: lazy expiry lets stale items linger until someone looks, and the list can briefly lie about what’s still alive. A background sweep keeps memory and the UI honest. Default is one hour ( FLIT_TTL_SECS=3600 ); 0 means keep forever. Where Flit stands The three quality-of-life wins are all in: Real-time receive — drops appear instantly (devlog #2) Clipboard-direct — text and links land on your clipboard Auto-expiry — drops delete themselves on a TTL And it’s still one binary you can curl at like a caveman if you feel like it. Next up It works great on my machine — the most dangerous sentence in software. Step 5 makes it real for other machines: a proper flit CLI (plus a PowerShell sibling), an auth layer so it isn’t wide open the second it leaves localhost, and a release workflow that ships prebuilt binaries for all three platforms. See you in #4.
Flit Devlog #4 Devlog #3 ended on software’s most dangerous sentence: it works great on my machine. This one’s about every other machine — a real flit command, a lock on the door, prebuilt binaries for three OSes, a copy on the open internet, and the devices with no terminal at all. Where Flit stops being my tool and becomes a tool. A CLI that respects the pipe The flit client is a thin wrapper around curl with opinions: flit "text" , flit -f file , cmd | flit , flit -l . The stdin branch is my favorite — if the script sees it’s on the end of a pipe, whatever flows in becomes a drop, no flags, no quoting. So git log --oneline -5 | flit lands on my iPad before I’ve switched windows. Then I wrote the PowerShell sibling and relearned it isn’t “bash with different keywords”: headers are a hashtable, multipart a whole other ritual, and one missing dash cost me embarrassing time. A lock for the door Flit was wide open — fine on localhost, horrifying anywhere else. The rule: no FLIT_TOKEN , nothing changes; set it, and everything except /health demands it. The interesting part wasn’t whether to check a token but how you hand it over . A CLI sends Authorization: Bearer ; but you can’t staple a header onto a QR code. So the middleware speaks three dialects — Bearer header, ?token= , or cookie — and when the token arrives by URL, the server upgrades it to a cookie so it doesn’t live in your address bar: if from_query { if let Ok ( v ) = format! ( "flit_token={expected}; Path=/; HttpOnly; SameSite=Lax" ) .parse () { res .headers_mut () .insert ( header :: SET_COOKIE , v ); } } Open the link once, authed from then on. I also turned the upload cap into a knob ( FLIT_MAX_MB ). Three OSes, one tag Push a v* tag and GitHub Actions builds on three native runners — ubuntu, macos, windows — while a fourth gathers the artifacts into one release. But three OSes means three sets of opinions: Windows insists on .exe , wants shell: bash spelled out, and each names its artifact differently so the release job merges them cleanly. None of it hard in hindsight; all of it a red X on the first try. v0.1.0 now ships Linux, macOS, and Windows binaries from one git tag . Finding a home (the actual hard part) Nobody says this: deploying was easy, finding where was the fight. My first pick ambushed me mid-signup with a credit-card wall on the “free” tier. Closed the tab, went to Render, which read the Dockerfile from the repo and worked first try — thanks to one patch: check PORT first, fall back to FLIT_ADDR , else 0.0.0.0:7777 . Every platform injects PORT and expects you to listen on it; respect that one variable and the container runs anywhere, ignore it and you stare at “deploy succeeded” beside a site that never answers. Flit’s public face: https://flit-xw2a.onrender.com — open on purpose, drops expire in 10 min, uploads cap at 5 MB. The free box dozes when idle, so the first hit yawns before it wakes. The last mile: devices with no terminal The piece it was born for. My laptop has a shell; my iPad and phone don’t. Same trick on both — hijack the system share sheet so “Share → Flit” fires an HTTP request. On iPad that’s Apple Shortcuts; Android uses the open-source HTTP Shortcuts app — identical job. One mental model: the share sheet is the send button. A screenshot goes thumb-to-laptop with no computer in the middle — the entire point. Where Flit stands Real-time receive — drops appear instantly (#2) Clipboard-direct — text/links hit your clipboard (#3) Auto-expiry — drops delete themselves on a TTL (#3) Send from anything — Linux/macOS/Windows CLI, any browser, iPad, Android One binary, downloadable for three OSes, curl -able like a caveman or token-locked if you’re not, plus a live demo at https://flit-xw2a.onrender.com . That’s the build. Flit is shipped.
Flit Devlog #5 Last time I ended on “it’s live, it’s public, anyone can hit the URL.” That felt great for about a day, until I thought about what “anyone can hit the URL” actually means. A public drop box where every visitor can read every drop isn’t a feature, it’s a liability. So this entry is me getting paranoid and cleaning up after myself. The public box problem I wanted encryption without a server that holds keys. If the box is public, the server should store gibberish. So it happens in the browser: type a passphrase and everything runs through PBKDF2 (150k rounds, SHA-256) into an AES-256-GCM key before it leaves the tab. The server only ever sees a FLITENC1: blob. Great, until I tested over the LAN and got TypeError: Cannot read properties of undefined (reading 'deriveKey') . crypto.subtle wasn’t there. Web Crypto only exists in a secure context, so localhost and HTTPS work, but http://192.168.x.x on another device is undefined. So I documented it (HTTPS or a VPN hostname for off-localhost encryption) instead of pretending. A status light that lied The “Live” dot is driven by the SSE onopen . Locally it fired instantly; on the deployed box it sat on “Connecting…” while drops streamed in fine. The proxy was buffering the first chunk, so onopen fired late. Fix: send one byte on connect (a ready event prepended to the stream) so the proxy flushes and the client knows it’s open. A server that wouldn’t die Added graceful shutdown; Ctrl+C then did nothing. with_graceful_shutdown waits for every connection to close, and the SSE stream never closes, that’s its whole point. So it waited forever. I stopped being clever: print, spawn a 500ms timer, std::process::exit(0) . Not elegant, but it actually turns off. Handing over one thing, not the keys Two mirrored features. Share links ( /s/{id} ) hand someone a single item, optionally one-time or expiring, without exposing the inbox. Drop links ( /d/{id} ) are post-only: a guest can send something into my box but can’t see what’s inside. Making it a real app A manifest and service worker so Flit installs to the home screen and loads offline. Web Share Target so Android’s “share” can target it. A server-rendered SVG QR ( qrcode , default-features = false ) so pairing a phone is a scan, not a typed IP. And then it all broke on camera Not proud of this. I’d rewritten the whole front-end in one sitting, shipped it, hit record for the demo, and watched it faceplant. Clicked “Share”: dead button, no request. Console: Uncaught ReferenceError: POST is not defined . I’d written method: POST instead of "POST" — a bare identifier that threw before fetch . The drop link “worked”: it copied the string undefined . The culprit was await r.json without the () , so j.url read off the function, not the body. One () fixed it. Once I actually read the file, the rest tumbled out: uploads sent fd.append("file", blob.name) (the filename as text, not the file), download was a.href - URL.createObjectURL(...) (a minus sign, evaluates to NaN), files never rendered because the check was it.kind === "kind" , and the status indicator pointed at a #status element that no longer existed. The infuriating part: the Rust backend was innocent. I traced the whole request path expecting a bug in create_drop or the router and found nothing wrong. The crime scene was entirely the front-end, a pile of one-character typos I’d never have caught without reading it line by line. “It compiles / it loads” is not “it works,” and the front-end has no compiler to yell at you. You find out on camera. Where Flit stands Real-time public/private drop box: text, links, files Browser-side E2E encryption Share links and post-only guest drops Installable PWA: offline shell, share target, QR pairing Dark mode, EN/KO, rate limiting, ephemeral mode One binary, Docker image, on Render
Ships:
Flit is my answer to a problem I hit every single day: moving a link, a bit of text, or a file between my own devices. The normal fixes all have friction. You email yourself, message yourself, or upload to a cloud drive just to download it thirty seconds later on the machine sitting right next to it. Every one of those involves accounts, apps, and steps that have nothing to do with the actual job. Flit is a self-hosted drop inbox. One Rust binary, no accounts, no cloud. Open the URL on any device and everything you drop shows up on every other device in real time. What it actually improves day to day: Real-time sync over SSE. Paste on the desktop and it’s on your phone before you pick it up, no refresh button. QR pairing, because scanning a code beats typing an IP address and a token on a phone keyboard. Share links and drop links. Hand someone exactly one item (one-time or expiring if you want), or give them a post-only page where they can send files into your box without seeing what’s already in it. It installs as a PWA, so on Android “share to Flit” works from any app. Optional browser-side end-to-end encryption (PBKDF2 into AES-GCM), so a public box stores nothing the server can read. On top of that there’s dark mode, an English/Korean toggle, rate limiting, and an ephemeral mode that spins the box down after it sits idle. It’s live at the link, it survived me recording a demo (barely, devlog #5 has the carnage), and it’s built from scratch in Rust with axum....
|
1792875243.9963224
|
1793739243.9963224
|
|
32108
|
Atlas by @NITHIN | Stardance
|
NITHIN
|
1
|
68.0
|
342
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-12T01:54:29Z", "hours": 68.0, "multiplier": 5.54, "payout": 342, "blessing": "neutral", "text": "Atlas is an interactive visual explorer that turns any GitHub repository into a 3D digital universe. Instead of scrolling through thousands of lines of text files, Atlas lets you explore your codebase like a map visualizing folder structures as glowing skyscrapers, watching functions execute along neon roads in real-time, and using an AI companion to fly you directly to the code you need.", "repo": "https://github.com/Nithinfgs/Atlas", "demo": "https://symphonious-praline-025cbe.netlify.app/"}]...
|
[{"post_id": 26964, "ts": "202 [{"post_id": 26964, "ts": "2026-07-12T01:51:04Z", "hours": 8.0, "text": "Have Pushed all the files project is fully completed With this I am fully finished with my project"}, {"post_id": 26704, "ts": "2026-07-11T17:31:02Z", "hours": 7.0, "text": "Completed two major modules today.Finished gitmachine.js, which contains the Atlas Git Time Machine Scrubber & Replay Morph module.Finished ai.js, which contains the Atlas AI Assistant & Explain Mode panel coordinator, including AI Review and Camera Fly-To functionality.At this point, I have around five source files remaining, along with the README. Based on the remaining work, I’m estimating another 15–20 hours before the project reaches its first complete version.I’ve also pushed the latest changes to GitHub, so the repository is up to date.The remaining work is focused on implementing the final modules, polishing the codebase, writing the documentation, and preparing the project for release."}, {"post_id": 26329, "ts": "2026-07-11T01:58:00Z", "hours": 7.0, "text": "Completed style.css and pushed all styling changes to GitHub. The project’s UI is now largely complete. Overall project completion is approximately 70%, with the remaining work focused on JavaScript functionality, testing, and final deployment."}, {"post_id": 26122, "ts": "2026-07-10T18:39:54Z", "hours": 8.0, "text": "A major portion of the CSS has been finished—I’d say around 40%. I haven’t pushed the changes to GitHub yet, but I’ll do that later today once I’m fully done with style.css.With the completion of style.css, I will have finished index.html, app.js, and style.css, marking a major milestone in the overall project. At that point, the project will be approximately 70% complete."}, {"post_id": 25653, "ts": "2026-07-10T02:05:09Z", "hours": 12.0, "text": "Just wrapped up the app.js file and pushed the latest changes to GitHub. This marks a major milestone in the project, with a significant portion of the core functionality now complete. It’s been a solid learning experience so far, and I’m looking forward to building out the remaining features and polishing the application.On to the next milestone."}, {"post_id": 25171, "ts": "2026-07-09T06:56:32Z", "hours": 9.0, "text": "I have fully completed the index.html file and have already pushed it to GitHub. I’m mostly done with my app.js file and expect to finish it today."}, {"post_id": 24776, "ts": "2026-07-08T15:54:50Z", "hours": 13.0, "text": "Completed the index.html file for the most part and pushed the changes to GitHub. Next, I’ll start working on app.js, and I expect to have it finished by tomorrow."}, {"post_id": 24153, "ts": "2026-07-07T15:11:53Z", "hours": 0.0, "text": "Completed the idea generation and planning phase. I’ve now pushed the complete project file structure to GitHub and added all the initial project files. With the setup in place, I’ve started working on the index.html file and will continue building the core UI from here."}]...
|
Title: Atlas by @NITHIN | Stardance
Devlogs:
Comp Title: Atlas by @NITHIN | Stardance
Devlogs:
Completed the idea generation and planning phase. I’ve now pushed the complete project file structure to GitHub and added all the initial project files. With the setup in place, I’ve started working on the index.html file and will continue building the core UI from here.
Completed the index.html file for the most part and pushed the changes to GitHub. Next, I’ll start working on app.js, and I expect to have it finished by tomorrow.
I have fully completed the index.html file and have already pushed it to GitHub. I’m mostly done with my app.js file and expect to finish it today.
Just wrapped up the app.js file and pushed the latest changes to GitHub. This marks a major milestone in the project, with a significant portion of the core functionality now complete. It’s been a solid learning experience so far, and I’m looking forward to building out the remaining features and polishing the application.On to the next milestone.
A major portion of the CSS has been finished—I’d say around 40%. I haven’t pushed the changes to GitHub yet, but I’ll do that later today once I’m fully done with style.css.With the completion of style.css, I will have finished index.html, app.js, and style.css, marking a major milestone in the overall project. At that point, the project will be approximately 70% complete.
Completed style.css and pushed all styling changes to GitHub. The project’s UI is now largely complete. Overall project completion is approximately 70%, with the remaining work focused on JavaScript functionality, testing, and final deployment.
Completed two major modules today.Finished gitmachine.js, which contains the Atlas Git Time Machine Scrubber & Replay Morph module.Finished ai.js, which contains the Atlas AI Assistant & Explain Mode panel coordinator, including AI Review and Camera Fly-To functionality.At this point, I have around five source files remaining, along with the README. Based on the remaining work, I’m estimating another 15–20 hours before the project reaches its first complete version.I’ve also pushed the latest changes to GitHub, so the repository is up to date.The remaining work is focused on implementing the final modules, polishing the codebase, writing the documentation, and preparing the project for release.
Have Pushed all the files project is fully completed With this I am fully finished with my project
Ships:
Atlas is an interactive visual explorer that turns any GitHub repository into a 3D digital universe. Instead of scrolling through thousands of lines of text files, Atlas lets you explore your codebase like a map visualizing folder structures as glowing skyscrapers, watching functions execute along neon roads in real-time, and using an AI companion to fly you directly to the code you need....
|
1792882118.7040606
|
1793746118.7040606
|
|
22143
|
automatown by @guydryzun | Stardance
|
guydryzun
|
2
|
27.0
|
341
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T19:13:58Z", "hours": 6.0, "multiplier": 13.64, "payout": 95, "blessing": "neutral", "text": "Uhhhmmmm same as last ship just with slightly better visual stuff. Idk just read the last ship’s message.", "repo": "https://github.com/guydryzun/automatown", "demo": "https://vapor-wav.itch.io/automatown"}, {"ship_num": 2, "ts": "2026-07-11T19:18:17Z", "hours": 21.0, "multiplier": 13.75, "payout": 246, "blessing": "neutral", "text": "Automatown is a sort of simulation game all about cellular automata. Made for fans and new-comers alike, automatown has a wide range of simulations for automata small and simple to big and complex, but also has explanations of everything on offer to make sure everyone can learn and have fun, even containing example automata / grids so you can easily see the mst important stuff. On a more technical note, this is my first simulation game so while I put some effort in making it smooth, the optimization can be a bit iffy, but not to a level that should really negatively affect most people’s playthroughs. The game is very much lacking sound effects and graphics, but I am mainly interested in making the actual simulation part, so it will come in due time, just might take a bit.", "repo": "https://github.com/guydryzun/automatown", "demo": "https://vapor-wav.itch.io/automatown"}]...
|
[{"post_id": 61711, "ts": "202 [{"post_id": 61711, "ts": "2026-09-04T19:07:42Z", "hours": 5.7906, "text": "devlog 8 - A try at visual improvement This is the first and probably last devlog after the first ship. The feedback was pretty positive, so thatnks to everyone who wrote a nice review! still, there were some problems. The two main problems were the horrendous ui and the itch page not showing everything when not in fullscreen. I’ll start with the latter - I fully knew about this before shipping and have already did all I could think of to solve this, I genuinely have no idea why it’s like that, sorry. Now for the ui - I tried. I really did, I just don’t have that in me, so the game still doesn’t look great, but better than before. I will say, I added a something I think is very cute for the game’s title, no spoilers though. I also fixed a few minor bugs and veeery slightly improved the experience, but not anything big. There are still some bugs, but I have a lot of other projects I need to focus on plus I’m pretty happy with automatown as it stands, so this is most likely the last devlog and ship."}, {"post_id": 24043, "ts": "2026-07-07T10:28:12Z", "hours": 5.7186, "text": "devlog 7 - Added explanations! + a call for help added five small introductions, one to explain cellular automata in general, and 4 for the specific automata you can simulate in automatown, complete with fun facts and some insight on the examples. Hopefully the game can now be used by people enitrely unknowing of cellular automata and help them understand them and learn to love them. now, the last thing I do before shipping it, I’m asking YOU, the good people of stardance, to help give me feedback. I want this to actually be informative, and I made this project because I thought it would be fun to make the more technical side of things so I’m not confident this more user-oriented part turned out well. Please, if you can spend like 10 minutes to look at automatown and comment here (or dm me in discord-guy729/slack-guydryzun) what you think it would be of great."}, {"post_id": 18234, "ts": "2026-06-29T09:49:15Z", "hours": 2.7206, "text": "devlog 6 - Colors! Electicity! (qol!) The town got expanded into the multiple-state territory, adding WireWorld! with this CA you can very effectively simulate electrical circuits, logic gates and all of that jazz. Also added ui so the user can more easily: See the controls Get back to the main menu"}, {"post_id": 16368, "ts": "2026-06-26T17:11:27Z", "hours": 2.6931, "text": "devlog 5 - building more neighbourhoods You can now do something that I genuenly never saw, and seems to be rarely talked about - you can manually set the CA’s neighbourhood! make ’em smaller, bigger, zig-zaggy, outer-only, whatever you want! and you add to that any rule set you want, meaning you can now make 1,099,511,627,776 different CAs. as always you can check it out at https://vapor-wav.itch.io/automatown"}, {"post_id": 14262, "ts": "2026-06-23T09:12:50Z", "hours": 1.8058, "text": "devlog 4 - new lives The game of life brought all of his friends to the town - you can now simulate all life-likes! make self replicating petterns, rules where nothing can die, where everyone dies, you can go wild! Most people know only about the game of life but trust me, life-likes are incredible, complex and beutiful, and there are hundreds of thousands of them. also slightly improved the code for detecting clicks on empty/live cells you can play around with the program over at https://vapor-wav.itch.io/automatown next I will probably add either Langton’s ant or Wireworld, stay tuned for that."}, {"post_id": 13611, "ts": "2026-06-22T09:50:30Z", "hours": 3.5247, "text": "devlog 3 - entering the second dimension Conway’s Game of Life has entered automatown. You can simulate the game of life, move around, zoom in and out, proggress incrementally or continuously, and change the speed of the simulation. currently has one example as I don’t have more ideas, if you have a suggestion i’d welcome you to tell me about it. Also added zooming in and out for the other automaton, and letting you choose if the edges are ignored or if there will be edge wrapping. you can try it for yourself at https://vapor-wav.itch.io/automatown"}, {"post_id": 12467, "ts": "2026-06-20T11:05:47Z", "hours": 1.865, "text": "devlog 2 - It’s alive! The town is now up and running over at https://vapor-wav.itch.io/automatown Currently, you can simulate any of the 256 elemantary cellular automata in a grid of a customizable size, where you can either set the grid manually, randomly or a mix of both. You can also look at four premade examples showcasing some cool stuff, that you can also change manually. If you don’t know about cellular automatas and this all seems like gibberish to you, I highly encourage you to try these examples for yourself, it’s insanely simple and very cool. Making UI scale correctly in unity builds is annoying, so even though I fixed most of it, still if you don’t play in fullscreen you can’t see the very sides of the screen, I’ll work on fixing it. For now just press the fullscreen button in the bottom right of the screen. Also I changed the way I create the cells from a basic instanciate(block, position, rotation) to an object pool which I think halves the work done for making new cells, still takes a bit to load big grids (like 1000x1000). That’s pretty much it for this devlog, if you have a suggestion for a new feature or found a bug please do tell, and have fun with the program!"}, {"post_id": 12058, "ts": "2026-06-19T17:45:00Z", "hours": 2.8478, "text": "devlog 1 - humble beginnings Do you like cellular automatas? do you have no idea what they are? well you’ve arrived at just the right place, here in automatown you can see all kinds of different cellular automatas do their many cool things. For real though, if you dont know, a CA (cellular automata) is basically a grid of squares each having a value (usually either 1 or 0) that look at their neighbouring cells and then update themselves according to preset rules after controlled “ticks” or “generations” (a popular example caould be conway’s game of life). CAs are very good at generating crazy patterns, being chaotic and unpredictable and even turing-complete! (meaning you can make computers inside them). A lot of CAs have easily findable programs that simulate them or pictures showing their interactions, but it can be a lot nicer to have a single place for all of them. I’ll also try to add useful information and preset grids where I can. My project is basically just a program that can simulate as many different CAs as I can fit in it, built in unity (because that’s what I know how to use). Right now I have: code that simulates the 256 elementary cellulr automata an ok way to visualize it and move through it, more quality of life features to be expected, hopefuly more optimization too, as that’s not something I’m not knowledgable in AT ALL so it runs quite poorly. an extensive amount of time not logged because it was spent researching the topic. CAs really interest me but I never formally learned about them. I also downloaded hackatime after making some stuff, so there is like at least an hour not logged because of that. provided below is an image I got from a single black cell on the very right of the grid and rule 169."}]...
|
Title: automatown by @guydryzun | Stardance
Devlo Title: automatown by @guydryzun | Stardance
Devlogs:
devlog 1 - humble beginnings Do you like cellular automatas? do you have no idea what they are? well you’ve arrived at just the right place, here in automatown you can see all kinds of different cellular automatas do their many cool things. For real though, if you dont know, a CA (cellular automata) is basically a grid of squares each having a value (usually either 1 or 0) that look at their neighbouring cells and then update themselves according to preset rules after controlled “ticks” or “generations” (a popular example caould be conway’s game of life). CAs are very good at generating crazy patterns, being chaotic and unpredictable and even turing-complete! (meaning you can make computers inside them). A lot of CAs have easily findable programs that simulate them or pictures showing their interactions, but it can be a lot nicer to have a single place for all of them. I’ll also try to add useful information and preset grids where I can. My project is basically just a program that can simulate as many different CAs as I can fit in it, built in unity (because that’s what I know how to use). Right now I have: code that simulates the 256 elementary cellulr automata an ok way to visualize it and move through it, more quality of life features to be expected, hopefuly more optimization too, as that’s not something I’m not knowledgable in AT ALL so it runs quite poorly. an extensive amount of time not logged because it was spent researching the topic. CAs really interest me but I never formally learned about them. I also downloaded hackatime after making some stuff, so there is like at least an hour not logged because of that. provided below is an image I got from a single black cell on the very right of the grid and rule 169.
devlog 2 - It’s alive! The town is now up and running over at https://vapor-wav.itch.io/automatown Currently, you can simulate any of the 256 elemantary cellular automata in a grid of a customizable size, where you can either set the grid manually, randomly or a mix of both. You can also look at four premade examples showcasing some cool stuff, that you can also change manually. If you don’t know about cellular automatas and this all seems like gibberish to you, I highly encourage you to try these examples for yourself, it’s insanely simple and very cool. Making UI scale correctly in unity builds is annoying, so even though I fixed most of it, still if you don’t play in fullscreen you can’t see the very sides of the screen, I’ll work on fixing it. For now just press the fullscreen button in the bottom right of the screen. Also I changed the way I create the cells from a basic instanciate(block, position, rotation) to an object pool which I think halves the work done for making new cells, still takes a bit to load big grids (like 1000x1000). That’s pretty much it for this devlog, if you have a suggestion for a new feature or found a bug please do tell, and have fun with the program!
devlog 3 - entering the second dimension Conway’s Game of Life has entered automatown. You can simulate the game of life, move around, zoom in and out, proggress incrementally or continuously, and change the speed of the simulation. currently has one example as I don’t have more ideas, if you have a suggestion i’d welcome you to tell me about it. Also added zooming in and out for the other automaton, and letting you choose if the edges are ignored or if there will be edge wrapping. you can try it for yourself at https://vapor-wav.itch.io/automatown
devlog 4 - new lives The game of life brought all of his friends to the town - you can now simulate all life-likes! make self replicating petterns, rules where nothing can die, where everyone dies, you can go wild! Most people know only about the game of life but trust me, life-likes are incredible, complex and beutiful, and there are hundreds of thousands of them. also slightly improved the code for detecting clicks on empty/live cells you can play around with the program over at https://vapor-wav.itch.io/automatown next I will probably add either Langton’s ant or Wireworld, stay tuned for that.
devlog 5 - building more neighbourhoods You can now do something that I genuenly never saw, and seems to be rarely talked about - you can manually set the CA’s neighbourhood! make ’em smaller, bigger, zig-zaggy, outer-only, whatever you want! and you add to that any rule set you want, meaning you can now make 1,099,511,627,776 different CAs. as always you can check it out at https://vapor-wav.itch.io/automatown
devlog 6 - Colors! Electicity! (qol!) The town got expanded into the multiple-state territory, adding WireWorld! with this CA you can very effectively simulate electrical circuits, logic gates and all of that jazz. Also added ui so the user can more easily: See the controls Get back to the main menu
devlog 7 - Added explanations! + a call for help added five small introductions, one to explain cellular automata in general, and 4 for the specific automata you can simulate in automatown, complete with fun facts and some insight on the examples. Hopefully the game can now be used by people enitrely unknowing of cellular automata and help them understand them and learn to love them. now, the last thing I do before shipping it, I’m asking YOU, the good people of stardance, to help give me feedback. I want this to actually be informative, and I made this project because I thought it would be fun to make the more technical side of things so I’m not confident this more user-oriented part turned out well. Please, if you can spend like 10 minutes to look at automatown and comment here (or dm me in discord-guy729/slack-guydryzun) what you think it would be of great.
devlog 8 - A try at visual improvement This is the first and probably last devlog after the first ship. The feedback was pretty positive, so thatnks to everyone who wrote a nice review! still, there were some problems. The two main problems were the horrendous ui and the itch page not showing everything when not in fullscreen. I’ll start with the latter - I fully knew about this before shipping and have already did all I could think of to solve this, I genuinely have no idea why it’s like that, sorry. Now for the ui - I tried. I really did, I just don’t have that in me, so the game still doesn’t look great, but better than before. I will say, I added a something I think is very cute for the game’s title, no spoilers though. I also fixed a few minor bugs and veeery slightly improved the experience, but not anything big. There are still some bugs, but I have a lot of other projects I need to focus on plus I’m pretty happy with automatown as it stands, so this is most likely the last devlog and ship.
Ships:
Automatown is a sort of simulation game all about cellular automata. Made for fans and new-comers alike, automatown has a wide range of simulations for automata small and simple to big and complex, but also has explanations of everything on offer to make sure everyone can learn and have fun, even containing example automata / grids so you can easily see the mst important stuff. On a more technical note, this is my first simulation game so while I put some effort in making it smooth, the optimization can be a bit iffy, but not to a level that should really negatively affect most people’s playthroughs. The game is very much lacking sound effects and graphics, but I am mainly interested in making the actual simulation part, so it will come in due time, just might take a bit.
Uhhhmmmm same as last ship just with slightly better visual stuff. Idk just read the last ship’s message....
|
1792979685.9066656
|
1793066085.9066656
|
|
54651
|
Warren’s Sci-Fi & Pop Culture Archive by @PXLS Warren’s Sci-Fi & Pop Culture Archive by @PXLS | Stardance...
|
PXLS
|
2
|
33.0
|
341
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-14T14:16:54Z", "hours": 3.0, "multiplier": 5.17, "payout": 15, "blessing": "neutral", "text": "I made some updates to Warren’s Sci-Fi and Pop-Culture Archive, such as changing the background and adding a new font. My goal was to enhance the Frutiger Aero aesthetic, which fits much better with the new design. Overall, the project combines music, movies, sci-fi, and plenty of Easter eggs. Hope you guys enjoy it!", "repo": "https://github.com/PXLS-png/stardance-archive", "demo": "https://pxls-png.github.io/stardance-archive/"}, {"ship_num": 2, "ts": "2026-10-09T13:10:53Z", "hours": 30.0, "multiplier": 10.91, "payout": 326, "blessing": "neutral", "text": "“For every action, there’s a reaction.” That’s a line from Life is Strange, and honestly it’s the best way to describe how this project started: one obsession led to another, and somehow I ended up building a whole website about it. Over the last few months, I’ve been working on a project that truly fascinates me: Warren’s Sci-Fi & Pop Culture Archive. My main source of inspiration was my love for the video game Life is Strange, which contains a character, Warren, who is totally obsessed with sci-fi and science. That made me wonder: how could I create a website that combines movies with in-game references, a cool aesthetic, and easter eggs? In the end, this aspiration turned into the archive I’m proud to present. This is my first project for Hack Club, and even though I ran into a few bugs, especially with the timezone logic, I’m glad I made it this far. Feel free to test my project on desktop or mobile, just open the webpage!", "repo": "https://github.com/PXLS-png/stardance-archive", "demo": "https://pxls-png.github.io/stardance-archive/"}]...
|
[{"post_id": 78427, "ts": "202 [{"post_id": 78427, "ts": "2026-10-10T19:38:24Z", "hours": 2.9583, "text": "Hey, today I rewrote README with project background and credits, rewrote description and declaration, deleted and rewrote code sections, added a background image with license attribution (Public Domain Mark 1.0) and a new font that fits the Frutiger Aero aesthetic better. I also added a Curator’s Note in the code documenting the manual curation process for the 400+ movie list, cleaned up text, code and added a full legal disclaimer, and updated the screenshot link in README"}, {"post_id": 78064, "ts": "2026-10-09T12:51:02Z", "hours": 7.6728, "text": "Over the last few days, I’ve been working on the final version of the archive. I looked for duplicates in the movie list, did some debugging, made my repo public, tested the live URL, deleted some movies, cleaned up the code, made the top 5 cards keyboard-accessible, and tested the website on different browsers and devices. I also finished the README, checked for typos, checked the movie selection logic, activated GitHub Pages, refined some features, added easter eggs, added comments, and made sure the favicon works. I think I’m ready to ship!"}, {"post_id": 71914, "ts": "2026-09-21T19:19:09Z", "hours": 8.5761, "text": "Hey guys! This is gonna be a lot, because I had to lock in and the Stardance Challenge is slowly coming to an end. Here’s what I’ve been working on: -I created a “Warren’s Top 5 Picks” section consisting of glossy movie cards that open the IMDb page of the movie it’s about when clicked -I did some research on in game quotes from various characters with movie and/or pop culture references and added quotes to the movies that matched them. -In the end, I chose the following 5 movies: Planet of the Apes, LOTR, Blade Runner, Back to the Future, Twilight -I made sure that every card has a real IMDb link that opens in a brand new tab -I created “The Dual Clock” which is basically a glassy clock widget in the bottom-right corner with two timelines -Warren’s time (Oregon) and the user’s time (wherever you are) -I thought of this as a small nod to the time-travel theme of the game -I made sure that it updates every second -I created “The Eclipse Easter Egg” -Now this is one of my favorite features, consisting of an animated eclipse that only appears on October 8th (the day it happens in game in the end of Episode 2) -The Moon slides across the sun in an 8-second loop -If you click it you’ll be directed to a window with a Warren quote (quite literally what he says when he sees the eclipse before the episode ends) and a YouTube link to the song that was playing during that scene -After some debugging this works seamlessly now! -I cleaned up my repo and deleted my old messy prototype file -I added a disclaimer in the top-left (fan-project, all rights to Dontnod/Square Enix) -I added more movies (for the huge list the “Movie of the Day” is randomly chosen from) -Pushed to git ofc -Fixed some CSS typos If you read all of this, thanks for sticking around :) That’s it for now!"}, {"post_id": 63155, "ts": "2026-09-06T20:05:29Z", "hours": 2.7878, "text": "Hey guys! Here’s what I’ve been working on: -Built an Easter Egg that reveals secret messages (see down below) -Tested and polished the Easter egg -Debugged and fixed typos -Fixed heading readability (white font on a white background wasn’t my brightest idea, quite literally) -Added glass reflections -Added Aero window controls -Added a top glass glow -Adjusted shadows -Cleaned up my code That’s it for now :)"}, {"post_id": 61792, "ts": "2026-09-04T21:27:41Z", "hours": 1.3478, "text": "Unfortunately, I was kinda busy over the last few days, but here’s a quick update: I’ve been adding more movies to the Movie of The Day section! Here’s a sneak peek at the latest additions:"}, {"post_id": 59806, "ts": "2026-09-01T19:10:28Z", "hours": 3.5353, "text": "Hey guys! Quick update about the project! Since my last devlog, I’ve been working on the following: -Enhancing the Frutiger Aero style -Finishing the Movie of the Day movie list -Adding release years to the movies -Making the Movie of the Day change every 24h based on Pacific Time (since the game it’s inspired by takes place in OR) -Adding a well-hidden Easter egg -Making floating bubbles interactive + a pop effect anytime the bubbles are clicked! That’s all for today :)"}, {"post_id": 56857, "ts": "2026-08-28T20:18:24Z", "hours": 2.0628, "text": "Okay… my second devlog, and I somewhat changed the plan. Lol. While working on the website, I realized it became way more complicated than I initially expected, and seemed to drift away from my original design and the project I genuinely wanted to create. Since the vibe felt off, but I wanted the core idea to stay, I aimed for something more whimsical, nostalgic, playful, and fun. You might’ve guessed it, yes, I’m moving toward a Frutiger Aero-inspired look, and this definitely increased my overall fun and excitement about the project! Today, I mainly redesigned the front page (pic attached below)! Stay tuned for the next update :)"}, {"post_id": 56192, "ts": "2026-08-27T20:44:36Z", "hours": 3.9069, "text": "Welcome to my first devlog! I’ve been working on Warrens Sci-Fi & Pop Culture Archive, a project inspired by the Life is Strange character Warren Graham! I’ve recently added an interactive flash drive interface, an animated spiral loading screen with interesting (and random) science facts, and my first classic movie to the collection: Planet of the Apes. I’ve also added metadata and fan-made review notes written from his POV, along with a pixel-art grid system. Ironically, for someone named PXLS, the pixel-art grid isn’t looking quite right yet. I’m planning to fix that issue soon!"}]...
|
Title: Warren’s Sci-Fi & Pop Culture Archive b Title: Warren’s Sci-Fi & Pop Culture Archive by @PXLS | Stardance
Devlogs:
Welcome to my first devlog! I’ve been working on Warrens Sci-Fi & Pop Culture Archive, a project inspired by the Life is Strange character Warren Graham! I’ve recently added an interactive flash drive interface, an animated spiral loading screen with interesting (and random) science facts, and my first classic movie to the collection: Planet of the Apes. I’ve also added metadata and fan-made review notes written from his POV, along with a pixel-art grid system. Ironically, for someone named PXLS, the pixel-art grid isn’t looking quite right yet. I’m planning to fix that issue soon!
Okay… my second devlog, and I somewhat changed the plan. Lol. While working on the website, I realized it became way more complicated than I initially expected, and seemed to drift away from my original design and the project I genuinely wanted to create. Since the vibe felt off, but I wanted the core idea to stay, I aimed for something more whimsical, nostalgic, playful, and fun. You might’ve guessed it, yes, I’m moving toward a Frutiger Aero-inspired look, and this definitely increased my overall fun and excitement about the project! Today, I mainly redesigned the front page (pic attached below)! Stay tuned for the next update :)
Hey guys! Quick update about the project! Since my last devlog, I’ve been working on the following: -Enhancing the Frutiger Aero style -Finishing the Movie of the Day movie list -Adding release years to the movies -Making the Movie of the Day change every 24h based on Pacific Time (since the game it’s inspired by takes place in OR) -Adding a well-hidden Easter egg -Making floating bubbles interactive + a pop effect anytime the bubbles are clicked! That’s all for today :)
Unfortunately, I was kinda busy over the last few days, but here’s a quick update: I’ve been adding more movies to the Movie of The Day section! Here’s a sneak peek at the latest additions:
Hey guys! Here’s what I’ve been working on: -Built an Easter Egg that reveals secret messages (see down below) -Tested and polished the Easter egg -Debugged and fixed typos -Fixed heading readability (white font on a white background wasn’t my brightest idea, quite literally) -Added glass reflections -Added Aero window controls -Added a top glass glow -Adjusted shadows -Cleaned up my code That’s it for now :)
Hey guys! This is gonna be a lot, because I had to lock in and the Stardance Challenge is slowly coming to an end. Here’s what I’ve been working on: -I created a “Warren’s Top 5 Picks” section consisting of glossy movie cards that open the IMDb page of the movie it’s about when clicked -I did some research on in game quotes from various characters with movie and/or pop culture references and added quotes to the movies that matched them. -In the end, I chose the following 5 movies: Planet of the Apes, LOTR, Blade Runner, Back to the Future, Twilight -I made sure that every card has a real IMDb link that opens in a brand new tab -I created “The Dual Clock” which is basically a glassy clock widget in the bottom-right corner with two timelines -Warren’s time (Oregon) and the user’s time (wherever you are) -I thought of this as a small nod to the time-travel theme of the game -I made sure that it updates every second -I created “The Eclipse Easter Egg” -Now this is one of my favorite features, consisting of an animated eclipse that only appears on October 8th (the day it happens in game in the end of Episode 2) -The Moon slides across the sun in an 8-second loop -If you click it you’ll be directed to a window with a Warren quote (quite literally what he says when he sees the eclipse before the episode ends) and a YouTube link to the song that was playing during that scene -After some debugging this works seamlessly now! -I cleaned up my repo and deleted my old messy prototype file -I added a disclaimer in the top-left (fan-project, all rights to Dontnod/Square Enix) -I added more movies (for the huge list the “Movie of the Day” is randomly chosen from) -Pushed to git ofc -Fixed some CSS typos If you read all of this, thanks for sticking around :) That’s it for now!
Over the last few days, I’ve been working on the final version of the archive. I looked for duplicates in the movie list, did some debugging, made my repo public, tested the live URL, deleted some movies, cleaned up the code, made the top 5 cards keyboard-accessible, and tested the website on different browsers and devices. I also finished the README, checked for typos, checked the movie selection logic, activated GitHub Pages, refined some features, added easter eggs, added comments, and made sure the favicon works. I think I’m ready to ship!
Hey, today I rewrote README with project background and credits, rewrote description and declaration, deleted and rewrote code sections, added a background image with license attribution (Public Domain Mark 1.0) and a new font that fits the Frutiger Aero aesthetic better. I also added a Curator’s Note in the code documenting the manual curation process for the 400+ movie list, cleaned up text, code and added a full legal disclaimer, and updated the screenshot link in README
Ships:
“For every action, there’s a reaction.” That’s a line from Life is Strange, and honestly it’s the best way to describe how this project started: one obsession led to another, and somehow I ended up building a whole website about it. Over the last few months, I’ve been working on a project that truly fascinates me: Warren’s Sci-Fi & Pop Culture Archive. My main source of inspiration was my love for the video game Life is Strange, which contains a character, Warren, who is totally obsessed with sci-fi and science. That made me wonder: how could I create a website that combines movies with in-game references, a cool aesthetic, and easter eggs? In the end, this aspiration turned into the archive I’m proud to present. This is my first project for Hack Club, and even though I ran into a few bugs, especially with the timezone logic, I’m glad I made it this far. Feel free to test my project on desktop or mobile, just open the webpage!
I made some updates to Warren’s Sci-Fi and Pop-Culture Archive, such as changing the background and adding a new font. My goal was to enhance the Frutiger Aero aesthetic, which fits much better with the new design. Overall, the project combines music, movies, sci-fi, and plenty of Easter eggs. Hope you guys enjoy it!...
|
1793008208.9623168
|
1793094608.9623168
|
|
27985
|
Math Minds Pro by @TheBuildplateBrain | Stardance
|
TheBuildplateBrain
|
1
|
20.0
|
340
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T00:56:11Z", "hours": 20.0, "multiplier": 16.62, "payout": 340, "blessing": "neutral", "text": "My app, Math Minds Pro, teaches users tricks that allow for complex mental calculations. You can test this app by clicking on the link below, which will take you to a web app. As this was my first big Flutter project, I faced a lot of difficulty in properly using the simulator and navigating all the files that I had in my project. However, I’m really proud of my final result, and I’m going to keep updating this app as I learn more math tricks and think of new features!", "repo": "https://github.com/AagamShah30/mental_math_app", "demo": "https://aagamshah30.github.io/mental_math_app/"}]...
|
[{"post_id": 23193, "ts": "202 [{"post_id": 23193, "ts": "2026-07-06T00:47:25Z", "hours": 6.0633, "text": "I have finalized the first version of this app! I’m going to ship it now. In the last 6 hours I added a detailed README, web testing link, more tutorials, and a ton of small fixes that should improve the quality of the app. After I ship the project, I’ll consider working on more levels and courses."}, {"post_id": 22882, "ts": "2026-07-05T14:45:37Z", "hours": 4.4581, "text": "Devlog #4: Appearances and tutorials! That was a long 4 hours! I spent a lot of time trying to fix any problems with how my app looked, because I realized that it would be a lot more painful to fix them after I finished every single tutorial. I’m planning to ship this project after I finish the multiplication course, and release more courses in later updates. That being said, I still have a lot more work to do! I also added another tutorial and introduced some logic so that my app could make problems that are “easy” and “difficult”."}, {"post_id": 20867, "ts": "2026-07-02T16:15:28Z", "hours": 7.1344, "text": "Can you solve 43 x 11 in less than 3 seconds? Devlog #3: Levels! I added a bunch of new features: Level map screen: Orbs light up different colors when a level is unlocked. The colors will symbolize different quests, such as blue for tutorials or orange for drills. Interactive tutorial screen with drag and drop numbers. So far, I made one tutorial, on how to quickly multiply by eleven. The answer is 473, by the way… Upgraded game screen! The game now tracks your points and uses Latex for nice math formatting. Data is now stored to a user’s phone! And for developers, you can reset the data using a button to test level functionality! Next, I’m probably going to focus on building more tutorials and connecting them to the right orbs. If you know any math tricks, comment them and I’ll add them to the app!"}, {"post_id": 18851, "ts": "2026-06-30T01:40:15Z", "hours": 2.2564, "text": "I began work on the actual gameplay of the app! I created a new game screen and a list of courses that a user can choose from (although they all lead to the same thing for now…). I took some time to work on the game screen’s logic so I that values won’t have to be hard-coded in the future. Next, I’m hoping to start work on the courses themselves. I want to create a really intuitive and appealing interface."}, {"post_id": 18416, "ts": "2026-06-29T15:47:22Z", "hours": 0.5675, "text": "Hey everyone, this is Math Minds Pro, my first big Flutter Project. This app will be a tool that anyone can use to learn impressive math tricks. So far, I created a basic homescreen with light and dark mode and I am currently working on the tutorials. Please let me know if you have any advice!"}]...
|
Title: Math Minds Pro by @TheBuildplateBrain | Sta Title: Math Minds Pro by @TheBuildplateBrain | Stardance
Devlogs:
Hey everyone, this is Math Minds Pro, my first big Flutter Project. This app will be a tool that anyone can use to learn impressive math tricks. So far, I created a basic homescreen with light and dark mode and I am currently working on the tutorials. Please let me know if you have any advice!
I began work on the actual gameplay of the app! I created a new game screen and a list of courses that a user can choose from (although they all lead to the same thing for now…). I took some time to work on the game screen’s logic so I that values won’t have to be hard-coded in the future. Next, I’m hoping to start work on the courses themselves. I want to create a really intuitive and appealing interface.
Can you solve 43 x 11 in less than 3 seconds? Devlog #3: Levels! I added a bunch of new features: Level map screen: Orbs light up different colors when a level is unlocked. The colors will symbolize different quests, such as blue for tutorials or orange for drills. Interactive tutorial screen with drag and drop numbers. So far, I made one tutorial, on how to quickly multiply by eleven. The answer is 473, by the way… Upgraded game screen! The game now tracks your points and uses Latex for nice math formatting. Data is now stored to a user’s phone! And for developers, you can reset the data using a button to test level functionality! Next, I’m probably going to focus on building more tutorials and connecting them to the right orbs. If you know any math tricks, comment them and I’ll add them to the app!
Devlog #4: Appearances and tutorials! That was a long 4 hours! I spent a lot of time trying to fix any problems with how my app looked, because I realized that it would be a lot more painful to fix them after I finished every single tutorial. I’m planning to ship this project after I finish the multiplication course, and release more courses in later updates. That being said, I still have a lot more work to do! I also added another tutorial and introduced some logic so that my app could make problems that are “easy” and “difficult”.
I have finalized the first version of this app! I’m going to ship it now. In the last 6 hours I added a detailed README, web testing link, more tutorials, and a ton of small fixes that should improve the quality of the app. After I ship the project, I’ll consider working on more levels and courses.
Ships:
My app, Math Minds Pro, teaches users tricks that allow for complex mental calculations. You can test this app by clicking on the link below, which will take you to a web app. As this was my first big Flutter project, I faced a lot of difficulty in properly using the simulator and navigating all the files that I had in my project. However, I’m really proud of my final result, and I’m going to keep updating this app as I learn more math tricks and think of new features!...
|
1792975716.4319158
|
1793062116.4319158
|
|
34038
|
journeys by @folsense | Stardance
|
folsense
|
1
|
29.26
|
339
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-26T15:06:42Z", "hours": 29.0, "multiplier": 11.58, "payout": 339, "blessing": "neutral", "text": "I made a focus timer app that gives you the vibe of being on a train! Each session is a journey (hence the name) and you can create a streak and accrue miles over time. Each subject / area of focus is a RailPass, and you can level up each one individually. The app also supports live activities, so you can leave it to run in the background and just check up on it from the lock screen. I made this for myself to help me with the coming exam season, but hopefully i can get the app store grant to help other people who might need a good free focus timer app :)", "repo": "https://github.com/ssamx3/journeys", "demo": "https://testflight.apple.com/join/NtQ6RRwq"}]...
|
[{"post_id": 37670, "ts": "202 [{"post_id": 37670, "ts": "2026-07-30T15:51:16Z", "hours": 0.2589, "text": "a few more bug fixes that have evaded me for too long have finally been quashed…. and old functions were deleted and the code cleaned up!"}, {"post_id": 35132, "ts": "2026-07-26T11:37:58Z", "hours": 0.8169, "text": "bug FIXING"}, {"post_id": 34066, "ts": "2026-07-24T15:01:48Z", "hours": 0.7428, "text": "debugging and stuffs"}, {"post_id": 33712, "ts": "2026-07-23T20:51:31Z", "hours": 7.0553, "text": "big ui and features update! finished ticket flow, finished focus timer view, finished live activity, finished the home screen nearly, just adding polish and fixing bugs now"}, {"post_id": 32480, "ts": "2026-07-21T18:06:07Z", "hours": 4.9042, "text": "finished some more ui… you can now look at your passes and create new ones and customise them yay! also now works on macos"}, {"post_id": 31490, "ts": "2026-07-19T22:08:43Z", "hours": 7.45, "text": "home screen done (i think) woah this took so long! you can now customise your passes to make cool designs too :)"}, {"post_id": 30349, "ts": "2026-07-17T20:27:29Z", "hours": 1.9003, "text": "Pretty much finished implementing the map view but i kinda hate it and am contemplating going a different direction…. lemme know what yall think"}, {"post_id": 29791, "ts": "2026-07-16T22:07:15Z", "hours": 1.3611, "text": "began implementing the train map view! still some bugs to iron out but its getting better :)"}, {"post_id": 29104, "ts": "2026-07-15T19:20:04Z", "hours": 2.5858, "text": "backend DONE (for now..)! time to move on to the front end! yay :D"}, {"post_id": 27282, "ts": "2026-07-12T18:39:53Z", "hours": 2.4108, "text": "began working on the backend for the app … tedious"}]...
|
Title: journeys by @folsense | Stardance
Devlogs: Title: journeys by @folsense | Stardance
Devlogs:
began working on the backend for the app … tedious
backend DONE (for now..)! time to move on to the front end! yay :D
began implementing the train map view! still some bugs to iron out but its getting better :)
Pretty much finished implementing the map view but i kinda hate it and am contemplating going a different direction…. lemme know what yall think
home screen done (i think) woah this took so long! you can now customise your passes to make cool designs too :)
finished some more ui… you can now look at your passes and create new ones and customise them yay! also now works on macos
big ui and features update! finished ticket flow, finished focus timer view, finished live activity, finished the home screen nearly, just adding polish and fixing bugs now
debugging and stuffs
bug FIXING
a few more bug fixes that have evaded me for too long have finally been quashed…. and old functions were deleted and the code cleaned up!
Ships:
I made a focus timer app that gives you the vibe of being on a train! Each session is a journey (hence the name) and you can create a streak and accrue miles over time. Each subject / area of focus is a RailPass, and you can level up each one individually. The app also supports live activities, so you can leave it to run in the background and just check up on it from the lock screen. I made this for myself to help me with the coming exam season, but hopefully i can get the app store grant to help other people who might need a good free focus timer app :)...
|
1792986519.0206802
|
1793072919.0206802
|
|
38366
|
PyFi by @Choc0latesauce | Stardance
|
Choc0latesauce
|
1
|
23.0
|
339
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T21:33:25Z", "hours": 23.0, "multiplier": 14.54, "payout": 339, "blessing": "neutral", "text": "I want to preface this with the fact that I am so grateful for this community and what it does for getting kids into stem, I wish I knew about hack club earlier! Thank you so much for bothering to read this too reviewers! This is my first ever mega project, it took a lot of reading, learning, trial and error and many, many hours troubleshooting. But the end result is something I’m genuinely proud of, actually use and want to show to the world! So here’s the description I cooked up: The Pitch: Do you like listening to music? - Most likely. Are you fed up with money hungry billionaires pilfering your wallet in order for you to listen to your tracks in an accessible way? - Most Likely. Do you want to actually OWN your music but not have to faff around with awful UI and/or optical media? - Most Likely… Then you need PyFi! My Spotify or Apple Music esque mp3 player that allows you to listen to your music and actually own it all while having a sleek and intuitive user and familiar interface and is chocked full of useful features. The Features: 📱 Intuitive & customisable UI - Anything as long as it’s blue, red, yellow, pink, green, purple or turquoise! ♾️ Infinite upload potential - Upload single song or whole albums in one go, all of which are cataloged by the: 🖼️ PyFi meta ripper™ - Pulls album info, artist info and thumbnails from your tracks in order to organise them automatically. 🔀 Shuffle - Pretty self explanatory, shuffles songs innit… 🔁 Song looper - Loops songs! 🔊 Volume slider - Easy In-App audio control 🎼 Current playlist viewer - Allows you to see upcoming songs and reorder them by dragging them 📌 Pin window - Pin the window ontop of others which goes well with: 🪟 Scalable window - Have as much or as little info as you want, go from a full Spotify like view to a minimal one - more later. 📚 Library view - View your uploaded albums in an easy format and load their tracks or play your custom playlist made using: 💖 The favourite button - Favourite your songs in order to add them to a custom playlist that you can use at any point. 🎵 EQ mode - Wanna change how your music sounds? Choose from 20 custom EQ presets. 💾 Persistence - PyFi makes use of .json files in order to save your settings and media between sessions. 🗄️ External storage support - Allows you to use external storage including USB sticks and NAS servers, saving between disconnects. 🌐 Multi Language support - Almost full translations of both Spanish and Swedish", "repo": "https://github.com/Choc0latesauce/PyFi", "demo": "https://github.com/Choc0latesauce/PyFi/releases"}]...
|
[{"post_id": 65608, "ts": "202 [{"post_id": 65608, "ts": "2026-09-10T20:58:24Z", "hours": 0.6931, "text": "Wait? That wasn’t the final devlog?!?! 😱 I fixed a couple of last minute bugs and worked on multiple ways for you to download and use PyFi! IT’S ABOUT TO RELEASE OMG I’M SO EXCITED Don’t really have an image so here’s a blahaj"}, {"post_id": 65258, "ts": "2026-09-10T08:11:57Z", "hours": 3.7553, "text": "The final update!!! So what’s new? I have massively optimised PyFi, speeding up initial launch times and preventing crashes. fully implemented the favourite tracks function so a user can easily make a custom playlist. Which ties into the album viewer, allowing the user to view their uploaded albums, select and play them specifically or play their favourite / all tracks. All of which is saved to a .json file making it persistent between app launches. I’m very very happy that PyFi is now complete and I’m very excited to see what you guys think! Known bugs?!? -> A couple of the Ui elements haven’t been translated, this will come in a later update as I pride myself on having actual human translators, but at the same time I’m kinda rushing to get this out lol."}, {"post_id": 62904, "ts": "2026-09-06T13:17:35Z", "hours": 6.0633, "text": "After A long hiatus I have produced the biggest update to PyFi so far! Coming with ui improvements, dynamic song location saving and persistence (allowing it to read songs from a network drive or USB stick, etc, and saves the locations in such a way that at any point in the future you can reconnect the storage and it will auto load the songs again), the framework for album creation and viewing, language improvements and refinement as well as the ability to drag songs to reorder them in the playlist viewer plus a bunch of other stuff I did a while ago that I quite frankly, cannot remember lol. I’m very excited as PyFi is almost feature complete!"}, {"post_id": 50476, "ts": "2026-08-19T17:17:57Z", "hours": 3.9461, "text": "Absolutely gargantuan update today! First of all, I fixed formatting and text for the labels and volume slider. Fixed a few bugs surrounding the album art being displayed. Added in a playlist viewer like Spotify and such which displays the tracks, album art and artists. I added a settings json file that PyFi saves to in order to save all of your settings to in order to make them persistent between sessions. Another feature / happy coincidence, Pyfi is compatible with Network Attached Storage, being able to pull and do playback from one. I want to add the ability for song locations to be saved between sessions so you don’t have to upload the songs every time you launch, fixed the formatting of album art, make it so the playlist viewer actually tells you what track is selected and a full album uploader / viewer incorporating the Favourite button."}, {"post_id": 48413, "ts": "2026-08-16T19:06:41Z", "hours": 3.7608, "text": "A big update this time! While this isn’t the best example, PyFi is now able to pull album art from mp3s and other such formats and display it like Spotify or Apple Music. I have also added various other new features such as the ability to change the Ui language within PyFi to English, Spanish, French, Hungarian or Swedish currently supported and translated accurately (not by translate!). The user is now able to select from a wide range of Ui colour options to style PyFi to their liking with font styles possibly being an option in the future. I have also added support for EQ settings and presets, allowing the user to select from a wide range of options such as Classical, Techno, Bass boost and many, many more to customise their listening experience to their exact preference. A minor change but I have changed the next and previous buttons to be icons until you hover over them, at which point they display text telling the user what the button does. Finally and most importantly I have added a playback scrubber and playtime, allowing users to select specific parts of their songs to listen to and track how long is left."}, {"post_id": 46587, "ts": "2026-08-13T22:29:51Z", "hours": 1.0794, "text": "PyFi now actually plays audio files! Using vlc as a framework, the user is able to provide an audio file (of almost any variety) and PyFi can play it back, even with a functional volume slider."}, {"post_id": 46540, "ts": "2026-08-13T20:46:01Z", "hours": 2.8436, "text": "Improving on ui design and scalability, including adding support for a dynamic amount of frames and window sizes. Improved the outputs from the buttons and tickboxes and buttons as well as making it so the play/pause button actually changes text whenever you click it to represent what it will do. I also added in window pinning functionality that allows the user to pin PyFi above all of their other apps easily and unpin it all the same."}, {"post_id": 35287, "ts": "2026-07-26T16:25:21Z", "hours": 1.1694, "text": "I am creating a python based music and mp3 listening software that is a from the ground up remake of a basic mp3 player I made a year or 2 ago with increased functionality and an updated, modern UI. Here I am practicing and blocking out the UI with customtkinter, something that I have never used before (I used pygame for the last one) but am finding very intuitive and useful. I am able to add check boxes and buttons that can have custom outputs as shown in the terminal, I can’t wait to do more! The UI also scales perfectly to any resolution and window size, something I learnt was very important from my first html project lol"}]...
|
Title: PyFi by @Choc0latesauce | Stardance
Devlog Title: PyFi by @Choc0latesauce | Stardance
Devlogs:
I am creating a python based music and mp3 listening software that is a from the ground up remake of a basic mp3 player I made a year or 2 ago with increased functionality and an updated, modern UI. Here I am practicing and blocking out the UI with customtkinter, something that I have never used before (I used pygame for the last one) but am finding very intuitive and useful. I am able to add check boxes and buttons that can have custom outputs as shown in the terminal, I can’t wait to do more! The UI also scales perfectly to any resolution and window size, something I learnt was very important from my first html project lol
Improving on ui design and scalability, including adding support for a dynamic amount of frames and window sizes. Improved the outputs from the buttons and tickboxes and buttons as well as making it so the play/pause button actually changes text whenever you click it to represent what it will do. I also added in window pinning functionality that allows the user to pin PyFi above all of their other apps easily and unpin it all the same.
PyFi now actually plays audio files! Using vlc as a framework, the user is able to provide an audio file (of almost any variety) and PyFi can play it back, even with a functional volume slider.
A big update this time! While this isn’t the best example, PyFi is now able to pull album art from mp3s and other such formats and display it like Spotify or Apple Music. I have also added various other new features such as the ability to change the Ui language within PyFi to English, Spanish, French, Hungarian or Swedish currently supported and translated accurately (not by translate!). The user is now able to select from a wide range of Ui colour options to style PyFi to their liking with font styles possibly being an option in the future. I have also added support for EQ settings and presets, allowing the user to select from a wide range of options such as Classical, Techno, Bass boost and many, many more to customise their listening experience to their exact preference. A minor change but I have changed the next and previous buttons to be icons until you hover over them, at which point they display text telling the user what the button does. Finally and most importantly I have added a playback scrubber and playtime, allowing users to select specific parts of their songs to listen to and track how long is left.
Absolutely gargantuan update today! First of all, I fixed formatting and text for the labels and volume slider. Fixed a few bugs surrounding the album art being displayed. Added in a playlist viewer like Spotify and such which displays the tracks, album art and artists. I added a settings json file that PyFi saves to in order to save all of your settings to in order to make them persistent between sessions. Another feature / happy coincidence, Pyfi is compatible with Network Attached Storage, being able to pull and do playback from one. I want to add the ability for song locations to be saved between sessions so you don’t have to upload the songs every time you launch, fixed the formatting of album art, make it so the playlist viewer actually tells you what track is selected and a full album uploader / viewer incorporating the Favourite button.
After A long hiatus I have produced the biggest update to PyFi so far! Coming with ui improvements, dynamic song location saving and persistence (allowing it to read songs from a network drive or USB stick, etc, and saves the locations in such a way that at any point in the future you can reconnect the storage and it will auto load the songs again), the framework for album creation and viewing, language improvements and refinement as well as the ability to drag songs to reorder them in the playlist viewer plus a bunch of other stuff I did a while ago that I quite frankly, cannot remember lol. I’m very excited as PyFi is almost feature complete!
The final update!!! So what’s new? I have massively optimised PyFi, speeding up initial launch times and preventing crashes. fully implemented the favourite tracks function so a user can easily make a custom playlist. Which ties into the album viewer, allowing the user to view their uploaded albums, select and play them specifically or play their favourite / all tracks. All of which is saved to a .json file making it persistent between app launches. I’m very very happy that PyFi is now complete and I’m very excited to see what you guys think! Known bugs?!? -> A couple of the Ui elements haven’t been translated, this will come in a later update as I pride myself on having actual human translators, but at the same time I’m kinda rushing to get this out lol.
Wait? That wasn’t the final devlog?!?! 😱 I fixed a couple of last minute bugs and worked on multiple ways for you to download and use PyFi! IT’S ABOUT TO RELEASE OMG I’M SO EXCITED Don’t really have an image so here’s a blahaj
Ships:
I want to preface this with the fact that I am so grateful for this community and what it does for getting kids into stem, I wish I knew about hack club earlier! Thank you so much for bothering to read this too reviewers! This is my first ever mega project, it took a lot of reading, learning, trial and error and many, many hours troubleshooting. But the end result is something I’m genuinely proud of, actually use and want to show to the world! So here’s the description I cooked up: The Pitch: Do you like listening to music? - Most likely. Are you fed up with money hungry billionaires pilfering your wallet in order for you to listen to your tracks in an accessible way? - Most Likely. Do you want to actually OWN your music but not have to faff around with awful UI and/or optical media? - Most Likely… Then you need PyFi! My Spotify or Apple Music esque mp3 player that allows you to listen to your music and actually own it all while having a sleek and intuitive user and familiar interface and is chocked full of useful features. The Features: 📱 Intuitive & customisable UI - Anything as long as it’s blue, red, yellow, pink, green, purple or turquoise! ♾️ Infinite upload potential - Upload single song or whole albums in one go, all of which are cataloged by the: 🖼️ PyFi meta ripper™ - Pulls album info, artist info and thumbnails from your tracks in order to organise them automatically. 🔀 Shuffle - Pretty self explanatory, shuffles songs innit… 🔁 Song looper - Loops songs! 🔊 Volume slider - Easy In-App audio control 🎼 Current playlist viewer - Allows you to see upcoming songs and reorder them by dragging them 📌 Pin window - Pin the window ontop of others which goes well with: 🪟 Scalable window - Have as much or as little info as you want, go from a full Spotify like view to a minimal one - more later. 📚 Library view - View your uploaded albums in an easy format and load their tracks or play your custom playlist made using: 💖 The favourite button - Favourite your songs in order to add them to a custom playlist that you can use at any point. 🎵 EQ mode - Wanna change how your music sounds? Choose from 20 custom EQ presets. 💾 Persistence - PyFi makes use of .json files in order to save your settings and media between sessions. 🗄️ External storage support - Allows you to use external storage including USB sticks and NAS servers, saving between disconnects. 🌐 Multi Language support - Almost full translations of both Spanish and Swedish...
|
1793004621.6339855
|
1793091021.6339855
|
|
15446
|
zap by @bernardq | Stardance
|
bernardq
|
2
|
46.68
|
338
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-16T19:23:17Z", "hours": 24.0, "multiplier": 7.58, "payout": 182, "blessing": "neutral", "text": "So, I built a package manager in Python. The biggest challenge I experienced was organizing my code, debugging, and building complex features. I’m proud that it works, and I’m proud of all the time I spent coding it. My project documentation is on GitHub, which is the best place I have to write and maintain it. Zap can install, remove, and download packages without installing them, as well as update packages and perform other features. Try out my project, and if you want to add your projects to the Zap repository, contact me on Slack or GitHub. Thanks for Reading!", "repo": "https://github.com/Bkner3/zap", "demo": "https://github.com/Bkner3/zap/releases"}, {"ship_num": 2, "ts": "2026-07-11T21:53:33Z", "hours": 16.0, "multiplier": 9.85, "payout": 156, "blessing": "neutral", "text": "Hello everyone! My project is a package manager built entirely in Python. I challenged myself to create something simple for everyone—both for the people creating the repository and for those who will use it. I am really proud of myself for dedicating so much effort to this project. ⚠️ Project Status & Requirements Please note that this project is currently in Beta and some commands might not be fully functional or ready yet. System Requirements: Python 3.0 or higher is required. To run the project in script mode, you must install the following dependencies: requests, colorama, and tqdm. Current Limitations: The tools inside repo-tools (used for creating repositories) are currently disabled while they undergo updates. In the meantime, if you want to create a repository, you can use the example index provided in the GitHub README and simply replace the package and file names with your own. If you have any questions or run into issues, please feel free to open an issue or ask here on GitHub. I am more than happy to help!", "repo": "https://github.com/Bkner3/zap", "demo": "https://github.com/Bkner3/zap/releases"}]...
|
[{"post_id": 77160, "ts": "202 [{"post_id": 77160, "ts": "2026-10-05T20:41:48Z", "hours": 1.8519, "text": "Devlog #32 I’m tired of working on this, I try one thing and it doesn’t work I try another even worse but I’m working to launch the zap for linux I just don’t have test packages or packages to release if any wants to launch their package on the zap let me know."}, {"post_id": 76875, "ts": "2026-10-04T21:59:26Z", "hours": 1.7056, "text": "Devlog #31 After some time, I finally had time to work on ZAP again. Today I started fixing some bugs in ZAP, tested the installation script, and added the installation instructions to the README on the main page. ZAP is still in beta, and I know some things don’t work yet, but I want to sleep. I tested the installer on Debian-based systems, but I haven’t tested it on Arch, Alpine, or other obscure distros yet. My linux test PC specs are shown above, and the error is also shown above."}, {"post_id": 74178, "ts": "2026-09-26T21:04:57Z", "hours": 1.0075, "text": "#Devlog #30 Updating the zap web page for the new version."}, {"post_id": 73050, "ts": "2026-09-24T08:47:09Z", "hours": 0.6928, "text": "Devlog #29 Today I finally finished the Linux installation script!"}, {"post_id": 72864, "ts": "2026-09-23T21:50:36Z", "hours": 0.6369, "text": "Devlog #28 So today, I started writing the installation script for Linux. Sorry if I don’t give many updates school just started today!"}, {"post_id": 70055, "ts": "2026-09-18T11:18:17Z", "hours": 0.3489, "text": "Devlog #27 Today, I run zap on Linux and lost my sanity with the complexity of using Linux on an old PC and all the configuration. The hello test package will be available this afternoon. Thanks for reading!"}, {"post_id": 69672, "ts": "2026-09-17T15:29:16Z", "hours": 0.4408, "text": "Devlog #26 Today, I changed the code so that ZAP can have a Linux version. I spent an hour trying to install pip on my Linux PC, but I couldn’t get it to work. I switched to another PC, and now I’m going to test it."}, {"post_id": 69197, "ts": "2026-09-16T15:56:48Z", "hours": 3.8558, "text": "Devlog #25 Making small changes to the code in the past days to launch the version 0.7.0-beta."}, {"post_id": 66646, "ts": "2026-09-12T14:35:05Z", "hours": 0.7144, "text": "Devlog #24 Today, I made some small changes to the project. The next thing I’m going to add is a system to check whether the local index is outdated and update it if necessary."}, {"post_id": 66005, "ts": "2026-09-11T15:00:04Z", "hours": 0.9475, "text": "Devlog #23 Today, I correct a error in the launcher system code and I tried to create a 3 packages to show who it works but they don’t work."}, {"post_id": 65639, "ts": "2026-09-10T22:10:37Z", "hours": 3.4558, "text": "Devlog #22 Today, yesterday I added a function that checks if all packages / dependencies are in the list to be downloaded, also adding the author variable to the database, and some minor changes. Thanks for reading! 😊"}, {"post_id": 64327, "ts": "2026-09-08T16:48:39Z", "hours": 1.4808, "text": "Devlog #21 Updating the README so I can release version 0.7 tomorrow!"}, {"post_id": 63686, "ts": "2026-09-07T16:52:05Z", "hours": 1.5267, "text": "Devlog #20 Today, with the help of ChatGPT, I created the dependency system. The ZAP can now resolve package dependencies and find the correct versions required by each package. It can also handle multiple versions of the same dependency and create launchers with the required dependencies added to the PATH. This means different packages can use different versions of the same dependency without conflicts."}, {"post_id": 61833, "ts": "2026-09-04T22:52:52Z", "hours": 0.6039, "text": "Devlog #19 Today, with the help of ChatGPT, I created a system to check if a dependency’s version is compatible with the program. For example, if a dependency is specified as dependency@>=1.0.0 , the system will analyze the required version and check whether the available version is compatible."}, {"post_id": 58496, "ts": "2026-08-30T22:28:18Z", "hours": 1.8736, "text": "Devlog #18 Today, I added a new parameter to the database for dependencies, and I started working on the dependency system. I don’t know if I mentioned it in the previous devlog, but I also created the confirmation button. Thanks for reading! And if you want to launch your project on Zap, please contact me. Thanks for reading!"}, {"post_id": 54778, "ts": "2026-08-25T21:48:08Z", "hours": 1.4942, "text": "Devlog #17 Hello! Today I finally started working on the scary part of a package manager: dependencies ⛈️⛈️. Warning Today I only worked on the system that grabs the dependencies. The way dependencies will work is through the .cmd launchers stored in: C:/Users/Your_User/AppData/Local/Zap/sl Each package will have its own launcher, and that launcher will be responsible for setting up the environment required by that package. For example, imagine your program uses lib_a version 1.0 , while another program uses lib_a version 2.0 . Instead of putting everything in the same place and causing conflicts, each .cmd launcher will temporarily add the required dependencies to the PATH . This means that both versions can coexist without interfering with each other. Dependencies can also have their own dependencies. When one package depends on another package, its launcher can create its own environment with the dependencies it requires. This creates a kind of lightweight sandbox for each package. The goal is to keep dependencies isolated while keeping the system simple and transparent. This is definitely one of the more complicated parts of the package manager, but I’m finally starting to figure out the architecture. Warning This changes are not avaiable yet!"}, {"post_id": 51693, "ts": "2026-08-21T14:52:13Z", "hours": 2.9186, "text": "Devlog #16 Today, I changed the way you configure Zap. The example below shows how to hide the logo. Before: zap config hl Now: zap config set show_logo true Previously, you couldn’t view the configuration from the program. Now, zap config list shows the current configuration. Warning The configuration is currently only used to enable, disable, or change the logo and debug settings. I’m also finally using Python’s virtual environment to work on the project. These changes will be included in the next release. For now, they are available in the dev branch. And thank you to everyone who has checked out the project and given feedback. If anyone wants to publish their projects and make them available in the Zap repository, please leave a comment or try to contact me."}, {"post_id": 40270, "ts": "2026-08-03T18:11:13Z", "hours": 2.7706, "text": "Devlog #15 Today, I re-write the Readme, launch a release (v0.6.5-beta), I created a official repository and add a test package named hello."}, {"post_id": 32531, "ts": "2026-07-21T19:25:58Z", "hours": 0.7503, "text": "Devlog #14 Today I separated repo-tools from the Zap parser and started developing it in its own branch."}, {"post_id": 30730, "ts": "2026-07-18T15:33:21Z", "hours": 0.9061, "text": "Devlog #13 Adding the info commmad."}, {"post_id": 28369, "ts": "2026-07-14T16:15:58Z", "hours": 0.7253, "text": "adding a gitignore and deleting the repo-tools to start from zero."}, {"post_id": 26852, "ts": "2026-07-11T21:29:51Z", "hours": 1.3656, "text": "Devlog #11 - Now I added upgrades to the zap website but I down publish yet. Sorry for my robotic English."}, {"post_id": 26585, "ts": "2026-07-11T14:33:30Z", "hours": 2.1264, "text": "Devlog #10 Today I added the repo-remove command, which removes a repository URL from the index file. I also made some small improvements to the project’s directory structure."}, {"post_id": 24630, "ts": "2026-07-08T10:54:59Z", "hours": 1.2447, "text": "Devlog - 09 Today I added a base_url parameter to the index configuration, allowing the domain to be changed more easily without having to manually update all links. I also fixed issues in the Makefile that were causing broken executables with no output. Finally, I merged my work from the GitHub dev branch into the GitHub main branch."}, {"post_id": 22463, "ts": "2026-07-04T22:40:05Z", "hours": 1.1542, "text": "Devlog - 08 Starting to create an installation script and configure my VS Code for another computer."}, {"post_id": 17617, "ts": "2026-06-28T14:21:40Z", "hours": 1.2869, "text": "Devlog - 07 Today, I added an upgrade feature to update ZAP to the latest version. The code is untested because I have to return my school laptop and move everything over to my dad’s computer. I don’t know when I will be back to active development."}, {"post_id": 17010, "ts": "2026-06-27T16:37:05Z", "hours": 1.5008, "text": "Devlog - 06. Today I added a function to check if a package is compatible with the operating system where the program is running."}, {"post_id": 11987, "ts": "2026-06-19T15:47:52Z", "hours": 1.6478, "text": "Devlog - 05 Beginning of the creation of the repo-tools that will be used to create and edit an index."}, {"post_id": 11537, "ts": "2026-06-18T20:43:38Z", "hours": 0.5406, "text": "Devlog - 04 Today I added a SHA-256 integrity verification system. The package manager now generates and compares file hashes to validate downloaded files and prevent corrupted or modified packages from being installed."}, {"post_id": 9316, "ts": "2026-06-15T17:01:19Z", "hours": 1.1847, "text": "Devlog - 03 Today I created and finished the update command."}, {"post_id": 6876, "ts": "2026-06-11T15:04:47Z", "hours": 2.6628, "text": "Devlog - 02 Today I finished the logging system and started updating the README. What’s new: Complete activity logging README improvements and setup guide Next step: polishing the project documentation and create a better structure for the packages."}, {"post_id": 6340, "ts": "2026-06-10T17:51:33Z", "hours": 1.0964, "text": "Now I am implementing the log system."}]...
|
Title: zap by @bernardq | Stardance
Devlogs:
Now Title: zap by @bernardq | Stardance
Devlogs:
Now I am implementing the log system.
Devlog - 02 Today I finished the logging system and started updating the README. What’s new: Complete activity logging README improvements and setup guide Next step: polishing the project documentation and create a better structure for the packages.
Devlog - 03 Today I created and finished the update command.
Devlog - 04 Today I added a SHA-256 integrity verification system. The package manager now generates and compares file hashes to validate downloaded files and prevent corrupted or modified packages from being installed.
Devlog - 05 Beginning of the creation of the repo-tools that will be used to create and edit an index.
Devlog - 06. Today I added a function to check if a package is compatible with the operating system where the program is running.
Devlog - 07 Today, I added an upgrade feature to update ZAP to the latest version. The code is untested because I have to return my school laptop and move everything over to my dad’s computer. I don’t know when I will be back to active development.
Devlog - 08 Starting to create an installation script and configure my VS Code for another computer.
Devlog - 09 Today I added a base_url parameter to the index configuration, allowing the domain to be changed more easily without having to manually update all links. I also fixed issues in the Makefile that were causing broken executables with no output. Finally, I merged my work from the GitHub dev branch into the GitHub main branch.
Devlog #10 Today I added the repo-remove command, which removes a repository URL from the index file. I also made some small improvements to the project’s directory structure.
Devlog #11 - Now I added upgrades to the zap website but I down publish yet. Sorry for my robotic English.
adding a gitignore and deleting the repo-tools to start from zero.
Devlog #13 Adding the info commmad.
Devlog #14 Today I separated repo-tools from the Zap parser and started developing it in its own branch.
Devlog #15 Today, I re-write the Readme, launch a release (v0.6.5-beta), I created a official repository and add a test package named hello.
Devlog #16 Today, I changed the way you configure Zap. The example below shows how to hide the logo. Before: zap config hl Now: zap config set show_logo true Previously, you couldn’t view the configuration from the program. Now, zap config list shows the current configuration. Warning The configuration is currently only used to enable, disable, or change the logo and debug settings. I’m also finally using Python’s virtual environment to work on the project. These changes will be included in the next release. For now, they are available in the dev branch. And thank you to everyone who has checked out the project and given feedback. If anyone wants to publish their projects and make them available in the Zap repository, please leave a comment or try to contact me.
Devlog #17 Hello! Today I finally started working on the scary part of a package manager: dependencies ⛈️⛈️. Warning Today I only worked on the system that grabs the dependencies. The way dependencies will work is through the .cmd launchers stored in: C:/Users/Your_User/AppData/Local/Zap/sl Each package will have its own launcher, and that launcher will be responsible for setting up the environment required by that package. For example, imagine your program uses lib_a version 1.0 , while another program uses lib_a version 2.0 . Instead of putting everything in the same place and causing conflicts, each .cmd launcher will temporarily add the required dependencies to the PATH . This means that both versions can coexist without interfering with each other. Dependencies can also have their own dependencies. When one package depends on another package, its launcher can create its own environment with the dependencies it requires. This creates a kind of lightweight sandbox for each package. The goal is to keep dependencies isolated while keeping the system simple and transparent. This is definitely one of the more complicated parts of the package manager, but I’m finally starting to figure out the architecture. Warning This changes are not avaiable yet!
Devlog #18 Today, I added a new parameter to the database for dependencies, and I started working on the dependency system. I don’t know if I mentioned it in the previous devlog, but I also created the confirmation button. Thanks for reading! And if you want to launch your project on Zap, please contact me. Thanks for reading!
Devlog #19 Today, with the help of ChatGPT, I created a system to check if a dependency’s version is compatible with the program. For example, if a dependency is specified as dependency@>=1.0.0 , the system will analyze the required version and check whether the available version is compatible.
Devlog #20 Today, with the help of ChatGPT, I created the dependency system. The ZAP can now resolve package dependencies and find the correct versions required by each package. It can also handle multiple versions of the same dependency and create launchers with the required dependencies added to the PATH. This means different packages can use different versions of the same dependency without conflicts.
Devlog #21 Updating the README so I can release version 0.7 tomorrow!
Devlog #22 Today, yesterday I added a function that checks if all packages / dependencies are in the list to be downloaded, also adding the author variable to the database, and some minor changes. Thanks for reading! 😊
Devlog #23 Today, I correct a error in the launcher system code and I tried to create a 3 packages to show who it works but they don’t work.
Devlog #24 Today, I made some small changes to the project. The next thing I’m going to add is a system to check whether the local index is outdated and update it if necessary.
Devlog #25 Making small changes to the code in the past days to launch the version 0.7.0-beta.
Devlog #26 Today, I changed the code so that ZAP can have a Linux version. I spent an hour trying to install pip on my Linux PC, but I couldn’t get it to work. I switched to another PC, and now I’m going to test it.
Devlog #27 Today, I run zap on Linux and lost my sanity with the complexity of using Linux on an old PC and all the configuration. The hello test package will be available this afternoon. Thanks for reading!
Devlog #28 So today, I started writing the installation script for Linux. Sorry if I don’t give many updates school just started today!
Devlog #29 Today I finally finished the Linux installation script!
#Devlog #30 Updating the zap web page for the new version.
Devlog #31 After some time, I finally had time to work on ZAP again. Today I started fixing some bugs in ZAP, tested the installation script, and added the installation instructions to the README on the main page. ZAP is still in beta, and I know some things don’t work yet, but I want to sleep. I tested the installer on Debian-based systems, but I haven’t tested it on Arch, Alpine, or other obscure distros yet. My linux test PC specs are shown above, and the error is also shown above.
Devlog #32 I’m tired of working on this, I try one thing and it doesn’t work I try another even worse but I’m working to launch the zap for linux I just don’t have test packages or packages to release if any wants to launch their package on the zap let me know.
Ships:
Hello everyone! My project is a package manager built entirely in Python. I challenged myself to create something simple for everyone—both for the people creating the repository and for those who will use it. I am really proud of myself for dedicating so much effort to this project. ⚠️ Project Status & Requirements Please note that this project is currently in Beta and some commands might not be fully functional or ready yet. System Requirements: Python 3.0 or higher is required. To run the project in script mode, you must install the following dependencies: requests, colorama, and tqdm. Current Limitations: The tools inside repo-tools (used for creating repositories) are currently disabled while they undergo updates. In the meantime, if you want to create a repository, you can use the example index provided in the GitHub README and simply replace the package and file names with your own. If you have any questions or run into issues, please feel free to open an issue or ask here on GitHub. I am more than happy to help!
So, I built a package manager in Python. The biggest challenge I experienced was organizing my code, debugging, and building complex features. I’m proud that it works, and I’m proud of all the time I spent coding it. My project documentation is on GitHub, which is the best place I have to write and maintain it. Zap can install, remove, and download packages without installing them, as well as update packages and perform other features. Try out my project, and if you want to add your projects to the Zap repository, contact me on Slack or GitHub. Thanks for Reading!...
|
1792982989.2299278
|
1793069389.2299278
|
|
1250
|
MonkeyLogs538 by @OffsetMonkey538 | Stardance
|
OffsetMonkey538
|
1
|
21.0
|
337
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T11:14:33Z", "hours": 21.0, "multiplier": 15.96, "payout": 337, "blessing": "neutral", "text": "I was annoyed that people still upload plain log files in the support discord for my Minecraft mods, when I clearly say that using mclogs, a pastebin for minecraft logs with syntax highlighting and whatnot, makes debugging much easier. So I made a Discord bot to fix that! It detects logs sent as attachments by their name and uploads them to mclogs. It can also be added as a user application, which will allow using the /upload-logs command anywhere. This is my first full project written in Kotlin (previously I’ve only used it for Gradle buildscripts), so there were some initial challenges with Kotlin syntax for things like lambdas and also how instead of static functions you have companion objects, but Kotlin’s documentation is pretty good. What documentation wasn’t so good though was Kord, the library I used for interacting with the Discord API. It required quite a bit of guesswork to figure out how it works and should be used, the Discord API docs made it a bit easier though at least. I’ve set up a discord server with an instance of the bot running, which can be used to test it out. There are also self-hosting instructions on the readme.", "repo": "https://git.offsetmonkey538.top/OffsetMonkey538/MonkeyLogs538", "demo": "https://discord.gg/nBqpn2gBsK"}]...
|
[{"post_id": 7407, "ts": "2026 [{"post_id": 7407, "ts": "2026-06-12T10:36:43Z", "hours": 4.5442, "text": "Made it now packaged as a docker container, fixed some bugs and wrote a readme with instructions for self-hosting Also now have an instance of it running on my homelab"}, {"post_id": 6252, "ts": "2026-06-10T14:41:07Z", "hours": 7.0514, "text": "Some changes over the past few days: Multiple logs can be uploaded at once Http requests and json parsing now done with kotlin’s own libraries instead of java HttpClient and Jankson. Kotlin serialization stuff is actually pretty great! Errors aren’t silently ignored anymore and other logs added in the same batch can still be uploaded even when some fail. Much less readable code, kotlin is great for that"}, {"post_id": 3728, "ts": "2026-06-06T19:30:32Z", "hours": 2.8181, "text": "Log files will now automatically be detected (current filter is any file ending in .log ) and uploaded 🎉"}, {"post_id": 3497, "ts": "2026-06-06T13:45:01Z", "hours": 6.0436, "text": "I have now fully implemented the command for uploading a log. It now rejects binary files like images or videos, correctly reads when the file isn’t UTF8 formatted and allows deleting the uploaded log in case it was the wrong file or something. I’ve found that Kotlin is actually really nice. I especially like how it allows writing such unreadable code that I can’t understand it even 5 minutes after writing it I also spent an hour or so in termux on my phone (was bored on a bus) setting up an instance of mclogs on my homelab and the bot now allows setting a custom instance url as well. Next step will be having it detect sent log files and automatically upload them"}, {"post_id": 304, "ts": "2026-06-01T15:44:43Z", "hours": 0.6719, "text": "I really liked the nullability stuff Kotlin has when I was writing a multiloader/version convention plugin for my mods, so I decided to use Kotlin to get more familiar with it in general usage. I saw someone talking about the Kord library a while back, so I went with that. Safe to say that I’m still quite unfamiliar with Kotlin’s syntax (using it in gradle buildscripts is much much simpler), and I couldn’t really find anything great on Kord other than the simple example usage https://github.com/kordlib/kord/tree/main/core , but it definitely is able to play ping-pong at the very least :D"}]...
|
Title: MonkeyLogs538 by @OffsetMonkey538 | Stardan Title: MonkeyLogs538 by @OffsetMonkey538 | Stardance
Devlogs:
I really liked the nullability stuff Kotlin has when I was writing a multiloader/version convention plugin for my mods, so I decided to use Kotlin to get more familiar with it in general usage. I saw someone talking about the Kord library a while back, so I went with that. Safe to say that I’m still quite unfamiliar with Kotlin’s syntax (using it in gradle buildscripts is much much simpler), and I couldn’t really find anything great on Kord other than the simple example usage https://github.com/kordlib/kord/tree/main/core , but it definitely is able to play ping-pong at the very least :D
I have now fully implemented the command for uploading a log. It now rejects binary files like images or videos, correctly reads when the file isn’t UTF8 formatted and allows deleting the uploaded log in case it was the wrong file or something. I’ve found that Kotlin is actually really nice. I especially like how it allows writing such unreadable code that I can’t understand it even 5 minutes after writing it I also spent an hour or so in termux on my phone (was bored on a bus) setting up an instance of mclogs on my homelab and the bot now allows setting a custom instance url as well. Next step will be having it detect sent log files and automatically upload them
Log files will now automatically be detected (current filter is any file ending in .log ) and uploaded 🎉
Some changes over the past few days: Multiple logs can be uploaded at once Http requests and json parsing now done with kotlin’s own libraries instead of java HttpClient and Jankson. Kotlin serialization stuff is actually pretty great! Errors aren’t silently ignored anymore and other logs added in the same batch can still be uploaded even when some fail. Much less readable code, kotlin is great for that
Made it now packaged as a docker container, fixed some bugs and wrote a readme with instructions for self-hosting Also now have an instance of it running on my homelab
Ships:
I was annoyed that people still upload plain log files in the support discord for my Minecraft mods, when I clearly say that using mclogs, a pastebin for minecraft logs with syntax highlighting and whatnot, makes debugging much easier. So I made a Discord bot to fix that! It detects logs sent as attachments by their name and uploads them to mclogs. It can also be added as a user application, which will allow using the /upload-logs command anywhere. This is my first full project written in Kotlin (previously I’ve only used it for Gradle buildscripts), so there were some initial challenges with Kotlin syntax for things like lambdas and also how instead of static functions you have companion objects, but Kotlin’s documentation is pretty good. What documentation wasn’t so good though was Kord, the library I used for interacting with the Discord API. It required quite a bit of guesswork to figure out how it works and should be used, the Discord API docs made it a bit easier though at least. I’ve set up a discord server with an instance of the bot running, which can be used to test it out. There are also self-hosting instructions on the readme....
|
1792961413.6376626
|
1793047813.6376626
|
|
4238
|
red bull tracker by @neset | Stardance
|
neset
|
1
|
22.29
|
336
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-06T20:00:22Z", "hours": 22.0, "multiplier": 15.51, "payout": 336, "blessing": "neutral", "text": "this is a caffeine drink tracker allowing you to add and track your caffeine intake across multiple days. i wrote it using svelte and postgresql. this was one of my first projects that i wrote with svelte, so i learned quite a bit about it. i also did custom art and design for each of the drinks in figma.", "repo": "https://github.com/nesetkab/redbull", "demo": "https://redbull.nesetk.com"}]...
|
[{"post_id": 77666, "ts": "202 [{"post_id": 77666, "ts": "2026-10-07T19:35:28Z", "hours": 0.2911, "text": "bug fixes"}, {"post_id": 77399, "ts": "2026-10-06T19:58:44Z", "hours": 2.0128, "text": "ready to ship! added an intro explaining what this is added cookies so u can track ur own data made my data global for everyone to see minor bug fixes todo: add more drinks"}, {"post_id": 19639, "ts": "2026-07-01T00:46:56Z", "hours": 1.6789, "text": "more progress on ui, adding more drinks, polishing drink picker. currently on amtrack so very bad wifi"}, {"post_id": 18904, "ts": "2026-06-30T02:59:09Z", "hours": 2.9706, "text": "im highkey across the country but wtv working on makign picker ux way better look at this yummy anim"}, {"post_id": 16070, "ts": "2026-06-26T03:45:21Z", "hours": 1.8869, "text": "working on looks! statistics looks much better still a lot to do to finish it up, but i’m almost there"}, {"post_id": 15365, "ts": "2026-06-24T23:49:42Z", "hours": 0.5797, "text": "wowzers statistics tooltips need to fix the labels hitting each other $state() might be the best thing in the world"}, {"post_id": 15160, "ts": "2026-06-24T17:02:58Z", "hours": 0.585, "text": "statistics are a lot more prettyyyyy fixed mobile handling for statistics todo: add more drinks drink chooser ui ship!"}, {"post_id": 13894, "ts": "2026-06-22T19:36:41Z", "hours": 2.8711, "text": "LOTS done. changed how data is stored to allow for more drinks to be added added “caffeine” attribute in order to track my caffeine intake (addiction) added statistics in order to track how many redbulls im actually drinking began adding other drinks to do: finalize the UX of how drinks are chosen add more drinks! finish statistics to be more functional and look more pretty ship!"}, {"post_id": 12791, "ts": "2026-06-20T22:21:44Z", "hours": 1.43, "text": "new redbull designs that are more accurate to the real thing! fixed some ux bugs todo: make ui look better add monster? i love monster data analysis ship!"}, {"post_id": 12279, "ts": "2026-06-20T01:40:43Z", "hours": 0.5042, "text": "havent finished the data part yet but i want to make a dev log because look at how BEAUTIFUL the new icons look <3333"}, {"post_id": 12267, "ts": "2026-06-20T01:01:09Z", "hours": 1.1347, "text": "multi-submit works* improved ux a LOT, i really like these tilted incrementers i want to change it so that SF is a toggle rather than a diff redbull, to decrease scrolling (better ux) submitter is VERY chopped rn (that’s why there’s the asterisk) multi submit repeatedly adds the redbull into a list which works but is kind of chopped. also, SF toggle doesn’t rly work. once i restructure the picker, im going to design icons for plus, minus, and SF, improve ui/ux a bit more, and then add data statistics. after that, i think it’ll be good to ship !!!"}, {"post_id": 11668, "ts": "2026-06-19T00:38:31Z", "hours": 0.5356, "text": "added data sorting by day into the tracker! groups by today, yesterday, and then weekly. plan is to add day sorting within those weeks next. also, need to add a way to submit multiple of the same redbull without repeatedly submitting. also, adding statistics would be nice."}, {"post_id": 11048, "ts": "2026-06-18T02:29:21Z", "hours": 0.6739, "text": "today count works now. i wanna go eep but ill work on data analysis tmr"}, {"post_id": 11000, "ts": "2026-06-18T00:52:01Z", "hours": 1.2214, "text": "deleting works now. the beginnings of a viewer exists"}, {"post_id": 10916, "ts": "2026-06-17T21:50:28Z", "hours": 0.4422, "text": "finally added all of the red bull flavors, including the sugarfree ones"}, {"post_id": 10709, "ts": "2026-06-17T15:59:38Z", "hours": 3.16, "text": "i’m now able to choose a redbull and add it! red bulls are stored in a psql database which keeps track of the red bull name, whether its sugarfree or not, and the date it was submitted. todo: add more redbulls! make a more visual data viewer graphs to see my statistics host this so other ppl can see my stats"}]...
|
Title: red bull tracker by @neset | Stardance
Dev Title: red bull tracker by @neset | Stardance
Devlogs:
i’m now able to choose a redbull and add it! red bulls are stored in a psql database which keeps track of the red bull name, whether its sugarfree or not, and the date it was submitted. todo: add more redbulls! make a more visual data viewer graphs to see my statistics host this so other ppl can see my stats
finally added all of the red bull flavors, including the sugarfree ones
deleting works now. the beginnings of a viewer exists
today count works now. i wanna go eep but ill work on data analysis tmr
added data sorting by day into the tracker! groups by today, yesterday, and then weekly. plan is to add day sorting within those weeks next. also, need to add a way to submit multiple of the same redbull without repeatedly submitting. also, adding statistics would be nice.
multi-submit works* improved ux a LOT, i really like these tilted incrementers i want to change it so that SF is a toggle rather than a diff redbull, to decrease scrolling (better ux) submitter is VERY chopped rn (that’s why there’s the asterisk) multi submit repeatedly adds the redbull into a list which works but is kind of chopped. also, SF toggle doesn’t rly work. once i restructure the picker, im going to design icons for plus, minus, and SF, improve ui/ux a bit more, and then add data statistics. after that, i think it’ll be good to ship !!!
havent finished the data part yet but i want to make a dev log because look at how BEAUTIFUL the new icons look <3333
new redbull designs that are more accurate to the real thing! fixed some ux bugs todo: make ui look better add monster? i love monster data analysis ship!
LOTS done. changed how data is stored to allow for more drinks to be added added “caffeine” attribute in order to track my caffeine intake (addiction) added statistics in order to track how many redbulls im actually drinking began adding other drinks to do: finalize the UX of how drinks are chosen add more drinks! finish statistics to be more functional and look more pretty ship!
statistics are a lot more prettyyyyy fixed mobile handling for statistics todo: add more drinks drink chooser ui ship!
wowzers statistics tooltips need to fix the labels hitting each other $state() might be the best thing in the world
working on looks! statistics looks much better still a lot to do to finish it up, but i’m almost there
im highkey across the country but wtv working on makign picker ux way better look at this yummy anim
more progress on ui, adding more drinks, polishing drink picker. currently on amtrack so very bad wifi
ready to ship! added an intro explaining what this is added cookies so u can track ur own data made my data global for everyone to see minor bug fixes todo: add more drinks
bug fixes
Ships:
this is a caffeine drink tracker allowing you to add and track your caffeine intake across multiple days. i wrote it using svelte and postgresql. this was one of my first projects that i wrote with svelte, so i learned quite a bit about it. i also did custom art and design for each of the drinks in figma....
|
1793004709.6281958
|
1793091109.6281958
|
|
10074
|
SCP: Containment Protocol by @Serra00 | Stardance
|
Serra00
|
1
|
83.9
|
335
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-18T20:22:35Z", "hours": 82.0, "multiplier": 4.21, "payout": 335, "blessing": "neutral", "text": "Only works by creating a server, at the online mode part and doesnt really work the offline part. Github has a lot of code dumps because I have been creating devlogs in here GAME DOESNT WORK WELL IN LINUX, BUT ITS A PROBLEM WITH THE BUILD FROM UNITY GAME ENGINE, PROBABLY SHADERS TOO, IT WORKS BUT LAGGY, PLEASE TRY ON WINDOWS. This game has reached its mvp playable state, at least on my levels. Network was fixed and everything syncs perfectly now, electricity works well, and building works, not well but works. B", "repo": "https://github.com/Serra110/reactor-breach", "demo": "https://serra110.itch.io/reactor-breach"}]...
|
[{"post_id": 73961, "ts": "202 [{"post_id": 73961, "ts": "2026-09-26T12:24:20Z", "hours": 1.8986, "text": "fixed webgl bugs and unity build bugs"}, {"post_id": 70254, "ts": "2026-09-18T20:14:01Z", "hours": 10.6819, "text": "Only works by creating a server, at the online mode part and doesnt really work the offline part. Github has a lot of code dumps because I have been creating devlogs in hereGAME DOESNT WORK WELL IN LINUX, BUT ITS A PROBLEM WITH THE BUILD FROM UNITY GAME ENGINE, PROBABLY SHADERS TOO, IT WORKS BUT LAGGY, PLEASE TRY ON WINDOWS. This game has reached its mvp playable state, at least on my levels. Network was fixed and everything syncs perfectly now, electricity works well, and building works, not well but works."}, {"post_id": 52368, "ts": "2026-08-22T14:12:28Z", "hours": 9.6375, "text": "Project: Core — Devlog 7 nuclear reactor (peak) REACTOR PHYSICS: built a proper six-factor formula model (K_eff = ε·L_f·ρ·L_th·f·η), i have no idea what this means but i saw it in a doc from the USA department of nuclear power or smth. each factor maps to something the player actually controls: rods affect thermal utilization, coolant affects resonance escape + void coefficient, temperature gives Doppler feedback. K_eff > 1 = supercritical, K_eff < 1 = subcritical. this took like 6 iterations to calibrate and a lot of help from AI cause i dont know nuclear physics. DELAYED NEUTRONS: power doesn’t change instantly when you move the rods. THERMAL CHAIN: power heat core temp steam production steam pressure turbine electrical output. nothing happens instantly. SCRAM & SAFETY: auto-SCRAM at temp ≥ 92%, pressure ≥ 95%, coolant ≤ 5%. meltdown at 98% with an 8s grace period. warning states at 75% temp, 70% pressure, 20% coolant. SCRAM drives rods to full insert at 0.3/s (~3s total). the void coefficient is BWR-positive (whatever this means), lose coolant and reactivity spikes before the SCRAM catches it. CONTROLS: SignalLever and SignalButton (more to come) now use the channel system. bidirectional sync, if the reactor changes a channel (SCRAM pushes rods), the lever position updates to match, or it will just break everything. BUGS:lever was so sensitive you could SCRAM by breathing on it. everyhing works but not that well"}, {"post_id": 46360, "ts": "2026-08-13T15:11:12Z", "hours": 10.3275, "text": "Project: Core — Devlog #6 so heres whats happened since devlog 5: the game has people in it now. kind of. MULTIPLAYER (oh god): threw Mirror in and made everything server authoritative. NETWORK PLAYER: movement runs on the server now. the client just sends “m holding W and shift and looking this way 30 times a second and the server does the actual math. sprint works, gravity works. INTERACTION: pressing E shoots the ray on the server now, with a distance check so you cant magnet-fist ores from across the map. HEALTH: health is a SyncVar with a hook so the bar updates everywhere, theres a kill plane and a respawn that resets the controller and velocity instead of leaving you glitching through the floor. Bug fixes: everyone can see the same world now, which is a big one. same bugs as before, just now they happen in two windows at once . current issues: machines still arent really networked yet, NetworkMachine is just the base drill battery, smelter insides and conveyor stuff are still convinced the game is singleplayer. power grid is basically how much power we say we have instead of a real grid, remote players dont have a visible body, building mode is not networked. whats next: machines actually syncing their insides (battery, smelter in/out), remote players getting real bodies and nametags, networking build mode, and probably the nuclear reactor. this game is starting to feel like a game you could play with a friend, which is either great or terrifying."}, {"post_id": 44029, "ts": "2026-08-09T15:13:14Z", "hours": 9.5672, "text": "#Project: Core — Devlog #5 so heres whats happened since devlog 4: INVENTORY (the MARRIAGE): the old and new inventory system finally live together happily SMELTER: turns out the smelter not working was just the inventory hiding things from it. Fixed tho. BUILD MODE (it did literally nothing): found out buildItems was an empty list, so pressing the build key did absolutely nothing except make me feel stupid, istg it had stuff before also the placement key was set to 1 which was fighting with the hotbar, so its back to B. SAVE SYSTEM: inventory was never being saved because the Inventory manager that was supposed to save disappeared. also fixed machineType on the mini drill so machines dont all respawn as the same drill on load. MINI DRILL (quality of life, battery edition): ~5 minutes of drilling. now it works until the battery dies. the UI also shows name + battery. Bug fixes: Everything works better now, still has the same bugs since the last time tho, less severe but still there. current issues: -machine internal state (battery, smelter input/output) –isnt saved yet — position yes, battery no. -building snap is still mid -cables still dont have a real material whats next: conveyors actually moving items visually, nuclear reactors (3.6 Roentgen), proper build UI instead of scroll wheel, and like the game itself. this game is starting to seem like an indie solo game and not an ugly prefabs spam."}, {"post_id": 41499, "ts": "2026-08-05T19:01:38Z", "hours": 9.8056, "text": "Project: Core — Devlog -4 soo things since devlog 3: POWER SYSTEM (ELECTRIC MAYHEM): we finally got electricity theres now a whole eletric system folder with ports, wires, a diesel engine and a battery. the diesel gen vibrates when its running (hu hum it is 48k triangles tho), ports light up when you look at them and you place actual cables by clicking port to port like a real electrician (no cap) also you hold right click on a port to remove a cable (still scared to add a nuclear reactor with these physics but SOMEDAY). Wires: the wire tool had like 30 compile errors because i was using the XOR operator (^) on gameobjects which apparently is not a thing in C# heheheh. then once it compiled the wires just didnt carry power at all. turns out the generator emits its value ONCE on startup before the wire even exists, and then never emits again because “nothing changed”. fixed it by pushing the value when the connection is made instead of waiting for a change. power flows now (i think). Smelter: the smelter works! put stuff in, timer, different stuff comes out. integrates with conveyors so production chains exist now (theoreticaly) drag and drop between inventory and smelter is still a gamble though. Performance patch: game was lagging near the diesel gen and battery. turns out vibrating a mesh with 19.2k vertices every single frame is expensive. cached materials instead of making new ones every frame and stopped writing transform values that never change. also found a real memory leak: wires were subscribing to ports and never unsubscribing, so every destroyed cable was eating the game forever.Bug fixes (the usual): wire tool now auto-creates its temp wire so you dont have to wire up the wire tool to use the wire tool, null checks on everything because apparently i hate myself. current issues:inventory drag is still 50/50 (better odds than a lot of stuff) still two inventory systems coexisting (im scared that if i delete the old one everything will break so ill just make them get married) building snap is still mid. wires look janky and cables dont have a real material yet. whats next:conveyors actually moving items visually, nuclear reactors (the power system is real now so the threat of chernobyl is real), proper build UI instead of scroll wheel making the drag and drop stop being a crying baby every time i fix one thing two more break, but now the electricity works AND the smelter works so my factory is basically a machine of machines. still eating me alive but its loopable."}, {"post_id": 35388, "ts": "2026-07-26T19:09:42Z", "hours": 10.3497, "text": "Project: Core — Devlog #3 (the “nothing works but also everything works” update) so heres whats happened since devlog 2: -Smelter :finally got a smelter working. You put resources in, it processes them, you get a different resource out. its on a timer and integrates with conveyors so you can actually start automating production chains now, the product doesnt really exist yet tho so… took way longer than it shouldve to make something that just… melts stuff too . -Ore Deposits & Regeneration minerals are no longer infinite free real estate. ore deposits now have a set amount and the drill actually depletes them. BUT they regenerate over time so the factory doesnt just die. also made an ore spawner that respawns ores when they get collected so the map doesnt end up empty ( dont have a map yet tho 😭 ) -Inventory Rework (pain) this was the big one. went through like 3 different versions of the inventory system. right now it has: items (ItemSO), Slot UI with drag and dropHotbar (keys 1-9), Toggle with TAB key . honestly the drag and drop is still a bit buggy but it works. the old inventory manager is still there in the background because the save system depends on it and im not touching that yet (maybe never i might just hide the ugly UI and update the old inventory items with the old one) Bug Fixes (the usual): drills spawning in the air instead of on the ground (TRIED fixing but didnt work), storage containers being clickable from across the map (added distance check), ghost buildings having memory leaks from duplicate materials (cached them). its actually starting to feel like a factory game tho :D current issues: inventory drag is 50/50 on whether it decides to cooperate (Gamble 🤑) still two inventory systems coexisting which is terrifying ( inventoryfobia) building snap is still mid ( to be generous) whats next: -conveyors actually moving items visually. -power system (nuclear reactors incoming someday) -proper build UI instead of scroll wheel -getting the inventory to stop being a crying baby. this project is eating me alive daily. every time i fix one thing two more break. but the gameplay loop is actually loopable now so thats something :D"}, {"post_id": 25570, "ts": "2026-07-09T22:05:25Z", "hours": 10.7139, "text": "Project: Core — Devlog #2 (The game finally remembers things.) Since the last devlog, I’ve been focusing less on adding random features and more on building the systems that will actually make the game playable in the long run. What’s New: -Saving & Loading One of the biggest additions is a proper save system. The game now saves: Player position Player rotation Inventory/resources Machines Closing the game no longer means starting from scratch, which is a huge step towards making the game feel like an actual factory game. Main Menu & Game Flow Added: Splah Screen (unity provides it) Main Menu New Game Continue (loads your save) Quit button The inventory system has been reworked and is now integrated with the save system. Resources are properly stored and restored when loading a save, making progression persistent. Mining Drill Improvements The drill animation has been completely redone, and the models aswell: Lowers into the ground. Starts spinning after reaching the surface. Continues drilling while slowly pushing deeper into the ground. (there is also another drill that is limited and another one ilimited) It’s a small detail, but it makes the machine feel much more believable. #General Improvements: Lots of bug fixes. ( now there is only like 14 of them) Cleaner project structure. Better organization of scripts and gameobjects. More preparation for future automation systems. #Current Progress Current gameplay looks something like this: Collect resources, Build machines,Save your progress,Continue expanding your factory The gameplay loop is slowly starting to feel complete, although there’s still a lot to add. What’s Next? turning this from a collection of systems into an actual game. Planned features include: -Resource deposits -Power generation ( YES NUCLEAR REACTORS TOO 🔥) -Factory progression -Better UI ( at least try) -Objectives, quotas and tutorial. -More machines ai workers (bots maybe not ai since i dont want it to be cpu consuming) -Multiplayer (later in development) Current Challenges The biggest challenge isn’t adding features anymore. It’s making all the different systems work together without breaking everything else. Every new feature somehow manages to create two new bugs, which is basically what i am programmed to do atp Overall, I’m really happy with the progress."}, {"post_id": 20350, "ts": "2026-07-01T22:35:06Z", "hours": 9.7589, "text": "Nuclear Factory ChaosDevlog #1 (The first devlog that actually counts) I chose to make this game on unity. What I’ve Done So Far: Player Systems: FPS Movement Frst Person Camera Sprinting Footstep Sounds (running only because of bug) Pause Menu (ESC) Head Bob System (this was a huge pain) Crosshair Interaction: Interaction System (E) Center Raycast System (or whatever the name of this might be) Resources: Collectable Ores Ore Spawner Inventory Manager Inventory UI (simple and ugly for now) Building System: Build Mode (B) Building Rotation (R) Scroll Wheel Building Selection ( only until i make a UI for it) Ghost Buildings Grid Placement System Build Costs Automation: First Mining Drill Automatic Resource Production The player now has a fully functional FPS controller, which is a bit buggy rn but works. Building is the most interactive and important part of the project so far, i made building simple while still feeling satisfying to do it. Resources are now required to construct buildings, creating the first real gameplay loop and there is also a mining drill so we can start automating the process. Current Issues & Bugs Like every Unity project, there are a few problems that still need to be solved. This is way harder than i thought and making a game even if its simple is very time consuming and hard, needing to fix bugs every minute. Overall, I think the project is progressing well, and the core gameplay loop is finally starting to come together. (yes thats a house dont mind the quality, currently it doesnt snap well to other parts)"}, {"post_id": 3678, "ts": "2026-06-06T18:45:15Z", "hours": 0.8994, "text": "Made a scene to set up building and character movement, I used a package for the Person Controller since it works very well, made some adjustements to it tho since it had a few bugs and unnecesary stuff."}]...
|
Title: SCP: Containment Protocol by @Serra00 | Sta Title: SCP: Containment Protocol by @Serra00 | Stardance
Devlogs:
Made a scene to set up building and character movement, I used a package for the Person Controller since it works very well, made some adjustements to it tho since it had a few bugs and unnecesary stuff.
Nuclear Factory ChaosDevlog #1 (The first devlog that actually counts) I chose to make this game on unity. What I’ve Done So Far: Player Systems: FPS Movement Frst Person Camera Sprinting Footstep Sounds (running only because of bug) Pause Menu (ESC) Head Bob System (this was a huge pain) Crosshair Interaction: Interaction System (E) Center Raycast System (or whatever the name of this might be) Resources: Collectable Ores Ore Spawner Inventory Manager Inventory UI (simple and ugly for now) Building System: Build Mode (B) Building Rotation (R) Scroll Wheel Building Selection ( only until i make a UI for it) Ghost Buildings Grid Placement System Build Costs Automation: First Mining Drill Automatic Resource Production The player now has a fully functional FPS controller, which is a bit buggy rn but works. Building is the most interactive and important part of the project so far, i made building simple while still feeling satisfying to do it. Resources are now required to construct buildings, creating the first real gameplay loop and there is also a mining drill so we can start automating the process. Current Issues & Bugs Like every Unity project, there are a few problems that still need to be solved. This is way harder than i thought and making a game even if its simple is very time consuming and hard, needing to fix bugs every minute. Overall, I think the project is progressing well, and the core gameplay loop is finally starting to come together. (yes thats a house dont mind the quality, currently it doesnt snap well to other parts)
Project: Core — Devlog #2 (The game finally remembers things.) Since the last devlog, I’ve been focusing less on adding random features and more on building the systems that will actually make the game playable in the long run. What’s New: -Saving & Loading One of the biggest additions is a proper save system. The game now saves: Player position Player rotation Inventory/resources Machines Closing the game no longer means starting from scratch, which is a huge step towards making the game feel like an actual factory game. Main Menu & Game Flow Added: Splah Screen (unity provides it) Main Menu New Game Continue (loads your save) Quit button The inventory system has been reworked and is now integrated with the save system. Resources are properly stored and restored when loading a save, making progression persistent. Mining Drill Improvements The drill animation has been completely redone, and the models aswell: Lowers into the ground. Starts spinning after reaching the surface. Continues drilling while slowly pushing deeper into the ground. (there is also another drill that is limited and another one ilimited) It’s a small detail, but it makes the machine feel much more believable. #General Improvements: Lots of bug fixes. ( now there is only like 14 of them) Cleaner project structure. Better organization of scripts and gameobjects. More preparation for future automation systems. #Current Progress Current gameplay looks something like this: Collect resources, Build machines,Save your progress,Continue expanding your factory The gameplay loop is slowly starting to feel complete, although there’s still a lot to add. What’s Next? turning this from a collection of systems into an actual game. Planned features include: -Resource deposits -Power generation ( YES NUCLEAR REACTORS TOO 🔥) -Factory progression -Better UI ( at least try) -Objectives, quotas and tutorial. -More machines ai workers (bots maybe not ai since i dont want it to be cpu consuming) -Multiplayer (later in development) Current Challenges The biggest challenge isn’t adding features anymore. It’s making all the different systems work together without breaking everything else. Every new feature somehow manages to create two new bugs, which is basically what i am programmed to do atp Overall, I’m really happy with the progress.
Project: Core — Devlog #3 (the “nothing works but also everything works” update) so heres whats happened since devlog 2: -Smelter :finally got a smelter working. You put resources in, it processes them, you get a different resource out. its on a timer and integrates with conveyors so you can actually start automating production chains now, the product doesnt really exist yet tho so… took way longer than it shouldve to make something that just… melts stuff too . -Ore Deposits & Regeneration minerals are no longer infinite free real estate. ore deposits now have a set amount and the drill actually depletes them. BUT they regenerate over time so the factory doesnt just die. also made an ore spawner that respawns ores when they get collected so the map doesnt end up empty ( dont have a map yet tho 😭 ) -Inventory Rework (pain) this was the big one. went through like 3 different versions of the inventory system. right now it has: items (ItemSO), Slot UI with drag and dropHotbar (keys 1-9), Toggle with TAB key . honestly the drag and drop is still a bit buggy but it works. the old inventory manager is still there in the background because the save system depends on it and im not touching that yet (maybe never i might just hide the ugly UI and update the old inventory items with the old one) Bug Fixes (the usual): drills spawning in the air instead of on the ground (TRIED fixing but didnt work), storage containers being clickable from across the map (added distance check), ghost buildings having memory leaks from duplicate materials (cached them). its actually starting to feel like a factory game tho :D current issues: inventory drag is 50/50 on whether it decides to cooperate (Gamble 🤑) still two inventory systems coexisting which is terrifying ( inventoryfobia) building snap is still mid ( to be generous) whats next: -conveyors actually moving items visually. -power system (nuclear reactors incoming someday) -proper build UI instead of scroll wheel -getting the inventory to stop being a crying baby. this project is eating me alive daily. every time i fix one thing two more break. but the gameplay loop is actually loopable now so thats something :D
Project: Core — Devlog -4 soo things since devlog 3: POWER SYSTEM (ELECTRIC MAYHEM): we finally got electricity theres now a whole eletric system folder with ports, wires, a diesel engine and a battery. the diesel gen vibrates when its running (hu hum it is 48k triangles tho), ports light up when you look at them and you place actual cables by clicking port to port like a real electrician (no cap) also you hold right click on a port to remove a cable (still scared to add a nuclear reactor with these physics but SOMEDAY). Wires: the wire tool had like 30 compile errors because i was using the XOR operator (^) on gameobjects which apparently is not a thing in C# heheheh. then once it compiled the wires just didnt carry power at all. turns out the generator emits its value ONCE on startup before the wire even exists, and then never emits again because “nothing changed”. fixed it by pushing the value when the connection is made instead of waiting for a change. power flows now (i think). Smelter: the smelter works! put stuff in, timer, different stuff comes out. integrates with conveyors so production chains exist now (theoreticaly) drag and drop between inventory and smelter is still a gamble though. Performance patch: game was lagging near the diesel gen and battery. turns out vibrating a mesh with 19.2k vertices every single frame is expensive. cached materials instead of making new ones every frame and stopped writing transform values that never change. also found a real memory leak: wires were subscribing to ports and never unsubscribing, so every destroyed cable was eating the game forever.Bug fixes (the usual): wire tool now auto-creates its temp wire so you dont have to wire up the wire tool to use the wire tool, null checks on everything because apparently i hate myself. current issues:inventory drag is still 50/50 (better odds than a lot of stuff) still two inventory systems coexisting (im scared that if i delete the old one everything will break so ill just make them get married) building snap is still mid. wires look janky and cables dont have a real material yet. whats next:conveyors actually moving items visually, nuclear reactors (the power system is real now so the threat of chernobyl is real), proper build UI instead of scroll wheel making the drag and drop stop being a crying baby every time i fix one thing two more break, but now the electricity works AND the smelter works so my factory is basically a machine of machines. still eating me alive but its loopable.
#Project: Core — Devlog #5 so heres whats happened since devlog 4: INVENTORY (the MARRIAGE): the old and new inventory system finally live together happily SMELTER: turns out the smelter not working was just the inventory hiding things from it. Fixed tho. BUILD MODE (it did literally nothing): found out buildItems was an empty list, so pressing the build key did absolutely nothing except make me feel stupid, istg it had stuff before also the placement key was set to 1 which was fighting with the hotbar, so its back to B. SAVE SYSTEM: inventory was never being saved because the Inventory manager that was supposed to save disappeared. also fixed machineType on the mini drill so machines dont all respawn as the same drill on load. MINI DRILL (quality of life, battery edition): ~5 minutes of drilling. now it works until the battery dies. the UI also shows name + battery. Bug fixes: Everything works better now, still has the same bugs since the last time tho, less severe but still there. current issues: -machine internal state (battery, smelter input/output) –isnt saved yet — position yes, battery no. -building snap is still mid -cables still dont have a real material whats next: conveyors actually moving items visually, nuclear reactors (3.6 Roentgen), proper build UI instead of scroll wheel, and like the game itself. this game is starting to seem like an indie solo game and not an ugly prefabs spam.
Project: Core — Devlog #6 so heres whats happened since devlog 5: the game has people in it now. kind of. MULTIPLAYER (oh god): threw Mirror in and made everything server authoritative. NETWORK PLAYER: movement runs on the server now. the client just sends “m holding W and shift and looking this way 30 times a second and the server does the actual math. sprint works, gravity works. INTERACTION: pressing E shoots the ray on the server now, with a distance check so you cant magnet-fist ores from across the map. HEALTH: health is a SyncVar with a hook so the bar updates everywhere, theres a kill plane and a respawn that resets the controller and velocity instead of leaving you glitching through the floor. Bug fixes: everyone can see the same world now, which is a big one. same bugs as before, just now they happen in two windows at once . current issues: machines still arent really networked yet, NetworkMachine is just the base drill battery, smelter insides and conveyor stuff are still convinced the game is singleplayer. power grid is basically how much power we say we have instead of a real grid, remote players dont have a visible body, building mode is not networked. whats next: machines actually syncing their insides (battery, smelter in/out), remote players getting real bodies and nametags, networking build mode, and probably the nuclear reactor. this game is starting to feel like a game you could play with a friend, which is either great or terrifying.
Project: Core — Devlog 7 nuclear reactor (peak) REACTOR PHYSICS: built a proper six-factor formula model (K_eff = ε·L_f·ρ·L_th·f·η), i have no idea what this means but i saw it in a doc from the USA department of nuclear power or smth. each factor maps to something the player actually controls: rods affect thermal utilization, coolant affects resonance escape + void coefficient, temperature gives Doppler feedback. K_eff > 1 = supercritical, K_eff < 1 = subcritical. this took like 6 iterations to calibrate and a lot of help from AI cause i dont know nuclear physics. DELAYED NEUTRONS: power doesn’t change instantly when you move the rods. THERMAL CHAIN: power heat core temp steam production steam pressure turbine electrical output. nothing happens instantly. SCRAM & SAFETY: auto-SCRAM at temp ≥ 92%, pressure ≥ 95%, coolant ≤ 5%. meltdown at 98% with an 8s grace period. warning states at 75% temp, 70% pressure, 20% coolant. SCRAM drives rods to full insert at 0.3/s (~3s total). the void coefficient is BWR-positive (whatever this means), lose coolant and reactivity spikes before the SCRAM catches it. CONTROLS: SignalLever and SignalButton (more to come) now use the channel system. bidirectional sync, if the reactor changes a channel (SCRAM pushes rods), the lever position updates to match, or it will just break everything. BUGS:lever was so sensitive you could SCRAM by breathing on it. everyhing works but not that well
Only works by creating a server, at the online mode part and doesnt really work the offline part. Github has a lot of code dumps because I have been creating devlogs in hereGAME DOESNT WORK WELL IN LINUX, BUT ITS A PROBLEM WITH THE BUILD FROM UNITY GAME ENGINE, PROBABLY SHADERS TOO, IT WORKS BUT LAGGY, PLEASE TRY ON WINDOWS. This game has reached its mvp playable state, at least on my levels. Network was fixed and everything syncs perfectly now, electricity works well, and building works, not well but works.
fixed webgl bugs and unity build bugs
Ships:
Only works by creating a server, at the online mode part and doesnt really work the offline part. Github has a lot of code dumps because I have been creating devlogs in here GAME DOESNT WORK WELL IN LINUX, BUT ITS A PROBLEM WITH THE BUILD FROM UNITY GAME ENGINE, PROBABLY SHADERS TOO, IT WORKS BUT LAGGY, PLEASE TRY ON WINDOWS. This game has reached its mvp playable state, at least on my levels. Network was fixed and everything syncs perfectly now, electricity works well, and building works, not well but works. B...
|
1793004718.5396101
|
1793091118.5396101
|
|
24652
|
Portfolio by @Ak_45 | Stardance
|
|
3
|
55.67
|
335
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-11T11:19:33Z", "hours": 35.0, "multiplier": 17.19, "payout": 305, "blessing": "neutral", "text": "I have polished my portfolio and added a room entering animation and a room (based on my room) and added interactive objects like a gaming mouse (turns RGB), a lamp (lights control), a clock (chimes when interacted with), headphones (plays lo-fi beats to enjoy), a chair, a bush,the window, and a microcontroller. To enter the portfolio, click on the laptop, and for full interaction, click on the laptop and fully interact with the portfolio. Click on the hamburger menu (3 horizontal lines), and for activating the Easter egg, type ‘akshith’ after reaching the bottom (full imersion/hamburger mode only)", "repo": "https://github.com/Akshithsurya/Portfolio_", "demo": "https://akshith-surya-portfolio-ak.netlify.app/"}, {"ship_num": 2, "ts": "2026-07-13T14:47:30Z", "hours": 3.0, "multiplier": 16.46, "payout": 21, "blessing": "neutral", "text": "I’ve built a sci-fi, terminal-style portfolio website that is a “mission dossier” of my journey in space science, hardware, and machine learning. Instead of a resume, it has interactive sections such as “Mission Logs” (projects), “Capabilities” (tech stack), and “Active Transmissions” (current focus). The main problem was crafting a UI that felt like a real aerospace control terminal and classified dossier but was still responsive and performant. I also had to structure the data carefully so that the hover cards for “Mission Records” and “Credentials” could be rendered dynamically without weighing down the page. I am really proud of the overall aesthetic and the narrative flow; it is not just a list of my skills but tells the story of a 15 year old aspiring astrophysicist from Kerala. I’m also proud to have tied my real world milestones like being a NASA Space Apps Global Nominee (Team RC_Real Coding) and my ISRO achievements into this cohesive “classified” theme. Testing & exploring: Scroll the 6 “Mission” sections or use the top nav. Hover over the Mission Records and Credentials cards for verified information. Easter Egg – Scroll to the very bottom of the page (Contact / Footer section) and then type akshith on your keyboard to unlock the Easter Egg! :D (also the solar map works it is time acurate so no quick movement)", "repo": "https://github.com/Akshithsurya/Portfolio_", "demo": "https://akshith-surya-portfolio-ak.netlify.app/"}, {"ship_num": 3, "ts": "2026-07-07T12:08:14Z", "hours": 2.0, "multiplier": 4.57, "payout": 9, "blessing": "neutral", "text": "What I made: My personal portfolio site — a single-file, deep-space-themed site built to represent my work in astrophysics, AI, and hardware to evaluators and collaborators. It runs a canvas starfield, a constellation-following cursor, and orbiting exoplanet animations and pulls live data from my GitHub ( @Akshithsurya ) so the projects section stays current without manual updates. What was challenging: Getting the animations to feel alive without tanking performance. I had several separate requestAnimationFrame loops running at once early on, which caused visible lag on scroll. I consolidated them into a single scheduler, dropped a full-viewport SVG grain overlay that was expensive to render, removed backdrop-filter blur during scroll events, and added content-visibility:auto to keep off-screen sections from being painted. The site went through several visual identity passes before landing on the current cosmic direction. What I’m proud of: It’s a single HTML file — no framework, no build step — that still holds a coherent, deliberate aesthetic and runs smoothly on modest hardware, which matters given the site’s audience. How to test it: Visit the live link, scroll through the sections, and try moving the cursor near the starfield to see the constellation effect. The GitHub activity should reflect my actual repositories in real time.", "repo": "https://github.com/Akshithsurya/Portfolio_", "demo": "https://akshith-surya-portfolio-ak.netlify.app/"}]...
|
[{"post_id": 48103, "ts": "202 [{"post_id": 48103, "ts": "2026-08-16T12:05:58Z", "hours": 8.6519, "text": "Added so that you can walk through the room, but it is not fully decorated yet ;). If you have any opinions, share them with me"}, {"post_id": 46786, "ts": "2026-08-14T09:14:07Z", "hours": 7.0197, "text": "Tried to add weather control; it worked at first, but I messed up, and it won’t load :("}, {"post_id": 44608, "ts": "2026-08-10T14:27:22Z", "hours": 9.6306, "text": "made the website way more optimized and decided to make the next.JS has some actual functions that made the textures and lighting also deployed this version: https://akshith-surya-portfolio-ak.netlify.app/ & https://akshith-surya-portfolio.vercel.app/"}, {"post_id": 43756, "ts": "2026-08-09T05:36:45Z", "hours": 8.8464, "text": "I have fixed the clock and made all the objects have better texture and added fabric texture to the windows, which made the lighting feel more realistic and made the portfolio match the room."}, {"post_id": 42772, "ts": "2026-08-07T17:30:43Z", "hours": 8.0769, "text": "Made all the items interactable, but I still can’t figure out what to do with the drawer, and the clock has gone mad :( and added lofi beats when the headphones are interacted with."}, {"post_id": 41887, "ts": "2026-08-06T11:59:00Z", "hours": 8.8603, "text": "making the entire website 3D and putting it all inside my room with a cozy aesthetic and different ways to look at my portfolio."}, {"post_id": 27708, "ts": "2026-07-13T14:34:38Z", "hours": 1.6222, "text": "Finally did what I wanted to; no one can call it bad."}, {"post_id": 27164, "ts": "2026-07-12T14:08:59Z", "hours": 0.5894, "text": "Adding easter eggs to my portfolio try ME"}, {"post_id": 25914, "ts": "2026-07-10T12:31:52Z", "hours": 0.4067, "text": "Adding sun in the background as a reference to my name"}, {"post_id": 24073, "ts": "2026-07-07T12:06:59Z", "hours": 2.0625, "text": "REAdy for liftoff: https://akshith-surya-portfolio-ak.netlify.app/"}]...
|
Title: Portfolio by @Ak_45 | Stardance
Devlogs:
R Title: Portfolio by @Ak_45 | Stardance
Devlogs:
REAdy for liftoff: https://akshith-surya-portfolio-ak.netlify.app/
Adding sun in the background as a reference to my name
Adding easter eggs to my portfolio try ME
Finally did what I wanted to; no one can call it bad.
making the entire website 3D and putting it all inside my room with a cozy aesthetic and different ways to look at my portfolio.
Made all the items interactable, but I still can’t figure out what to do with the drawer, and the clock has gone mad :( and added lofi beats when the headphones are interacted with.
I have fixed the clock and made all the objects have better texture and added fabric texture to the windows, which made the lighting feel more realistic and made the portfolio match the room.
made the website way more optimized and decided to make the next.JS has some actual functions that made the textures and lighting also deployed this version: https://akshith-surya-portfolio-ak.netlify.app/ & https://akshith-surya-portfolio.vercel.app/
Tried to add weather control; it worked at first, but I messed up, and it won’t load :(
Added so that you can walk through the room, but it is not fully decorated yet ;). If you have any opinions, share them with me
Ships:
What I made: My personal portfolio site — a single-file, deep-space-themed site built to represent my work in astrophysics, AI, and hardware to evaluators and collaborators. It runs a canvas starfield, a constellation-following cursor, and orbiting exoplanet animations and pulls live data from my GitHub ( @Akshithsurya ) so the projects section stays current without manual updates. What was challenging: Getting the animations to feel alive without tanking performance. I had several separate requestAnimationFrame loops running at once early on, which caused visible lag on scroll. I consolidated them into a single scheduler, dropped a full-viewport SVG grain overlay that was expensive to render, removed backdrop-filter blur during scroll events, and added content-visibility:auto to keep off-screen sections from being painted. The site went through several visual identity passes before landing on the current cosmic direction. What I’m proud of: It’s a single HTML file — no framework, no build step — that still holds a coherent, deliberate aesthetic and runs smoothly on modest hardware, which matters given the site’s audience. How to test it: Visit the live link, scroll through the sections, and try moving the cursor near the starfield to see the constellation effect. The GitHub activity should reflect my actual repositories in real time.
I’ve built a sci-fi, terminal-style portfolio website that is a “mission dossier” of my journey in space science, hardware, and machine learning. Instead of a resume, it has interactive sections such as “Mission Logs” (projects), “Capabilities” (tech stack), and “Active Transmissions” (current focus). The main problem was crafting a UI that felt like a real aerospace control terminal and classified dossier but was still responsive and performant. I also had to structure the data carefully so that the hover cards for “Mission Records” and “Credentials” could be rendered dynamically without weighing down the page. I am really proud of the overall aesthetic and the narrative flow; it is not just a list of my skills but tells the story of a 15 year old aspiring astrophysicist from Kerala. I’m also proud to have tied my real world milestones like being a NASA Space Apps Global Nominee (Team RC_Real Coding) and my ISRO achievements into this cohesive “classified” theme. Testing & exploring: Scroll the 6 “Mission” sections or use the top nav. Hover over the Mission Records and Credentials cards for verified information. Easter Egg – Scroll to the very bottom of the page (Contact / Footer section) and then type akshith on your keyboard to unlock the Easter Egg! :D (also the solar map works it is time acurate so no quick movement)
I have polished my portfolio and added a room entering animation and a room (based on my room) and added interactive objects like a gaming mouse (turns RGB), a lamp (lights control), a clock (chimes when interacted with), headphones (plays lo-fi beats to enjoy), a chair, a bush,the window, and a microcontroller. To enter the portfolio, click on the laptop, and for full interaction, click on the laptop and fully interact with the portfolio. Click on the hamburger menu (3 horizontal lines), and for activating the Easter egg, type ‘akshith’ after reaching the bottom (full imersion/hamburger mode only)...
|
1792997721.9822905
|
1793084121.9822905
|
|
40309
|
Bast.sh: The fast way into the servers you use eve Bast.sh: The fast way into the servers you use every day. by @Ted | Stardance...
|
Ted
|
1
|
32.66
|
335
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-02T21:33:32Z", "hours": 21.0, "multiplier": 17.84, "payout": 335, "blessing": "neutral", "text": "Bast.sh is a terminal native SSH hosts and keys manager. Here’s why. I was interning at a company who religiously use GCP. The problem was that Termius doesn’t have GCP sync, and Termius doesn’t run in my terminal! So, I decided to make a TUI (in Go!) which solved this. It uses your current ssh config and extends it. That means we use the native ssh binary. Connect, group, filter, hosts and keys. Sync hosts between your machine and AWS, GCP and Azure, with keyless connection via the native platform CLI. Sync between your machines with Bast Vault, a free web service, or self host it. SFTP is a lightweight file explorer, allowing quick file transfers using the same ssh config. No need for another app. All native.", "repo": "https://github.com/ellipse-software/bast/tree/master", "demo": "https://bast.sh/"}]...
|
[{"post_id": 63172, "ts": "202 [{"post_id": 63172, "ts": "2026-09-06T20:30:11Z", "hours": 4.1425, "text": "Some of my progress didn’t get saved to stardance, but we’ve made a lot of changes: Vercel Sandbox sync and lifecycle controls Hetzner Cloud server sync and management Secure host password storage Inline text, JSON and PDF file previews New first-run onboarding bast doctor diagnostics and automatic fixes Shell completions for six shells Improved key management and keyboard shortcuts Numerous TUI and CLI fixes and improvements"}, {"post_id": 52688, "ts": "2026-08-22T23:23:33Z", "hours": 1.9547, "text": "I’m working on a new sync tab, and new providers!"}, {"post_id": 52369, "ts": "2026-08-22T14:13:29Z", "hours": 3.1444, "text": "I’m pleased to share we’ve been sponsored twice, each $100, by members of the community! So, I’ve made a sponsors and testimonials section on the website."}, {"post_id": 50283, "ts": "2026-08-19T13:15:14Z", "hours": 2.4172, "text": "I’ve been working on adding native windows support after some feedback. Currently waiting for the winget PR to be merged, and have been fixing some encoding errors."}, {"post_id": 39726, "ts": "2026-08-02T21:28:11Z", "hours": 0.2592, "text": "I spent a few minutes tidying up the website before shipping :)"}, {"post_id": 39119, "ts": "2026-08-01T20:31:36Z", "hours": 1.1594, "text": "Today I added an SFTP TUI into Bast and added a end to end encrypted key and host sync to the cloud. The SFTP interface connects with the same as hosts, and also has a cool chmod interface, since I still can’t remember how to do chmod correctly. The host sync encrypts Bast-managed hosts and keys with a local passphrase, and communicates via a hosted (or self hosted!) api which stores metadata in Upstash for super quick checks to see if a sync needs to happen, and the encrypted blob in R2. This was fun."}, {"post_id": 37855, "ts": "2026-07-30T20:34:30Z", "hours": 5.7019, "text": "AWS, GCP, Azure, Grouping, Speed and Mono! The past few days I’ve made a lot of cool enhancements. Firstly, we support AWS, GCP and Azure for cloud syncing. It uses the native CLI to sync your remote hosts, and uses the CLI to connect you without having a private key on your machine. This allows companies to keep control of their machines. Next, I made opening Bast 5x faster, and parsing config 13x faster. There is a new grouping mechanism, and a contributor is actually working on a new flow to make it even easier. Bast can now suggest hosts to add and connect to if you’ve tried to connect to them before, from your history file. And finally, it’s now a monorepo!"}, {"post_id": 36279, "ts": "2026-07-28T08:47:49Z", "hours": 1.6419, "text": "Today I built Amazon EC2 cloud sync into Bast. It syncs all accessible VMs into the UI. It connects by creating a temporary SSH key and uploading it to the guest agent via the native Amazon CLI. That means no keys are needed to be stored locally, and the permission to access the VM is handled by AWS’s own policies."}, {"post_id": 35432, "ts": "2026-07-26T20:44:04Z", "hours": 12.0433, "text": "I just launched Bast.sh. Bast.sh is a TUI (and CLI) to browse and edit your SSH hosts and keys. It uses the native ssh binary and uses your per-existing SSH config, so as soon as you open Bast you’ll already be able to get started. It helps with organisation of hosts, with groups, tags and colours."}]...
|
Title: Bast.sh: The fast way into the servers you Title: Bast.sh: The fast way into the servers you use every day. by @Ted | Stardance
Devlogs:
I just launched Bast.sh. Bast.sh is a TUI (and CLI) to browse and edit your SSH hosts and keys. It uses the native ssh binary and uses your per-existing SSH config, so as soon as you open Bast you’ll already be able to get started. It helps with organisation of hosts, with groups, tags and colours.
Today I built Amazon EC2 cloud sync into Bast. It syncs all accessible VMs into the UI. It connects by creating a temporary SSH key and uploading it to the guest agent via the native Amazon CLI. That means no keys are needed to be stored locally, and the permission to access the VM is handled by AWS’s own policies.
AWS, GCP, Azure, Grouping, Speed and Mono! The past few days I’ve made a lot of cool enhancements. Firstly, we support AWS, GCP and Azure for cloud syncing. It uses the native CLI to sync your remote hosts, and uses the CLI to connect you without having a private key on your machine. This allows companies to keep control of their machines. Next, I made opening Bast 5x faster, and parsing config 13x faster. There is a new grouping mechanism, and a contributor is actually working on a new flow to make it even easier. Bast can now suggest hosts to add and connect to if you’ve tried to connect to them before, from your history file. And finally, it’s now a monorepo!
Today I added an SFTP TUI into Bast and added a end to end encrypted key and host sync to the cloud. The SFTP interface connects with the same as hosts, and also has a cool chmod interface, since I still can’t remember how to do chmod correctly. The host sync encrypts Bast-managed hosts and keys with a local passphrase, and communicates via a hosted (or self hosted!) api which stores metadata in Upstash for super quick checks to see if a sync needs to happen, and the encrypted blob in R2. This was fun.
I spent a few minutes tidying up the website before shipping :)
I’ve been working on adding native windows support after some feedback. Currently waiting for the winget PR to be merged, and have been fixing some encoding errors.
I’m pleased to share we’ve been sponsored twice, each $100, by members of the community! So, I’ve made a sponsors and testimonials section on the website.
I’m working on a new sync tab, and new providers!
Some of my progress didn’t get saved to stardance, but we’ve made a lot of changes: Vercel Sandbox sync and lifecycle controls Hetzner Cloud server sync and management Secure host password storage Inline text, JSON and PDF file previews New first-run onboarding bast doctor diagnostics and automatic fixes Shell completions for six shells Improved key management and keyboard shortcuts Numerous TUI and CLI fixes and improvements
Ships:
Bast.sh is a terminal native SSH hosts and keys manager. Here’s why. I was interning at a company who religiously use GCP. The problem was that Termius doesn’t have GCP sync, and Termius doesn’t run in my terminal! So, I decided to make a TUI (in Go!) which solved this. It uses your current ssh config and extends it. That means we use the native ssh binary. Connect, group, filter, hosts and keys. Sync hosts between your machine and AWS, GCP and Azure, with keyless connection via the native platform CLI. Sync between your machines with Bast Vault, a free web service, or self host it. SFTP is a lightweight file explorer, allowing quick file transfers using the same ssh config. No need for another app. All native....
|
1792983164.8187947
|
1793069564.8187947
|
|
51971
|
MeshTree by @Trident | Stardance
|
Trident
|
1
|
25.6
|
335
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-17T11:51:28Z", "hours": 25.0, "multiplier": 13.36, "payout": 335, "blessing": "neutral", "text": "MeshTree is a macOS photogrammetry app that turns photos into textured 3D models. To test, Download MeshTree.zip from GitHub Releases, load your photo folder, and click Start Reconstruction. If MacOS blocks it, run xattr -cr /path/to/MeshTree.app or go to System Settings > Privacy & Security, scroll down to the Security section, and click Open Anyway.", "repo": "https://github.com/raiyan-islam-dev/Meshtree", "demo": "https://github.com/raiyan-islam-dev/Meshtree/releases/latest"}]...
|
[{"post_id": 77910, "ts": "202 [{"post_id": 77910, "ts": "2026-10-08T18:52:12Z", "hours": 0.5994, "text": "got rejected for the 3rd time😭 reshipping again🤞"}, {"post_id": 69593, "ts": "2026-09-17T11:37:04Z", "hours": 4.3556, "text": "Added a remove button to remove individual pictures. Fixed some bugs and polished a bit, I’m using the same photoset each time as a benchmark ik it looks a bit odd😭. Now shipping for the first time 🤞"}, {"post_id": 64418, "ts": "2026-09-08T19:44:00Z", "hours": 10.0856, "text": "Been a long time since my last devlog, was busy with exams. I realised the blur detection wasn’t working properly, soo I’ll have to work on that. I also noticed it’s using a massive amount of memory for a relatively small render, so most of the time went to just testing how the blur detection actually detects a blur and the memory load, and watching activity monitor while rendering, so progress might seem slow. But I have plans to make the memory situation better by using a chunk system where only a small section loads and renders soo there’s less load on memory. Also, since I tested a bunch of renders from objects around my house and our car, taking the pictures was a massive pain, so I’ll work on MeshCam so I can take pictures automatically at a set interval. I also have plans to add video support tho I haven’t figured out anything for that."}, {"post_id": 54772, "ts": "2026-08-25T21:35:59Z", "hours": 8.4114, "text": "Been a while since my last devlog, i’ve been busy with other things, but still managed to give some time to MeshTree. Last time I got Object Capture working with a very basic UI, just to see if the pipeline works or not, thankfully it did. Since then i’ve added a ton of features : -Quality presets(Low,Medium,High,Max,Ultra) -Cancel button -Blurry/low res image detection -3D model viewer -Progress Bar -.usdz export -A bunch of UI tweaks (this one alone took a surprising amount of time) Up next:MeshCam:- I’m planning a companion app called MeshCam. The idea is it will capture photos at a user selected interval and log in motion data, all in a single file that the user can just airdrop to their mac and MeshTree, and use the motion sensor data for even higher quality models"}, {"post_id": 51840, "ts": "2026-08-21T18:20:43Z", "hours": 2.335, "text": "Object Capture is working, successfully generated the first local .usdz 3D model from an image folder. Had some issues with WakaTime logging time, but after a bit of troubleshooting, it’s now fixed."}]...
|
Title: MeshTree by @Trident | Stardance
Devlogs:
Title: MeshTree by @Trident | Stardance
Devlogs:
Object Capture is working, successfully generated the first local .usdz 3D model from an image folder. Had some issues with WakaTime logging time, but after a bit of troubleshooting, it’s now fixed.
Been a while since my last devlog, i’ve been busy with other things, but still managed to give some time to MeshTree. Last time I got Object Capture working with a very basic UI, just to see if the pipeline works or not, thankfully it did. Since then i’ve added a ton of features : -Quality presets(Low,Medium,High,Max,Ultra) -Cancel button -Blurry/low res image detection -3D model viewer -Progress Bar -.usdz export -A bunch of UI tweaks (this one alone took a surprising amount of time) Up next:MeshCam:- I’m planning a companion app called MeshCam. The idea is it will capture photos at a user selected interval and log in motion data, all in a single file that the user can just airdrop to their mac and MeshTree, and use the motion sensor data for even higher quality models
Been a long time since my last devlog, was busy with exams. I realised the blur detection wasn’t working properly, soo I’ll have to work on that. I also noticed it’s using a massive amount of memory for a relatively small render, so most of the time went to just testing how the blur detection actually detects a blur and the memory load, and watching activity monitor while rendering, so progress might seem slow. But I have plans to make the memory situation better by using a chunk system where only a small section loads and renders soo there’s less load on memory. Also, since I tested a bunch of renders from objects around my house and our car, taking the pictures was a massive pain, so I’ll work on MeshCam so I can take pictures automatically at a set interval. I also have plans to add video support tho I haven’t figured out anything for that.
Added a remove button to remove individual pictures. Fixed some bugs and polished a bit, I’m using the same photoset each time as a benchmark ik it looks a bit odd😭. Now shipping for the first time 🤞
got rejected for the 3rd time😭 reshipping again🤞
Ships:
MeshTree is a macOS photogrammetry app that turns photos into textured 3D models. To test, Download MeshTree.zip from GitHub Releases, load your photo folder, and click Start Reconstruction. If MacOS blocks it, run xattr -cr /path/to/MeshTree.app or go to System Settings > Privacy & Security, scroll down to the Security section, and click Open Anyway....
|
1793004935.4030545
|
1793091335.4030545
|
|
26883
|
Rifted Rush by @splice | Stardance
|
splice
|
3
|
29.0
|
334
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T14:33:48Z", "hours": 6.0, "multiplier": 12.21, "payout": 74, "blessing": "neutral", "text": "This is the second finished update for Rifted-Rush! KEYBOARD + MOUSE ONLY! if you’re mobile im sorry but pls skip What has been added: ONE new minigame: Star Drag (drag the star along) Practice mode - Get better at the minigames you’re the worst at🥲 - accessed by completing the tutorial then clicking the rift on the home screen WASD Support!! (arrow keys are still usable) IMPROVED difficulty scaling - now accessible to those who aren’t the best at games 🥹 COMPETITVE score mechanics - try this game with your friends too and see who can get the highest score! One last thing, like last time if you don’t get 5000 score in freeplay you have to give me max ratings again 🥹 (jk just vote honestly!!) playable link: https://spliceydice.itch.io/rifted-rush github repo link: https://github.com/spliceydice/Rifted-Rush", "repo": "https://github.com/spliceydice/Rifted-Rush", "demo": "https://spliceydice.itch.io/rifted-rush"}, {"ship_num": 2, "ts": "2026-08-29T20:02:50Z", "hours": 17.0, "multiplier": 15.0, "payout": 260, "blessing": "neutral", "text": "This is the finished (WarioWare-style) game called Rifted-Rush. KEYBOARD + MOUSE ONLY! if you’re mobile im sorry but pls skip What has been added/changed: TWO new minigames: protecting and dodging (i’m bad at names 🥹) much better, updated visuals to fit a space theme (including fonts) freeplay mode, endless minigames with difficulty scaling score mechanics which update based on time left feel free to skip the tutorial to access freeplay mode immediately also, just a little note if you cant get at least 2500 score in freeplay you have to give me max rating :) (just kidding just vote based on what YOU think of the game)", "repo": "https://github.com/spliceydice/Rifted-Rush", "demo": "https://spliceydice.itch.io/rifted-rush"}, {"ship_num": 3, "ts": "2026-07-25T12:34:20Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made (for now) a demo of a WarioWare game and what it will entail when fully developed.", "repo": "https://github.com/spliceydice/Rifted-Rush", "demo": "https://spliceydice.itch.io/rifted-rush"}]...
|
[{"post_id": 76427, "ts": "202 [{"post_id": 76427, "ts": "2026-10-03T14:21:26Z", "hours": 3.1144, "text": "** Devlog 8 ** - The End ** hi guys, as i’ve said way too many times in the past, this time is truly the end. These GCSE Mocks are not to be messed with 🥹 Practice Mode I finally added a mode where you can practice the minigames you struggle the most at over and over again. It also scales up in difficulty much faster for convenience. I had to create a variable which holds which minigame needs to be repeated then linked it to the timer screen so whenever this variable ever has a value above 0, it repeats the desired minigame. Unfortunately, there won’t be a score mechanic for this mode as I deem it not too useful. This mode can only be accessed after completing the tutorial and clicking on the rift on the title screen. Controls Added WASD support, tbh it was easier than I originally thought it would be. I have kept arrow key support in game though for whoever that still wants to use that 🤔🤔🤔. General Bug Fixes Fixed minigame 3 shield clipping off screen Fixed some text not being displayed properly Changed visuals to match new controls Asset finding LUCKILY, I didn’t need to traverse the internet in its entirety this time as my goat shiroze had a wonderful background for my practice mode scene The End… I would ask for suggestions but this is where development truly ends forever 💔💔 I need to lock in for these GCSES!!! Instead of me doing you suggestions, this time around I want YOU guys to continue the project as that would probably be the best thing I could hear. 🥹🥹 well, like always: check out the repo 🥹: https://github.com/spliceydice/Rifted-Rush https://spliceydice.itch.io/rifted-rush"}, {"post_id": 70717, "ts": "2026-09-19T17:25:28Z", "hours": 2.91, "text": "** Devlog 7 ** Hi guys, yes I’m back somehow while school is on. I decided that I should continue this project just a little longer because an extra six hours wouldn’t hurt. NEW MINIGAME!!!! I kept it simple this time where the objective is to drag a star across a designated path. I had to use Path2D and PathFollow nodes for this but tbh the PathFollow node was probably easier to use than I expected. Also made the star a seperate scene for easier management for direct changes to the sprite while leaving other elements intact (can this guy PLEASE stop waffling to make his devlog look longer and more detailed). preview attached Scaling I settled on making the game super easy at the start but then ramping up the scaling rate quite heavily. This lets the game be more accessible to everyone while still providing a challenge. As a result however, all new scores will be heavily inflated since I decided to leave the score system as it is. Asset finding Let’s be fr there’s nothing I really need to say about this. It was horrible like always and the hours don’t even count 💔💔. The Future I plan to add mobile support soon potentially, that minigame practice thing through the rift that I mentioned like three devlogs ago and also I need to polish up the repository and README. It’s a short list as I only plan to do three more hours on this project so expect one more devlog! Anyways, if you have any suggestions, please let me know and as always, check out the repo 🥹: https://github.com/spliceydice/Rifted-Rush https://spliceydice.itch.io/rifted-rush"}, {"post_id": 57584, "ts": "2026-08-29T19:36:11Z", "hours": 4.0942, "text": "**Devlog 6 ** Hi guys, unfortunately, I will be ending development for rifted rush here due to gcses being just around the corner 💔. I’d love to work on this project more especially when I’m only six hours away from the certificate but I have to get my priorities straight ifykwim. Anyway, let’s get into what I added: Scoreee Finally, I added a way to track your score and points are given based on each half a second left and there’s also a base completion amount. The extra points from beating minigames quickly causes the player (my friends so far) to just panic (which is good ofc). Clicking minigame I added a random position spawning mechanic for these buttons although they tend to clump still for no apparent reason. I don’t know if its simply how the rng works or there’s a bug. Display Resolution So um I didn’t realise during the whole development of this game, I was using a 1152 x 648 res 💀. Thankfully, it’s the same aspect ratio as 1920 x 1080 so I was able to scale it via Godot’s native settings. although, the quality is a bit rough in some places… New ending screen Originally, I was using the same lose screen upon death in free-play mode as the tutorial. So, I changed it because the core loop of a Wario-ware style game is to play until you die so it shouldn’t really count as losing. Instead, I made a new scene where your score is displayed. Some minor things updated scaling formula AGAINN cleaned up some unused files from github/ the directory you won’t be able to reach 5000 score because you’re not good enough mwhahahaha (neither am I) play your own music while playing - i’m too lazy to search for music 🥲🥲 The End Well, this is the end. I’ll be honest I’ve had lots of fun in the hack club/stardance program. I really hope to be able to participate in hack club’s next flagship summer program. I’ll have way more time then and make sure to remember me because I’ll be making some absolute bangers. Anyway, like always, check out my repo: https://github.com/spliceydice/Rifted-Rush and try and get a higher score than me! https://spliceydice.itch.io/rifted-rush"}, {"post_id": 53207, "ts": "2026-08-23T17:27:13Z", "hours": 2.6569, "text": "** Devlog 5 ** Hi guys, as you may be able to tell yes the devlogs are a bit more frequent mainly because I’m trying to finish this before school. and this is NOT my last devlog lol New minigame Added a survival type minigame where small fireballs spawn from all directions and you have to dodge them all. Required heavy tweaking because it was way too difficult to find the right balance between easy and hard. Freeplay Mode Essentially the main mode where you play until you lose all of your lives. May add a life recovery feature in the future. Also, prevented from minigames repeating right after itself. code attached Difficulty Scaling Made each game harder dependent on the number of minigames you have completed in that session. Overall, much wasn’t changed but a lot changed at the same time too if that makes sense. I’m hoping to add a scoring mechanic in the future and one new minigame and a boss fight that appears occasionally. Thanks for reading, Check out my repo!: https://github.com/spliceydice/Rifted-Rush"}, {"post_id": 51069, "ts": "2026-08-20T15:35:30Z", "hours": 4.8581, "text": "** Devlog #4 ** Hi guys, almost five hours since my last devlog and I made only one extra minigame 🥲🥲🥲 Finding assets again 😡😡😡😡 To be honest, it wasn’t that bad thanks to @nyk_nck (on itch.io so ignore the link). I was able to get most of my assets from them and I must say they worked well together. New minigame Basically, this new minigame is one where fireballs are launched at you from random directions and using a and d, you rotate your shield to protect the moon and if you fail you lose a life. On the surface it looks simple but it’s lowk quite complex. ##Code itself Coding that game wasn’t that hard thanks to claude a little bit but it was mostly me. I had to create a fireball spawner, then logic for the fireball itself, then I had to create scripts for the shield to destroy the fireballs and then I had to attach scripts to the moon so it detects when its hit so you lose a life. It was very worth it though. What next? I plan to add a fourth minigame along with some bg music (its quite quiet rn) and then add that freeplay mode! That will probably be my last ship though because for me year 11 is about to start and I need to lock in. anyways, thanks for reading check out my repo!: https://github.com/spliceydice/Rifted-Rush"}, {"post_id": 46967, "ts": "2026-08-14T15:32:51Z", "hours": 5.6922, "text": "** Devlog #3 ** Hi guys, So, it’s been a very very very long time since my last devlog. Anyways, as I promised previously there has been a massive visual overhaul and it actually looks promising 🥹🥹🥹🥹. Asset finding I’ll be honest, finding assets was the worst experience of my whole life 😭. But after hours of searching JUST for backgrounds (those hours don’t get logged btw ✌️) I actually found some pretty decent ones. All of them are from Shiroze btw on itch.io so all credits to her! I also needed some assets for controls (I’ll talk about that later) but those were relatively easy to find. I also needed a graphic of a pixelated rift which I’ll be honest doesn’t even look that good but I needed something to fill the space on the title screen. I imported a font too. Importing assets I imported them 👍👍 Implementing the assets For the backgrounds, it was pretty quick and easy you just replace the file on the node that you already created from the guide. Then changing the fonts for text was quick however when using pixel art assets including the font you have to make sure you manually set the texturing filter to nearest to make sure your fonts/assets actually look good. AS for the controls I was talking about earlier, I implemented those into the loading screens prior to the following minigame that needs those controls. I’ll be honest I had to ask gemini how to create a fading effect but I got the hang of it myself in the end. ALSO, I changed the character sprite for the platformer and changed the minigame slightly itself. Things idk where to put I added the base of a settings screen (no settings yet) I want to credit Shiroze again for most of the assets! I’ll attach what some of the scenes look like. Also, I renamed the game to rifted rush because… it sounds cool idk 😭. What’s Next? Hopefully, using my grant for itch.io, I’m going to find some nice background music for the game as a whole because it’s too quiet right now. Additionally, I plan to add two new minigames and a freeplay mode (will be the main mode after tutorial) where you can try to get a high score! I’m also going to add a secret on the tittle screen soon where you can practice individual minigames themselves. Thanks for reading! As always reply w/ any suggestions and check out my repo! https://github.com/spliceydice/Rifted-Rush"}, {"post_id": 34538, "ts": "2026-07-25T10:36:23Z", "hours": 3.3081, "text": "**Devlog #2 ** Hi guys, I’ve continued my development of the game and it is essentially finished. Scenes Recently, I’ve completed the death and done screens and they are simply placeholders at the moment. In the near future, I plan to do an overhaul on all visuals in the game as well as rewrite some text because it seems quite clunky. Scripting I’ve gotten the hang of the language Godot uses partially due to experience but the internet too. It feels like python but just a bit more advaced. What next? I plan to ship the base game as is and after will drop a major update where new minigames, bossfights, visuals (space themed) and sfx are added. Overall, it will be a quality/content update. That’s all I have to say for now. Please leave any suggestions especially on visuals! Check out my github repo! https://github.com/spliceydice/WarioWareGame"}, {"post_id": 32320, "ts": "2026-07-21T12:43:31Z", "hours": 3.0414, "text": "** Devlog #1 ** Hi guys, I’ve started to work on a WarioWare Game and its been really fun but its been difficult too. Initialising everything When I first started, Github and installing time loggers was really complicated for me and it took me way longer to start than it should have😭😭. However, I watched some tutorials on YouTube and it really helped. Actually coding Godot was really new to me and took me some time to figure out. At the start, I ended up setting each node as a child to each other and debugging that was genuine horror 💀💀. I basically had to restart but I caught it early so it was fine. The guide helped significantly (as it should) but it was quite ambiguous at times. So far, I’ve implemented timers and life mechanics and have just started to implement the minigames. It was really fun to add my own personality into the game by embedding my interests into it. For example, I changed some textures like the garlic lives to mc textures. So, What Next? I hope to continue adding minigames and go beyond the guide. I plan for this to be my main project that I work through and add more features like leaderboard mechanics as time goes on. That’s all I have to say for now. Check out my github repo and feel free to leave any suggestions! https://github.com/spliceydice/WarioWareGame"}]...
|
Title: Rifted Rush by @splice | Stardance
Devlogs Title: Rifted Rush by @splice | Stardance
Devlogs:
** Devlog #1 ** Hi guys, I’ve started to work on a WarioWare Game and its been really fun but its been difficult too. Initialising everything When I first started, Github and installing time loggers was really complicated for me and it took me way longer to start than it should have😭😭. However, I watched some tutorials on YouTube and it really helped. Actually coding Godot was really new to me and took me some time to figure out. At the start, I ended up setting each node as a child to each other and debugging that was genuine horror 💀💀. I basically had to restart but I caught it early so it was fine. The guide helped significantly (as it should) but it was quite ambiguous at times. So far, I’ve implemented timers and life mechanics and have just started to implement the minigames. It was really fun to add my own personality into the game by embedding my interests into it. For example, I changed some textures like the garlic lives to mc textures. So, What Next? I hope to continue adding minigames and go beyond the guide. I plan for this to be my main project that I work through and add more features like leaderboard mechanics as time goes on. That’s all I have to say for now. Check out my github repo and feel free to leave any suggestions! https://github.com/spliceydice/WarioWareGame
**Devlog #2 ** Hi guys, I’ve continued my development of the game and it is essentially finished. Scenes Recently, I’ve completed the death and done screens and they are simply placeholders at the moment. In the near future, I plan to do an overhaul on all visuals in the game as well as rewrite some text because it seems quite clunky. Scripting I’ve gotten the hang of the language Godot uses partially due to experience but the internet too. It feels like python but just a bit more advaced. What next? I plan to ship the base game as is and after will drop a major update where new minigames, bossfights, visuals (space themed) and sfx are added. Overall, it will be a quality/content update. That’s all I have to say for now. Please leave any suggestions especially on visuals! Check out my github repo! https://github.com/spliceydice/WarioWareGame
** Devlog #3 ** Hi guys, So, it’s been a very very very long time since my last devlog. Anyways, as I promised previously there has been a massive visual overhaul and it actually looks promising 🥹🥹🥹🥹. Asset finding I’ll be honest, finding assets was the worst experience of my whole life 😭. But after hours of searching JUST for backgrounds (those hours don’t get logged btw ✌️) I actually found some pretty decent ones. All of them are from Shiroze btw on itch.io so all credits to her! I also needed some assets for controls (I’ll talk about that later) but those were relatively easy to find. I also needed a graphic of a pixelated rift which I’ll be honest doesn’t even look that good but I needed something to fill the space on the title screen. I imported a font too. Importing assets I imported them 👍👍 Implementing the assets For the backgrounds, it was pretty quick and easy you just replace the file on the node that you already created from the guide. Then changing the fonts for text was quick however when using pixel art assets including the font you have to make sure you manually set the texturing filter to nearest to make sure your fonts/assets actually look good. AS for the controls I was talking about earlier, I implemented those into the loading screens prior to the following minigame that needs those controls. I’ll be honest I had to ask gemini how to create a fading effect but I got the hang of it myself in the end. ALSO, I changed the character sprite for the platformer and changed the minigame slightly itself. Things idk where to put I added the base of a settings screen (no settings yet) I want to credit Shiroze again for most of the assets! I’ll attach what some of the scenes look like. Also, I renamed the game to rifted rush because… it sounds cool idk 😭. What’s Next? Hopefully, using my grant for itch.io, I’m going to find some nice background music for the game as a whole because it’s too quiet right now. Additionally, I plan to add two new minigames and a freeplay mode (will be the main mode after tutorial) where you can try to get a high score! I’m also going to add a secret on the tittle screen soon where you can practice individual minigames themselves. Thanks for reading! As always reply w/ any suggestions and check out my repo! https://github.com/spliceydice/Rifted-Rush
** Devlog #4 ** Hi guys, almost five hours since my last devlog and I made only one extra minigame 🥲🥲🥲 Finding assets again 😡😡😡😡 To be honest, it wasn’t that bad thanks to @nyk_nck (on itch.io so ignore the link). I was able to get most of my assets from them and I must say they worked well together. New minigame Basically, this new minigame is one where fireballs are launched at you from random directions and using a and d, you rotate your shield to protect the moon and if you fail you lose a life. On the surface it looks simple but it’s lowk quite complex. ##Code itself Coding that game wasn’t that hard thanks to claude a little bit but it was mostly me. I had to create a fireball spawner, then logic for the fireball itself, then I had to create scripts for the shield to destroy the fireballs and then I had to attach scripts to the moon so it detects when its hit so you lose a life. It was very worth it though. What next? I plan to add a fourth minigame along with some bg music (its quite quiet rn) and then add that freeplay mode! That will probably be my last ship though because for me year 11 is about to start and I need to lock in. anyways, thanks for reading check out my repo!: https://github.com/spliceydice/Rifted-Rush
** Devlog 5 ** Hi guys, as you may be able to tell yes the devlogs are a bit more frequent mainly because I’m trying to finish this before school. and this is NOT my last devlog lol New minigame Added a survival type minigame where small fireballs spawn from all directions and you have to dodge them all. Required heavy tweaking because it was way too difficult to find the right balance between easy and hard. Freeplay Mode Essentially the main mode where you play until you lose all of your lives. May add a life recovery feature in the future. Also, prevented from minigames repeating right after itself. code attached Difficulty Scaling Made each game harder dependent on the number of minigames you have completed in that session. Overall, much wasn’t changed but a lot changed at the same time too if that makes sense. I’m hoping to add a scoring mechanic in the future and one new minigame and a boss fight that appears occasionally. Thanks for reading, Check out my repo!: https://github.com/spliceydice/Rifted-Rush
**Devlog 6 ** Hi guys, unfortunately, I will be ending development for rifted rush here due to gcses being just around the corner 💔. I’d love to work on this project more especially when I’m only six hours away from the certificate but I have to get my priorities straight ifykwim. Anyway, let’s get into what I added: Scoreee Finally, I added a way to track your score and points are given based on each half a second left and there’s also a base completion amount. The extra points from beating minigames quickly causes the player (my friends so far) to just panic (which is good ofc). Clicking minigame I added a random position spawning mechanic for these buttons although they tend to clump still for no apparent reason. I don’t know if its simply how the rng works or there’s a bug. Display Resolution So um I didn’t realise during the whole development of this game, I was using a 1152 x 648 res 💀. Thankfully, it’s the same aspect ratio as 1920 x 1080 so I was able to scale it via Godot’s native settings. although, the quality is a bit rough in some places… New ending screen Originally, I was using the same lose screen upon death in free-play mode as the tutorial. So, I changed it because the core loop of a Wario-ware style game is to play until you die so it shouldn’t really count as losing. Instead, I made a new scene where your score is displayed. Some minor things updated scaling formula AGAINN cleaned up some unused files from github/ the directory you won’t be able to reach 5000 score because you’re not good enough mwhahahaha (neither am I) play your own music while playing - i’m too lazy to search for music 🥲🥲 The End Well, this is the end. I’ll be honest I’ve had lots of fun in the hack club/stardance program. I really hope to be able to participate in hack club’s next flagship summer program. I’ll have way more time then and make sure to remember me because I’ll be making some absolute bangers. Anyway, like always, check out my repo: https://github.com/spliceydice/Rifted-Rush and try and get a higher score than me! https://spliceydice.itch.io/rifted-rush
** Devlog 7 ** Hi guys, yes I’m back somehow while school is on. I decided that I should continue this project just a little longer because an extra six hours wouldn’t hurt. NEW MINIGAME!!!! I kept it simple this time where the objective is to drag a star across a designated path. I had to use Path2D and PathFollow nodes for this but tbh the PathFollow node was probably easier to use than I expected. Also made the star a seperate scene for easier management for direct changes to the sprite while leaving other elements intact (can this guy PLEASE stop waffling to make his devlog look longer and more detailed). preview attached Scaling I settled on making the game super easy at the start but then ramping up the scaling rate quite heavily. This lets the game be more accessible to everyone while still providing a challenge. As a result however, all new scores will be heavily inflated since I decided to leave the score system as it is. Asset finding Let’s be fr there’s nothing I really need to say about this. It was horrible like always and the hours don’t even count 💔💔. The Future I plan to add mobile support soon potentially, that minigame practice thing through the rift that I mentioned like three devlogs ago and also I need to polish up the repository and README. It’s a short list as I only plan to do three more hours on this project so expect one more devlog! Anyways, if you have any suggestions, please let me know and as always, check out the repo 🥹: https://github.com/spliceydice/Rifted-Rush https://spliceydice.itch.io/rifted-rush
** Devlog 8 ** - The End ** hi guys, as i’ve said way too many times in the past, this time is truly the end. These GCSE Mocks are not to be messed with 🥹 Practice Mode I finally added a mode where you can practice the minigames you struggle the most at over and over again. It also scales up in difficulty much faster for convenience. I had to create a variable which holds which minigame needs to be repeated then linked it to the timer screen so whenever this variable ever has a value above 0, it repeats the desired minigame. Unfortunately, there won’t be a score mechanic for this mode as I deem it not too useful. This mode can only be accessed after completing the tutorial and clicking on the rift on the title screen. Controls Added WASD support, tbh it was easier than I originally thought it would be. I have kept arrow key support in game though for whoever that still wants to use that 🤔🤔🤔. General Bug Fixes Fixed minigame 3 shield clipping off screen Fixed some text not being displayed properly Changed visuals to match new controls Asset finding LUCKILY, I didn’t need to traverse the internet in its entirety this time as my goat shiroze had a wonderful background for my practice mode scene The End… I would ask for suggestions but this is where development truly ends forever 💔💔 I need to lock in for these GCSES!!! Instead of me doing you suggestions, this time around I want YOU guys to continue the project as that would probably be the best thing I could hear. 🥹🥹 well, like always: check out the repo 🥹: https://github.com/spliceydice/Rifted-Rush https://spliceydice.itch.io/rifted-rush
Ships:
I made (for now) a demo of a WarioWare game and what it will entail when fully developed.
This is the finished (WarioWare-style) game called Rifted-Rush. KEYBOARD + MOUSE ONLY! if you’re mobile im sorry but pls skip What has been added/changed: TWO new minigames: protecting and dodging (i’m bad at names 🥹) much better, updated visuals to fit a space theme (including fonts) freeplay mode, endless minigames with difficulty scaling score mechanics which update based on time left feel free to skip the tutorial to access freeplay mode immediately also, just a little note if you cant get at least 2500 score in freeplay you have to give me max rating :) (just kidding just vote based on what YOU think of the game)
This is the second finished update for Rifted-Rush! KEYBOARD + MOUSE ONLY! if you’re mobile im sorry but pls skip What has been added: ONE new minigame: Star Drag (drag the star along) Practice mode - Get better at the minigames you’re the worst at🥲 - accessed by completing the tutorial then clicking the rift on the home screen WASD Support!! (arrow keys are still usable) IMPROVED difficulty scaling - now accessible to those who aren’t the best at games 🥹 COMPETITVE score mechanics - try this game with your friends too and see who can get the highest score! One last thing, like last time if you don’t get 5000 score in freeplay you have to give me max ratings again 🥹 (jk just vote honestly!!) playable link: https://spliceydice.itch.io/rifted-rush github repo link: https://github.com/spliceydice/Rifted-Rush...
|
1792979593.3456016
|
1793065993.3456016
|
|
28317
|
MyPersonalSite by @rosandrox | Stardance
|
rosandrox
|
3
|
34.8
|
334
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-25T04:40:43Z", "hours": 17.0, "multiplier": 18.05, "payout": 305, "blessing": "neutral", "text": "I removed the Stats cause they felt too much and didnt work properly! bout my project ALL the artwork/code/UI design was made by me (+1 for no AI) Even tho I have made other versions of this site in the past I think this one describes me best Hub opens/closes w/ H Music can be muted by top left button click the big caracter behind my name or drag the walking kiddo at the bottom of the screen The pages and sections are: index.html -> Hero,About me,Skills,Qualifications,My Artsy Side, Contact Me, Leave a review! projects.html -> A selection screen of all my projects linked to a github repo blog.html->blog1,blog2 PLSSS READ MY BLOGS You might notice blogs have the least ammount of extra stuff cause I want the user to be 100% focused on my written form of ART. THE SITE IS TOO MUCH CAUSE I AM TOO MUCH Every last addition describes a feature of me PLS VOTE AT LEAST 7/10 I HAVE PUT MY WHOLE HEART INTO THIS PERSONAL PAGE (literarly)", "repo": "https://github.com/prodevmod/RosarioAlexMorabito_site", "demo": "https://rosarioalex.me"}, {"ship_num": 2, "ts": "2026-08-09T03:12:06Z", "hours": 9.0, "multiplier": 3.34, "payout": 29, "blessing": "neutral", "text": "Visit my portfolio. I’m really excited. I put a lot of work into it. I researched a lot to find the specific CSS for frontend, like the donut chart and everything. It was pretty fun. I look forward to creating more projects like this. Please support me. Feel free to point out any improvements you would make.", "repo": "https://github.com/prodevmod/RosarioAlexMorabito_site", "demo": "https://rosarioalex.me"}, {"ship_num": 3, "ts": "2026-06-30T18:59:53Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I used HTML, CSS and JS. The repo is public but I submited everything at once because of working on it localy and It has a readme with contents and what I learned plus a small description of the site.The site is fully deployed with github pages as the guide suggested. I have in total 6 sections and 4 extra css and js features the guide didn’t cover. My css is custom, you’ll notice the stardance and hackclub words are in the color of the hackclub logo.Didn’t use AI, I am part of the boycott chatgpt group.", "repo": "https://github.com/prodevmod/RosarioAlexMorabito_site", "demo": "https://rosarioalex.me"}]...
|
[{"post_id": 66599, "ts": "202 [{"post_id": 66599, "ts": "2026-09-12T13:26:01Z", "hours": 1.7994, "text": "Hello just a lil fix here! Nothing I can actualy work with to write a qualitative devlog! Basically because I was told TOO many times the sizing was messed up on laptops I changed every size metric on my site to rem so it is scalable and remains asthetiacly appealing across all browsers… Thats all… I got the 3D printer I wanted as a prize for my projects and I am so jolly that is y I log less! me:"}, {"post_id": 54073, "ts": "2026-08-24T20:55:58Z", "hours": 0.8375, "text": "GUYS I DID IT! SO my last addition was: A listening to widget just cuz music is such a big part of my personality (it was a headache to implement, I ended up usin last.fm). As a final summary Before shipping here are all the features: BG music I MADE (no AI slop point +1) + a mute/unmute button A hub interface HUD for the most important parts of my personal page Sections: MyName, AboutMe,Skills,Achievements,Dev Stats,MyArtsySide,ContactMe,Visitor Log, A projects page , A blogs page w/ 2 blogs) Interactive UI: click arround😉😉 The content on my page is TOO MUCH, TRUST ME I KNOW BUT it is a PERSONAL SITE after all and I believe it represents me best. It is way better than using UI palletes I found on Instagram. Also mind u all the artwork and UI is hand painted and I think I did preety good plus no mean water jugging UI, EVEN THO I drank 5L in one day so I am basically replacing AI (Yeah!) Pls star my repo or support me if u can and want. ADMIT IT. this is the coolest website known to man 💀💀. I am off to polish the rest, see you on shipping!"}, {"post_id": 54025, "ts": "2026-08-24T19:33:47Z", "hours": 1.2986, "text": "I polished up some things and added stats section cuz Y NOT?LOWK TS is peak! When I mma gonna get super Project? This Might be the finest work of art the frontend word has ever seen!Like PROVE ME WRONG!BTW for the devlog I was about to post an AI slop gif saying peak but my pattern recognition kicked in and I found a human made (I hope it is) Akso PLS MAKE this NO. 1 on the explore page 😭😭💀💀 More about the session : My mom bought me a bathroom duck from the supermarket(Thx mom) I used a github readme activity/commit graph for my github stats The Leetcode and codedex are hardcoded I have NOT found an API yet or any stat form… My next project might be creating a dev stats api if you’d like that idea like and comment “banana” below Also can you guys pls follow me and star my github repos Sry for yapping I didn’t have much to say on the session itself (MY HTML slop Bores me)"}, {"post_id": 53823, "ts": "2026-08-24T14:56:54Z", "hours": 1.2544, "text": "I made a mute button for the music to achieve the best UX! JUST LOOK AT IT! No outline for the red line cause IT WOULDNT BE COOL!I also made t so you cant have it open on a small screen with a mice waning! And LAST BUT CERTAINLY NOT LEAST I made an oppinion logger for anyone to share their opinion abt my site,me,my projects and my so called art!"}, {"post_id": 53762, "ts": "2026-08-24T13:21:30Z", "hours": 3.3086, "text": "I cleanedup the css cause it was a mess and I replaced the white boring div card with my pixelated fun super cool yellow version: This WAS NOT as eay as it seems. I was stuck for a WHOLE HOUR trying to figute out why it is still overflowing after all the padding I added… So after adding some borders, sprinkling in some exceptions and hating myself for not understanding css grids earlier I made it! YAY! I think this is one of my finak devlogs on this project cause literally what more could you ask for?! Btw this is me after realising it was not a padding problem but a background clip and origin problem!"}, {"post_id": 53585, "ts": "2026-08-24T06:01:53Z", "hours": 1.2492, "text": "Drew all network links: https://lapse.hackclub.com/timelapse/tVeIk_5bqSzo and fixed them to 50 by 50 with css. Now I am off to the github repository selector where I basically need to draw one arrow and flip it upside down once so it will be very easy! Then I don’t know what else I could! However I am very happy by how it has turned out cause it expresses me better than any previous version!"}, {"post_id": 53550, "ts": "2026-08-24T04:37:18Z", "hours": 0.4533, "text": "I added a my artsy side section in which you can click a polaroid photo and get teleported to my creation. I am thinking of adding custo contact links and game selector controls skip previous and play and then implement them in this site! I also updated the bg music to all the pages of my site except blogs cause thay gotta be read in seriousness. second screenshot is hover animation!"}, {"post_id": 53389, "ts": "2026-08-23T22:24:44Z", "hours": 3.4939, "text": "I spent 3 hrs to make my own music track ro bg music to my personal website and I had to learn sonic pi from ground up so I can show it in my personal site as a coding achievement and I think it is rly solid if you want to mute it u can mute the whole page."}, {"post_id": 50995, "ts": "2026-08-20T14:14:22Z", "hours": 0.6897, "text": "Fixed some sizing issues and text overflow! I added some more details!Previous devlog mostly describes this!"}, {"post_id": 50970, "ts": "2026-08-20T13:23:46Z", "hours": 0.8006, "text": "This site I finally feel is something that represents me + it has a better UX/UI overall! It is quite Neet SO here is what I added: EVERYTHING changed Here is WHAT CHANGED New Landing page features pixelart I made 2 types of content bgs: one for serius staff blank white 👌👌 and one for more silly and myself stuff pixelated letter paper Ig or smth (it is just yellowish and has black outline like wow) H for a very cool menu/hub inspired by playstation mid game dropdown activated by the ps button. SCROLL DOWN prompt to signify there is more to see I was told the colour pallete was not optimal to say the least so now it is much simpler paler and themed altho there are some hints from the previous one (i love purple) Now the screen is actually snap screen so 2 categories won’t overlap Replaced Spotify copycat w/ a game selection menu where more info are only available by tapping the middle button (github icon) Plus a small pixelated version of me gliding on your screen"}, {"post_id": 50932, "ts": "2026-08-20T12:20:59Z", "hours": 3.5392, "text": "Brooooooooooooooo! I rebranded again! Now it is the best version yet! It is a retro game console super mario inspired site. Most work was doing the css it was DREADFULL tbh. now I am designing the images!!"}, {"post_id": 43672, "ts": "2026-08-09T02:04:49Z", "hours": 5.3856, "text": "I started from zero. I started from zero, but not really, because now I had all the foundations I needed to create a perfect, full-on, very good app that represents me and is my personal website. So I started with the same boilerplate code for all three HTML files. Then I added icons from Auto Icons pack in Figma package that GitHub gave me. Thank you, GitHub, for giving me the chance to subscribing to your GitHub Developer Student Pack. I also created a nice embedded JS script in the projects.html that finds repositories, public repositories on my GitHub and stores them as projects. That’s very easier, more easier than what I have done previously, type everything manually onto the HTML, hard-coded, essentially. I’m very pleased with the result. It took me around four hours plus two hours for debugging and searching CSS designs.Also the color pallete i took from a ui optimization instagram post"}, {"post_id": 33731, "ts": "2026-07-23T21:26:58Z", "hours": 3.4397, "text": "I changed most of the site. I added in the Javascript, 100 lines of Javascript. I basically created a more soul casing and flashy portfolio, if you will, that I certainly liked. Here is a small example. You can go see it. Everything is uploaded."}, {"post_id": 19414, "ts": "2026-06-30T18:45:19Z", "hours": 7.3906, "text": "So I started off like the guide suggests by making a title for the page and a description of this site and its purpose. Subsequently, I made the Header (top navigation bar) and added only the About Me, Portfolio, and Contact Me links and sections.And then ADDED 3 EXTRA SECTIONS A STARDANCE ONE, A SITE DESCRIPTION ONE and A BLOGS SECTION. I ALSO MADE A CURSOR HIGHLIGHT with javascript and A LIVE TAB where anyone can see WHAT I AM ON CURRENTLY. ALSO I ADDED A DROPDOWN FOR BETTER APEARANCE ON THE NAV BAR."}]...
|
Title: MyPersonalSite by @rosandrox | Stardance
D Title: MyPersonalSite by @rosandrox | Stardance
Devlogs:
So I started off like the guide suggests by making a title for the page and a description of this site and its purpose. Subsequently, I made the Header (top navigation bar) and added only the About Me, Portfolio, and Contact Me links and sections.And then ADDED 3 EXTRA SECTIONS A STARDANCE ONE, A SITE DESCRIPTION ONE and A BLOGS SECTION. I ALSO MADE A CURSOR HIGHLIGHT with javascript and A LIVE TAB where anyone can see WHAT I AM ON CURRENTLY. ALSO I ADDED A DROPDOWN FOR BETTER APEARANCE ON THE NAV BAR.
I changed most of the site. I added in the Javascript, 100 lines of Javascript. I basically created a more soul casing and flashy portfolio, if you will, that I certainly liked. Here is a small example. You can go see it. Everything is uploaded.
I started from zero. I started from zero, but not really, because now I had all the foundations I needed to create a perfect, full-on, very good app that represents me and is my personal website. So I started with the same boilerplate code for all three HTML files. Then I added icons from Auto Icons pack in Figma package that GitHub gave me. Thank you, GitHub, for giving me the chance to subscribing to your GitHub Developer Student Pack. I also created a nice embedded JS script in the projects.html that finds repositories, public repositories on my GitHub and stores them as projects. That’s very easier, more easier than what I have done previously, type everything manually onto the HTML, hard-coded, essentially. I’m very pleased with the result. It took me around four hours plus two hours for debugging and searching CSS designs.Also the color pallete i took from a ui optimization instagram post
Brooooooooooooooo! I rebranded again! Now it is the best version yet! It is a retro game console super mario inspired site. Most work was doing the css it was DREADFULL tbh. now I am designing the images!!
This site I finally feel is something that represents me + it has a better UX/UI overall! It is quite Neet SO here is what I added: EVERYTHING changed Here is WHAT CHANGED New Landing page features pixelart I made 2 types of content bgs: one for serius staff blank white 👌👌 and one for more silly and myself stuff pixelated letter paper Ig or smth (it is just yellowish and has black outline like wow) H for a very cool menu/hub inspired by playstation mid game dropdown activated by the ps button. SCROLL DOWN prompt to signify there is more to see I was told the colour pallete was not optimal to say the least so now it is much simpler paler and themed altho there are some hints from the previous one (i love purple) Now the screen is actually snap screen so 2 categories won’t overlap Replaced Spotify copycat w/ a game selection menu where more info are only available by tapping the middle button (github icon) Plus a small pixelated version of me gliding on your screen
Fixed some sizing issues and text overflow! I added some more details!Previous devlog mostly describes this!
I spent 3 hrs to make my own music track ro bg music to my personal website and I had to learn sonic pi from ground up so I can show it in my personal site as a coding achievement and I think it is rly solid if you want to mute it u can mute the whole page.
I added a my artsy side section in which you can click a polaroid photo and get teleported to my creation. I am thinking of adding custo contact links and game selector controls skip previous and play and then implement them in this site! I also updated the bg music to all the pages of my site except blogs cause thay gotta be read in seriousness. second screenshot is hover animation!
Drew all network links: https://lapse.hackclub.com/timelapse/tVeIk_5bqSzo and fixed them to 50 by 50 with css. Now I am off to the github repository selector where I basically need to draw one arrow and flip it upside down once so it will be very easy! Then I don’t know what else I could! However I am very happy by how it has turned out cause it expresses me better than any previous version!
I cleanedup the css cause it was a mess and I replaced the white boring div card with my pixelated fun super cool yellow version: This WAS NOT as eay as it seems. I was stuck for a WHOLE HOUR trying to figute out why it is still overflowing after all the padding I added… So after adding some borders, sprinkling in some exceptions and hating myself for not understanding css grids earlier I made it! YAY! I think this is one of my finak devlogs on this project cause literally what more could you ask for?! Btw this is me after realising it was not a padding problem but a background clip and origin problem!
I made a mute button for the music to achieve the best UX! JUST LOOK AT IT! No outline for the red line cause IT WOULDNT BE COOL!I also made t so you cant have it open on a small screen with a mice waning! And LAST BUT CERTAINLY NOT LEAST I made an oppinion logger for anyone to share their opinion abt my site,me,my projects and my so called art!
I polished up some things and added stats section cuz Y NOT?LOWK TS is peak! When I mma gonna get super Project? This Might be the finest work of art the frontend word has ever seen!Like PROVE ME WRONG!BTW for the devlog I was about to post an AI slop gif saying peak but my pattern recognition kicked in and I found a human made (I hope it is) Akso PLS MAKE this NO. 1 on the explore page 😭😭💀💀 More about the session : My mom bought me a bathroom duck from the supermarket(Thx mom) I used a github readme activity/commit graph for my github stats The Leetcode and codedex are hardcoded I have NOT found an API yet or any stat form… My next project might be creating a dev stats api if you’d like that idea like and comment “banana” below Also can you guys pls follow me and star my github repos Sry for yapping I didn’t have much to say on the session itself (MY HTML slop Bores me)
GUYS I DID IT! SO my last addition was: A listening to widget just cuz music is such a big part of my personality (it was a headache to implement, I ended up usin last.fm). As a final summary Before shipping here are all the features: BG music I MADE (no AI slop point +1) + a mute/unmute button A hub interface HUD for the most important parts of my personal page Sections: MyName, AboutMe,Skills,Achievements,Dev Stats,MyArtsySide,ContactMe,Visitor Log, A projects page , A blogs page w/ 2 blogs) Interactive UI: click arround😉😉 The content on my page is TOO MUCH, TRUST ME I KNOW BUT it is a PERSONAL SITE after all and I believe it represents me best. It is way better than using UI palletes I found on Instagram. Also mind u all the artwork and UI is hand painted and I think I did preety good plus no mean water jugging UI, EVEN THO I drank 5L in one day so I am basically replacing AI (Yeah!) Pls star my repo or support me if u can and want. ADMIT IT. this is the coolest website known to man 💀💀. I am off to polish the rest, see you on shipping!
Hello just a lil fix here! Nothing I can actualy work with to write a qualitative devlog! Basically because I was told TOO many times the sizing was messed up on laptops I changed every size metric on my site to rem so it is scalable and remains asthetiacly appealing across all browsers… Thats all… I got the 3D printer I wanted as a prize for my projects and I am so jolly that is y I log less! me:
Ships:
I used HTML, CSS and JS. The repo is public but I submited everything at once because of working on it localy and It has a readme with contents and what I learned plus a small description of the site.The site is fully deployed with github pages as the guide suggested. I have in total 6 sections and 4 extra css and js features the guide didn’t cover. My css is custom, you’ll notice the stardance and hackclub words are in the color of the hackclub logo.Didn’t use AI, I am part of the boycott chatgpt group.
Visit my portfolio. I’m really excited. I put a lot of work into it. I researched a lot to find the specific CSS for frontend, like the donut chart and everything. It was pretty fun. I look forward to creating more projects like this. Please support me. Feel free to point out any improvements you would make.
I removed the Stats cause they felt too much and didnt work properly! bout my project ALL the artwork/code/UI design was made by me (+1 for no AI) Even tho I have made other versions of this site in the past I think this one describes me best Hub opens/closes w/ H Music can be muted by top left button click the big caracter behind my name or drag the walking kiddo at the bottom of the screen The pages and sections are: index.html -> Hero,About me,Skills,Qualifications,My Artsy Side, Contact Me, Leave a review! projects.html -> A selection screen of all my projects linked to a github repo blog.html->blog1,blog2 PLSSS READ MY BLOGS You might notice blogs have the least ammount of extra stuff cause I want the user to be 100% focused on my written form of ART. THE SITE IS TOO MUCH CAUSE I AM TOO MUCH Every last addition describes a feature of me PLS VOTE AT LEAST 7/10 I HAVE PUT MY WHOLE HEART INTO THIS PERSONAL PAGE (literarly)...
|
1792994128.3727648
|
1793080528.3727648
|
|
10343
|
Untitled Gull Game by @dannium | Stardance
|
dannium
|
1
|
21.0
|
333
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-18T01:50:38Z", "hours": 21.0, "multiplier": 17.08, "payout": 333, "blessing": "neutral", "text": "This is a Unity tower defense-ish game I made where the goal is to protect your sandcastle from enemies. The twist was that I had to add all of the suggestions from comments on my yt and after over 60 suggestions, I finished the game. It’s out on itch if you wanna play :)", "repo": "https://github.com/dannium/untitledgullgame", "demo": "https://dannium.itch.io/untitled-gull-game?secret=RCBhq5pTYKEbQkCBGfJDVuZ1zAI"}]...
|
[{"post_id": 30467, "ts": "202 [{"post_id": 30467, "ts": "2026-07-18T01:43:39Z", "hours": 4.9658, "text": "gull game final update Basically all I did was bug fixes for this one, there were some problems with inconsistent UI scaling with different screen resolutions, so I fixed that. I also made a github repo to put the game on, although I made it after making the game so unfortunately you can’t see the version history and stuff."}, {"post_id": 26652, "ts": "2026-07-11T16:18:08Z", "hours": 11.7972, "text": "Gull game is out!!!!!!! ok so a while back I started working on this tower defense-ish game where you have to protect your sandcastle from enemies. The whole point was that I had to add all the suggestions that commenters gave, and after over 60 suggestions, I finally finished. There’s still a few bugs, so any playtesting would be appreciated :) https://dannium.itch.io/untitled-gull-game?secret=RCBhq5pTYKEbQkCBGfJDVuZ1zAI"}, {"post_id": 18530, "ts": "2026-06-29T18:27:57Z", "hours": 4.5, "text": "Final suggestion! So this is a project I started a few months back, the whole premise was to make a game that I had to add every suggestion from comments on my yt channel to. I was supposed to finish it in a week or two but everything took a LOT longer than I anticipated, with over 60 suggestions, this is my final suggestion to be added though! The idea for the suggestion was basically to have a clone of the player and to cut to a monolouge of the player beating the clone. I kinda saved this one for last cause I thought it would be the worst to implement, but I think it ended up going pretty well. All I have left to do is some bug fixing and then I’ll have the game done and published on itch :)"}]...
|
Title: Untitled Gull Game by @dannium | Stardance
Title: Untitled Gull Game by @dannium | Stardance
Devlogs:
Final suggestion! So this is a project I started a few months back, the whole premise was to make a game that I had to add every suggestion from comments on my yt channel to. I was supposed to finish it in a week or two but everything took a LOT longer than I anticipated, with over 60 suggestions, this is my final suggestion to be added though! The idea for the suggestion was basically to have a clone of the player and to cut to a monolouge of the player beating the clone. I kinda saved this one for last cause I thought it would be the worst to implement, but I think it ended up going pretty well. All I have left to do is some bug fixing and then I’ll have the game done and published on itch :)
Gull game is out!!!!!!! ok so a while back I started working on this tower defense-ish game where you have to protect your sandcastle from enemies. The whole point was that I had to add all the suggestions that commenters gave, and after over 60 suggestions, I finally finished. There’s still a few bugs, so any playtesting would be appreciated :) https://dannium.itch.io/untitled-gull-game?secret=RCBhq5pTYKEbQkCBGfJDVuZ1zAI
gull game final update Basically all I did was bug fixes for this one, there were some problems with inconsistent UI scaling with different screen resolutions, so I fixed that. I also made a github repo to put the game on, although I made it after making the game so unfortunately you can’t see the version history and stuff.
Ships:
This is a Unity tower defense-ish game I made where the goal is to protect your sandcastle from enemies. The twist was that I had to add all of the suggestions from comments on my yt and after over 60 suggestions, I finished the game. It’s out on itch if you wanna play :)...
|
1792961396.1004744
|
1793047796.1004744
|
|
192
|
Website by @aaradhyarya_srivastava | Stardance
|
aaradhyarya_srivastava
|
1
|
20.0
|
332
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T15:17:01Z", "hours": 20.0, "multiplier": 16.83, "payout": 332, "blessing": "neutral", "text": "This is my own portfolio website made using three.js :D I obviously followed a tutorial but I also added a bunch of my own elements and customised the site to my own liking :D I made the music as well :) Overall I spent like 15 hours on this website and im really proud of it I will make changes over time but this seems like a good starting point NOTE: I spent 15 hours and not 20 hours on this for some reason time tracking seems to add another 5 hours to this", "repo": "https://github.com/lemonzwastaken/PortfolioWebsite", "demo": "https://portfolio-website-blush-seven-78.vercel.app/"}]...
|
[{"post_id": 48173, "ts": "202 [{"post_id": 48173, "ts": "2026-08-16T13:54:37Z", "hours": 0.9389, "text": "DEPLOYED IT Also made some small changes like changing the scroll bar, adding small transition animation, some levels of optimisation etc. Also fixed some errors that caused it to not deploy BUT Here’s the website if you are interested https://portfolio-website-blush-seven-78.vercel.app/"}, {"post_id": 47711, "ts": "2026-08-15T20:06:34Z", "hours": 2.7339, "text": "Almost finished with this website :D Here’s the changes made in this recent devlog Added animations to the entire website Added music and it remembers if you wanna play music or not (also i made the music 🆒 ) Small tweaks and bug fixes for better website experience :p (sorry for the bad audio quality obs was tweaking out)"}, {"post_id": 47432, "ts": "2026-08-15T11:18:18Z", "hours": 2.5728, "text": "Worked on mobile compatability for the website. Fixed the Here’s the list of changes done Main Page: Scaled the model, put the icons on the side and added labels Projects: Removed the 3D model so projects are visible clearly About me and Contact me: Scaled the text size so it fits mobile"}, {"post_id": 46836, "ts": "2026-08-14T11:15:42Z", "hours": 2.2803, "text": "A ton of changes made and stuff added Added Stuff: Added the contact me page and linked it with mailjs so contacting me can be done directly via mail Added another model to the front page Changes: Again changed the front page model basically removing the city cuz it looked bad Changed opacity of all images from 100 to 50 Changed the render model to include some more stuff like intensity giving me better control over lighting Changed the model behavior in about me page as well as the lighting Yeah well thats about it"}, {"post_id": 46591, "ts": "2026-08-13T22:40:24Z", "hours": 2.2661, "text": "Finished the about me page(atleast the layout) and added a home button to every page. On top of that I made some QOL changes like backgrounds are completely visible etc. gonna work on contact me page next and more animations"}, {"post_id": 45629, "ts": "2026-08-12T07:46:02Z", "hours": 8.9256, "text": "Finished the Main Page as well as the projects page for my portfolio website :D. The time logged is a little off, its actually supposed to be 5 hours ish but my time was logged into an archived project so . Anyways next im gonna work on About me page and QOL stuff"}]...
|
Title: Website by @aaradhyarya_srivastava | Starda Title: Website by @aaradhyarya_srivastava | Stardance
Devlogs:
Finished the Main Page as well as the projects page for my portfolio website :D. The time logged is a little off, its actually supposed to be 5 hours ish but my time was logged into an archived project so . Anyways next im gonna work on About me page and QOL stuff
Finished the about me page(atleast the layout) and added a home button to every page. On top of that I made some QOL changes like backgrounds are completely visible etc. gonna work on contact me page next and more animations
A ton of changes made and stuff added Added Stuff: Added the contact me page and linked it with mailjs so contacting me can be done directly via mail Added another model to the front page Changes: Again changed the front page model basically removing the city cuz it looked bad Changed opacity of all images from 100 to 50 Changed the render model to include some more stuff like intensity giving me better control over lighting Changed the model behavior in about me page as well as the lighting Yeah well thats about it
Worked on mobile compatability for the website. Fixed the Here’s the list of changes done Main Page: Scaled the model, put the icons on the side and added labels Projects: Removed the 3D model so projects are visible clearly About me and Contact me: Scaled the text size so it fits mobile
Almost finished with this website :D Here’s the changes made in this recent devlog Added animations to the entire website Added music and it remembers if you wanna play music or not (also i made the music 🆒 ) Small tweaks and bug fixes for better website experience :p (sorry for the bad audio quality obs was tweaking out)
DEPLOYED IT Also made some small changes like changing the scroll bar, adding small transition animation, some levels of optimisation etc. Also fixed some errors that caused it to not deploy BUT Here’s the website if you are interested https://portfolio-website-blush-seven-78.vercel.app/
Ships:
This is my own portfolio website made using three.js :D I obviously followed a tutorial but I also added a bunch of my own elements and customised the site to my own liking :D I made the music as well :) Overall I spent like 15 hours on this website and im really proud of it I will make changes over time but this seems like a good starting point NOTE: I spent 15 hours and not 20 hours on this for some reason time tracking seems to add another 5 hours to this...
|
1793000919.9124482
|
1793087319.9124482
|
|
32344
|
N-IDE by @Nanos | Stardance
|
Nanos
|
2
|
39.0
|
331
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-20T13:26:06Z", "hours": 11.0, "multiplier": 9.98, "payout": 100, "blessing": "neutral", "text": "Productivity & Editor Improvements This update focuses on improving the overall development workflow by adding new debugging, navigation, and editing features. Problems Panel A new Problems tab has been added to the bottom panel.FeaturesReal-time syntax diagnostics powered by the Monaco Editor. Displays Errors, Warnings, and Info with dedicated icons and colors. Clicking a problem instantly jumps to the corresponding line. The tab title automatically updates to show the current number of detected issues (e.g. Problems (2 errors)). Global Search & Replace The Search panel has been completely rebuilt.New capabilities Search across all opened files. Regular Expression (Regex) support. Match Case option. Replace All across every opened file. Integrated Color Picker Enabled Monaco’s built-in Color Decorators. Color values such as: #ff0000 rgb(255,0,0) hsl(…) now display an inline color preview that can be clicked to open the color picker directly inside the editor. Empty Projects Creating a New Empty Project now generates a completely blank workspace. No default index.html or starter files are created, allowing users to build their project structure from scratch. Command Palette Improvements The Command Palette now provides a smoother experience. Press Escape to close it instantly. Clicking outside the modal also closes it automatically. Explorer Improvements Added a Refresh Explorer button to quickly reload the file tree after external changes are made to the project directory. Editor Improvements Added support for Ctrl + and Ctrl - to zoom the editor in and out. Added a quick toggle in the status bar to switch between Absolute and Relative line numbers.", "repo": "https://github.com/na1os/n-ide", "demo": "https://apps.m1hai.xyz/ide/"}, {"ship_num": 2, "ts": "2026-07-14T14:12:14Z", "hours": 28.0, "multiplier": 10.08, "payout": 231, "blessing": "neutral", "text": "N-IDE is a modern browser-based IDE designed to bring a desktop-like development experience directly to the web. It features a powerful virtual file system, support for opening local folders, a multi-tab code editor powered by Monaco, intelligent autocomplete, built-in Python and JavaScript execution, live HTML/CSS/JavaScript preview, an integrated terminal, global search, a Command Palette, and many other productivity features. The goal of N-IDE is to provide a fast, intuitive, and feature-rich coding environment that works entirely in the browser while feeling as close as possible to a native desktop IDE. (or some day a desktop ide)", "repo": "https://github.com/na1os/n-ide", "demo": "https://apps.m1hai.xyz/ide/"}]...
|
[{"post_id": 31775, "ts": "202 [{"post_id": 31775, "ts": "2026-07-20T13:05:22Z", "hours": 10.6333, "text": "Productivity & Editor Improvements This update focuses on improving the overall development workflow by adding new debugging, navigation, and editing features. Problems Panel A new Problems tab has been added to the bottom panel.FeaturesReal-time syntax diagnostics powered by the Monaco Editor. Displays Errors, Warnings, and Info with dedicated icons and colors. Clicking a problem instantly jumps to the corresponding line. The tab title automatically updates to show the current number of detected issues (e.g. Problems (2 errors)). Global Search & Replace The Search panel has been completely rebuilt.New capabilities Search across all opened files. Regular Expression (Regex) support. Match Case option. Replace All across every opened file. Integrated Color Picker Enabled Monaco’s built-in Color Decorators. Color values such as: #ff0000 rgb(255,0,0) hsl(…) now display an inline color preview that can be clicked to open the color picker directly inside the editor. Empty Projects Creating a New Empty Project now generates a completely blank workspace. No default index.html or starter files are created, allowing users to build their project structure from scratch. Command Palette Improvements The Command Palette now provides a smoother experience. Press Escape to close it instantly. Clicking outside the modal also closes it automatically. Explorer Improvements Added a Refresh Explorer button to quickly reload the file tree after external changes are made to the project directory. Editor Improvements Added support for Ctrl + and Ctrl - to zoom the editor in and out. Added a quick toggle in the status bar to switch between Absolute and Relative line numbers."}, {"post_id": 27981, "ts": "2026-07-13T22:52:34Z", "hours": 14.8967, "text": "Feature Complete I’ve now finished implementing most of the core features planned for the new browser IDE. Over the last development sessions, I completed the new interface, improved autocomplete, expanded the file management system, and polished many parts of the overall user experience. The IDE has reached a point where it already feels stable and ready for everyday use. I also experimented with real-time collaboration, but after testing it, I decided to remove it for now. While the feature was promising, it introduced stability and synchronization issues that didn’t meet the quality I want for this project. Rather than shipping an unreliable feature, I chose to focus on delivering a more stable experience. I plan to revisit real-time collaboration in the future with a better implementation."}, {"post_id": 24703, "ts": "2026-07-08T13:54:26Z", "hours": 9.1667, "text": "Real-Time Collaboration Progress I spent around 9 hours working on one of the biggest features planned for the new IDE: real-time collaboration. During this session, I built the foundation that will allow multiple users to work on the same project simultaneously. I focused on designing the synchronization system, improving how project data is shared between users, and making sure future collaborative features can be added without major changes to the architecture. I also continued polishing the editor by fixing bugs, improving performance, and refining the overall user experience while preparing the project for multiplayer editing. There’s still plenty of work left, but the core foundation is now in place. The next steps are syncing file changes in real time, showing updates instantly to everyone connected, and adding features like user presence and collaborative editing tools."}, {"post_id": 24466, "ts": "2026-07-08T01:20:39Z", "hours": 3.5333, "text": "UI Complete & Improved AutocompleteI finished building the first version of the new IDE’s interface.I also reused the autocomplete system from CodeKids IDE (my other ide) as a starting point and significantly improved it for this project. It now provides faster and more accurate suggestions, making the coding experience smoother and more productive. With the foundation and UI now in place, I can start focusing on adding the larger features planned for this IDE. The goal is to create a browser-based development environment with many more capabilities than CodeKids IDE while keeping it fast, modern, and easy to use.This is another big milestone, and I’m looking forward to continuing development and adding even more advanced features. One of the next major features I’m planning is real-time multiplayer collaboration, where multiple users can edit the same project simultaneously, making it easier to build projects together."}, {"post_id": 24369, "ts": "2026-07-07T21:43:37Z", "hours": 0.2572, "text": "A New Beginning Today I’m officially starting work on my second IDE project. Right now I’m focusing on building the user interface and creating a clean, modern foundation that will make future features easy to add. My goal is to make the editor feel fast, intuitive, and enjoyable to use from the very beginning. The current work includes: Designing the overall layout. Building the sidebar, activity bar, and editor area. Creating a modern welcome screen. Setting up reusable UI components. Preparing the project structure for future features. This is only the beginning. Over time I plan to add many more features, including an integrated terminal, built-in browser, Git support, AI tools, customizable themes, project management, extensions, and much more."}]...
|
Title: N-IDE by @Nanos | Stardance
Devlogs:
A New Title: N-IDE by @Nanos | Stardance
Devlogs:
A New Beginning Today I’m officially starting work on my second IDE project. Right now I’m focusing on building the user interface and creating a clean, modern foundation that will make future features easy to add. My goal is to make the editor feel fast, intuitive, and enjoyable to use from the very beginning. The current work includes: Designing the overall layout. Building the sidebar, activity bar, and editor area. Creating a modern welcome screen. Setting up reusable UI components. Preparing the project structure for future features. This is only the beginning. Over time I plan to add many more features, including an integrated terminal, built-in browser, Git support, AI tools, customizable themes, project management, extensions, and much more.
UI Complete & Improved AutocompleteI finished building the first version of the new IDE’s interface.I also reused the autocomplete system from CodeKids IDE (my other ide) as a starting point and significantly improved it for this project. It now provides faster and more accurate suggestions, making the coding experience smoother and more productive. With the foundation and UI now in place, I can start focusing on adding the larger features planned for this IDE. The goal is to create a browser-based development environment with many more capabilities than CodeKids IDE while keeping it fast, modern, and easy to use.This is another big milestone, and I’m looking forward to continuing development and adding even more advanced features. One of the next major features I’m planning is real-time multiplayer collaboration, where multiple users can edit the same project simultaneously, making it easier to build projects together.
Real-Time Collaboration Progress I spent around 9 hours working on one of the biggest features planned for the new IDE: real-time collaboration. During this session, I built the foundation that will allow multiple users to work on the same project simultaneously. I focused on designing the synchronization system, improving how project data is shared between users, and making sure future collaborative features can be added without major changes to the architecture. I also continued polishing the editor by fixing bugs, improving performance, and refining the overall user experience while preparing the project for multiplayer editing. There’s still plenty of work left, but the core foundation is now in place. The next steps are syncing file changes in real time, showing updates instantly to everyone connected, and adding features like user presence and collaborative editing tools.
Feature Complete I’ve now finished implementing most of the core features planned for the new browser IDE. Over the last development sessions, I completed the new interface, improved autocomplete, expanded the file management system, and polished many parts of the overall user experience. The IDE has reached a point where it already feels stable and ready for everyday use. I also experimented with real-time collaboration, but after testing it, I decided to remove it for now. While the feature was promising, it introduced stability and synchronization issues that didn’t meet the quality I want for this project. Rather than shipping an unreliable feature, I chose to focus on delivering a more stable experience. I plan to revisit real-time collaboration in the future with a better implementation.
Productivity & Editor Improvements This update focuses on improving the overall development workflow by adding new debugging, navigation, and editing features. Problems Panel A new Problems tab has been added to the bottom panel.FeaturesReal-time syntax diagnostics powered by the Monaco Editor. Displays Errors, Warnings, and Info with dedicated icons and colors. Clicking a problem instantly jumps to the corresponding line. The tab title automatically updates to show the current number of detected issues (e.g. Problems (2 errors)). Global Search & Replace The Search panel has been completely rebuilt.New capabilities Search across all opened files. Regular Expression (Regex) support. Match Case option. Replace All across every opened file. Integrated Color Picker Enabled Monaco’s built-in Color Decorators. Color values such as: #ff0000 rgb(255,0,0) hsl(…) now display an inline color preview that can be clicked to open the color picker directly inside the editor. Empty Projects Creating a New Empty Project now generates a completely blank workspace. No default index.html or starter files are created, allowing users to build their project structure from scratch. Command Palette Improvements The Command Palette now provides a smoother experience. Press Escape to close it instantly. Clicking outside the modal also closes it automatically. Explorer Improvements Added a Refresh Explorer button to quickly reload the file tree after external changes are made to the project directory. Editor Improvements Added support for Ctrl + and Ctrl - to zoom the editor in and out. Added a quick toggle in the status bar to switch between Absolute and Relative line numbers.
Ships:
N-IDE is a modern browser-based IDE designed to bring a desktop-like development experience directly to the web. It features a powerful virtual file system, support for opening local folders, a multi-tab code editor powered by Monaco, intelligent autocomplete, built-in Python and JavaScript execution, live HTML/CSS/JavaScript preview, an integrated terminal, global search, a Command Palette, and many other productivity features. The goal of N-IDE is to provide a fast, intuitive, and feature-rich coding environment that works entirely in the browser while feeling as close as possible to a native desktop IDE. (or some day a desktop ide)
Productivity & Editor Improvements This update focuses on improving the overall development workflow by adding new debugging, navigation, and editing features. Problems Panel A new Problems tab has been added to the bottom panel.FeaturesReal-time syntax diagnostics powered by the Monaco Editor. Displays Errors, Warnings, and Info with dedicated icons and colors. Clicking a problem instantly jumps to the corresponding line. The tab title automatically updates to show the current number of detected issues (e.g. Problems (2 errors)). Global Search & Replace The Search panel has been completely rebuilt.New capabilities Search across all opened files. Regular Expression (Regex) support. Match Case option. Replace All across every opened file. Integrated Color Picker Enabled Monaco’s built-in Color Decorators. Color values such as: #ff0000 rgb(255,0,0) hsl(…) now display an inline color preview that can be clicked to open the color picker directly inside the editor. Empty Projects Creating a New Empty Project now generates a completely blank workspace. No default index.html or starter files are created, allowing users to build their project structure from scratch. Command Palette Improvements The Command Palette now provides a smoother experience. Press Escape to close it instantly. Clicking outside the modal also closes it automatically. Explorer Improvements Added a Refresh Explorer button to quickly reload the file tree after external changes are made to the project directory. Editor Improvements Added support for Ctrl + and Ctrl - to zoom the editor in and out. Added a quick toggle in the status bar to switch between Absolute and Relative line numbers....
|
1792972507.9054968
|
1793058907.9054968
|
|
43793
|
mini_consol by @kdenis | Stardance
|
kdenis
|
1
|
28.27
|
331
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T08:49:31Z", "hours": 28.0, "multiplier": 11.7, "payout": 331, "blessing": "neutral", "text": "What did you make? I built a DIY mini handheld console powered by an Arduino Nano! My main goal was to dive into embedded systems development and get hands-on experience with hardware and C++. Because of this, I focused on core functionality rather than super complex games. When you turn it on, you’re greeted with a scrolling “mini console” text, followed by a game selection menu. During gameplay, pressing the designated pause button opens a pause menu where you can either resume (saving your current progress) or exit to the main menu. I included two games: Snake and Flappy Bird. What was challenging? Generating non-blocking audio feedback was definitely the hardest part. I implemented button click sounds using PWM to control the volume, which took a lot of time to tune since working with audio signals is trickier than controlling a motor. It required pseudo-multitasking using millis() to keep the gameplay smooth while playing sounds. Also, in Snake, I initially didn’t use a grid-based movement system and implemented pixel-by-pixel movement instead. Because of this, collision detection with food can occasionally miss. What are you proud of? I’m really proud of the software architecture and code structure in several parts of the project. I focused on clean OOP principles, solid encapsulation, and clear code organization (though a few spots are still a bit messy!). I’m also proud that i didn’t use delay funtion and of my Settings.h file What should people know so they can test your project? To test or build it, you just need to know how to connect the display and buttons to an Arduino Nano. Inside the Settings.h file, you can easily customize pin configurations, volume, colors, display sizes, and game speeds. I also added comments throughout the codebase to make it easy to follow along!", "repo": "https://github.com/deniska-design/mini_consol", "demo": "https://www.youtube.com/watch?v=uTfua7OpIts"}]...
|
[{"post_id": 53755, "ts": "202 [{"post_id": 53755, "ts": "2026-08-24T13:03:26Z", "hours": 0.2725, "text": "DevLog №10 prepared everything for shiping. added wiring.png and AI usage declaration in my README file."}, {"post_id": 50404, "ts": "2026-08-19T15:50:50Z", "hours": 2.895, "text": "DevLog №9 ###What’s New Walls & Pipes Mechanics: Added moving wall obstacles. Score Counter: Integrated a score tracking system. ###How It Works Score Logic: To keep things simple and efficient, the score increases automatically whenever a wall reaches the left edge of the screen. Illusion of Movement: The bird stays in place while the walls continuously cycle and reset from the right edge back to the left. This creates a smooth side-scrolling illusion! It was a fairly straightforward feature to implement, but it instantly made the project feel much more like a complete game!"}, {"post_id": 48980, "ts": "2026-08-17T15:48:49Z", "hours": 2.9033, "text": "Devlog №8 Bird Physics & Rendering Flicker-Free Rendering To prevent screen flickering caused by redrawing the entire screen, I optimized the loop by clearing only the bird’s exact position before rendering its new frame. Physics Implementation Movement relies on both velocity and acceleration : Acceleration continuously increases the downward velocity (gravity). Jump mechanic resets the downward velocity to initial on every input. Next Steps: Wall Generation Obstacle Setup I need to create an array of one dynamic wall . Recycling Logic As soon as a wall reaches the left edge of the screen, it will wrap around to the right . The height/position will randomize each time it reappears to form a continuous level."}, {"post_id": 46939, "ts": "2026-08-14T14:36:32Z", "hours": 1.1725, "text": "Devlog №7 implemted PMW to control sound volume"}, {"post_id": 46796, "ts": "2026-08-14T09:32:51Z", "hours": 0.7017, "text": "Devlog №6 Today I quickly set up the startup text so it scrolls smoothly, and that’s pretty much it. Nothing complicated, really—took me literally half an hour. Next up: finish tuning the PWM to quiet down the audio, and then I’ll probably work on making a more interesting splash screen."}, {"post_id": 46404, "ts": "2026-08-13T16:12:02Z", "hours": 8.6364, "text": "Devlog №5 I added sound effects for every button press on my mini-console! Sounds like a super quick and easy task, right? Well, it should have been. But a few architectural bumps in the road ended up eating way more time than expected. What went wrong (and how I fixed it) Hardware Pin Conflict: My buzzer was originally soldered to a pin used by SPI . As soon as the display initialized, things went sideways. Game Loop vs. Main Loop Architecture: My game logic was running inside an infinite loop within a standalone function, while the sound playback logic lived in the main loop calling that function. Solution: soldered the buzzer to another pin and quick architecture refactor solved both problems pretty easily — I spent about an hour on each issue. The Biggest Problem: A very loud buzzer remains the biggest and unsolved issue. I tried to tame it in software using PWM (Pulse Width Modulation) to decrease the volume. But PWM control is tricky on its own, and since the buzzer relies on a fixed frequency to generate tone, layering custom PWM over it completely broke the audio pitch. Next Up: Implement smooth scrolling text for the console startup screen. Conquer this cursed PWM/volume issue once and for all. Start writing a Flappy Bird clone"}, {"post_id": 43336, "ts": "2026-08-08T15:14:08Z", "hours": 3.9092, "text": "DevLog №4 What’s New Pause Menu Implemented: Players can now pause the game at any time with two options: -> Continue: Return to the game with all current progress intact. -> Exit to Menu: Quit to the main menu (resets all game progress). Technical Challenges The main challenge was handling this within my current architecture, which relies on a main loop with a nested switch statement for state management. I needed a reliable way for these states to communicate and handle game object lifecycles properly: -> Persisting Objects: Retaining game objects in memory when resuming from pause. -> Cleaning Up: Safely destroying objects and resetting state when returning to the main menu (either voluntarily or on Game Over). Next Goals -> Add sound effects using the built-in piezo buzzer. -> Implement a new mini-game: Flappy Bird."}, {"post_id": 42572, "ts": "2026-08-07T12:00:33Z", "hours": 3.4556, "text": "DevLog №3 : What I worked on: Started implementing the Pause state during gameplay. To make this work properly, the game needs to preserve the current state of both the Snake and Food objects when transitioning into pause and back. Slightly refactored the main loop architecture and updated the SnakeGameHandle function. The Struggle: decided to write a helper function to update values inside my StateMachine (handling states like Game, Menu, Pause, Snake, FlappyBird).Blaming it on late-night fatigue, I wrote the function in the most overcomplicated way possible… and called it even worse. The result? Every time I exited the Snake game, I was greeted by a blank black screen because the Menu state was never getting assigned correctly. I spent over an hour staring at the code, completely stumped as to why it was breaking. I think it happened because of self-assignment The Fix: Decided to get some sleep. Woke up the next morning with a fresh head and fixed the black screen issue in 20 minutes. Next Goal: Finish up the Pause feature completely"}, {"post_id": 41914, "ts": "2026-08-06T13:03:12Z", "hours": 1.4547, "text": "devlog #2: added StateHandle file to handle all the actions(menu, games) in my main loop in main.cpp. Now my main loop is shorter and more understandable"}, {"post_id": 41835, "ts": "2026-08-06T09:24:37Z", "hours": 3.1758, "text": "Devlog #1: I uploaded all the files I had written before I found out about Hack Club. After that, I spent most of my time figuring out how to detect collisions between the snake and the food. Since I originally built everything pixel-by-pixel instead of using a grid system, comparing screen positions directly required too many pixel checks. To optimize this and avoid checking every single pixel pair, I had to tweak the logic. Even though it was tricky to adjust without a strict grid, the collision detection is working now and the game is totally playable"}]...
|
Title: mini_consol by @kdenis | Stardance
Devlogs Title: mini_consol by @kdenis | Stardance
Devlogs:
Devlog #1: I uploaded all the files I had written before I found out about Hack Club. After that, I spent most of my time figuring out how to detect collisions between the snake and the food. Since I originally built everything pixel-by-pixel instead of using a grid system, comparing screen positions directly required too many pixel checks. To optimize this and avoid checking every single pixel pair, I had to tweak the logic. Even though it was tricky to adjust without a strict grid, the collision detection is working now and the game is totally playable
devlog #2: added StateHandle file to handle all the actions(menu, games) in my main loop in main.cpp. Now my main loop is shorter and more understandable
DevLog №3 : What I worked on: Started implementing the Pause state during gameplay. To make this work properly, the game needs to preserve the current state of both the Snake and Food objects when transitioning into pause and back. Slightly refactored the main loop architecture and updated the SnakeGameHandle function. The Struggle: decided to write a helper function to update values inside my StateMachine (handling states like Game, Menu, Pause, Snake, FlappyBird).Blaming it on late-night fatigue, I wrote the function in the most overcomplicated way possible… and called it even worse. The result? Every time I exited the Snake game, I was greeted by a blank black screen because the Menu state was never getting assigned correctly. I spent over an hour staring at the code, completely stumped as to why it was breaking. I think it happened because of self-assignment The Fix: Decided to get some sleep. Woke up the next morning with a fresh head and fixed the black screen issue in 20 minutes. Next Goal: Finish up the Pause feature completely
DevLog №4 What’s New Pause Menu Implemented: Players can now pause the game at any time with two options: -> Continue: Return to the game with all current progress intact. -> Exit to Menu: Quit to the main menu (resets all game progress). Technical Challenges The main challenge was handling this within my current architecture, which relies on a main loop with a nested switch statement for state management. I needed a reliable way for these states to communicate and handle game object lifecycles properly: -> Persisting Objects: Retaining game objects in memory when resuming from pause. -> Cleaning Up: Safely destroying objects and resetting state when returning to the main menu (either voluntarily or on Game Over). Next Goals -> Add sound effects using the built-in piezo buzzer. -> Implement a new mini-game: Flappy Bird.
Devlog №5 I added sound effects for every button press on my mini-console! Sounds like a super quick and easy task, right? Well, it should have been. But a few architectural bumps in the road ended up eating way more time than expected. What went wrong (and how I fixed it) Hardware Pin Conflict: My buzzer was originally soldered to a pin used by SPI . As soon as the display initialized, things went sideways. Game Loop vs. Main Loop Architecture: My game logic was running inside an infinite loop within a standalone function, while the sound playback logic lived in the main loop calling that function. Solution: soldered the buzzer to another pin and quick architecture refactor solved both problems pretty easily — I spent about an hour on each issue. The Biggest Problem: A very loud buzzer remains the biggest and unsolved issue. I tried to tame it in software using PWM (Pulse Width Modulation) to decrease the volume. But PWM control is tricky on its own, and since the buzzer relies on a fixed frequency to generate tone, layering custom PWM over it completely broke the audio pitch. Next Up: Implement smooth scrolling text for the console startup screen. Conquer this cursed PWM/volume issue once and for all. Start writing a Flappy Bird clone
Devlog №6 Today I quickly set up the startup text so it scrolls smoothly, and that’s pretty much it. Nothing complicated, really—took me literally half an hour. Next up: finish tuning the PWM to quiet down the audio, and then I’ll probably work on making a more interesting splash screen.
Devlog №7 implemted PMW to control sound volume
Devlog №8 Bird Physics & Rendering Flicker-Free Rendering To prevent screen flickering caused by redrawing the entire screen, I optimized the loop by clearing only the bird’s exact position before rendering its new frame. Physics Implementation Movement relies on both velocity and acceleration : Acceleration continuously increases the downward velocity (gravity). Jump mechanic resets the downward velocity to initial on every input. Next Steps: Wall Generation Obstacle Setup I need to create an array of one dynamic wall . Recycling Logic As soon as a wall reaches the left edge of the screen, it will wrap around to the right . The height/position will randomize each time it reappears to form a continuous level.
DevLog №9 ###What’s New Walls & Pipes Mechanics: Added moving wall obstacles. Score Counter: Integrated a score tracking system. ###How It Works Score Logic: To keep things simple and efficient, the score increases automatically whenever a wall reaches the left edge of the screen. Illusion of Movement: The bird stays in place while the walls continuously cycle and reset from the right edge back to the left. This creates a smooth side-scrolling illusion! It was a fairly straightforward feature to implement, but it instantly made the project feel much more like a complete game!
DevLog №10 prepared everything for shiping. added wiring.png and AI usage declaration in my README file.
Ships:
What did you make? I built a DIY mini handheld console powered by an Arduino Nano! My main goal was to dive into embedded systems development and get hands-on experience with hardware and C++. Because of this, I focused on core functionality rather than super complex games. When you turn it on, you’re greeted with a scrolling “mini console” text, followed by a game selection menu. During gameplay, pressing the designated pause button opens a pause menu where you can either resume (saving your current progress) or exit to the main menu. I included two games: Snake and Flappy Bird. What was challenging? Generating non-blocking audio feedback was definitely the hardest part. I implemented button click sounds using PWM to control the volume, which took a lot of time to tune since working with audio signals is trickier than controlling a motor. It required pseudo-multitasking using millis() to keep the gameplay smooth while playing sounds. Also, in Snake, I initially didn’t use a grid-based movement system and implemented pixel-by-pixel movement instead. Because of this, collision detection with food can occasionally miss. What are you proud of? I’m really proud of the software architecture and code structure in several parts of the project. I focused on clean OOP principles, solid encapsulation, and clear code organization (though a few spots are still a bit messy!). I’m also proud that i didn’t use delay funtion and of my Settings.h file What should people know so they can test your project? To test or build it, you just need to know how to connect the display and buttons to an Arduino Nano. Inside the Settings.h file, you can easily customize pin configurations, volume, colors, display sizes, and game speeds. I also added comments throughout the codebase to make it easy to follow along!...
|
1792975729.1983926
|
1793062129.1983926
|