|
49809
|
Pulse by @nithilan_murugesan64949 | Stardance
|
nithilan_murugesan64949
|
1
|
28.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T00:56:18Z", "hours": 28.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is an app for deaf and hearing impaired people. I was inspired to build this after seeing relatives suffering form problems. Honestly, there were a lot of challenges in coding it to get accuracy, and even more problems with getting it published on the App store with very long wait times. I am proud of how it turned out and the fact that the app is out on the app store! This may heat up your phone but the idea is to give people that are deaf a sense of safety and warnings so the tradeoff would be worth it for them(Still working on bringing in a lighter classification model). Although people may have security concerns, it is as safe as the iphone itself because of how Apple treats apps and allows them to access tools like the microphone. This is only for Apple products for now, but I am working on an android. for android users you can try this website: https://pulse-web-sandy.vercel.app/", "repo": "https://github.com/Aweswomedude1234/Pulse", "demo": "https://apps.apple.com/us/app/pulse-for-sound-awareness/id6804911097"}]...
|
[{"post_id": 83994, "ts": "202 [{"post_id": 83994, "ts": "2026-10-29T00:49:12Z", "hours": 3.2989, "text": "My app has been approved! After a long wait and quite a few rejections, my app was finally approved and put on the app store. It’s available for IOS, WatchOS, and IpadOS. However, MacOS and Iphone Duo are still being built. Overall, I am happy with how the app turned out, and although I will need to release versions fixing some recent bugs I found, any feedback on the app would be well appreciated!"}, {"post_id": 79196, "ts": "2026-10-12T23:53:48Z", "hours": 3.97, "text": "After taking a deeper dive into all of the Portal I found out the main reason for rejection was asking for microphone permission. Where you aren’t allowed to ask in a certain way and needed to allow people to use the app without the feature. I was able to fix and resubmit that, as well as go through the rest of the app and test some sound classifications I newly added."}, {"post_id": 61853, "ts": "2026-09-04T23:46:52Z", "hours": 1.5819, "text": "The app got rejected from the app store, which means the testflight link I initially had doesn’t work. There wasn’t any specific feedback on why it was rejected, as I was only given a generic template message. Either way there were some features I thought of adding after submitting which I plan to add before submitting. I am working on a camera feature to help with sound detection, and am currently creating more sound classifications for better accuracy and lower misclassification. I’m also working on builds for Ipads, macs and even apple watches."}, {"post_id": 54820, "ts": "2026-08-25T23:33:47Z", "hours": 7.3258, "text": "Currently the app is bug free and available to use. There was a bunch of challenges where I had to go thorugh every single dropdown, menu and page in settings to see if everything was visible because of a problem in dark mdoe. Then I had to go in and check and test the logic for optimization and preferences in settings because they were so minimal changes in performance you couldn’t tell. There were bugs in the power modes to fix, then I found a problem in the logic of the sound map that made it biased to one side. I would appreciate if anyone has any feedback after trying the app: https://testflight.apple.com/join/gX2eUxBh"}, {"post_id": 48425, "ts": "2026-08-16T19:27:26Z", "hours": 0.5847, "text": "Fixed a problem in Dark Mode where text is not visible. This app is almost done, is mostly functional."}, {"post_id": 48336, "ts": "2026-08-16T17:26:16Z", "hours": 11.1569, "text": "The IOS App currently runs without errors. The app can properly give a decibal count and identify most noises. The transcription is still not as accurate, and sometimes doesn’t detect anything. Knocking and barking is the largest false alarm."}]...
|
Title: Pulse by @nithilan_murugesan64949 | Stardan Title: Pulse by @nithilan_murugesan64949 | Stardance
Devlogs:
The IOS App currently runs without errors. The app can properly give a decibal count and identify most noises. The transcription is still not as accurate, and sometimes doesn’t detect anything. Knocking and barking is the largest false alarm.
Fixed a problem in Dark Mode where text is not visible. This app is almost done, is mostly functional.
Currently the app is bug free and available to use. There was a bunch of challenges where I had to go thorugh every single dropdown, menu and page in settings to see if everything was visible because of a problem in dark mdoe. Then I had to go in and check and test the logic for optimization and preferences in settings because they were so minimal changes in performance you couldn’t tell. There were bugs in the power modes to fix, then I found a problem in the logic of the sound map that made it biased to one side. I would appreciate if anyone has any feedback after trying the app: https://testflight.apple.com/join/gX2eUxBh
The app got rejected from the app store, which means the testflight link I initially had doesn’t work. There wasn’t any specific feedback on why it was rejected, as I was only given a generic template message. Either way there were some features I thought of adding after submitting which I plan to add before submitting. I am working on a camera feature to help with sound detection, and am currently creating more sound classifications for better accuracy and lower misclassification. I’m also working on builds for Ipads, macs and even apple watches.
After taking a deeper dive into all of the Portal I found out the main reason for rejection was asking for microphone permission. Where you aren’t allowed to ask in a certain way and needed to allow people to use the app without the feature. I was able to fix and resubmit that, as well as go through the rest of the app and test some sound classifications I newly added.
My app has been approved! After a long wait and quite a few rejections, my app was finally approved and put on the app store. It’s available for IOS, WatchOS, and IpadOS. However, MacOS and Iphone Duo are still being built. Overall, I am happy with how the app turned out, and although I will need to release versions fixing some recent bugs I found, any feedback on the app would be well appreciated!
Ships:
This is an app for deaf and hearing impaired people. I was inspired to build this after seeing relatives suffering form problems. Honestly, there were a lot of challenges in coding it to get accuracy, and even more problems with getting it published on the App store with very long wait times. I am proud of how it turned out and the fact that the app is out on the app store! This may heat up your phone but the idea is to give people that are deaf a sense of safety and warnings so the tradeoff would be worth it for them(Still working on bringing in a lighter classification model). Although people may have security concerns, it is as safe as the iphone itself because of how Apple treats apps and allows them to access tools like the microphone. This is only for Apple products for now, but I am working on an android. for android users you can try this website: https://pulse-web-sandy.vercel.app/...
|
1793306982.6411848
|
1793393382.6411848
|
|
49813
|
My own site! by @LAZX | Stardance
|
LAZX
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-19T12:32:51Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple portfolio like page according to the guide as I completely vibecoded this I didn’t have any challenges. I have not checked the page properly as its just a simple page showing basic info.", "repo": "https://github.com/Sakshyam-Xtha/personal-site", "demo": "https://sakshyam-xtha.github.io/personal-site/"}]...
|
[{"post_id": 50178, "ts": "202 [{"post_id": 50178, "ts": "2026-08-19T09:23:14Z", "hours": 0.2508, "text": "Finished the basic structure of the page."}]...
|
Title: My own site! by @LAZX | Stardance
Devlogs: Title: My own site! by @LAZX | Stardance
Devlogs:
Finished the basic structure of the page.
Ships:
I made a simple portfolio like page according to the guide as I completely vibecoded this I didn’t have any challenges. I have not checked the page properly as its just a simple page showing basic info....
|
1793249515.6396012
|
1793335915.6396012
|
|
49817
|
AstroSpace OS: Interactive NASA Astronomy Picture AstroSpace OS: Interactive NASA Astronomy Picture Database by @parth_ida13 | Stardance...
|
parth_ida13
|
1
|
11.0
|
28
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T17:15:15Z", "hours": 11.0, "multiplier": 2.5, "payout": 28, "blessing": "neutral", "text": "I made a software that fetches data from nasa.gov, specifcally the astronomy photos. This is my first project on Stardance and probably even my first real project ever. I set up the backend using Flask and handled requests and json transferring with flask. I even learned how to use CSS properly creating a space-like OS. It was really hard to code the Flask code and really hard to code the jinja2 code aswell. Also it was really hard to find a good host to host my project. Vercel couldnt support the css, netlify couldnt even host my site, github sites also couldnt because it wasnt a static page. I then found out that Glitch had been deleted. Then I went to replit as a begineer and somehow managed to get my localhost to a replit.app (still a start). I really hope I get a good rating because I’ve spent almost 3-4 full days spending time trying to learn everything and then coding it in VS code.", "repo": "https://github.com/parthida13/NASA-Astronomy-Photography", "demo": "https://nasa-astronomy-photography--p361305b.replit.app"}]...
|
[{"post_id": 49707, "ts": "202 [{"post_id": 49707, "ts": "2026-08-18T16:37:05Z", "hours": 0.5375, "text": "Spent almost an hour trying to find a suitable site to host my project on. Found Replit and added a button to go back. Uploaded files on github and attached. Website published and edited README.md. FINAL DEVLOG LETS GOO. This was a really good journey"}, {"post_id": 49564, "ts": "2026-08-18T13:20:02Z", "hours": 2.7703, "text": "Finally finished jinja 2 scripts and some backend issues. Software will be live in a few minutes"}, {"post_id": 49081, "ts": "2026-08-17T18:12:18Z", "hours": 0.6164, "text": "Devlog #11: Rough sketch completed, troubleshooting through invisible overlays. Next steps are to edit header and footer with github id contact id and etc to personalize this showcase of NASA Photos"}, {"post_id": 49042, "ts": "2026-08-17T17:07:19Z", "hours": 1.9186, "text": "Devlog #10: First project on stardance almost completed Today I completed a lot. I set up a Jinja Loop, I coded the backend, I fixed syntax errors, I set up a way to hide my API keys when commiting to git. I also made my first README file, needs improving but not bad. Almost done shipping my website via vercel. Hope this gets a good rating!!!"}, {"post_id": 48886, "ts": "2026-08-17T13:32:19Z", "hours": 0.2622, "text": "CSS Design in progress. Making sure all photos area organized in an orderly matter"}, {"post_id": 48830, "ts": "2026-08-17T11:46:22Z", "hours": 1.3236, "text": "Created Backend using Flask and created templates folder with index.html. Used AI debugging to solve http requests. Designed a rough sketch of the html site. Sent python json data over to html. Next steps for the next 30 mins are to hide API keys and make the system much safer"}, {"post_id": 48732, "ts": "2026-08-17T08:03:38Z", "hours": 0.5344, "text": "Created a backend using Flask, switched data and imported functions from other tabs. Next step is creating the HTML backbone and then finalizing design using help from AI and personal touch."}, {"post_id": 48691, "ts": "2026-08-17T06:20:50Z", "hours": 0.2581, "text": "Finally fixed the functions and added a quit function using sys"}, {"post_id": 48677, "ts": "2026-08-17T05:37:46Z", "hours": 0.4864, "text": "Finished readme but first python script is a bit funky. Gonna need some help debugging the problem. Functions are not valid for some reason. Wasted around 30 minutes with this"}, {"post_id": 48418, "ts": "2026-08-16T19:10:52Z", "hours": 0.4647, "text": "Imported JSON library by using ‘with open’ and ‘dump’ to write a file called nasadata.json. Created the ability to save converted python dictionaries by ‘with open’ to use in other scripts. Successfully created a sample of nasadata.json. Imported nasadata.json and created a system to detect a user’s operating system for the ‘os’ framework .Now next steps are drafting 2nd python script by completing dictionary scripts then connecting html/webos app (frontend) over to python (backend). Then after that I will launch a beta of my project within this first week"}, {"post_id": 48382, "ts": "2026-08-16T18:19:21Z", "hours": 0.3058, "text": "Error- requests code wasnt working. Refined code when debugging with AI then defined API and web request. Next step is formatting dictionary nasadata into an html skeleton from previous deleted project WebOS"}, {"post_id": 48357, "ts": "2026-08-16T17:47:19Z", "hours": 0.4667, "text": "Update: Polished python framework even more learning about requests framework and adding a function for the input validation. Added return True and return False for looping inputs together. Next thing to work on: refining json to dictionary data and selecting specific items in the dictionary"}, {"post_id": 48296, "ts": "2026-08-16T16:33:54Z", "hours": 1.1194, "text": "script draft done- learned how to use requests library and created a small json data fetcher and converted json data to readable python dictionaries. Next I will complete the loop to make sure you can try again after errors"}]...
|
Title: AstroSpace OS: Interactive NASA Astronomy P Title: AstroSpace OS: Interactive NASA Astronomy Picture Database by @parth_ida13 | Stardance
Devlogs:
script draft done- learned how to use requests library and created a small json data fetcher and converted json data to readable python dictionaries. Next I will complete the loop to make sure you can try again after errors
Update: Polished python framework even more learning about requests framework and adding a function for the input validation. Added return True and return False for looping inputs together. Next thing to work on: refining json to dictionary data and selecting specific items in the dictionary
Error- requests code wasnt working. Refined code when debugging with AI then defined API and web request. Next step is formatting dictionary nasadata into an html skeleton from previous deleted project WebOS
Imported JSON library by using ‘with open’ and ‘dump’ to write a file called nasadata.json. Created the ability to save converted python dictionaries by ‘with open’ to use in other scripts. Successfully created a sample of nasadata.json. Imported nasadata.json and created a system to detect a user’s operating system for the ‘os’ framework .Now next steps are drafting 2nd python script by completing dictionary scripts then connecting html/webos app (frontend) over to python (backend). Then after that I will launch a beta of my project within this first week
Finished readme but first python script is a bit funky. Gonna need some help debugging the problem. Functions are not valid for some reason. Wasted around 30 minutes with this
Finally fixed the functions and added a quit function using sys
Created a backend using Flask, switched data and imported functions from other tabs. Next step is creating the HTML backbone and then finalizing design using help from AI and personal touch.
Created Backend using Flask and created templates folder with index.html. Used AI debugging to solve http requests. Designed a rough sketch of the html site. Sent python json data over to html. Next steps for the next 30 mins are to hide API keys and make the system much safer
CSS Design in progress. Making sure all photos area organized in an orderly matter
Devlog #10: First project on stardance almost completed Today I completed a lot. I set up a Jinja Loop, I coded the backend, I fixed syntax errors, I set up a way to hide my API keys when commiting to git. I also made my first README file, needs improving but not bad. Almost done shipping my website via vercel. Hope this gets a good rating!!!
Devlog #11: Rough sketch completed, troubleshooting through invisible overlays. Next steps are to edit header and footer with github id contact id and etc to personalize this showcase of NASA Photos
Finally finished jinja 2 scripts and some backend issues. Software will be live in a few minutes
Spent almost an hour trying to find a suitable site to host my project on. Found Replit and added a button to go back. Uploaded files on github and attached. Website published and edited README.md. FINAL DEVLOG LETS GOO. This was a really good journey
Ships:
I made a software that fetches data from nasa.gov, specifcally the astronomy photos. This is my first project on Stardance and probably even my first real project ever. I set up the backend using Flask and handled requests and json transferring with flask. I even learned how to use CSS properly creating a space-like OS. It was really hard to code the Flask code and really hard to code the jinja2 code aswell. Also it was really hard to find a good host to host my project. Vercel couldnt support the css, netlify couldnt even host my site, github sites also couldnt because it wasnt a static page. I then found out that Glitch had been deleted. Then I went to replit as a begineer and somehow managed to get my localhost to a replit.app (still a start). I really hope I get a good rating because I’ve spent almost 3-4 full days spending time trying to learn everything and then coding it in VS code....
|
1793249518.3782628
|
1793335918.3782628
|
|
49819
|
My very own WebOS by @Alyssa889 | Stardance
|
Alyssa889
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T18:29:40Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my very Own WebOs! It was so fun following the guide and I enjoyed it so much! It was hard to follow the Javascript steps because I’m new to coding but I was able to follow. Hopefully there are no bugs or problems with it!", "repo": "https://github.com/alyssaelias/WebOS", "demo": "https://friendly-telegram-vpg4g6rp9ww9cxq47.github.dev/"}]...
|
[{"post_id": 71372, "ts": "202 [{"post_id": 71372, "ts": "2026-09-20T18:26:39Z", "hours": 0.3492, "text": "Added a ending message to my WebOs and changed the colors of the text. I think it’s ready to ship!"}, {"post_id": 71352, "ts": "2026-09-20T17:55:09Z", "hours": 0.5172, "text": "Styling my WebOS to make it unique"}, {"post_id": 71323, "ts": "2026-09-20T17:02:21Z", "hours": 0.3956, "text": "Editing the draggable window through JS"}, {"post_id": 70738, "ts": "2026-09-19T17:52:26Z", "hours": 1.1453, "text": "Finishing my WebOS and finally got Hackatime to work"}]...
|
Title: My very own WebOS by @Alyssa889 | Stardance Title: My very own WebOS by @Alyssa889 | Stardance
Devlogs:
Finishing my WebOS and finally got Hackatime to work
Editing the draggable window through JS
Styling my WebOS to make it unique
Added a ending message to my WebOs and changed the colors of the text. I think it’s ready to ship!
Ships:
I made my very Own WebOs! It was so fun following the guide and I enjoyed it so much! It was hard to follow the Javascript steps because I’m new to coding but I was able to follow. Hopefully there are no bugs or problems with it!...
|
1793342930.5588439
|
1793429330.5588439
|
|
49829
|
EzRegex by @yuv1 | Stardance
|
yuv1
|
1
|
1.0
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T03:20:13Z", "hours": 1.0, "multiplier": 15.87, "payout": 12, "blessing": "neutral", "text": "What did you make? EzRegex is a regex playground that explains patterns in plain English while you type. You enter a pattern, paste in some text, and it highlights matches live while breaking the pattern into chunks with a card explaining each one. Hover a chunk and its explanation lights up, and the other way around too. The idea came from FBLA. I was competing in Mobile Application Development and one of the rubric criteria was input validation. I knew regex and I was using it, but when I sat down to explain it to a judge who might not be technical, I couldn’t. It took me a while to work out a one line explanation that actually landed. A few weeks later I’d forgotten it. That stuck with me. If I had to fight that hard to explain it once, what about developers who touch regex every day? Nobody is memorizing those patterns. And the stakes aren’t small. Input validation is what stands between a login form and a SQL injection. It’s the thing you skip when it’s annoying, and skipping it is how sensitive pages break. So I built the tool I wished I’d had while prepping for that event. What was challenging? The tokenizer. I went in thinking “split the regex up, write a description for each piece, done.” That is not what it is. I ended up writing the front end of a small compiler: walking the pattern character by character, holding state, deciding where one token ends and the next begins, handling escapes inside character classes where the rules change, attaching quantifiers backwards onto whatever they modify. A few rules ate hours on their own. A ] as the first character inside a character class is a literal ] , not a closing bracket. A hyphen at the start or end of a class is literal, but in the middle it’s a range. {2,6} never stands alone, it belongs to the token before it. Every one of those I had to discover and then handle. Rendering had its own problem. The highlighting is a transparent textarea sitting on top of a div, and if the two layers wrap text even slightly differently, the highlights slide off the words. Getting both layers to agree on every metric that affects wrapping took longer than I want to admit. What are you proud of? The tokenizer is mine. I used AI for scaffolding and boilerplate and I say so openly in the repo, but the parser is hand written and I understand every line of it. That was the whole point of building this instead of just using regex101. I’m also proud that I scoped it. Recursive group expansion would have been cool. I cut it, wrote down why in the roadmap, and shipped. Knowing what isn’t in v1 turned out to matter as much as knowing what is. How to test it Open https://ezregex.vercel.app . There’s no signup or install, and nothing you type leaves your browser. If you don’t have a pattern in mind, use the examples panel on the left. There are 29 of them across validation, extraction, cleanup, and code. Click one and it loads with a test string that actually produces matches. Worth trying: Type your own pattern and watch the breakdown update on every keystroke Hover a coloured chunk in the pattern to see its card highlight, then hover a card to see the chunk highlight back Break a pattern on purpose ( [a- works) to see the error handling Toggle the flags and switch themes Shrink the window under 768px, the panels turn into tabs and the examples become a drawer Source and build notes: https://github.com/Yuv1s/EzRegex", "repo": "https://github.com/Yuv1s/EzRegex", "demo": "https://ezregex.vercel.app"}]...
|
[{"post_id": 48366, "ts": "202 [{"post_id": 48366, "ts": "2026-08-16T17:59:07Z", "hours": 0.7814, "text": "Devlog - rebuilding the EzRegex UI Why The app worked. It just looked generated. The tell was the colour. Everything was indigo; buttons, focus rings, flag pills, match highlights, links, scrollbars. Then a violet, an emerald, a sky and an amber for the example categories, and eight more hues for the regex tokens. About a dozen colours, none of them meaning anything. The rule Colour is treated as a scarce resource and spent only where it carries meaning. Everything else went neutral. What survived: Colour Means Ochre a match, a selection, focus Red an invalid pattern Pink / green / blue / cyan the four regex token families Neutral everything else Category badges lost their colours. Token types went from eight hues down to four, grouped by what they do rather than one colour each. The change I like most: plain literals are uncoloured now. They’re most of any pattern, and colouring them is what turns a regex display into confetti. Greying them out is what made the other four colours mean something. Also changed Custom warm-grey ramp in OKLCH instead of Tailwind’s stock gray-* Geist instead of Inter The pattern field moved to its own full-width band — it’s the point of the app, it shouldn’t be one item in a column The match count is visible. It existed before, but only as sr-only text Bugs I hit on the way Highlights drifted off the text. The textarea and the layer behind it wrapped differently, and a trailing newline made the backdrop one line short /a*/g on a big paste could hang the page. Capped at 5,000 matches []] was described as \"[\" The explainer said: Matches the literal character “the @ symbol” You could tab into the off-screen mobile drawer. It also didn’t trap focus or close on Escape The PWA manifest was untouched boilerplate — the app installed as “MyWebSite” The part I nearly got wrong I wrote a script to check every text-on-background pair against WCAG AA instead of trusting my eyes. The first palette failed 7 checks. A muted label was at 2.75:1 where it needed 4.5:1. Button text was at 4.02:1. All of it looked fine on my monitor. 58 pairs pass now. One visible cost: tertiary text sits closer to secondary than I’d like, because anything lighter fails. Size and weight carry the hierarchy instead."}]...
|
Title: EzRegex by @yuv1 | Stardance
Devlogs:
Devl Title: EzRegex by @yuv1 | Stardance
Devlogs:
Devlog - rebuilding the EzRegex UI Why The app worked. It just looked generated. The tell was the colour. Everything was indigo; buttons, focus rings, flag pills, match highlights, links, scrollbars. Then a violet, an emerald, a sky and an amber for the example categories, and eight more hues for the regex tokens. About a dozen colours, none of them meaning anything. The rule Colour is treated as a scarce resource and spent only where it carries meaning. Everything else went neutral. What survived: Colour Means Ochre a match, a selection, focus Red an invalid pattern Pink / green / blue / cyan the four regex token families Neutral everything else Category badges lost their colours. Token types went from eight hues down to four, grouped by what they do rather than one colour each. The change I like most: plain literals are uncoloured now. They’re most of any pattern, and colouring them is what turns a regex display into confetti. Greying them out is what made the other four colours mean something. Also changed Custom warm-grey ramp in OKLCH instead of Tailwind’s stock gray-* Geist instead of Inter The pattern field moved to its own full-width band — it’s the point of the app, it shouldn’t be one item in a column The match count is visible. It existed before, but only as sr-only text Bugs I hit on the way Highlights drifted off the text. The textarea and the layer behind it wrapped differently, and a trailing newline made the backdrop one line short /a*/g on a big paste could hang the page. Capped at 5,000 matches []] was described as "[" The explainer said: Matches the literal character “the @ symbol” You could tab into the off-screen mobile drawer. It also didn’t trap focus or close on Escape The PWA manifest was untouched boilerplate — the app installed as “MyWebSite” The part I nearly got wrong I wrote a script to check every text-on-background pair against WCAG AA instead of trusting my eyes. The first palette failed 7 checks. A muted label was at 2.75:1 where it needed 4.5:1. Button text was at 4.02:1. All of it looked fine on my monitor. 58 pairs pass now. One visible cost: tertiary text sits closer to secondary than I’d like, because anything lighter fails. Size and weight carry the hierarchy instead.
Ships:
What did you make? EzRegex is a regex playground that explains patterns in plain English while you type. You enter a pattern, paste in some text, and it highlights matches live while breaking the pattern into chunks with a card explaining each one. Hover a chunk and its explanation lights up, and the other way around too. The idea came from FBLA. I was competing in Mobile Application Development and one of the rubric criteria was input validation. I knew regex and I was using it, but when I sat down to explain it to a judge who might not be technical, I couldn’t. It took me a while to work out a one line explanation that actually landed. A few weeks later I’d forgotten it. That stuck with me. If I had to fight that hard to explain it once, what about developers who touch regex every day? Nobody is memorizing those patterns. And the stakes aren’t small. Input validation is what stands between a login form and a SQL injection. It’s the thing you skip when it’s annoying, and skipping it is how sensitive pages break. So I built the tool I wished I’d had while prepping for that event. What was challenging? The tokenizer. I went in thinking “split the regex up, write a description for each piece, done.” That is not what it is. I ended up writing the front end of a small compiler: walking the pattern character by character, holding state, deciding where one token ends and the next begins, handling escapes inside character classes where the rules change, attaching quantifiers backwards onto whatever they modify. A few rules ate hours on their own. A ] as the first character inside a character class is a literal ] , not a closing bracket. A hyphen at the start or end of a class is literal, but in the middle it’s a range. {2,6} never stands alone, it belongs to the token before it. Every one of those I had to discover and then handle. Rendering had its own problem. The highlighting is a transparent textarea sitting on top of a div, and if the two layers wrap text even slightly differently, the highlights slide off the words. Getting both layers to agree on every metric that affects wrapping took longer than I want to admit. What are you proud of? The tokenizer is mine. I used AI for scaffolding and boilerplate and I say so openly in the repo, but the parser is hand written and I understand every line of it. That was the whole point of building this instead of just using regex101. I’m also proud that I scoped it. Recursive group expansion would have been cool. I cut it, wrote down why in the roadmap, and shipped. Knowing what isn’t in v1 turned out to matter as much as knowing what is. How to test it Open https://ezregex.vercel.app . There’s no signup or install, and nothing you type leaves your browser. If you don’t have a pattern in mind, use the examples panel on the left. There are 29 of them across validation, extraction, cleanup, and code. Click one and it loads with a test string that actually produces matches. Worth trying: Type your own pattern and watch the breakdown update on every keystroke Hover a coloured chunk in the pattern to see its card highlight, then hover a card to see the chunk highlight back Break a pattern on purpose ( [a- works) to see the error handling Toggle the flags and switch themes Shrink the window under 768px, the panels turn into tabs and the examples become a drawer Source and build notes: https://github.com/Yuv1s/EzRegex...
|
1792875240.708244
|
1793739240.708244
|
|
49879
|
WARIO NEEDS VALORANT by @Astrixzen | Stardance
|
Astrixzen
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T18:04:47Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a game using godot called “Wario NEEDS Valorant”. Its a small game using a ton of confusing code. Even though it only has 2 levels right now, im hoping to improve it with the next part of making a warioware game", "repo": "https://github.com/Astrixzen/Warioware-game", "demo": "https://astrixzen.itch.io/warioneedsvalorant"}]...
|
[{"post_id": 48937, "ts": "202 [{"post_id": 48937, "ts": "2026-08-17T14:36:03Z", "hours": 6.0347, "text": "WARIOWARE GAME-Wario NEEDS YOU:I made a wario game where you need to go through 2 totally unique level that totally do not follow the guide. But please guys i hope yall play it cause i spent way to long drawing wario in paint :D"}]...
|
Title: WARIO NEEDS VALORANT by @Astrixzen | Starda Title: WARIO NEEDS VALORANT by @Astrixzen | Stardance
Devlogs:
WARIOWARE GAME-Wario NEEDS YOU:I made a wario game where you need to go through 2 totally unique level that totally do not follow the guide. But please guys i hope yall play it cause i spent way to long drawing wario in paint :D
Ships:
I made a game using godot called “Wario NEEDS Valorant”. Its a small game using a ton of confusing code. Even though it only has 2 levels right now, im hoping to improve it with the next part of making a warioware game...
|
1793253006.6728823
|
1793339406.6728823
|
|
49880
|
Portfolio Website by @samarthgoyal | Stardance
|
samarthgoyal
|
1
|
7.0
|
8
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T13:51:25Z", "hours": 7.0, "multiplier": 1.21, "payout": 8, "blessing": "neutral", "text": "A personal developer portfolio built from scratch with HTML, CSS featuring my projects, skills, experience, certifications, and work in cybersecurity.", "repo": "https://github.com/Samarthgoyal51/Portfolio_Website", "demo": "https://personal-website-eight-fawn-62.vercel.app/"}]...
|
[{"post_id": 48875, "ts": "202 [{"post_id": 48875, "ts": "2026-08-17T13:19:48Z", "hours": 6.7561, "text": "My own portfolio website"}]...
|
Title: Portfolio Website by @samarthgoyal | Starda Title: Portfolio Website by @samarthgoyal | Stardance
Devlogs:
My own portfolio website
Ships:
A personal developer portfolio built from scratch with HTML, CSS featuring my projects, skills, experience, certifications, and work in cybersecurity....
|
1793253014.691111
|
1793339414.691111
|
|
49891
|
NUMBER GUESSING GAME by @Dhanush_Mundra | Stardanc NUMBER GUESSING GAME by @Dhanush_Mundra | Stardance...
|
Dhanush_Mundra
|
1
|
1.4
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T11:56:49Z", "hours": 0.0, "multiplier": 1.22, "payout": 0, "blessing": "neutral", "text": "I made a NUMBER GUESSING GAME. This is a game in which the user tries to guess the number thought by the computer. There are 4 difficulty levels that the player can choose and based on that the number of attempts are given. Best score for each levels are also saved making it a good user experience. The challenging part was that I speed runner to make this project and took a target myself that I need to make this project in an hour and I am proud that I completed this project in just half an hour. So please visit my project and rate it nicely. THANK YOU", "repo": "https://github.com/mundradhanush-lgtm/NUMBER---GUESSING---GAME", "demo": "https://mundradhanush-lgtm.github.io/NUMBER_GUESSING_GAME/"}]...
|
[{"post_id": 69009, "ts": "202 [{"post_id": 69009, "ts": "2026-09-16T06:43:25Z", "hours": 0.3167, "text": "ok so this is may last devlon and i have made the project finally."}, {"post_id": 54485, "ts": "2026-08-25T14:37:31Z", "hours": 1.0817, "text": "ok so I reworked on my NUMBER GUESSING GAME project because I got some reviews that said that it could be modified more, so I am reworking on it and added small but a very impactful feature which is of HINT. so I made it like this that the player would have to first attempt the minimum number of guesses to use the hint for different difficulty levels"}, {"post_id": 49104, "ts": "2026-08-17T18:45:13Z", "hours": 0.0719, "text": "Today was a very good day for me as I made this project. I basically speed runner in this project to complete it under one hour and I did that I am glad. this was like a short break from my other projects while practicing python. yes, this is a short and simple project but it is made in a very less time so this is a very big achievement for me to make a project like this in such a short period of time. hope you’ll give the best rating for my project."}]...
|
Title: NUMBER GUESSING GAME by @Dhanush_Mundra | S Title: NUMBER GUESSING GAME by @Dhanush_Mundra | Stardance
Devlogs:
Today was a very good day for me as I made this project. I basically speed runner in this project to complete it under one hour and I did that I am glad. this was like a short break from my other projects while practicing python. yes, this is a short and simple project but it is made in a very less time so this is a very big achievement for me to make a project like this in such a short period of time. hope you’ll give the best rating for my project.
ok so I reworked on my NUMBER GUESSING GAME project because I got some reviews that said that it could be modified more, so I am reworking on it and added small but a very impactful feature which is of HINT. so I made it like this that the player would have to first attempt the minimum number of guesses to use the hint for different difficulty levels
ok so this is may last devlon and i have made the project finally.
Ships:
I made a NUMBER GUESSING GAME. This is a game in which the user tries to guess the number thought by the computer. There are 4 difficulty levels that the player can choose and based on that the number of attempts are given. Best score for each levels are also saved making it a good user experience. The challenging part was that I speed runner to make this project and took a target myself that I need to make this project in an hour and I am proud that I completed this project in just half an hour. So please visit my project and rate it nicely. THANK YOU...
|
1793253032.3072689
|
1793339432.3072689
|
|
49916
|
Focus Orbit by @Aaravkatiyar | Stardance
|
Aaravkatiyar
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T21:14:07Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Built and deployed Focus Orbit, an original student new-tab dashboard with a persistent focus task, local to-dos, themes, quick links, quotes, and a resilient NASA APOD panel. The live demo and source code are linked above.", "repo": "https://github.com/aaravkatiyar55-gif/focus-orbit-new-tab", "demo": "https://aaravkatiyar55-gif.github.io/focus-orbit-new-tab/"}]...
|
[{"post_id": 48489, "ts": "202 [{"post_id": 48489, "ts": "2026-08-16T21:11:43Z", "hours": 1.1031, "text": "Focus Orbit is my original space-inspired student new-tab dashboard, built with HTML, CSS, and JavaScript. It includes a live clock and date, a saved daily focus task, persistent local to-dos, motivational quotes, theme switching, and editable quick links.I also added a NASA Astronomy Picture of the Day panel with loading feedback, timeout/error handling, a fallback state, and a retry button. I deployed it through GitHub Pages and tested the public app in a fresh browser: the clock/date rendered, APOD loaded successfully, and loading plus retry behavior worked.GitHub: https://github.com/aaravkatiyar55-gif/focus-orbit-new-tabLive demo: https://aaravkatiyar55-gif.github.io/focus-orbit-new-tab/"}]...
|
Title: Focus Orbit by @Aaravkatiyar | Stardance
D Title: Focus Orbit by @Aaravkatiyar | Stardance
Devlogs:
Focus Orbit is my original space-inspired student new-tab dashboard, built with HTML, CSS, and JavaScript. It includes a live clock and date, a saved daily focus task, persistent local to-dos, motivational quotes, theme switching, and editable quick links.I also added a NASA Astronomy Picture of the Day panel with loading feedback, timeout/error handling, a fallback state, and a retry button. I deployed it through GitHub Pages and tested the public app in a fresh browser: the clock/date rendered, APOD loaded successfully, and loading plus retry behavior worked.GitHub: https://github.com/aaravkatiyar55-gif/focus-orbit-new-tabLive demo: https://aaravkatiyar55-gif.github.io/focus-orbit-new-tab/
Ships:
Built and deployed Focus Orbit, an original student new-tab dashboard with a persistent focus task, local to-dos, themes, quick links, quotes, and a resilient NASA APOD panel. The live demo and source code are linked above....
|
1793253372.7095273
|
1793339772.7095273
|
|
49926
|
NASA Meteorite Landings by @abdullahimranrafiq | S NASA Meteorite Landings by @abdullahimranrafiq | Stardance...
|
abdullahimranrafiq
|
1
|
4.0
|
47
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T20:09:56Z", "hours": 4.0, "multiplier": 10.79, "payout": 47, "blessing": "neutral", "text": "Meterite Landing Dataset Vizualization I vizualized the NASA Meteorite Landings Dataset CSV: https://data.nasa.gov/docs/legacy/meteorite_landings/Meteorite_Landings.csv , and plotted the meteorite landings given in the Meteorite Landings dataset: https://data.nasa.gov/dataset/meteorite-landings , and to develop the project, I used/read the following documentation/articles: https://data.nasa.gov/dataset/meteorite-landings https://github.com/AbdullahImranRafiq/nasa-meteorite-landings https://towardsdatascience.com/how-to-create-a-map-from-geospatial-data-in-python-f4bb7d11ddad/ https://pypi.org/project/folium/ https://python-visualization.github.io/folium/latest/reference.html https://earthdatascience.org/courses/scientists-guide-to-plotting-data-in-python/plot-spatial-data/customize-vector-plots/interactive-leaflet-maps-in-python-folium/ https://stackoverflow.com/questions/63245563/make-this-notebook-trusted-to-load-map-file-trust-notebook https://towardsdatascience.com/folium-mapping-displaying-markers-on-a-map-6bd56f3e3420/ https://stackoverflow.com/questions/40334922/plotting-markers-on-a-map-using-pandas-folium https://stackoverflow.com/questions/16476924/how-can-i-iterate-over-rows-in-a-pandas-dataframe https://www.kaggle.com/datasets/nasa/meteorite-landings https://stackoverflow.com/questions/74307894/valueerror-expected-two-lat-lon-values-for-location-instead-got https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.dtypes.html https://www.reddit.com/r/learnpython/comments/44dpgd/convert_pandas_dataframe_column_from_str_to_tuple/ https://stackoverflow.com/questions/36921951/truth-value-of-a-series-is-ambiguous-use-a-empty-a-bool-a-item-a-any-o https://python-visualization.github.io/folium/latest/user_guide/plugins/marker_cluster.html https://towardsdatascience.com/fix-valueerror-truth-value-of-a-series-is-ambiguous-pandas-a683f0fd1b2f/ https://stackoverflow.com/questions/63152298/updating-folium-changed-the-popup-box-width https://stackoverflow.com/questions/40888438/newline-in-leaflet-marker-popup-text https://stardance.hackclub.com/projects/49926 I vizualized the Meteorite Landings dataset: https://data.nasa.gov/dataset/meteorite-landings , which had a specific column for geographical coordinates of Meteorite Landings on Earth, so, I made a Geospatial map with the Meteorite landings shown as markers, and once a marker is clicked on, it shows details regarding the Meteorite, such as: Name of the Meteorite (usually named after the location) Class of the Meteorite. Mass of the Meteorite in grams. Year of the Meteorite, when it was seen falling or discovered.", "repo": "https://github.com/AbdullahImranRafiq/nasa-meteorite-landings", "demo": "https://abdullahimranrafiq.github.io/nasa-meteorite-landings/"}]...
|
[{"post_id": 49499, "ts": "202 [{"post_id": 49499, "ts": "2026-08-18T11:25:27Z", "hours": 0.9794, "text": "I wrote a README, and published a demo URL hosted on https://abdullahimranrafiq.github.io/nasa-meteorite-landings/ to finish project setup."}, {"post_id": 48729, "ts": "2026-08-17T08:01:39Z", "hours": 3.4164, "text": "I visualized a Official NASA Dataset , This is a Meteorite Landings Dataset , which contains data of Meteorite Landings on Earth and their respective landing geographical latitudes, and longitudes. I used data visualization in Python to visualize it on a geographical map, with markers representing the Meteorite Landings, which gets exported to a html file (shown in the given image), and also I added a popup that when a Meteorite Landing is clicked on it will show the respective Meteorite Landing’s details such as the name of the meteorite, the class of the meteorite, and the mass of the meteorite in grams, and the year it was seen falling or the year it was discovered. (shown in the given image)"}]...
|
Title: NASA Meteorite Landings by @abdullahimranra Title: NASA Meteorite Landings by @abdullahimranrafiq | Stardance
Devlogs:
I visualized a Official NASA Dataset , This is a Meteorite Landings Dataset , which contains data of Meteorite Landings on Earth and their respective landing geographical latitudes, and longitudes. I used data visualization in Python to visualize it on a geographical map, with markers representing the Meteorite Landings, which gets exported to a html file (shown in the given image), and also I added a popup that when a Meteorite Landing is clicked on it will show the respective Meteorite Landing’s details such as the name of the meteorite, the class of the meteorite, and the mass of the meteorite in grams, and the year it was seen falling or the year it was discovered. (shown in the given image)
I wrote a README, and published a demo URL hosted on https://abdullahimranrafiq.github.io/nasa-meteorite-landings/ to finish project setup.
Ships:
Meterite Landing Dataset Vizualization I vizualized the NASA Meteorite Landings Dataset CSV: https://data.nasa.gov/docs/legacy/meteorite_landings/Meteorite_Landings.csv , and plotted the meteorite landings given in the Meteorite Landings dataset: https://data.nasa.gov/dataset/meteorite-landings , and to develop the project, I used/read the following documentation/articles: https://data.nasa.gov/dataset/meteorite-landings https://github.com/AbdullahImranRafiq/nasa-meteorite-landings https://towardsdatascience.com/how-to-create-a-map-from-geospatial-data-in-python-f4bb7d11ddad/ https://pypi.org/project/folium/ https://python-visualization.github.io/folium/latest/reference.html https://earthdatascience.org/courses/scientists-guide-to-plotting-data-in-python/plot-spatial-data/customize-vector-plots/interactive-leaflet-maps-in-python-folium/ https://stackoverflow.com/questions/63245563/make-this-notebook-trusted-to-load-map-file-trust-notebook https://towardsdatascience.com/folium-mapping-displaying-markers-on-a-map-6bd56f3e3420/ https://stackoverflow.com/questions/40334922/plotting-markers-on-a-map-using-pandas-folium https://stackoverflow.com/questions/16476924/how-can-i-iterate-over-rows-in-a-pandas-dataframe https://www.kaggle.com/datasets/nasa/meteorite-landings https://stackoverflow.com/questions/74307894/valueerror-expected-two-lat-lon-values-for-location-instead-got https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.dtypes.html https://www.reddit.com/r/learnpython/comments/44dpgd/convert_pandas_dataframe_column_from_str_to_tuple/ https://stackoverflow.com/questions/36921951/truth-value-of-a-series-is-ambiguous-use-a-empty-a-bool-a-item-a-any-o https://python-visualization.github.io/folium/latest/user_guide/plugins/marker_cluster.html https://towardsdatascience.com/fix-valueerror-truth-value-of-a-series-is-ambiguous-pandas-a683f0fd1b2f/ https://stackoverflow.com/questions/63152298/updating-folium-changed-the-popup-box-width https://stackoverflow.com/questions/40888438/newline-in-leaflet-marker-popup-text https://stardance.hackclub.com/projects/49926 I vizualized the Meteorite Landings dataset: https://data.nasa.gov/dataset/meteorite-landings , which had a specific column for geographical coordinates of Meteorite Landings on Earth, so, I made a Geospatial map with the Meteorite landings shown as markers, and once a marker is clicked on, it shows details regarding the Meteorite, such as: Name of the Meteorite (usually named after the location) Class of the Meteorite. Mass of the Meteorite in grams. Year of the Meteorite, when it was seen falling or discovered....
|
1793253380.7845154
|
1793339780.7845154
|
|
49944
|
Trawl - CTF Toolkit by @yuv1 | Stardance
|
yuv1
|
1
|
55.65
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T18:24:13Z", "hours": 52.0, "multiplier": 18.88, "payout": 0, "blessing": "neutral", "text": "Trawl Trawl is a CTF toolkit for checking suspicious files, encoded text, binaries, and challenge websites from one place. In a CTF, you often get an image, audio file, string, or binary and have to figure out what is hidden inside it. Usually that means opening a bunch of different tools and already knowing what to try. Trawl tries to make that easier. You give it the challenge, and it runs checks that make sense for that input. Try it Live: trawlctf.vercel.app Source: github.com/Yuv1s/Trawl The easiest way to test it: Open the site. Click Tour . Trawl loads a sample file with a hidden flag. Watch the checks run and see what finds it. There are also more sample files under Demos , so you do not need your own CTF challenge. What it can do Trawl has 19 main checks in the web app. It can: inspect PNG, BMP, GIF, JPEG, and WAV files for hidden data check image and audio bits show image bit planes and audio spectrograms find metadata, readable strings, embedded files, and hidden file data inspect ZIP files and PDF structure inspect ELF and PE binaries unwrap encoded text such as base64 and hex solve several common classical ciphers collect useful findings and detected flags in one results panel There is also an optional local web scanner called Remora. It can crawl a CTF website, inspect pages, scripts, headers, and resources, then send useful findings back to Trawl. How it works Most of the analysis is written in Rust and compiled to WebAssembly. The frontend is built with SvelteKit. For normal file and text analysis, the input stays in your browser instead of being uploaded to a server. No account is needed, and the app can keep working offline after it loads. Remora is separate because website scanning needs network access. It runs locally on your computer and connects to the target you give it. I also wrote the analysis and file parsing code instead of relying on existing analysis libraries. The Rust core uses wasm-bindgen to connect Rust to JavaScript. Why I built it The annoying part of CTF forensics was having lots of separate tools and needing to know which one to use before I even understood the challenge. I wanted something where I could drop in the file first and get a useful starting point. I also added the tour and demo files so someone who has never used Trawl can still open the site and understand what it does. What took the most work A big part of the work was avoiding false positives. A detector that marks everything as suspicious is not useful, so I made test files where I knew what was hidden and clean files where nothing should be found. I also tested the ELF and PE parsers with real binaries and compared results with tools like readelf and objdump . One bug I found was that Trawl correctly detected a flag inside a GIF, but the result was stored in the wrong place, so it never appeared in the UI. That pushed me to test the full path from reading the file to actually showing the result. What I learned I learned a lot about image formats, audio samples, compression, steganography, classical cryptography, binary formats, WebAssembly, browser limits, and local networking. The biggest lesson was that finding the answer in code is only part of making a useful tool. The result also has to be tested, understandable, and easy to find.", "repo": "https://github.com/Yuv1s/Trawl", "demo": "https://trawlctf.vercel.app"}]...
|
[{"post_id": 65607, "ts": "202 [{"post_id": 65607, "ts": "2026-09-10T20:56:28Z", "hours": 3.6467, "text": "Trawl has just been shipped!"}, {"post_id": 61673, "ts": "2026-09-04T18:22:19Z", "hours": 0.6467, "text": "Now live at https://trawlctf.vercel.app"}, {"post_id": 61144, "ts": "2026-09-03T22:15:43Z", "hours": 6.5825, "text": "Reversing was the one category left. Trawl had nothing for it. Everything else was covered by the time the tour shipped: steganography, cryptography (Hill and Playfair joined a few weeks back, along with columnar transposition wide enough that brute force stops working), PDF documents read the same way a ZIP already was, object by object, checked against what the file’s own index claims. Drop a binary, though, and the best Trawl could do was name the format and stop there. I’m not building a decompiler. Ghidra and IDA earned that word over years of real compiler-engineering work, and half a decompiler is worse than none: wrong pseudocode still reads as confident, and confidently wrong is the last thing a forensics tool should ever hand someone. What Trawl does instead is the pass every real session starts with anyway, before a disassembler even opens: the header, the section table, what the binary calls, what it offers, and whether it was actually built with the defenses that matter, NX, ASLR, RELRO, a stack canary, Control Flow Guard. Two formats that don’t agree on anything ELF went first, since it’s most of what a CTF binary actually is. Then PE, the Windows half, which turned out to be a different kind of problem. An ELF section header says outright where its bytes sit in the file. A PE barely says anything that way. It addresses its import and export tables by where they’ll land in memory once the loader gets to them, so reading either one means walking the section table first, just to translate an address nobody gave you a file offset for. The two parsers ended up sharing almost nothing except a type underneath them, built so one panel could read both. Where a protection has no equivalent in the other format, the panel just leaves it out instead of guessing. A PE has nothing RELRO would describe, and showing RELRO: none there would report a defense as missing that the format never offered to begin with. The bug where the layout only worked on files I made up myself Testing this against binaries I built myself went fine, because of course it did. I wrote them to go fine. So I went and found real ones instead. gcc output straight out of WSL: a stripped build, a static build, a shared library. Real Windows system binaries too, notepad.exe and kernel32.dll . I checked every one byte for byte against readelf and objdump until the entry points and export counts lined up exactly. Then I compiled a tiny C++ file. Three lines, a map of vectors, nothing unusual. Its export name came out at 286 characters. That’s what name mangling does to the plainest code without even trying. My import list rendered each name as a small chip, capped with a percentage-based max-width so nothing would run off the page. It did nothing. A grid item won’t shrink below its own content unless you tell it to, and I hadn’t, so the chip just kept going: clipped mid-character, no ellipsis, dragging the whole panel sideways with it. Fine on every file I’d invented. Broken on the first real one I pointed it at. AI helped with the writing and most of the parsing code, same as always. The real time went into finding bytes I hadn’t written myself to test it against, a real compiler, a real linker, a symbol nobody designed to be readable. Testing against your own fixtures only ever proves the code agrees with itself. Next up: Windows registry hives, for tracing which USB stick was plugged in when."}, {"post_id": 58436, "ts": "2026-08-30T21:07:08Z", "hours": 14.1186, "text": "Trawl could find anything. Nobody knew where to start. Trawl has gotten good. It cracks AES by hand, forges JWTs, reads flags out of pixels and cookies and the low bits of a sound file. On the mock CTF site I keep building to break, it clears 24 of 26 now. None of that helps the person who opens it for the first time and sees a grid of two dozen tools and a box that says “drop a file.” What file? They don’t have one. They came to look, and there is nothing to look at. So I built the tour. The tour that drops the file for you Tick “take the tour” and Trawl hands itself a sample image with a flag already hidden in the low bits, runs every tool against it before you have done anything, and then walks you through what each one turned up. The flag it already found. The tool that read it out of the red channel. The one that does not read the message but estimates how much is hidden. Two minutes, no CTF knowledge required, and by the end you have watched the whole thing work on a real answer. Because one demo is not much of a demo, there is a library behind it now. Drop-in files for every tool: a flag in a PNG’s low bits, a flag stuck on after the image ends, a flag in the second frame of a GIF, a flag written into the low bit of every audio sample, a flag that only reads once you subtract one frame from the next. Each one hides its answer somewhere different. A button in the corner opens them any time, so the people who skipped the tour and the people who came back a week later can still poke at something real. The bug where the tool found it and never told anyone The GIF samples embarrassed me. Drop one, and the tool would decode the second frame, find the flag, and then say nothing. The cod-end, the panel where every find is supposed to surface, sat empty. It was not that the flag went unfound. It was found, written down, and filed one level too deep to ever be shown. The panel only reads findings from a file’s children, and a plain GIF has no children, so its own results fell through the floor. A few lines to lift them back up. The kind of bug that passes every test, because the test checks that the flag was found, not that a human would ever see it. AI helped with the writing and the mechanical parts, same as always. The real time went into the gap between “the tool works” and “a stranger can tell that it works,” which turns out to be most of the distance. The feature list still sounds small. A tour, some sample files, a button. But the whole point was to make the thing findable, and none of the finding matters if the first thing you see is a shrug. Next up: the last two flags on that mock site, and maybe a screenshot in the readme now that there is something worth showing."}, {"post_id": 55039, "ts": "2026-08-26T13:54:36Z", "hours": 11.1219, "text": "The scanner connected. That was the easy part. Last time, the whole win was that the scanner connected at all. Trawl spots the local process, the page swaps to a URL box, and it starts crawling. But a scanner that connects and finds nothing is just a slow way to load a webpage. So this time I made it actually find the flags. On the mock CTF site I built last time to be broken, the web scan went from 4 findings to 18. Counting the image tools, the whole thing now gets 23 of the 26. Teaching it to decode, not just fetch A flag is almost never sitting in plain text waiting to be read. It’s base64 hiding in a cookie. It’s hex in a JavaScript variable. It’s a colour written as CSS escape codes, or an array of numbers XORed against a single byte, or an ETag that’s really just base64 printed backwards. So the scanner now tries all of those on everything it pulls down: every page, every script, every response header. It keeps a result only when a decode actually produces a flag, and shuts up otherwise. That last part matters more than it sounds. A tool that reports something on every site is noise, not a finding. One challenge hid an AES key and its payload in an image’s metadata. The rule I keep breaking my own back over is no dependencies, nothing borrowed, so instead of pulling in a crypto library I wrote AES by hand and checked it against the official test vectors. It works. I would not recommend the experience. The bug that made a working scanner look broken For a while every scan felt like it hung. The scanner was fine. localhost was the problem. localhost resolves to the IPv6 address first. My test site only listened on IPv4. Windows takes about two seconds to give up on the dead address before falling back to the one that works, and two seconds across fifteen requests is a scan that looks frozen. The fix was one line: try IPv4 first. The debugging was not one line. Then, the morning I went to cut the release, a routine Rust update added a new lint and broke the build on code I hadn’t touched in weeks. Pinned the version, fixed the lint, shipped. AI helped with the writing and some of the mechanical refactors, but the real time went where it always goes: into the two seconds nobody sees, and the compiler that changed its mind overnight. The feature list sounds small again. Reads a site, decodes what it finds, cracks an image. The list is never the part that takes the week. Next up is JWTs, so the scanner can start forging its way into the challenges it currently just knocks on."}, {"post_id": 52676, "ts": "2026-08-22T22:59:35Z", "hours": 10.2175, "text": "I spent hours making a web scanner not be a web scanner The obvious way to scan a website is to send the URL to a server and let the server do the ugly work. Trawl does not get that luxury. One of the rules I have tried to keep since the first version is that everything happens on your machine . No files uploaded, no URLs sent to me, no remote API quietly doing the interesting part. That became significantly harder when I added web reconnaissance. The scanner that had to stay local Browsers are deliberately terrible at crawling arbitrary websites. CORS, networking restrictions, and a dozen other sensible security decisions get in the way. So I ended up building a small local scanner and shipping it as a GitHub release. Installation is a one-line winget command. Once it is running, Trawl detects it automatically. The interface changes live, asks for a URL, and the scanner starts digging through the site for things that probably should not be public: hidden files, exposed secrets, interesting endpoints, and other CTF-shaped mistakes. Nothing leaves the machine. That sentence took far longer to make true than it looks . AI helped with writing and refactoring parts of it, but most of the time disappeared into figuring out how the browser, local process, networking, detection, and UI should talk to each other without turning Trawl into the server-backed app I specifically did not want to build. So I built a website designed to be broken Testing a recon scanner against random real sites is a terrible test. So I made my own mock CTF site instead. It has challenges from easy through expert, with deliberately hidden files and secrets for Trawl to discover. I now have a controlled target where I know exactly what should be found, which makes false positives and missed findings much harder to hide. I also improved the Vigenère decoder while I was in there. The feature list sounds small: better decoder, local scanner, test site. The amount of plumbing underneath it absolutely was not."}, {"post_id": 49928, "ts": "2026-08-18T21:55:13Z", "hours": 1.0806, "text": "The hard part was knowing when to stop Here is what someone hands you in a competition. NWE2ZDc4Njg1YTMzNzQzMDYxNDg0YTZjNWE1NjM5 Eighty-eight characters of nothing. No hint about what it is or how many times it has been through the wringer. You paste it into Trawl and it comes back: base64: 5a6d78685a33743061484a6c5a56397359586c6c636e4e665a47566c hex: ZmxhZ3t0aHJlZV9sYXllcnNfZGVlcH0= base64: flag{three_layers_deep} Three layers, unwrapped one at a time, and the answer sitting at the bottom. Nobody told it there were three. Nobody told it what any of them were. The new half This is Mantis, the code breaking side of the project, and the first thing I have built that does not need a file at all. Paste a string, get an answer. It is named after the mantis shrimp, which punches hard enough to crack a crab shell and sees colours we do not have the eyes for. Force and perception, which turns out to be the whole job. Decoding was easy. Stopping was not. I expected the tricky part to be writing the decoders. It was not. There are thirteen of them now and most took twenty minutes. The problem is that decoders always succeed. Take the sentence “the quick brown fox jumps over the lazy dog”. Delete the spaces and what you have left is, by pure coincidence, a perfectly legal base64 string. Feed it to a base64 decoder and it will not complain. It will hand you back a paragraph of garbage with total confidence. So a tool that decodes whatever it is given will happily take your answer, turn it into noise, and report that as progress. Mine did exactly that, repeatedly, while I was building it. The fix was to stop asking “can this be decoded” and start asking “did decoding it make things better”. Every layer now has to earn its place. It gets kept because of what fell out of it, never because of how it looked going in. Then I got it wrong the other way Once it was cautious, it became too cautious. Look at that chain again. The middle step decodes to a wall of hex digits. That is not more readable than the base64 above it. It is arguably worse. So my careful new version took one look, decided the second layer was not an improvement, and stopped one step short of the answer every single time. Which is the lesson, really. Getting closer to something does not always look like getting closer. It had to learn to follow a chain to the bottom and judge the destination, not each footstep. Where the catch goes When it does find something, it lands in a panel at the top of the page called the Cod-end. That is the closed end of a trawl net, the bit that drags along behind and where everything you caught ends up. It felt like the right name for the box that holds the answers. What it still cannot do It does not break real encryption, and it never will. If something is properly encrypted, Trawl says so and stops, rather than producing a confident sentence made of nothing. It also cannot solve every classical cipher yet. Two of the harder ones need a much better model of what English looks like than the short word list it currently carries, and I would rather ship the gap than fake it. Next up: hashes."}, {"post_id": 49567, "ts": "2026-08-18T13:25:48Z", "hours": 1.9528, "text": "I cooked my own laptop, then hid a word inside a noise The fans came on around eleven and never stopped. By mid-afternoon my laptop was doing an impression of a hairdryer and the temperature had gone past 100°C, which is where water boils and laptops start making decisions about their own survival. I opened Task Manager expecting a runaway browser tab. Twenty-four copies of my own program. All running. All mine. Every time I wanted to check my work I started a little local server, and every time I finished I told it to stop. It said it stopped. It did not stop. It had a second process doing the real work, and killing the first left the second running happily, forever, burning a core each. They had been stacking up since ten in the morning. The lesson is not “check your processes.” It is that I trusted a success message instead of looking. The program told me what I wanted to hear and I took its word for it, which is a strange mistake to make on a project whose entire premise is not taking things at face value. I check now. Every time. It takes four seconds. Sound has a shape Here is the thing I built this month, and I still think it is the best trick in the whole project. Every sound is a stack of pitches, high and low, shifting over time. Plot pitch going up the page and time going across, and you get a picture of what a noise is actually made of. A flute is a clean line. A cymbal is a smear. Speech is a mess of stripes that a trained eye can almost read. Now run it backwards. Decide what you want that picture to look like. Write a word, say. Then generate the exact noise that would produce it. What comes out is a real audio file. You can play it. It sounds like static, like a radio between stations, and there is nothing in it your ears will ever pick up. Show it to anyone and they hear noise, because it is noise. Look at its shape and the word is just sitting there. I built the part of Trawl that draws that shape, and then I wrote a little tool that goes the other way so I could make my own. I fed it a picture of two words stacked on top of each other. Eight seconds of grinding static came out. I dropped it back into Trawl and the words were there, drawn in sound, perfectly legible. Getting it wrong twice first My first attempt was mush. Grey bands, no letters. The reason is a bit lovely. To read the shape of a sound you have to chop it into short slices and analyse each one, and my slices were wider than the letters. It was like trying to read a book through a window that shows three words at once, smeared together. Fixed by giving each column of the picture more time. The second attempt had bright vertical bars slashed through it. Those were clicks. Thirty separate tones were all changing volume at the exact same instant, and a sharp change in sound is a click, and a click is every pitch at once. It drew a line straight through my picture. Fixed by easing the volume changes instead of stepping them. Same reason a song fades out rather than stopping dead. Both of those are in the code with comments explaining them, mostly so future me does not do it again. The one I refused to build There is a hiding technique called F5 that I cannot reliably detect. The published method for spotting it needs a copy of the original, untouched file to compare against, and I do not have one. Nobody does. That is the point of the puzzle. I could have shipped something that guesses and looks confident about it. Instead the tool shows you the raw numbers and says, plainly, that it does not know. A tool that finds something every time is not a good tool. It is a broken one that happens to be reassuring, and I would rather ship an honest gap than a convincing lie. The image and sound half is done. Codes and ciphers next."}, {"post_id": 49293, "ts": "2026-08-18T00:51:00Z", "hours": 0.4928, "text": "Devlog 4: Trawl has a face Trawl has a logo now, and I like it more than I expected to. The obvious move was a net. I drew several. A mesh narrowing to a cod-end, the side profile of a trawl, a rotated diamond lattice that looked like real netting up close. All fine, all saying nothing. A net tells you where the name came from, which is the least interesting fact about this project. So it is a scan reticle instead. Corner brackets around a grid of dots, one of them lit amber. That is the whole tool in one image. Brackets mean examination and people read them that way without being taught. The grid is whatever Trawl is looking at. The amber dot is the finding. And the amber is load-bearing. In the interface that colour has exactly one job, marking something anomalous, and it turns up nowhere else. No amber buttons, no amber headings. The logo obeys the same rule, so the mark is not decoration. It is a hit. I did ship it invisible for about ten minutes, because currentColor resolves to black once the SVG leaves the app. One amber dot floating in the void. Fixed. Next is Cod-end, phase two, where Cuttlefish stops being PNG-only."}, {"post_id": 49263, "ts": "2026-08-17T23:15:13Z", "hours": 1.1847, "text": "Devlog 3: the PNG half is finished Here is my favourite way to hide a message in a picture, and Trawl can now catch it. A PNG can store its colours as a numbered list. Pixel one uses colour seven, pixel two uses colour twelve, and so on. Nothing in the format stops that list from holding the same colour twice. So if entry 10 and entry 200 are both the same shade of blue, every blue pixel can point at either one. The image on screen is pixel for pixel identical. The file underneath is not. That choice is a hidden bit, and even a small 64 by 64 image gives you about a thousand bytes of them. That was the last thing on my list. PNG support is done. What done means Trawl reads every valid PNG now, including the two kinds it used to refuse outright. It opens compressed comment blocks instead of shrugging at them. It finds text written the Windows way, where every character is followed by an invisible null byte that made my old scanner walk straight past it. And its brute-forcer tries reading hidden bits down the columns as well as along the rows, which doubled the number of combinations from 42 to 84. Sixteen tools, all working on one format properly. That felt worth stopping to notice. The bug where it found two flags and threw them both away I planted a message in a compressed comment and another as wide text, then ran them through. Neither showed up. Both had actually been found. The problem was one line where I merged results: I was taking either the results from the PNG-specific reader or the results from the general one, never both. So the general scanner would find the wide text, hand it over, and the merge step would quietly drop it on the floor. Two correct detectors, one bad if . A related version of the same mistake: I inflate compressed comments now, but the flag scan had already run before that text existed, so nobody ever looked at it. It re-scans after decompressing. The one I got wrong for twenty minutes One of my clean test images started tripping a detector. My first guess was the new interlaced decoder, since that was the newest thing. So I built the same picture again without interlacing and ran it. Same false alarm. Not the decoder. The real cause was my test image itself. The detector works by checking whether pairs of colour values appear equally often, which a hidden message forces and a real photograph has no reason to do. My test image was a smooth gradient, and smooth gradients spread their values so evenly that the pairs come out equal on their own. I had built a control that genuinely looks guilty. I gave it a tone curve, the way a real camera would, and it went quiet. That is the fifth time this project a test image has been the thing that was broken. Next Everything except PNG. GIF and BMP first, since they should light up all sixteen tools the moment they decode. Then extracting files that are hidden inside other files, which Trawl currently finds and then refuses to hand over."}, {"post_id": 49179, "ts": "2026-08-17T20:24:23Z", "hours": 1.7364, "text": "Devlog 2: it found the hidden message, then cut it off mid-sentence You can hide text inside a photo by nudging the colour of individual pixels by one step. The image looks identical to any eye and to most software. The message just sits there, spread across a few thousand pixels, waiting for someone who knows how to look. Trawl is the thing I am building that looks. The good part I hid a note inside a photo of the Eiffel Tower at night and dropped it in. Trawl found it: If you can read this than Trawl was a success! If not then well.. lets just say.. prepare to los Right message, right place, picked out of 42 different ways it could have been hidden. Then it stopped mid-word. That was not a decoding failure. I had written a line months earlier that trimmed the preview to 96 characters, and my note was 155. The tool read every single word and showed me two thirds of one. Somehow more annoying than it failing outright. Fixed, and there is now a button that pulls the whole thing out. The message that was never there An earlier test went the other way. Different image, and Trawl confidently announced it had found BM{GEBF} . Nothing was hidden in that file. Those eight characters turned up by chance inside the image’s compressed data, and my scanner was hunting for that shape anywhere in the file. Give it half a megabyte of near-random bytes and the shape appears on its own eventually. A tool that invents answers is worse than one that finds nothing. Matches now get judged by where they came from, and anything sitting in compressed data gets demoted with the reason shown rather than announced as a discovery. Both bugs had the same cause My test images were fake in a way that mattered. I was generating smooth colour gradients to test against. Real photos are not smooth. They have grain, texture, tiny variations between neighbouring pixels. My detectors passed every test I wrote and then fell over on the first real photograph, three separate times, because the thing I was testing against did not behave like the thing I was testing for. I now write a test that checks the test image before any test that uses it. That one took me embarrassingly long to arrive at. The feature I deleted I built automatic warnings into one of the new tools, then found it flagging a completely clean image. I could have nudged the threshold until the warning went away. But then the number would exist because it made one test pass, not because it meant anything, and it would start guessing again on the next photo. So I deleted the feature. The tool shows you the measurements and makes no accusations. The two tools that do make claims are based on published research from 1999 and 2001. Given an image with a quarter of its pixels carrying hidden data, they estimate 25.0% and 25.9%. Those I trust. Next Reading camera metadata, which is where people hide things when they are not hiding them in the pixels."}, {"post_id": 48664, "ts": "2026-08-17T04:53:48Z", "hours": 2.5947, "text": "Devlog 1: Trawl, and the bug I caught before it cost me a week Trawl is a CTF toolkit that runs in the browser. Drop a file in, it runs every check I’ve written at once, and tells you what looked wrong. Nothing uploads anywhere, because there is no server to upload to. It did not start out this big. The first version was only a steganography tool, because that is the category I keep landing in and the workflow is tedious: exiftool, then strings, then binwalk, then zsteg, then StegSolve, a Java applet from 2011. Five tools, five interfaces, all of them installed before you can look at a single PNG. Plenty of beginners skip forensics entirely for that reason. A couple of weeks in I realized the same complaint covers almost every CTF category, so the scope moved. Trawl is the hub. Cuttlefish is the steganography module inside it, and the only one that exists so far. A trawl is a net you drag through water to see what comes up. Cuttlefish hide by rewriting their own surface, which is what LSB embedding does to an image. What Cuttlefish runs now Eight checks, PNG only: pixel decode with verification, chunk walk, CRC validation, post-IEND data, tEXt/zTXt/iTXt metadata, ASCII strings, flag-shape scan, and an LSB sweep across channel order, bit plane and bit order. In the screenshot one of the eight fired. The sweep pulled testCTF{hello} out of RGB, bit 0, MSB first. One of 42 combinations carried anything readable. The bug I would not have found without testing for it Before writing any analysis I wrote a single test: build a PNG with a known pattern in the low bits, decode it through the browser, check the bits survive. They don’t, by default. Canvas alpha premultiplication and colour management both rewrite pixel values slightly. For ordinary image work nobody notices. For steganography it destroys exactly the data you are looking for, and every detector downstream would have been measuring noise while looking completely functional. The fix is passing colorSpaceConversion: 'none' and premultiplyAlpha: 'none' to createImageBitmap . Cuttlefish now reports the decode step as verified so I can confirm the guarantee held for the file in front of me. Had I built the sweep before checking, I would have spent days debugging math that was already correct. On the Rust The core is Rust compiled to WASM, running in a Web Worker, partly because the sweep is real compute and JavaScript stutters on it, partly because I wanted to learn Rust properly. I wrote the detector logic myself. AI helped me refactor it and add comments, which I am noting because it is true, and because the parts I struggled through are the parts I actually understand now. Next The bit-plane wall: all 8 planes across every channel rendered at once, so an anomalous plane becomes something you see rather than something you brute-force into. Cuttlefish is not finished. The sweep only handles PNG, there is no bit-plane view, and no statistical detection at all yet. What I have proves the pipeline runs end to end on a flag I planted myself, which is a real milestone and also not much more than that. Trawl has exactly one module, which makes “hub” a generous word for it right now."}]...
|
Title: Trawl - CTF Toolkit by @yuv1 | Stardance
D Title: Trawl - CTF Toolkit by @yuv1 | Stardance
Devlogs:
Devlog 1: Trawl, and the bug I caught before it cost me a week Trawl is a CTF toolkit that runs in the browser. Drop a file in, it runs every check I’ve written at once, and tells you what looked wrong. Nothing uploads anywhere, because there is no server to upload to. It did not start out this big. The first version was only a steganography tool, because that is the category I keep landing in and the workflow is tedious: exiftool, then strings, then binwalk, then zsteg, then StegSolve, a Java applet from 2011. Five tools, five interfaces, all of them installed before you can look at a single PNG. Plenty of beginners skip forensics entirely for that reason. A couple of weeks in I realized the same complaint covers almost every CTF category, so the scope moved. Trawl is the hub. Cuttlefish is the steganography module inside it, and the only one that exists so far. A trawl is a net you drag through water to see what comes up. Cuttlefish hide by rewriting their own surface, which is what LSB embedding does to an image. What Cuttlefish runs now Eight checks, PNG only: pixel decode with verification, chunk walk, CRC validation, post-IEND data, tEXt/zTXt/iTXt metadata, ASCII strings, flag-shape scan, and an LSB sweep across channel order, bit plane and bit order. In the screenshot one of the eight fired. The sweep pulled testCTF{hello} out of RGB, bit 0, MSB first. One of 42 combinations carried anything readable. The bug I would not have found without testing for it Before writing any analysis I wrote a single test: build a PNG with a known pattern in the low bits, decode it through the browser, check the bits survive. They don’t, by default. Canvas alpha premultiplication and colour management both rewrite pixel values slightly. For ordinary image work nobody notices. For steganography it destroys exactly the data you are looking for, and every detector downstream would have been measuring noise while looking completely functional. The fix is passing colorSpaceConversion: 'none' and premultiplyAlpha: 'none' to createImageBitmap . Cuttlefish now reports the decode step as verified so I can confirm the guarantee held for the file in front of me. Had I built the sweep before checking, I would have spent days debugging math that was already correct. On the Rust The core is Rust compiled to WASM, running in a Web Worker, partly because the sweep is real compute and JavaScript stutters on it, partly because I wanted to learn Rust properly. I wrote the detector logic myself. AI helped me refactor it and add comments, which I am noting because it is true, and because the parts I struggled through are the parts I actually understand now. Next The bit-plane wall: all 8 planes across every channel rendered at once, so an anomalous plane becomes something you see rather than something you brute-force into. Cuttlefish is not finished. The sweep only handles PNG, there is no bit-plane view, and no statistical detection at all yet. What I have proves the pipeline runs end to end on a flag I planted myself, which is a real milestone and also not much more than that. Trawl has exactly one module, which makes “hub” a generous word for it right now.
Devlog 2: it found the hidden message, then cut it off mid-sentence You can hide text inside a photo by nudging the colour of individual pixels by one step. The image looks identical to any eye and to most software. The message just sits there, spread across a few thousand pixels, waiting for someone who knows how to look. Trawl is the thing I am building that looks. The good part I hid a note inside a photo of the Eiffel Tower at night and dropped it in. Trawl found it: If you can read this than Trawl was a success! If not then well.. lets just say.. prepare to los Right message, right place, picked out of 42 different ways it could have been hidden. Then it stopped mid-word. That was not a decoding failure. I had written a line months earlier that trimmed the preview to 96 characters, and my note was 155. The tool read every single word and showed me two thirds of one. Somehow more annoying than it failing outright. Fixed, and there is now a button that pulls the whole thing out. The message that was never there An earlier test went the other way. Different image, and Trawl confidently announced it had found BM{GEBF} . Nothing was hidden in that file. Those eight characters turned up by chance inside the image’s compressed data, and my scanner was hunting for that shape anywhere in the file. Give it half a megabyte of near-random bytes and the shape appears on its own eventually. A tool that invents answers is worse than one that finds nothing. Matches now get judged by where they came from, and anything sitting in compressed data gets demoted with the reason shown rather than announced as a discovery. Both bugs had the same cause My test images were fake in a way that mattered. I was generating smooth colour gradients to test against. Real photos are not smooth. They have grain, texture, tiny variations between neighbouring pixels. My detectors passed every test I wrote and then fell over on the first real photograph, three separate times, because the thing I was testing against did not behave like the thing I was testing for. I now write a test that checks the test image before any test that uses it. That one took me embarrassingly long to arrive at. The feature I deleted I built automatic warnings into one of the new tools, then found it flagging a completely clean image. I could have nudged the threshold until the warning went away. But then the number would exist because it made one test pass, not because it meant anything, and it would start guessing again on the next photo. So I deleted the feature. The tool shows you the measurements and makes no accusations. The two tools that do make claims are based on published research from 1999 and 2001. Given an image with a quarter of its pixels carrying hidden data, they estimate 25.0% and 25.9%. Those I trust. Next Reading camera metadata, which is where people hide things when they are not hiding them in the pixels.
Devlog 3: the PNG half is finished Here is my favourite way to hide a message in a picture, and Trawl can now catch it. A PNG can store its colours as a numbered list. Pixel one uses colour seven, pixel two uses colour twelve, and so on. Nothing in the format stops that list from holding the same colour twice. So if entry 10 and entry 200 are both the same shade of blue, every blue pixel can point at either one. The image on screen is pixel for pixel identical. The file underneath is not. That choice is a hidden bit, and even a small 64 by 64 image gives you about a thousand bytes of them. That was the last thing on my list. PNG support is done. What done means Trawl reads every valid PNG now, including the two kinds it used to refuse outright. It opens compressed comment blocks instead of shrugging at them. It finds text written the Windows way, where every character is followed by an invisible null byte that made my old scanner walk straight past it. And its brute-forcer tries reading hidden bits down the columns as well as along the rows, which doubled the number of combinations from 42 to 84. Sixteen tools, all working on one format properly. That felt worth stopping to notice. The bug where it found two flags and threw them both away I planted a message in a compressed comment and another as wide text, then ran them through. Neither showed up. Both had actually been found. The problem was one line where I merged results: I was taking either the results from the PNG-specific reader or the results from the general one, never both. So the general scanner would find the wide text, hand it over, and the merge step would quietly drop it on the floor. Two correct detectors, one bad if . A related version of the same mistake: I inflate compressed comments now, but the flag scan had already run before that text existed, so nobody ever looked at it. It re-scans after decompressing. The one I got wrong for twenty minutes One of my clean test images started tripping a detector. My first guess was the new interlaced decoder, since that was the newest thing. So I built the same picture again without interlacing and ran it. Same false alarm. Not the decoder. The real cause was my test image itself. The detector works by checking whether pairs of colour values appear equally often, which a hidden message forces and a real photograph has no reason to do. My test image was a smooth gradient, and smooth gradients spread their values so evenly that the pairs come out equal on their own. I had built a control that genuinely looks guilty. I gave it a tone curve, the way a real camera would, and it went quiet. That is the fifth time this project a test image has been the thing that was broken. Next Everything except PNG. GIF and BMP first, since they should light up all sixteen tools the moment they decode. Then extracting files that are hidden inside other files, which Trawl currently finds and then refuses to hand over.
Devlog 4: Trawl has a face Trawl has a logo now, and I like it more than I expected to. The obvious move was a net. I drew several. A mesh narrowing to a cod-end, the side profile of a trawl, a rotated diamond lattice that looked like real netting up close. All fine, all saying nothing. A net tells you where the name came from, which is the least interesting fact about this project. So it is a scan reticle instead. Corner brackets around a grid of dots, one of them lit amber. That is the whole tool in one image. Brackets mean examination and people read them that way without being taught. The grid is whatever Trawl is looking at. The amber dot is the finding. And the amber is load-bearing. In the interface that colour has exactly one job, marking something anomalous, and it turns up nowhere else. No amber buttons, no amber headings. The logo obeys the same rule, so the mark is not decoration. It is a hit. I did ship it invisible for about ten minutes, because currentColor resolves to black once the SVG leaves the app. One amber dot floating in the void. Fixed. Next is Cod-end, phase two, where Cuttlefish stops being PNG-only.
I cooked my own laptop, then hid a word inside a noise The fans came on around eleven and never stopped. By mid-afternoon my laptop was doing an impression of a hairdryer and the temperature had gone past 100°C, which is where water boils and laptops start making decisions about their own survival. I opened Task Manager expecting a runaway browser tab. Twenty-four copies of my own program. All running. All mine. Every time I wanted to check my work I started a little local server, and every time I finished I told it to stop. It said it stopped. It did not stop. It had a second process doing the real work, and killing the first left the second running happily, forever, burning a core each. They had been stacking up since ten in the morning. The lesson is not “check your processes.” It is that I trusted a success message instead of looking. The program told me what I wanted to hear and I took its word for it, which is a strange mistake to make on a project whose entire premise is not taking things at face value. I check now. Every time. It takes four seconds. Sound has a shape Here is the thing I built this month, and I still think it is the best trick in the whole project. Every sound is a stack of pitches, high and low, shifting over time. Plot pitch going up the page and time going across, and you get a picture of what a noise is actually made of. A flute is a clean line. A cymbal is a smear. Speech is a mess of stripes that a trained eye can almost read. Now run it backwards. Decide what you want that picture to look like. Write a word, say. Then generate the exact noise that would produce it. What comes out is a real audio file. You can play it. It sounds like static, like a radio between stations, and there is nothing in it your ears will ever pick up. Show it to anyone and they hear noise, because it is noise. Look at its shape and the word is just sitting there. I built the part of Trawl that draws that shape, and then I wrote a little tool that goes the other way so I could make my own. I fed it a picture of two words stacked on top of each other. Eight seconds of grinding static came out. I dropped it back into Trawl and the words were there, drawn in sound, perfectly legible. Getting it wrong twice first My first attempt was mush. Grey bands, no letters. The reason is a bit lovely. To read the shape of a sound you have to chop it into short slices and analyse each one, and my slices were wider than the letters. It was like trying to read a book through a window that shows three words at once, smeared together. Fixed by giving each column of the picture more time. The second attempt had bright vertical bars slashed through it. Those were clicks. Thirty separate tones were all changing volume at the exact same instant, and a sharp change in sound is a click, and a click is every pitch at once. It drew a line straight through my picture. Fixed by easing the volume changes instead of stepping them. Same reason a song fades out rather than stopping dead. Both of those are in the code with comments explaining them, mostly so future me does not do it again. The one I refused to build There is a hiding technique called F5 that I cannot reliably detect. The published method for spotting it needs a copy of the original, untouched file to compare against, and I do not have one. Nobody does. That is the point of the puzzle. I could have shipped something that guesses and looks confident about it. Instead the tool shows you the raw numbers and says, plainly, that it does not know. A tool that finds something every time is not a good tool. It is a broken one that happens to be reassuring, and I would rather ship an honest gap than a convincing lie. The image and sound half is done. Codes and ciphers next.
The hard part was knowing when to stop Here is what someone hands you in a competition. NWE2ZDc4Njg1YTMzNzQzMDYxNDg0YTZjNWE1NjM5 Eighty-eight characters of nothing. No hint about what it is or how many times it has been through the wringer. You paste it into Trawl and it comes back: base64: 5a6d78685a33743061484a6c5a56397359586c6c636e4e665a47566c hex: ZmxhZ3t0aHJlZV9sYXllcnNfZGVlcH0= base64: flag{three_layers_deep} Three layers, unwrapped one at a time, and the answer sitting at the bottom. Nobody told it there were three. Nobody told it what any of them were. The new half This is Mantis, the code breaking side of the project, and the first thing I have built that does not need a file at all. Paste a string, get an answer. It is named after the mantis shrimp, which punches hard enough to crack a crab shell and sees colours we do not have the eyes for. Force and perception, which turns out to be the whole job. Decoding was easy. Stopping was not. I expected the tricky part to be writing the decoders. It was not. There are thirteen of them now and most took twenty minutes. The problem is that decoders always succeed. Take the sentence “the quick brown fox jumps over the lazy dog”. Delete the spaces and what you have left is, by pure coincidence, a perfectly legal base64 string. Feed it to a base64 decoder and it will not complain. It will hand you back a paragraph of garbage with total confidence. So a tool that decodes whatever it is given will happily take your answer, turn it into noise, and report that as progress. Mine did exactly that, repeatedly, while I was building it. The fix was to stop asking “can this be decoded” and start asking “did decoding it make things better”. Every layer now has to earn its place. It gets kept because of what fell out of it, never because of how it looked going in. Then I got it wrong the other way Once it was cautious, it became too cautious. Look at that chain again. The middle step decodes to a wall of hex digits. That is not more readable than the base64 above it. It is arguably worse. So my careful new version took one look, decided the second layer was not an improvement, and stopped one step short of the answer every single time. Which is the lesson, really. Getting closer to something does not always look like getting closer. It had to learn to follow a chain to the bottom and judge the destination, not each footstep. Where the catch goes When it does find something, it lands in a panel at the top of the page called the Cod-end. That is the closed end of a trawl net, the bit that drags along behind and where everything you caught ends up. It felt like the right name for the box that holds the answers. What it still cannot do It does not break real encryption, and it never will. If something is properly encrypted, Trawl says so and stops, rather than producing a confident sentence made of nothing. It also cannot solve every classical cipher yet. Two of the harder ones need a much better model of what English looks like than the short word list it currently carries, and I would rather ship the gap than fake it. Next up: hashes.
I spent hours making a web scanner not be a web scanner The obvious way to scan a website is to send the URL to a server and let the server do the ugly work. Trawl does not get that luxury. One of the rules I have tried to keep since the first version is that everything happens on your machine . No files uploaded, no URLs sent to me, no remote API quietly doing the interesting part. That became significantly harder when I added web reconnaissance. The scanner that had to stay local Browsers are deliberately terrible at crawling arbitrary websites. CORS, networking restrictions, and a dozen other sensible security decisions get in the way. So I ended up building a small local scanner and shipping it as a GitHub release. Installation is a one-line winget command. Once it is running, Trawl detects it automatically. The interface changes live, asks for a URL, and the scanner starts digging through the site for things that probably should not be public: hidden files, exposed secrets, interesting endpoints, and other CTF-shaped mistakes. Nothing leaves the machine. That sentence took far longer to make true than it looks . AI helped with writing and refactoring parts of it, but most of the time disappeared into figuring out how the browser, local process, networking, detection, and UI should talk to each other without turning Trawl into the server-backed app I specifically did not want to build. So I built a website designed to be broken Testing a recon scanner against random real sites is a terrible test. So I made my own mock CTF site instead. It has challenges from easy through expert, with deliberately hidden files and secrets for Trawl to discover. I now have a controlled target where I know exactly what should be found, which makes false positives and missed findings much harder to hide. I also improved the Vigenère decoder while I was in there. The feature list sounds small: better decoder, local scanner, test site. The amount of plumbing underneath it absolutely was not.
The scanner connected. That was the easy part. Last time, the whole win was that the scanner connected at all. Trawl spots the local process, the page swaps to a URL box, and it starts crawling. But a scanner that connects and finds nothing is just a slow way to load a webpage. So this time I made it actually find the flags. On the mock CTF site I built last time to be broken, the web scan went from 4 findings to 18. Counting the image tools, the whole thing now gets 23 of the 26. Teaching it to decode, not just fetch A flag is almost never sitting in plain text waiting to be read. It’s base64 hiding in a cookie. It’s hex in a JavaScript variable. It’s a colour written as CSS escape codes, or an array of numbers XORed against a single byte, or an ETag that’s really just base64 printed backwards. So the scanner now tries all of those on everything it pulls down: every page, every script, every response header. It keeps a result only when a decode actually produces a flag, and shuts up otherwise. That last part matters more than it sounds. A tool that reports something on every site is noise, not a finding. One challenge hid an AES key and its payload in an image’s metadata. The rule I keep breaking my own back over is no dependencies, nothing borrowed, so instead of pulling in a crypto library I wrote AES by hand and checked it against the official test vectors. It works. I would not recommend the experience. The bug that made a working scanner look broken For a while every scan felt like it hung. The scanner was fine. localhost was the problem. localhost resolves to the IPv6 address first. My test site only listened on IPv4. Windows takes about two seconds to give up on the dead address before falling back to the one that works, and two seconds across fifteen requests is a scan that looks frozen. The fix was one line: try IPv4 first. The debugging was not one line. Then, the morning I went to cut the release, a routine Rust update added a new lint and broke the build on code I hadn’t touched in weeks. Pinned the version, fixed the lint, shipped. AI helped with the writing and some of the mechanical refactors, but the real time went where it always goes: into the two seconds nobody sees, and the compiler that changed its mind overnight. The feature list sounds small again. Reads a site, decodes what it finds, cracks an image. The list is never the part that takes the week. Next up is JWTs, so the scanner can start forging its way into the challenges it currently just knocks on.
Trawl could find anything. Nobody knew where to start. Trawl has gotten good. It cracks AES by hand, forges JWTs, reads flags out of pixels and cookies and the low bits of a sound file. On the mock CTF site I keep building to break, it clears 24 of 26 now. None of that helps the person who opens it for the first time and sees a grid of two dozen tools and a box that says “drop a file.” What file? They don’t have one. They came to look, and there is nothing to look at. So I built the tour. The tour that drops the file for you Tick “take the tour” and Trawl hands itself a sample image with a flag already hidden in the low bits, runs every tool against it before you have done anything, and then walks you through what each one turned up. The flag it already found. The tool that read it out of the red channel. The one that does not read the message but estimates how much is hidden. Two minutes, no CTF knowledge required, and by the end you have watched the whole thing work on a real answer. Because one demo is not much of a demo, there is a library behind it now. Drop-in files for every tool: a flag in a PNG’s low bits, a flag stuck on after the image ends, a flag in the second frame of a GIF, a flag written into the low bit of every audio sample, a flag that only reads once you subtract one frame from the next. Each one hides its answer somewhere different. A button in the corner opens them any time, so the people who skipped the tour and the people who came back a week later can still poke at something real. The bug where the tool found it and never told anyone The GIF samples embarrassed me. Drop one, and the tool would decode the second frame, find the flag, and then say nothing. The cod-end, the panel where every find is supposed to surface, sat empty. It was not that the flag went unfound. It was found, written down, and filed one level too deep to ever be shown. The panel only reads findings from a file’s children, and a plain GIF has no children, so its own results fell through the floor. A few lines to lift them back up. The kind of bug that passes every test, because the test checks that the flag was found, not that a human would ever see it. AI helped with the writing and the mechanical parts, same as always. The real time went into the gap between “the tool works” and “a stranger can tell that it works,” which turns out to be most of the distance. The feature list still sounds small. A tour, some sample files, a button. But the whole point was to make the thing findable, and none of the finding matters if the first thing you see is a shrug. Next up: the last two flags on that mock site, and maybe a screenshot in the readme now that there is something worth showing.
Reversing was the one category left. Trawl had nothing for it. Everything else was covered by the time the tour shipped: steganography, cryptography (Hill and Playfair joined a few weeks back, along with columnar transposition wide enough that brute force stops working), PDF documents read the same way a ZIP already was, object by object, checked against what the file’s own index claims. Drop a binary, though, and the best Trawl could do was name the format and stop there. I’m not building a decompiler. Ghidra and IDA earned that word over years of real compiler-engineering work, and half a decompiler is worse than none: wrong pseudocode still reads as confident, and confidently wrong is the last thing a forensics tool should ever hand someone. What Trawl does instead is the pass every real session starts with anyway, before a disassembler even opens: the header, the section table, what the binary calls, what it offers, and whether it was actually built with the defenses that matter, NX, ASLR, RELRO, a stack canary, Control Flow Guard. Two formats that don’t agree on anything ELF went first, since it’s most of what a CTF binary actually is. Then PE, the Windows half, which turned out to be a different kind of problem. An ELF section header says outright where its bytes sit in the file. A PE barely says anything that way. It addresses its import and export tables by where they’ll land in memory once the loader gets to them, so reading either one means walking the section table first, just to translate an address nobody gave you a file offset for. The two parsers ended up sharing almost nothing except a type underneath them, built so one panel could read both. Where a protection has no equivalent in the other format, the panel just leaves it out instead of guessing. A PE has nothing RELRO would describe, and showing RELRO: none there would report a defense as missing that the format never offered to begin with. The bug where the layout only worked on files I made up myself Testing this against binaries I built myself went fine, because of course it did. I wrote them to go fine. So I went and found real ones instead. gcc output straight out of WSL: a stripped build, a static build, a shared library. Real Windows system binaries too, notepad.exe and kernel32.dll . I checked every one byte for byte against readelf and objdump until the entry points and export counts lined up exactly. Then I compiled a tiny C++ file. Three lines, a map of vectors, nothing unusual. Its export name came out at 286 characters. That’s what name mangling does to the plainest code without even trying. My import list rendered each name as a small chip, capped with a percentage-based max-width so nothing would run off the page. It did nothing. A grid item won’t shrink below its own content unless you tell it to, and I hadn’t, so the chip just kept going: clipped mid-character, no ellipsis, dragging the whole panel sideways with it. Fine on every file I’d invented. Broken on the first real one I pointed it at. AI helped with the writing and most of the parsing code, same as always. The real time went into finding bytes I hadn’t written myself to test it against, a real compiler, a real linker, a symbol nobody designed to be readable. Testing against your own fixtures only ever proves the code agrees with itself. Next up: Windows registry hives, for tracing which USB stick was plugged in when.
Now live at https://trawlctf.vercel.app
Trawl has just been shipped!
Ships:
Trawl Trawl is a CTF toolkit for checking suspicious files, encoded text, binaries, and challenge websites from one place. In a CTF, you often get an image, audio file, string, or binary and have to figure out what is hidden inside it. Usually that means opening a bunch of different tools and already knowing what to try. Trawl tries to make that easier. You give it the challenge, and it runs checks that make sense for that input. Try it Live: trawlctf.vercel.app Source: github.com/Yuv1s/Trawl The easiest way to test it: Open the site. Click Tour . Trawl loads a sample file with a hidden flag. Watch the checks run and see what finds it. There are also more sample files under Demos , so you do not need your own CTF challenge. What it can do Trawl has 19 main checks in the web app. It can: inspect PNG, BMP, GIF, JPEG, and WAV files for hidden data check image and audio bits show image bit planes and audio spectrograms find metadata, readable strings, embedded files, and hidden file data inspect ZIP files and PDF structure inspect ELF and PE binaries unwrap encoded text such as base64 and hex solve several common classical ciphers collect useful findings and detected flags in one results panel There is also an optional local web scanner called Remora. It can crawl a CTF website, inspect pages, scripts, headers, and resources, then send useful findings back to Trawl. How it works Most of the analysis is written in Rust and compiled to WebAssembly. The frontend is built with SvelteKit. For normal file and text analysis, the input stays in your browser instead of being uploaded to a server. No account is needed, and the app can keep working offline after it loads. Remora is separate because website scanning needs network access. It runs locally on your computer and connects to the target you give it. I also wrote the analysis and file parsing code instead of relying on existing analysis libraries. The Rust core uses wasm-bindgen to connect Rust to JavaScript. Why I built it The annoying part of CTF forensics was having lots of separate tools and needing to know which one to use before I even understood the challenge. I wanted something where I could drop in the file first and get a useful starting point. I also added the tour and demo files so someone who has never used Trawl can still open the site and understand what it does. What took the most work A big part of the work was avoiding false positives. A detector that marks everything as suspicious is not useful, so I made test files where I knew what was hidden and clean files where nothing should be found. I also tested the ELF and PE parsers with real binaries and compared results with tools like readelf and objdump . One bug I found was that Trawl correctly detected a flag inside a GIF, but the result was stored in the wrong place, so it never appeared in the UI. That pushed me to test the full path from reading the file to actually showing the result. What I learned I learned a lot about image formats, audio samples, compression, steganography, classical cryptography, binary formats, WebAssembly, browser limits, and local networking. The biggest lesson was that finding the answer in code is only part of making a useful tool. The result also has to be tested, understandable, and easy to find....
|
1792878662.1165133
|
1793742662.1165133
|
|
49970
|
M.I.L.O by @Omar4lifex | Stardance
|
Omar4lifex
|
1
|
42.53
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T16:52:23Z", "hours": 24.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "M.I.L.O v1.0.0 is officially ready. M.I.L.O is a local AI file organizer that lets you talk to your computer in normal language and find information inside your own files. What’s included Natural-language file search - ask MILO to find files and folders using normal chat. Local AI - powered by Ollama and Qwen3:8b, which runs on the user’s own PC. PDF reading - MILO can search normal text-based PDFs. OCR - MILO can read scanned/image-based PDFs using Tesseract OCR. Conversation memory - MILO remembers what happened earlier in the same chat, so follow-ups like “what file did you find?” work. Chat history - create new chats and return to previous conversations. Faster search - filename-first searching, ignored junk folders, and OCR caching make large-folder searches much faster. Automatic setup - Start MILO.bat checks for Python, Ollama, Tesseract, dependencies, and the Qwen3 model. Privacy M.I.L.O is designed around local processing. Your files stay on your computer, and the AI runs locally through Ollama instead of sending your files to a remote AI server. Getting started Download MILO-v1.0.0.zip Extract it Run Start MILO.bat Let the setup finish Choose the folder you want MILO to access Start chatting What’s next v1.1 will focus on file actions , starting with things like renaming and organizing files.", "repo": "https://github.com/Omar4life/M.I.L.O", "demo": "https://github.com/Omar4life/M.I.L.O/releases/tag/v1.0.0"}]...
|
[{"post_id": 58329, "ts": "202 [{"post_id": 58329, "ts": "2026-08-30T18:25:46Z", "hours": 9.5231, "text": "Devlog #9 - MILO can create folders Today I added Create Folder to M.I.L.O so now I can say: Create a folder called MILO FOLDER TEST and then MILO understands it, checks the location, then asks for confirmation before creating it. I added the new CREATE_FOLDER action to the AI and backend, plus Create / Cancel buttons in the frontend.{ “action”: “CREATE_FOLDER”, “new_name”: “School” } I also added safety checks so it won’t create a folder if the name is invalid or something with that name already exists."}, {"post_id": 55167, "ts": "2026-08-26T17:18:45Z", "hours": 9.0058, "text": "Devlog #8 - Rename stuff I spent around 9 hours working on one of the biggest upgrades to M.I.L.O so far: file actions. Until now, M.I.L.O could find files and understand their contents, but it couldn’t actually do anything with them. I decided to start with Rename. Now I can tell milo rename my spiderman ticket (pixedH1723.pdf) to spiderman ticket and it asks for confirmation and then renames it. It remembers which file “it” refers to, asks for confirmation, and then renames it. A LOT of bugs happened 😭The first problem was that M.I.L.O found the correct Spider-Man ticket but also returned completely unrelated files. For example, it found:README.md pixedH1723.pdf The README contained the words “Spider-Man” and “ticket” because those words were used in an example inside the README. After filtering README files, M.I.L.O still found random files like: cd.txt vintage-ticket-stub.md because they contained generic words like “ticket”.I fixed this by improving the search scoring system so M.I.L.O considers the combination of important terms instead of matching one generic word. For a query like: Spider-Man + movie + ticket M.I.L.O now gives much more importance to files that actually contain those concepts together. I also added path filtering so M.I.L.O ignores internal development folders such as: node_modules .git __pycache__ .local .agents .next Rename itself had a bug too, the first Rename attempt crashed with: name ‘os’ is not defined because the rename code was using Python’s os module without importing it. That was fixed, and I also added protection so M.I.L.O doesn’t rename anything without confirmation, won’t overwrite an existing file, keeps the original file extension, automatically handles files that no longer exist, and remembers the last file found through conversation memory."}, {"post_id": 52475, "ts": "2026-08-22T16:37:30Z", "hours": 1.8806, "text": "Devlog #7 - Making MILO Much Faster I spent almost 2 hours improving MILO’s search performance. I found a pretty bad bug where searching a large folder like Downloads could take 7+ minutes because MILO was trying to process too many PDFs, including scanned PDFs that required OCR. I changed the search system so MILO now does a much faster process: ↓ Check normal PDF text ↓ Only OCR likely scanned PDFs ↓ Cache the OCR result ↓ Return the result I also added an OCR limit so MILO doesn’t try to OCR hundreds of unrelated PDFs: MAX_OCR_CANDIDATES = 30 Another important improvement was OCR caching. Once MILO reads a scanned PDF, it saves the extracted text so it doesn’t have to OCR the same file again unless the file changes. I also added more ignored folders like: .git __pycache__ .venv .next dist build .cache This helped remove a lot of irrelevant files from searches. After the changes, the Spider-Man ticket search that was taking several minutes became much faster while the scanned EduWW Verification of Enrollment PDF still works with OCR."}, {"post_id": 52296, "ts": "2026-08-22T12:36:14Z", "hours": 2.3839, "text": "Devlog #6 - Giving MILO Memory Today I spent 2h 5m adding memory per-chat (since before that, even if it was the same chat, it could not remember the previous message I sent) + improved MILO’s conversation system. I added per-chat memory so MILO can actually remember what happened earlier in the same conversation instead of treating every message like a completely new request. For example: Me: Find my Spider-Man ticket MILO: I found pixedH1723.pdf Me: What did I just ask you to find? MILO: You asked me to find your Spider-Man ticket. Me: Which type of file is it? MILO: The Spider-Man Ticket is a PDF file I added a backend chat_memory system that keeps information like the last command, action, query, found file, results, and file content for each individual chat. def get_chat_memory(chat_id): if chat_id not in chat_memory: chat_memory[chat_id] = { \"last_command\": \"\", \"last_action\": \"\", \"last_file\": None, \"last_results\": [] } return chat_memory[chat_id] I also added a new CHAT action to MILO’s AI so it can answer normal conversational questions like “what did I just ask you?” instead of forcing everything into SEARCH or QUESTION. Another improvement was passing the recent conversation history into Qwen3 so it has more context when interpreting follow-up messages such as “it”, “that file”, or “what did you find?”. One of the reasons I added memory is because it’s the foundation for the next major feature which is file actions like Rename, where I can say: Find my Spider-Man ticket And then say: Rename it to Spider-Man Ticket instead of having to say the original filename like: Can you rename “pixedH1723” to “Spider-Man”."}, {"post_id": 51951, "ts": "2026-08-21T22:16:30Z", "hours": 9.7489, "text": "#Devlog #5 - Making MILO Actually Usable (BIIIG Devlog Update) TL;DR: M.I.L.O works for other pcs that have windows + added OCR so it can read scanned/image-based pdfs (demo below, the verification of enrollment was a scanned pdf and it found it!) I spent 9h 44m working on MILO without a devlog lol. I made a lot of progress toward making MILO usable by other people, not just on my PC (Only windows for now tho). I added a setup ( .bat file) system so MILO can automatically check for and install things like Python, Ollama, the AI model (qwen3:8b), and its required packages (if you don’t alr have them) on another Windows PC. I also added OCR (Optical Character Recognition) support so MILO can read scanned/image-based PDFs instead of only normal text PDFs (planning to add OCR for images like png, jpg, etc…). I tested it on a scanned Verification of Enrollment document for my school and MILO was able to find it and read the contents. I also improved the file search so it skips folders like node_modules , .git , __pycache__ , and other junk folders that were causing completely unrelated search results. There were a LOT of bugs during this update, like a LOT 😭, there was Python detection, pip SSL errors, Ollama model installation, broken PDFs, OCR not finding Tesseract, Windows Documents being redirected to OneDrive, search ranking issues, and more. After fixing all of that, MILO can now run on another Windows PC (will make sure to test it again tommorow before shipping js incase), use that computer’s own files, search documents, read normal PDFs, and OCR scanned PDFs. Demo is below! (the verification of enrollment was a scanned pdf and M.I.L.O found it using OCR) Time to go to sleep now! (12:42 AM rn)"}, {"post_id": 50458, "ts": "2026-08-19T16:53:56Z", "hours": 2.5606, "text": "Devlog 4 - HUGE update! Made another big update to M.I.L.O today. you can now ask M.I.L.O questions about the files it finds, instead of just finding them. For example, I can ask: “How much did I pay for my Spider-Man ticket?” “What seats did I get?” “What time does it start?” “What’s the reservation number?” and M.I.L.O reads the actual PDF and gives me the answer. I also fixed a bug where MILO needed the exact words from the file to find the right information. But now it can understand related words and questions."}, {"post_id": 50176, "ts": "2026-08-19T09:12:09Z", "hours": 2.8514, "text": "Spent pretty much the whole previous day fixing a bug with MILO’s file search 😭 I got it to the point where MILO can actually read the contents of files like PDFs and text files, instead of only looking at their names. For example, I can say: “Find my Spider-Man Brand New Day VOSTFR 4DX Ticket” and MILO can actually read the PDF and find the right one even if the Ticket PDF is called “pixedH1723”. It took way longer than I expected to get the search working properly, but it finally works! Still a lot more to build, but this is a pretty big step for MILO."}, {"post_id": 49131, "ts": "2026-08-17T19:23:15Z", "hours": 1.4847, "text": "Devlog #2 - M.I.L.O Made some good progress on MILO the past hour and a half. I connected the AI to the file search system, so MILO can now understand normal sentences instead of needing exact file names. For example, I can say: “Find the folder which shows AI tools hype vs output and MILO can understand what I’m looking for and find the correct folder. It has a little bug tho, it can find multiple files with a specific keyword so for example it found another folder called “AI tools for each type of person” only because it has “AI” in it, so gonna work on that a bit later Still a lot to build, but it’s starting to feel like an actual assistant now."}, {"post_id": 48963, "ts": "2026-08-17T15:21:53Z", "hours": 3.3864, "text": "Started building M.I.L.O (My Intelligent Local Organizer) today. I ran into quite a few bugs while setting everything up, but I got the first part working. M.I.L.O can now scan a folder I choose and display the files and folders inside it along with the number of files/folders. The AI commands aren’t connected yet, so for now it just receives the command. Next, I’m working on making MILO actually understand the command and search through the files."}]...
|
Title: M.I.L.O by @Omar4lifex | Stardance
Devlogs Title: M.I.L.O by @Omar4lifex | Stardance
Devlogs:
Started building M.I.L.O (My Intelligent Local Organizer) today. I ran into quite a few bugs while setting everything up, but I got the first part working. M.I.L.O can now scan a folder I choose and display the files and folders inside it along with the number of files/folders. The AI commands aren’t connected yet, so for now it just receives the command. Next, I’m working on making MILO actually understand the command and search through the files.
Devlog #2 - M.I.L.O Made some good progress on MILO the past hour and a half. I connected the AI to the file search system, so MILO can now understand normal sentences instead of needing exact file names. For example, I can say: “Find the folder which shows AI tools hype vs output and MILO can understand what I’m looking for and find the correct folder. It has a little bug tho, it can find multiple files with a specific keyword so for example it found another folder called “AI tools for each type of person” only because it has “AI” in it, so gonna work on that a bit later Still a lot to build, but it’s starting to feel like an actual assistant now.
Spent pretty much the whole previous day fixing a bug with MILO’s file search 😭 I got it to the point where MILO can actually read the contents of files like PDFs and text files, instead of only looking at their names. For example, I can say: “Find my Spider-Man Brand New Day VOSTFR 4DX Ticket” and MILO can actually read the PDF and find the right one even if the Ticket PDF is called “pixedH1723”. It took way longer than I expected to get the search working properly, but it finally works! Still a lot more to build, but this is a pretty big step for MILO.
Devlog 4 - HUGE update! Made another big update to M.I.L.O today. you can now ask M.I.L.O questions about the files it finds, instead of just finding them. For example, I can ask: “How much did I pay for my Spider-Man ticket?” “What seats did I get?” “What time does it start?” “What’s the reservation number?” and M.I.L.O reads the actual PDF and gives me the answer. I also fixed a bug where MILO needed the exact words from the file to find the right information. But now it can understand related words and questions.
#Devlog #5 - Making MILO Actually Usable (BIIIG Devlog Update) TL;DR: M.I.L.O works for other pcs that have windows + added OCR so it can read scanned/image-based pdfs (demo below, the verification of enrollment was a scanned pdf and it found it!) I spent 9h 44m working on MILO without a devlog lol. I made a lot of progress toward making MILO usable by other people, not just on my PC (Only windows for now tho). I added a setup ( .bat file) system so MILO can automatically check for and install things like Python, Ollama, the AI model (qwen3:8b), and its required packages (if you don’t alr have them) on another Windows PC. I also added OCR (Optical Character Recognition) support so MILO can read scanned/image-based PDFs instead of only normal text PDFs (planning to add OCR for images like png, jpg, etc…). I tested it on a scanned Verification of Enrollment document for my school and MILO was able to find it and read the contents. I also improved the file search so it skips folders like node_modules , .git , __pycache__ , and other junk folders that were causing completely unrelated search results. There were a LOT of bugs during this update, like a LOT 😭, there was Python detection, pip SSL errors, Ollama model installation, broken PDFs, OCR not finding Tesseract, Windows Documents being redirected to OneDrive, search ranking issues, and more. After fixing all of that, MILO can now run on another Windows PC (will make sure to test it again tommorow before shipping js incase), use that computer’s own files, search documents, read normal PDFs, and OCR scanned PDFs. Demo is below! (the verification of enrollment was a scanned pdf and M.I.L.O found it using OCR) Time to go to sleep now! (12:42 AM rn)
Devlog #6 - Giving MILO Memory Today I spent 2h 5m adding memory per-chat (since before that, even if it was the same chat, it could not remember the previous message I sent) + improved MILO’s conversation system. I added per-chat memory so MILO can actually remember what happened earlier in the same conversation instead of treating every message like a completely new request. For example: Me: Find my Spider-Man ticket MILO: I found pixedH1723.pdf Me: What did I just ask you to find? MILO: You asked me to find your Spider-Man ticket. Me: Which type of file is it? MILO: The Spider-Man Ticket is a PDF file I added a backend chat_memory system that keeps information like the last command, action, query, found file, results, and file content for each individual chat. def get_chat_memory(chat_id): if chat_id not in chat_memory: chat_memory[chat_id] = { "last_command": "", "last_action": "", "last_file": None, "last_results": [] } return chat_memory[chat_id] I also added a new CHAT action to MILO’s AI so it can answer normal conversational questions like “what did I just ask you?” instead of forcing everything into SEARCH or QUESTION. Another improvement was passing the recent conversation history into Qwen3 so it has more context when interpreting follow-up messages such as “it”, “that file”, or “what did you find?”. One of the reasons I added memory is because it’s the foundation for the next major feature which is file actions like Rename, where I can say: Find my Spider-Man ticket And then say: Rename it to Spider-Man Ticket instead of having to say the original filename like: Can you rename “pixedH1723” to “Spider-Man”.
Devlog #7 - Making MILO Much Faster I spent almost 2 hours improving MILO’s search performance. I found a pretty bad bug where searching a large folder like Downloads could take 7+ minutes because MILO was trying to process too many PDFs, including scanned PDFs that required OCR. I changed the search system so MILO now does a much faster process: ↓ Check normal PDF text ↓ Only OCR likely scanned PDFs ↓ Cache the OCR result ↓ Return the result I also added an OCR limit so MILO doesn’t try to OCR hundreds of unrelated PDFs: MAX_OCR_CANDIDATES = 30 Another important improvement was OCR caching. Once MILO reads a scanned PDF, it saves the extracted text so it doesn’t have to OCR the same file again unless the file changes. I also added more ignored folders like: .git __pycache__ .venv .next dist build .cache This helped remove a lot of irrelevant files from searches. After the changes, the Spider-Man ticket search that was taking several minutes became much faster while the scanned EduWW Verification of Enrollment PDF still works with OCR.
Devlog #8 - Rename stuff I spent around 9 hours working on one of the biggest upgrades to M.I.L.O so far: file actions. Until now, M.I.L.O could find files and understand their contents, but it couldn’t actually do anything with them. I decided to start with Rename. Now I can tell milo rename my spiderman ticket (pixedH1723.pdf) to spiderman ticket and it asks for confirmation and then renames it. It remembers which file “it” refers to, asks for confirmation, and then renames it. A LOT of bugs happened 😭The first problem was that M.I.L.O found the correct Spider-Man ticket but also returned completely unrelated files. For example, it found:README.md pixedH1723.pdf The README contained the words “Spider-Man” and “ticket” because those words were used in an example inside the README. After filtering README files, M.I.L.O still found random files like: cd.txt vintage-ticket-stub.md because they contained generic words like “ticket”.I fixed this by improving the search scoring system so M.I.L.O considers the combination of important terms instead of matching one generic word. For a query like: Spider-Man + movie + ticket M.I.L.O now gives much more importance to files that actually contain those concepts together. I also added path filtering so M.I.L.O ignores internal development folders such as: node_modules .git __pycache__ .local .agents .next Rename itself had a bug too, the first Rename attempt crashed with: name ‘os’ is not defined because the rename code was using Python’s os module without importing it. That was fixed, and I also added protection so M.I.L.O doesn’t rename anything without confirmation, won’t overwrite an existing file, keeps the original file extension, automatically handles files that no longer exist, and remembers the last file found through conversation memory.
Devlog #9 - MILO can create folders Today I added Create Folder to M.I.L.O so now I can say: Create a folder called MILO FOLDER TEST and then MILO understands it, checks the location, then asks for confirmation before creating it. I added the new CREATE_FOLDER action to the AI and backend, plus Create / Cancel buttons in the frontend.{ “action”: “CREATE_FOLDER”, “new_name”: “School” } I also added safety checks so it won’t create a folder if the name is invalid or something with that name already exists.
Ships:
M.I.L.O v1.0.0 is officially ready. M.I.L.O is a local AI file organizer that lets you talk to your computer in normal language and find information inside your own files. What’s included Natural-language file search - ask MILO to find files and folders using normal chat. Local AI - powered by Ollama and Qwen3:8b, which runs on the user’s own PC. PDF reading - MILO can search normal text-based PDFs. OCR - MILO can read scanned/image-based PDFs using Tesseract OCR. Conversation memory - MILO remembers what happened earlier in the same chat, so follow-ups like “what file did you find?” work. Chat history - create new chats and return to previous conversations. Faster search - filename-first searching, ignored junk folders, and OCR caching make large-folder searches much faster. Automatic setup - Start MILO.bat checks for Python, Ollama, Tesseract, dependencies, and the Qwen3 model. Privacy M.I.L.O is designed around local processing. Your files stay on your computer, and the AI runs locally through Ollama instead of sending your files to a remote AI server. Getting started Download MILO-v1.0.0.zip Extract it Run Start MILO.bat Let the setup finish Choose the folder you want MILO to access Start chatting What’s next v1.1 will focus on file actions , starting with things like renaming and organizing files....
|
1792878437.104797
|
1793742437.104797
|
|
49988
|
Practice 2D Platformer by @RedstoneStar | Stardanc Practice 2D Platformer by @RedstoneStar | Stardance...
|
RedstoneStar
|
1
|
84.71
|
144
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T17:45:37Z", "hours": 42.0, "multiplier": 3.64, "payout": 144, "blessing": "neutral", "text": "This is my simple 2d platformer. Before making this project I knew very little about coding in Python so I wanted to work on this project to fix that. In the past I’ve used a bunch of YouTube tutorials to teach me how to code so this time I wanted to try something different. I created a custom Gemini gem that walked me step by step through creating the base game, then helped me add on improvements such as enemies and moving platforms. Key Features: Smooth platforming: Precise movement tracking keeps the character steady on moving platforms without slipping. Varied movement: Double jumps, wall slides, wall jumps, and a dash move to smash weak blocks. Animations: Squish-and-stretch effects when jumping and landing give the character extra feel. Smart enemies: Jumping enemies detect edges and turn around instead of walking off ledges. 10-levels: Includes built-in tutorial prompts to teach new moves as the player progresses. I know the game is really simple, and that is mostly on purpose; this was meant to be just a fun way to practice my Python skills. Hope you enjoy!", "repo": "https://github.com/RedstoneStar/Practice2DPlatformer", "demo": "https://redstonestar.github.io/Practice2DPlatformer/"}]...
|
[{"post_id": 63961, "ts": "202 [{"post_id": 63961, "ts": "2026-09-08T01:41:23Z", "hours": 27.6347, "text": "Devlog #6 After far more hours of debugging than I care to admit, I finally figured out why the springs didn’t launch the player when they walked through the spring. I eventually figured out it was an issue caused by how I was applying the upward momentum. Main changes in this update: Updated graphics. Slightly improved the performance by condensing some logic code Added a new flying enemy. Added 5 new levels. Improved the previous 10 levels to make them more interesting. Problems still needing to be fixed: The flying enemy is having graphical glitches with its charging animation."}, {"post_id": 61832, "ts": "2026-09-04T22:48:48Z", "hours": 15.0753, "text": "Devlog #5 for my simple 2D platformer Since I started this project I feel like I have gotten so much better at Python and because of that, I’ve spent the last couple of days rewriting pretty much all of the core mechanics of the platformer. Pretty much all of the code that Gemini helped me develop and then improve over time I have now recoded and as a result, the program runs so much smoother. Other changes: I fixed one bug where the player wouldn’t move with moving platforms, so now the player should (hopefully) move with the platform as well as be much less glitchy when mounting or dismounting it. I also added a few particles for when the player dashes and lands on objects. I’m still trying to figure out why the player doesn’t get launched when they walk over the springs, hopefully I’ll have that figured out by my next devlog."}, {"post_id": 53210, "ts": "2026-08-23T17:29:52Z", "hours": 11.5417, "text": "Final devlog of the simple 2D platformer! I improved the pixel art and revamped the levels. The first 3 levels are dedicated to teaching the player the controls. I also added support to deploy it online."}, {"post_id": 52514, "ts": "2026-08-22T17:36:28Z", "hours": 11.165, "text": "4th devlog for my simple platformer. I added a couple more levels, currently they are way to hard, I will have to revisit them in the future. On top of that I added a sprint feature to the player. I also spent some more time on the graphics."}, {"post_id": 50708, "ts": "2026-08-20T01:14:37Z", "hours": 7.9364, "text": "3rd devlog of this practice project! Added super simple enemies, a simple level creation option in the setting script, spikes, and better camera follow movement."}, {"post_id": 49974, "ts": "2026-08-19T00:00:03Z", "hours": 9.2581, "text": "Added a few improvements to the platformer game. The camera now scrolls along with the player; I added collectable coins and a coin counter, and made it so that the player respawns when they fall off the platform."}, {"post_id": 48554, "ts": "2026-08-17T00:16:03Z", "hours": 2.3539, "text": "Just finished my first practice platformer. It is super simple, which was intended. I didn’t want it to be anything complicated, just some simple python practice."}]...
|
Title: Practice 2D Platformer by @RedstoneStar | S Title: Practice 2D Platformer by @RedstoneStar | Stardance
Devlogs:
Just finished my first practice platformer. It is super simple, which was intended. I didn’t want it to be anything complicated, just some simple python practice.
Added a few improvements to the platformer game. The camera now scrolls along with the player; I added collectable coins and a coin counter, and made it so that the player respawns when they fall off the platform.
3rd devlog of this practice project! Added super simple enemies, a simple level creation option in the setting script, spikes, and better camera follow movement.
4th devlog for my simple platformer. I added a couple more levels, currently they are way to hard, I will have to revisit them in the future. On top of that I added a sprint feature to the player. I also spent some more time on the graphics.
Final devlog of the simple 2D platformer! I improved the pixel art and revamped the levels. The first 3 levels are dedicated to teaching the player the controls. I also added support to deploy it online.
Devlog #5 for my simple 2D platformer Since I started this project I feel like I have gotten so much better at Python and because of that, I’ve spent the last couple of days rewriting pretty much all of the core mechanics of the platformer. Pretty much all of the code that Gemini helped me develop and then improve over time I have now recoded and as a result, the program runs so much smoother. Other changes: I fixed one bug where the player wouldn’t move with moving platforms, so now the player should (hopefully) move with the platform as well as be much less glitchy when mounting or dismounting it. I also added a few particles for when the player dashes and lands on objects. I’m still trying to figure out why the player doesn’t get launched when they walk over the springs, hopefully I’ll have that figured out by my next devlog.
Devlog #6 After far more hours of debugging than I care to admit, I finally figured out why the springs didn’t launch the player when they walked through the spring. I eventually figured out it was an issue caused by how I was applying the upward momentum. Main changes in this update: Updated graphics. Slightly improved the performance by condensing some logic code Added a new flying enemy. Added 5 new levels. Improved the previous 10 levels to make them more interesting. Problems still needing to be fixed: The flying enemy is having graphical glitches with its charging animation.
Ships:
This is my simple 2d platformer. Before making this project I knew very little about coding in Python so I wanted to work on this project to fix that. In the past I’ve used a bunch of YouTube tutorials to teach me how to code so this time I wanted to try something different. I created a custom Gemini gem that walked me step by step through creating the base game, then helped me add on improvements such as enemies and moving platforms. Key Features: Smooth platforming: Precise movement tracking keeps the character steady on moving platforms without slipping. Varied movement: Double jumps, wall slides, wall jumps, and a dash move to smash weak blocks. Animations: Squish-and-stretch effects when jumping and landing give the character extra feel. Smart enemies: Jumping enemies detect edges and turn around instead of walking off ledges. 10-levels: Includes built-in tutorial prompts to teach new moves as the player progresses. I know the game is really simple, and that is mostly on purpose; this was meant to be just a fun way to practice my Python skills. Hope you enjoy!...
|
1792878437.9511604
|
1793742437.9511604
|
|
49996
|
HackerOS by @simonhacker | Stardance
|
simonhacker
|
1
|
9.78
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T19:59:00Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "HackerOS is my WebOS! It was coded in CSS, HTML and JS!! It has a few simple apps and is styled to be dark and blue. It was made fully by me and you can try it at the link below.", "repo": "https://github.com/sevinatenine/HackerOS", "demo": "https://hacker-os.netlify.app"}]...
|
[{"post_id": 77978, "ts": "202 [{"post_id": 77978, "ts": "2026-10-09T03:00:01Z", "hours": 0.3142, "text": "I made the copy and move and open commands for the terminal of my WebOS"}, {"post_id": 77346, "ts": "2026-10-06T16:58:19Z", "hours": 0.4636, "text": "Modified the README and the about."}, {"post_id": 76491, "ts": "2026-10-03T18:55:48Z", "hours": 0.3675, "text": "HackerOS - Finished the about page and the file picker!"}, {"post_id": 76485, "ts": "2026-10-03T18:27:44Z", "hours": 0.5764, "text": "HackerOS - Prototype for my file picker"}, {"post_id": 76446, "ts": "2026-10-03T15:20:30Z", "hours": 3.7758, "text": "I got my file browser working with ZenFS for HackerOS!!!"}, {"post_id": 50374, "ts": "2026-08-19T15:24:39Z", "hours": 1.4139, "text": "I Worked on my file browser app for my WebOS! I used the Yet Another Monochrome Icon Set For KDE Plasma here for the icons and app images for my OS and I used ZenFS (which provides node:fs compatible functions) to store files in IndexedDB."}, {"post_id": 49543, "ts": "2026-08-18T12:52:08Z", "hours": 0.4025, "text": "Prototype for the app bar for my WebOS"}, {"post_id": 49291, "ts": "2026-08-18T00:46:48Z", "hours": 2.1136, "text": "I made a window system with draggable and resizable windows for my WebOS!"}]...
|
Title: HackerOS by @simonhacker | Stardance
Devlo Title: HackerOS by @simonhacker | Stardance
Devlogs:
I made a window system with draggable and resizable windows for my WebOS!
Prototype for the app bar for my WebOS
I Worked on my file browser app for my WebOS! I used the Yet Another Monochrome Icon Set For KDE Plasma here for the icons and app images for my OS and I used ZenFS (which provides node:fs compatible functions) to store files in IndexedDB.
I got my file browser working with ZenFS for HackerOS!!!
HackerOS - Prototype for my file picker
HackerOS - Finished the about page and the file picker!
Modified the README and the about.
I made the copy and move and open commands for the terminal of my WebOS
Ships:
HackerOS is my WebOS! It was coded in CSS, HTML and JS!! It has a few simple apps and is styled to be dark and blue. It was made fully by me and you can try it at the link below....
|
1793346447.9257245
|
1793432847.9257245
|
|
50004
|
Guess It! by @akisarke | Stardance
|
akisarke
|
1
|
57.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-17T14:07:14Z", "hours": 53.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Guess It! is finally live! A daily estimation game. Three questions a day, you lock in a number, and get scored on how close you got. The lower the better. I added: a daily puzzle with three questions, a full reveal, and where your guess landed in the distribution AI-generated questions so it never runs dry. They’re checked before they go in the catalog and burned once they’ve been used anonymous play, so you can try it before you make an account email sign up and Hack Club OAuth, with verification and password reset streaks, badges, pinned badges, avatars, bios leaderboards for today, this week, and friends only duels - challenge someone to a live 1v1, three rounds, one shared reveal matchmaking, if you’d rather get paired with a stranger generated sets, for when you want more than the daily puzzle notifications and friend requests React and Fastify on PostgreSQL. No questions are on the backend. The honest part: some of this only broke once it was already live. The question catalog ran all the way down so the questions can repeat. And for a while the AI generation was down because I’m using the free tier of gemini models. You can try it at https://guessit.akisarke.xyz or click the try project button below. See ya later! 👋", "repo": "https://github.com/akisarke/guess-it", "demo": "https://guessit.akisarke.xyz"}]...
|
[{"post_id": 80940, "ts": "202 [{"post_id": 80940, "ts": "2026-10-19T09:43:56Z", "hours": 3.9994, "text": "Devlog 11 After the first ship it got declined because the UI was too AI, and i see it now. So thats why i tried my best to make it less look like it was AI-made. And I think i was pretty successful. I hope you like it!"}, {"post_id": 80379, "ts": "2026-10-17T13:48:17Z", "hours": 3.69, "text": "#Devlog 10 - THE FINAL DEVLOG! As you see the site is fully deployed and on my domain! I’m very exited for you guys to try it but dont expect anything special there will be bugs (since this is my first time working with a backend). Shipping soon! Bye for now! 👋"}, {"post_id": 79422, "ts": "2026-10-13T22:15:36Z", "hours": 7.0172, "text": "Devlog 9 Hey guys! This will probably be the last devlog before shipping. I just fixed some bugs and added more animations and redid the spacing of elements. It isnt still perfect but it gets the job done. Anyway since i dont have anything to show you heres a picture of my cat. His name is Leo if anyone is curious. Thats all. Bye for now! 👋"}, {"post_id": 76761, "ts": "2026-10-04T14:50:16Z", "hours": 9.3736, "text": "Devlog 8 Hi guys I was locking in for the stardance end but then it turns out it got extended by one month so thats cool. Anyways getting close for shipping i just need more questions so i have enough for the daily ones, if you want leave some ideas in the comments down below. Also I need to fix the email verification for the accounts and thats pretty much it. Bye for now! 👋"}, {"post_id": 72156, "ts": "2026-09-22T10:28:44Z", "hours": 8.7528, "text": "Devlog 7 Fixing the duels besides that i didnt do anything special since for now im focusing on that because it dosnt work very well also i made a favicon but havnt yet implemented it will do that later. Dont think i will be posting much devlogs since i want to lock in to finish it before the stardance end. Thats all Bye for now👋"}, {"post_id": 69278, "ts": "2026-09-16T18:36:54Z", "hours": 8.5617, "text": "Devlog 6 Nothing pretty much outside of debugging the duels and the ai generating questions but i also added the history of your ai generated questions in the profile and added a share profile link (i dont like the position of it placed it there just for now later it will be next to the profile info card). Thats all Bye for now!👋"}, {"post_id": 65620, "ts": "2026-09-10T21:19:39Z", "hours": 4.0503, "text": "Devlog 5 Today I worked on the profile (on the bio and on the badges, the badges need icons still) and on the forgot password page and the email sending service (if you want to know im using resend for it and the page needs some ui fixing) and i need to fix the duel/quickplay and the ai generating questions stilll because im a lazy ahh person Bye for now! 👋"}, {"post_id": 64701, "ts": "2026-09-09T10:02:22Z", "hours": 3.5931, "text": "Devlog 4 Hey guys! In this devlog i made the archive of the questions and the profile both of them needs fixing the profile for the badges (since you cant get any for now) and the archive because you cant play them for now. Fixing it in the next devlog hopefully 🤞 Thats all! Bye for now! 👋"}, {"post_id": 63460, "ts": "2026-09-07T10:14:10Z", "hours": 5.1714, "text": "Devlog 3 I added a dark theme and also a switch for it and i made the landing page and finished it so i can now show it to you guys also i cleaned up the code a little bit. Bye for now 👋"}, {"post_id": 61570, "ts": "2026-09-04T15:30:41Z", "hours": 2.105, "text": "Devlog 2 After a lot of brainstorming and researching about the design i think i will go with this but a dark version of the background (didn’t do it now because i’m on a time crunch). Also i added the buttons on the top bar but they don’t do anything for now. That’s all Bye for now! 👋"}, {"post_id": 61123, "ts": "2026-09-03T21:26:36Z", "hours": 0.8294, "text": "New Project!! (Devlog #1) Hi everyone i just started a new game about guessing random things. This is just the start so nothing much there is more in there but i dont want to bore you guys. More devlogs coming soon! Bye for now 👋"}]...
|
Title: Guess It! by @akisarke | Stardance
Devlogs Title: Guess It! by @akisarke | Stardance
Devlogs:
New Project!! (Devlog #1) Hi everyone i just started a new game about guessing random things. This is just the start so nothing much there is more in there but i dont want to bore you guys. More devlogs coming soon! Bye for now 👋
Devlog 2 After a lot of brainstorming and researching about the design i think i will go with this but a dark version of the background (didn’t do it now because i’m on a time crunch). Also i added the buttons on the top bar but they don’t do anything for now. That’s all Bye for now! 👋
Devlog 3 I added a dark theme and also a switch for it and i made the landing page and finished it so i can now show it to you guys also i cleaned up the code a little bit. Bye for now 👋
Devlog 4 Hey guys! In this devlog i made the archive of the questions and the profile both of them needs fixing the profile for the badges (since you cant get any for now) and the archive because you cant play them for now. Fixing it in the next devlog hopefully 🤞 Thats all! Bye for now! 👋
Devlog 5 Today I worked on the profile (on the bio and on the badges, the badges need icons still) and on the forgot password page and the email sending service (if you want to know im using resend for it and the page needs some ui fixing) and i need to fix the duel/quickplay and the ai generating questions stilll because im a lazy ahh person Bye for now! 👋
Devlog 6 Nothing pretty much outside of debugging the duels and the ai generating questions but i also added the history of your ai generated questions in the profile and added a share profile link (i dont like the position of it placed it there just for now later it will be next to the profile info card). Thats all Bye for now!👋
Devlog 7 Fixing the duels besides that i didnt do anything special since for now im focusing on that because it dosnt work very well also i made a favicon but havnt yet implemented it will do that later. Dont think i will be posting much devlogs since i want to lock in to finish it before the stardance end. Thats all Bye for now👋
Devlog 8 Hi guys I was locking in for the stardance end but then it turns out it got extended by one month so thats cool. Anyways getting close for shipping i just need more questions so i have enough for the daily ones, if you want leave some ideas in the comments down below. Also I need to fix the email verification for the accounts and thats pretty much it. Bye for now! 👋
Devlog 9 Hey guys! This will probably be the last devlog before shipping. I just fixed some bugs and added more animations and redid the spacing of elements. It isnt still perfect but it gets the job done. Anyway since i dont have anything to show you heres a picture of my cat. His name is Leo if anyone is curious. Thats all. Bye for now! 👋
#Devlog 10 - THE FINAL DEVLOG! As you see the site is fully deployed and on my domain! I’m very exited for you guys to try it but dont expect anything special there will be bugs (since this is my first time working with a backend). Shipping soon! Bye for now! 👋
Devlog 11 After the first ship it got declined because the UI was too AI, and i see it now. So thats why i tried my best to make it less look like it was AI-made. And I think i was pretty successful. I hope you like it!
Ships:
Guess It! is finally live! A daily estimation game. Three questions a day, you lock in a number, and get scored on how close you got. The lower the better. I added: a daily puzzle with three questions, a full reveal, and where your guess landed in the distribution AI-generated questions so it never runs dry. They’re checked before they go in the catalog and burned once they’ve been used anonymous play, so you can try it before you make an account email sign up and Hack Club OAuth, with verification and password reset streaks, badges, pinned badges, avatars, bios leaderboards for today, this week, and friends only duels - challenge someone to a live 1v1, three rounds, one shared reveal matchmaking, if you’d rather get paired with a stranger generated sets, for when you want more than the daily puzzle notifications and friend requests React and Fastify on PostgreSQL. No questions are on the backend. The honest part: some of this only broke once it was already live. The question catalog ran all the way down so the questions can repeat. And for a while the AI generation was down because I’m using the free tier of gemini models. You can try it at https://guessit.akisarke.xyz or click the try project button below. See ya later! 👋...
|
1793397391.0294356
|
1793483791.0294356
|
|
50022
|
MechanicaSaveFix by @Oignontom8283 | Stardance
|
Oignontom8283
|
1
|
38.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-23T01:43:55Z", "hours": 38.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A super mod that fixes a nasty problem in a cool way (Virtual file system >:3) for a game almost nobody plays anymore! Yeeeeah! Go check out this post https://stardance.hackclub.com/projects/50022/devlogs/68461 that’s where the REAL description and the whole journey are.", "repo": "https://github.com/Oignontom8283/MechanicaSaveFix", "demo": "https://youtu.be/NF6xDftQVgA"}]...
|
[{"post_id": 81915, "ts": "202 [{"post_id": 81915, "ts": "2026-10-23T01:35:32Z", "hours": 0.5192, "text": "MechanicaSaveFix, a BepInEx mod that replaces Mechanica’s save system with a single archive per world. Demo video : https://youtu.be/NF6xDftQVgA This isn’t my first time getting into this game! I’ve been trying things out, doing little tweaks, etc. on the game for years now. But this is my first and biggest completed project aimed at modding this game! There are no resources online about the game’s structure, how it works, etc. So I spent way more time searching and understanding than actually coding! Working without documentation is really annoying :) My goal here is to get a big Blåhaj! Will I pull it off? I don’t know… The problem? Mechanica saves every object, robot, weld, link, etc. into its own little file, stored in nested folders. A small test world already makes hundreds of folders, and large worlds reach thousands of files. On large worlds, you run into what I call “Infinite Save Loading” (ISL). The save never finishes, you have to restart the game, and you lose your progress. I suspect the number of files is the cause, but I haven’t proven it, because these freezes are very hard to reproduce. However, during my testing, I didn’t have the issue. So at best, it improves things! Which is already pretty neat :3 What does the mod do? The mod doesn’t rewrite the game’s save system, which wasn’t designed to be replaced. It sits on top of it: It intercepts the game’s calls to files (File, Directory, FileInfo, DirectoryInfo) using Harmony; It redirects them to a Virtual File System (VFS) that keeps everything in memory; It then writes the result into a single .msa (Mechanica Save Archive) file, which is actually a zip containing the original files and folders. The game therefore continues to believe it is writing thousands of small files, while it is actually writing only one file to disk. On the first save, a classic world is converted to .msa. The original folder is not touched, and you can extract the archive to get back a standard save. I also rewrote the world selection menu (it lists classic folders and archives) and the world creation flow. I added a confirmation window, a config file, a backup system, and an optional update check. Difficulties encountered: No centralized save code. Every system (objects, robots, welds, storage, links…) reads and writes its files in its own way. There was no single place to hook into; Incremental saving and cleanup. The game only rewrites what has changed, then deletes any file absent from its list of valid paths, compared as exact strings. The mod must therefore keep everything in memory and reproduce paths identically: mix of / and , case, spaces. Early on, a bug like this caused all files to be deleted by cleanup; Not everything goes through File/Directory. Some parts of the code use FileInfo/DirectoryInfo, which had to be intercepted separately; Implicitly created folders. The game checks for the existence of folders that are sometimes legitimately empty. After a bug where object categories were duplicated on every reload, I added explicit folder tracking in the VFS, with entries for empty folders in the archive; A very tangled save menu. It relies on dictionaries indexed by UI objects, with a large part of the interface hardwired in the Unity editor, so invisible in decompiled code. I had to inspect the layout at runtime and rewrite the menu entirely; Architecture issues. It took me a while to decide where to place the world swap function (it’s in the VFS). I think I didn’t forget anything :/ Unfortunately, I admit, this is just a band-aid on a gaping wound. It only improves or at best delays the problem. Not to mention the fact that other things like the game’s multiplayer are still completely broken ¯ _ (ツ)_/¯"}, {"post_id": 76703, "ts": "2026-10-04T11:37:14Z", "hours": 3.8622, "text": "v0.12.0 Version v0.11.0 introduced a system that checks the GitHub repository for new versions of the mod.As for v0.12.0 … I ended up finding a bug that was causing certain item categories to be duplicated whenever a save was reloaded. I spent quite a bit of time tracking down the issue and fixing it, and it ended up requiring some fairly significant changes to the VFS.(Nothing too crazy, though. I basically just added explicit directory tracking so that empty directories are still properly preserved.) Anyway, it works now! :3"}, {"post_id": 68309, "ts": "2026-09-14T22:07:56Z", "hours": 7.2778, "text": "v0.10.0 There we go! The mod is technically functional and usable. All that’s left is getting other people to test it and adding a couple more things, like an update check, and that’s it (: What’s changed: Added a configuration file for the mod. Added several features driven by settings from the configuration file. Patched the new world creation menu to directly create a save in the new format. Reorganized a good chunk of the code in the larger files (Utils.cs, VirtualFS.cs, SaveMenu.cs). Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ✅ Write/Read the .msa (Mechanica Save Archive) file. ✅ Intercepting the system functions. ✅ Write the triggers that will fire the capture/emission of virtual files. ✅ Add display/support for the new save format in the world selection menu. ✅ Config file ❌ [Optional] Fix non-blocking base-game load/save errors that clutter the console."}, {"post_id": 59545, "ts": "2026-09-01T13:00:09Z", "hours": 5.6392, "text": "v0.8.1 I thought this step was going to be simple… Not at all! It’s been a nightmare of an ordeal. The save selection menu’s code (its logic) was basically one flat, tangled plate of spaghetti. The base game used a bunch of dictionaries to store data and look it back up. The functions tied to the buttons used the Rect object handed to the class to look up the data they needed. Why hand over an object to look up data through a dictionary when you can just pass the function what it needs directly… I completely rewrote the menu’s behavior from scratch, cleanly, to support displaying and loading saves in their new archive form. What’s changed: Rewrote the save selection menu so it lists both classic save folders and the new .msa archives side by side. Added a proper confirmation popup (reused for save deletion, and reusable for anything else later) instead of the base game’s tangled state. Rebuilt the difficulty settings screen flow so it works the same way whether the save is a folder or an archive. Deleting a save now works for both save folders and .msa archives. Fixed thumbnails not showing for saves without a screenshot. Hooked up unloading the virtual file system when leaving a world, so you can load another world without restarting the game. Squashed a good number of bugs along the way (mixed up path separators, wrong field types, missing state resets) that only showed up once real saves were being loaded and listed. Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ✅ Write/Read the .msa (Mechanica Save Archive) file. ✅ Intercepting the system functions. ✅ Write the triggers that will fire the capture/emission of virtual files. ✅ Add display/support for the new save format in the world selection menu. ❌ Add a config file, [deinitialize the VFS on world exit - Early Done], and other minor details/improvements (new) ❌ [Optional] Fix non-blocking base-game load/save errors that clutter the console."}, {"post_id": 54801, "ts": "2026-08-25T22:40:21Z", "hours": 7.2544, "text": "0.6.0 It wasn’t as simple as expected… But it works now! You can load a normal world, and on the first save it will be converted into a .msa archive. From then on, whenever you try to load a world that has an archived version, that version will be loaded instead of the other one. What’s changed: Fixed VirtualFS incorrectly normalizing the root save path, which caused it to no longer match the paths built by the game itself, breaking file lookups everywhere. Fixed QueryEntries not sanitizing multi-level directory paths, which caused Directory.GetFiles / GetDirectories to return nothing for nested folders (welds, anchors, etc.). Fixed reconstructed paths mixing / and \\ separators, which broke the game’s own string comparisons (e.g. RemoveOldFiles deleting everything instead of only orphaned files). Added patches for DirectoryInfo / FileInfo instance methods ( GetFiles , GetDirectories , CreateSubdirectory , Exists ), which weren’t covered by the static File / Directory patches. Simplified VirtualFS ‘s internal mode from three states ( Idle / Capturing / Playback ) down to two ( Idle / Intercepting ), since capture and playback behaved identically from the interception logic’s point of view. Wrote the Save() / LoadSave() coroutine wrappers that trigger the capture/playback cycle and commit/load the .msa archive. Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ✅ Write/Read the .msa (Mechanica Save Archive) file. ✅ Intercepting the system functions. ✅ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu. ❌ Add a config file, deinitialize the VFS on world exit, and other minor details/improvements (new) ❌ [Optional] Fix non-blocking base-game load/save errors that clutter the console. (new)"}, {"post_id": 51323, "ts": "2026-08-20T22:10:26Z", "hours": 0.9206, "text": "v0.5.1 I added the Harmony patches to intercept System.IO functions. It was long and repetitive 👍. What’s changed: Add src\\Patches\\io\\Directory.cs for the directory-related function patches. Add src\\Patches\\io\\File.cs for the file-related function patches. Removed old test files for writing/reading files. Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ✅ Write/Read the .msa (Mechanica Save Archive) file. ✅ Intercepting the system functions. ❌ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu. The next step should let me run the first tests, which will probably be followed by some bug fixes. Hopefully not 🤞."}, {"post_id": 50577, "ts": "2026-08-19T19:38:17Z", "hours": 1.9633, "text": "v0.4.1 I almost went CRAZY 😰 I ran into an architecture problem, and I was about two steps away from refactoring EVERYTHING to make it clean. I finally found a solution. It’s not the cleanest, but I didn’t have any other idea. So the world-swap function lives inside the VFS. In the end it’s just a matter of roles/responsibilities, nothing technically blocking really 😅. What’s changed: Add method to write the VFS to a zip archive. Add method to load a zip archive into the VFS. Add method to replace the world’s save with the new one and move the previous version to backup. Improved the versioning system, and included build info (hash, time…). Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ✅ Write/Read the .msa (Mechanica Save Archive) file. ❌ Intercepting the system functions. ❌ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu."}, {"post_id": 50082, "ts": "2026-08-19T04:29:19Z", "hours": 1.5697, "text": "Mostly environment/tooling additions and improvements. What’s changed: Add build.yml GitHub CI, to verify that commits and PRs compile. Add release.yml GitHub CI, to build and attach the mod to releases. Minor tweaks to the build script. Add a VSCode task to build the project without running a command. Progress so far (so no changes here ¯ _ (ツ)_/¯): ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ❌ Write/Read the .msa (Mechanica Save Archive) file. ❌ Intercepting the system functions. ❌ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu."}, {"post_id": 49874, "ts": "2026-08-18T20:28:48Z", "hours": 0.9658, "text": "I finished the Forward component, which faithfully reproduces every System.IO function (the functions used to interact with the computer’s file system). Why? : I need functions with the exact same API, since I’m going to intercept the game’s disk read/write functions to stop it from writing thousands of small files and folders. What’s changed: Add VirtualFS.DeleteFile() Add VirtualFS.DeleteFileNoThrow() ( System.IO ‘s Delete function doesn’t throw an error, unlike VirtualFS.DeleteFile() , so I made an alternative to properly mimic Delete ’s behavior. Add Forward.cs Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ❌ Write/Read the .msa (Mechanica Save Archive) file. ❌ Intercepting the system functions. ❌ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu."}, {"post_id": 49417, "ts": "2026-08-18T07:44:51Z", "hours": 7.745, "text": "I have to admit I’ve been working on reverse-engineering / decompiling this game for a long time now, so getting set up was pretty quick. I established the mod/patch structure, refactored it, refactored it again, until I landed on my current plan. Right now I’ve only written VirtualFS.cs , which contains the virtual file system that will intercept System.IO requests to prevent them from writing to disk. Next I’ll move on to writing the fake System.IO functions (write a file, read a file, etc.), the functions that will write and read the save in .zip format, the patches for the system functions, the triggers, and finally the interface. Progress so far: ✅ VFS (Virtual File System). ❌ Write the fake System.IO functions. ❌ Write/Read the .msa (Mechanica Save Archive) file. ❌ Intercepting the system functions. ❌ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu. Markdown checkboxes don’t work… so I’m using good old emojis instead. ¯ _ (ツ)_/¯"}]...
|
Title: MechanicaSaveFix by @Oignontom8283 | Starda Title: MechanicaSaveFix by @Oignontom8283 | Stardance
Devlogs:
I have to admit I’ve been working on reverse-engineering / decompiling this game for a long time now, so getting set up was pretty quick. I established the mod/patch structure, refactored it, refactored it again, until I landed on my current plan. Right now I’ve only written VirtualFS.cs , which contains the virtual file system that will intercept System.IO requests to prevent them from writing to disk. Next I’ll move on to writing the fake System.IO functions (write a file, read a file, etc.), the functions that will write and read the save in .zip format, the patches for the system functions, the triggers, and finally the interface. Progress so far: ✅ VFS (Virtual File System). ❌ Write the fake System.IO functions. ❌ Write/Read the .msa (Mechanica Save Archive) file. ❌ Intercepting the system functions. ❌ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu. Markdown checkboxes don’t work… so I’m using good old emojis instead. ¯ _ (ツ)_/¯
I finished the Forward component, which faithfully reproduces every System.IO function (the functions used to interact with the computer’s file system). Why? : I need functions with the exact same API, since I’m going to intercept the game’s disk read/write functions to stop it from writing thousands of small files and folders. What’s changed: Add VirtualFS.DeleteFile() Add VirtualFS.DeleteFileNoThrow() ( System.IO ‘s Delete function doesn’t throw an error, unlike VirtualFS.DeleteFile() , so I made an alternative to properly mimic Delete ’s behavior. Add Forward.cs Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ❌ Write/Read the .msa (Mechanica Save Archive) file. ❌ Intercepting the system functions. ❌ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu.
Mostly environment/tooling additions and improvements. What’s changed: Add build.yml GitHub CI, to verify that commits and PRs compile. Add release.yml GitHub CI, to build and attach the mod to releases. Minor tweaks to the build script. Add a VSCode task to build the project without running a command. Progress so far (so no changes here ¯ _ (ツ)_/¯): ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ❌ Write/Read the .msa (Mechanica Save Archive) file. ❌ Intercepting the system functions. ❌ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu.
v0.4.1 I almost went CRAZY 😰 I ran into an architecture problem, and I was about two steps away from refactoring EVERYTHING to make it clean. I finally found a solution. It’s not the cleanest, but I didn’t have any other idea. So the world-swap function lives inside the VFS. In the end it’s just a matter of roles/responsibilities, nothing technically blocking really 😅. What’s changed: Add method to write the VFS to a zip archive. Add method to load a zip archive into the VFS. Add method to replace the world’s save with the new one and move the previous version to backup. Improved the versioning system, and included build info (hash, time…). Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ✅ Write/Read the .msa (Mechanica Save Archive) file. ❌ Intercepting the system functions. ❌ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu.
v0.5.1 I added the Harmony patches to intercept System.IO functions. It was long and repetitive 👍. What’s changed: Add src\Patches\io\Directory.cs for the directory-related function patches. Add src\Patches\io\File.cs for the file-related function patches. Removed old test files for writing/reading files. Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ✅ Write/Read the .msa (Mechanica Save Archive) file. ✅ Intercepting the system functions. ❌ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu. The next step should let me run the first tests, which will probably be followed by some bug fixes. Hopefully not 🤞.
0.6.0 It wasn’t as simple as expected… But it works now! You can load a normal world, and on the first save it will be converted into a .msa archive. From then on, whenever you try to load a world that has an archived version, that version will be loaded instead of the other one. What’s changed: Fixed VirtualFS incorrectly normalizing the root save path, which caused it to no longer match the paths built by the game itself, breaking file lookups everywhere. Fixed QueryEntries not sanitizing multi-level directory paths, which caused Directory.GetFiles / GetDirectories to return nothing for nested folders (welds, anchors, etc.). Fixed reconstructed paths mixing / and \ separators, which broke the game’s own string comparisons (e.g. RemoveOldFiles deleting everything instead of only orphaned files). Added patches for DirectoryInfo / FileInfo instance methods ( GetFiles , GetDirectories , CreateSubdirectory , Exists ), which weren’t covered by the static File / Directory patches. Simplified VirtualFS ‘s internal mode from three states ( Idle / Capturing / Playback ) down to two ( Idle / Intercepting ), since capture and playback behaved identically from the interception logic’s point of view. Wrote the Save() / LoadSave() coroutine wrappers that trigger the capture/playback cycle and commit/load the .msa archive. Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ✅ Write/Read the .msa (Mechanica Save Archive) file. ✅ Intercepting the system functions. ✅ Write the triggers that will fire the capture/emission of virtual files. ❌ Add display/support for the new save format in the world selection menu. ❌ Add a config file, deinitialize the VFS on world exit, and other minor details/improvements (new) ❌ [Optional] Fix non-blocking base-game load/save errors that clutter the console. (new)
v0.8.1 I thought this step was going to be simple… Not at all! It’s been a nightmare of an ordeal. The save selection menu’s code (its logic) was basically one flat, tangled plate of spaghetti. The base game used a bunch of dictionaries to store data and look it back up. The functions tied to the buttons used the Rect object handed to the class to look up the data they needed. Why hand over an object to look up data through a dictionary when you can just pass the function what it needs directly… I completely rewrote the menu’s behavior from scratch, cleanly, to support displaying and loading saves in their new archive form. What’s changed: Rewrote the save selection menu so it lists both classic save folders and the new .msa archives side by side. Added a proper confirmation popup (reused for save deletion, and reusable for anything else later) instead of the base game’s tangled state. Rebuilt the difficulty settings screen flow so it works the same way whether the save is a folder or an archive. Deleting a save now works for both save folders and .msa archives. Fixed thumbnails not showing for saves without a screenshot. Hooked up unloading the virtual file system when leaving a world, so you can load another world without restarting the game. Squashed a good number of bugs along the way (mixed up path separators, wrong field types, missing state resets) that only showed up once real saves were being loaded and listed. Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ✅ Write/Read the .msa (Mechanica Save Archive) file. ✅ Intercepting the system functions. ✅ Write the triggers that will fire the capture/emission of virtual files. ✅ Add display/support for the new save format in the world selection menu. ❌ Add a config file, [deinitialize the VFS on world exit - Early Done], and other minor details/improvements (new) ❌ [Optional] Fix non-blocking base-game load/save errors that clutter the console.
v0.10.0 There we go! The mod is technically functional and usable. All that’s left is getting other people to test it and adding a couple more things, like an update check, and that’s it (: What’s changed: Added a configuration file for the mod. Added several features driven by settings from the configuration file. Patched the new world creation menu to directly create a save in the new format. Reorganized a good chunk of the code in the larger files (Utils.cs, VirtualFS.cs, SaveMenu.cs). Progress so far: ✅ VFS (Virtual File System). ✅ Write the fake System.IO functions. ✅ Write/Read the .msa (Mechanica Save Archive) file. ✅ Intercepting the system functions. ✅ Write the triggers that will fire the capture/emission of virtual files. ✅ Add display/support for the new save format in the world selection menu. ✅ Config file ❌ [Optional] Fix non-blocking base-game load/save errors that clutter the console.
v0.12.0 Version v0.11.0 introduced a system that checks the GitHub repository for new versions of the mod.As for v0.12.0 … I ended up finding a bug that was causing certain item categories to be duplicated whenever a save was reloaded. I spent quite a bit of time tracking down the issue and fixing it, and it ended up requiring some fairly significant changes to the VFS.(Nothing too crazy, though. I basically just added explicit directory tracking so that empty directories are still properly preserved.) Anyway, it works now! :3
MechanicaSaveFix, a BepInEx mod that replaces Mechanica’s save system with a single archive per world. Demo video : https://youtu.be/NF6xDftQVgA This isn’t my first time getting into this game! I’ve been trying things out, doing little tweaks, etc. on the game for years now. But this is my first and biggest completed project aimed at modding this game! There are no resources online about the game’s structure, how it works, etc. So I spent way more time searching and understanding than actually coding! Working without documentation is really annoying :) My goal here is to get a big Blåhaj! Will I pull it off? I don’t know… The problem? Mechanica saves every object, robot, weld, link, etc. into its own little file, stored in nested folders. A small test world already makes hundreds of folders, and large worlds reach thousands of files. On large worlds, you run into what I call “Infinite Save Loading” (ISL). The save never finishes, you have to restart the game, and you lose your progress. I suspect the number of files is the cause, but I haven’t proven it, because these freezes are very hard to reproduce. However, during my testing, I didn’t have the issue. So at best, it improves things! Which is already pretty neat :3 What does the mod do? The mod doesn’t rewrite the game’s save system, which wasn’t designed to be replaced. It sits on top of it: It intercepts the game’s calls to files (File, Directory, FileInfo, DirectoryInfo) using Harmony; It redirects them to a Virtual File System (VFS) that keeps everything in memory; It then writes the result into a single .msa (Mechanica Save Archive) file, which is actually a zip containing the original files and folders. The game therefore continues to believe it is writing thousands of small files, while it is actually writing only one file to disk. On the first save, a classic world is converted to .msa. The original folder is not touched, and you can extract the archive to get back a standard save. I also rewrote the world selection menu (it lists classic folders and archives) and the world creation flow. I added a confirmation window, a config file, a backup system, and an optional update check. Difficulties encountered: No centralized save code. Every system (objects, robots, welds, storage, links…) reads and writes its files in its own way. There was no single place to hook into; Incremental saving and cleanup. The game only rewrites what has changed, then deletes any file absent from its list of valid paths, compared as exact strings. The mod must therefore keep everything in memory and reproduce paths identically: mix of / and , case, spaces. Early on, a bug like this caused all files to be deleted by cleanup; Not everything goes through File/Directory. Some parts of the code use FileInfo/DirectoryInfo, which had to be intercepted separately; Implicitly created folders. The game checks for the existence of folders that are sometimes legitimately empty. After a bug where object categories were duplicated on every reload, I added explicit folder tracking in the VFS, with entries for empty folders in the archive; A very tangled save menu. It relies on dictionaries indexed by UI objects, with a large part of the interface hardwired in the Unity editor, so invisible in decompiled code. I had to inspect the layout at runtime and rewrite the menu entirely; Architecture issues. It took me a while to decide where to place the world swap function (it’s in the VFS). I think I didn’t forget anything :/ Unfortunately, I admit, this is just a band-aid on a gaping wound. It only improves or at best delays the problem. Not to mention the fact that other things like the game’s multiplayer are still completely broken ¯ _ (ツ)_/¯
Ships:
A super mod that fixes a nasty problem in a cool way (Virtual file system >:3) for a game almost nobody plays anymore! Yeeeeah! Go check out this post https://stardance.hackclub.com/projects/50022/devlogs/68461 that’s where the REAL description and the whole journey are....
|
1793318121.9433904
|
1793404521.9433904
|
|
50034
|
GitHub Tracker by @GeorgeSun | Stardance
|
GeorgeSun
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T01:38:41Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Github Tracker, a Slack bot that gives you real-time GitHub statistics. It can provide user profiles, repository information, recent activity, contributor data, contribution streaks, and comparisons. It can track trending and active repositories, search GitHub, monitor repository health and milestones, generate weekly or monthly reports, and runs 24/7. The most challenging part of making this bot was deploying it as the guide said to use Nest, however Nest is not taking in any more applicants right now due to server load so I had to research a different approach to it so I used Heroku instead to keep the bot up 24/7. I am most proud of how the bot can be able to scrape data off the GitHub webpage and display it straight in Slack. You can try the bot in the #bot-spam channel in the Hack Club slack or by clicking the link below. By using the command /github-help, you can get some commands to start with and what they do.", "repo": "https://github.com/Geofoods/GitHub-Tracker", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 51380, "ts": "202 [{"post_id": 51380, "ts": "2026-08-21T01:32:00Z", "hours": 0.4503, "text": "I finally got it working with deployment since the Nest is not sending new applicants right now, I managed to get it working with a different server service that is in the Github Student Developer Pack called Heroku. The bot now runs 24/7"}, {"post_id": 51123, "ts": "2026-08-20T16:51:44Z", "hours": 0.2764, "text": "I changed the /user command to be /github-user to match up with the rest of the commands and also changed it in the help menu as well. I then deployed the bot on a server so it works 24/7"}, {"post_id": 50310, "ts": "2026-08-19T14:00:01Z", "hours": 0.3678, "text": "I added some finishing commands as well as some more command such as the /github-search [query] command which will return the github repositories that were searched from the query"}, {"post_id": 49885, "ts": "2026-08-18T20:55:03Z", "hours": 0.5517, "text": "I made multiple commands that can track stats of users and repositories. Some of the commands include /user which displays the stats of a github user, /github-repo which displays the stats of a github repo, and /github-activity which displays the recent activity of a repository"}]...
|
Title: GitHub Tracker by @GeorgeSun | Stardance
D Title: GitHub Tracker by @GeorgeSun | Stardance
Devlogs:
I made multiple commands that can track stats of users and repositories. Some of the commands include /user which displays the stats of a github user, /github-repo which displays the stats of a github repo, and /github-activity which displays the recent activity of a repository
I added some finishing commands as well as some more command such as the /github-search [query] command which will return the github repositories that were searched from the query
I changed the /user command to be /github-user to match up with the rest of the commands and also changed it in the help menu as well. I then deployed the bot on a server so it works 24/7
I finally got it working with deployment since the Nest is not sending new applicants right now, I managed to get it working with a different server service that is in the Github Student Developer Pack called Heroku. The bot now runs 24/7
Ships:
I made Github Tracker, a Slack bot that gives you real-time GitHub statistics. It can provide user profiles, repository information, recent activity, contributor data, contribution streaks, and comparisons. It can track trending and active repositories, search GitHub, monitor repository health and milestones, generate weekly or monthly reports, and runs 24/7. The most challenging part of making this bot was deploying it as the guide said to use Nest, however Nest is not taking in any more applicants right now due to server load so I had to research a different approach to it so I used Heroku instead to keep the bot up 24/7. I am most proud of how the bot can be able to scrape data off the GitHub webpage and display it straight in Slack. You can try the bot in the #bot-spam channel in the Hack Club slack or by clicking the link below. By using the command /github-help, you can get some commands to start with and what they do....
|
1793267247.6274784
|
1793353647.6274784
|
|
50050
|
Tickets to The Moon by @Lokesh_Krishnan | Stardanc Tickets to The Moon by @Lokesh_Krishnan | Stardance...
|
Lokesh_Krishnan
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-19T10:59:10Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Ticket To Fly is a space travel booking app built entirely in a single index.html file. You can pick destinations like Mars or the Moon, customize your mission, and get a downloadable boarding pass with a working QR code. The hardest part was managing state, live pricing math, and saving past passes to localStorage using pure JavaScript with zero frameworks. Getting html2canvas to export clean PNGs was pretty frustrating to debug too. I’m super happy with how the UI turned out—especially the background starfield and the pass archive system (used Gemini & Perplexity to help brainstorm and troubleshoot parts of it). How to test: Pick “One-Way” or click outer planets to find easter eggs. Switch currency between USD and ★STARDUST at checkout. Finish a booking to download your pass, then click ARCHIVE in the header to view saved tickets.", "repo": "https://github.com/creationssptml8/Ticket-To-Fly", "demo": "https://effortless-conkies-ca4164.netlify.app/"}]...
|
[{"post_id": 50204, "ts": "202 [{"post_id": 50204, "ts": "2026-08-19T10:44:50Z", "hours": 0.4864, "text": "Website add-ons and Dynamic Pricing have been completed!"}, {"post_id": 49521, "ts": "2026-08-18T12:11:57Z", "hours": 0.4711, "text": "Website FINSIHED! Test it out!!"}, {"post_id": 48676, "ts": "2026-08-17T05:37:05Z", "hours": 0.9353, "text": "Finished the Ticket booking interface!"}]...
|
Title: Tickets to The Moon by @Lokesh_Krishnan | S Title: Tickets to The Moon by @Lokesh_Krishnan | Stardance
Devlogs:
Finished the Ticket booking interface!
Website FINSIHED! Test it out!!
Website add-ons and Dynamic Pricing have been completed!
Ships:
Ticket To Fly is a space travel booking app built entirely in a single index.html file. You can pick destinations like Mars or the Moon, customize your mission, and get a downloadable boarding pass with a working QR code. The hardest part was managing state, live pricing math, and saving past passes to localStorage using pure JavaScript with zero frameworks. Getting html2canvas to export clean PNGs was pretty frustrating to debug too. I’m super happy with how the UI turned out—especially the background starfield and the pass archive system (used Gemini & Perplexity to help brainstorm and troubleshoot parts of it). How to test: Pick “One-Way” or click outer planets to find easter eggs. Switch currency between USD and ★STARDUST at checkout. Finish a booking to download your pass, then click ARCHIVE in the header to view saved tickets....
|
1793267548.8763728
|
1793353948.8763728
|
|
50061
|
mini maraca cracker by @Nolan-L-from-Milorad | Sta mini maraca cracker by @Nolan-L-from-Milorad | Stardance...
|
Nolan-L-from-Milorad
|
1
|
18.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T00:16:40Z", "hours": 18.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’ve done it! I’ve been wanting to make a decently high power output stereo amplifier for a while now and when I was looking for ICs to use I found the LM1875 a tiny 30 watt amplifier IC in a tiny 5 pin TO-220 package the main black body is a mere 10 mm * 8 mm big so I took the time to build two of them into a stereo amplifier and blew up some earbuds on the way (LOL) and rocked the entire house. The heatsink on the back does get pretty warm at higher volumes if you use it for a while though keeps under 60 degrees celsius so well within the LM1875 max tempreture (of 150 degrees celsius sustained) The internals are built onto a prototype board and housed in a 3D printed enclosure The big aluminium heatsink out the back of the maraca cracker 2,000 (name courtesy of DankPods) was salvaged from and old power supply. “this thing is hillarious if you hook it up to a tiny speaker”", "repo": "https://gitlab.com/miloradceo/maracacracker", "demo": ""}]...
|
[{"post_id": 82482, "ts": "202 [{"post_id": 82482, "ts": "2026-10-24T23:06:03Z", "hours": 2.825, "text": "I’m ready to ship! . I’ve made a gitlab repo and spent quite some time making a schematic for the device (like >1.5 hours) I also took some nice photos with my Nikon D3200. I feel this is always the part of the project I dread most spending hours taking photos, making documentation, schematics and other tiny things that just take so much longer than you think they would"}, {"post_id": 80269, "ts": "2026-10-17T01:39:04Z", "hours": 4.19, "text": "I did a tonne of minor case work for the device and got it all buttoned up and added a power LED. . I also filmed and edited a video advertising and showing off the maraca cracker 2000 with my friend and totally did not rip off dankpods in the process by blowing up earbuds and overdriving speakers that I couldn’t lapse BECAUSE LAPSE DOESN’T WORK ON LINUX (please fix this nothing works about it I have brought this up multiple times in stardance-help in slack and I’ve gotten nothing) . NEXT: I need to pull all the documentation (that I still need to make) and files into a gitlab repo"}, {"post_id": 74738, "ts": "2026-09-28T03:07:51Z", "hours": 2.2236, "text": "After more case work we have a top for it and the best branding known to humankind MARACA CRACKER 2,000!!!!!!! I’m really happy to see this project come together as well as it has I did a majour boo-boo where I moddeled the case as if the amp was 15mm wider and on the remodel I mucked up the case’s screw holes that I now realise I really need two more of. will do more soon"}, {"post_id": 70447, "ts": "2026-09-19T06:33:51Z", "hours": 1.0833, "text": "More case work with fusion, not terribly interesting but it must be done :( The volume knob now fits and the audio input is screwed into the case as well. I’m contemplating the design for the final case too. I must first do the basic case then make it look nice once that is done I can add cool patterns, text and MARACA CRACKER 2,000!!!!! MUST MAKE DADDY DANKPODS PROUD (lol) I’ll blow up some dirtybuds in the demo video too! (or at least try)"}, {"post_id": 61955, "ts": "2026-09-05T04:22:53Z", "hours": 4.3492, "text": "I recently locked in and did a tonne (kinda forgot to post a bit) But I started designing a case in fusion 360 (FreeCad stinks) I also put screw terminals on the side with a DC barrel jack for power input (edit I put a picture in as I realized I completely forgot to add one LOL :3)"}, {"post_id": 49446, "ts": "2026-08-18T09:13:08Z", "hours": 1.4833, "text": "I’ve kept myself busy! I’ve soldered in the socket and part of the right channel, the rest of the circuit’s parts have been pushed in and I will solder them in the morning. additionally I have soldered up left / right RCA jacks and a volume knob out of two trimpots vertically mounted and attached with a board at the top. This is all going surprisingly well considering the complexity of building a dual-channel amplifier with just the datasheet’s schematic to go off of!"}, {"post_id": 49123, "ts": "2026-08-17T19:12:18Z", "hours": 2.1742, "text": "My goal for this project is to build a small high power amplifier that also doesn’t look trash and start fires. BUT STILL PLAYS SCARLET FIRE I just dropped $50 NZD at jaycar for parts for this project 💀 somehow I managed to perfectly assemble one channel just out of following the datasheet’s example schematic, I know I’m amazed too but miracles happen! attached is the schematic I was using and a picture of what I built"}]...
|
Title: mini maraca cracker by @Nolan-L-from-Milora Title: mini maraca cracker by @Nolan-L-from-Milorad | Stardance
Devlogs:
My goal for this project is to build a small high power amplifier that also doesn’t look trash and start fires. BUT STILL PLAYS SCARLET FIRE I just dropped $50 NZD at jaycar for parts for this project 💀 somehow I managed to perfectly assemble one channel just out of following the datasheet’s example schematic, I know I’m amazed too but miracles happen! attached is the schematic I was using and a picture of what I built
I’ve kept myself busy! I’ve soldered in the socket and part of the right channel, the rest of the circuit’s parts have been pushed in and I will solder them in the morning. additionally I have soldered up left / right RCA jacks and a volume knob out of two trimpots vertically mounted and attached with a board at the top. This is all going surprisingly well considering the complexity of building a dual-channel amplifier with just the datasheet’s schematic to go off of!
I recently locked in and did a tonne (kinda forgot to post a bit) But I started designing a case in fusion 360 (FreeCad stinks) I also put screw terminals on the side with a DC barrel jack for power input (edit I put a picture in as I realized I completely forgot to add one LOL :3)
More case work with fusion, not terribly interesting but it must be done :( The volume knob now fits and the audio input is screwed into the case as well. I’m contemplating the design for the final case too. I must first do the basic case then make it look nice once that is done I can add cool patterns, text and MARACA CRACKER 2,000!!!!! MUST MAKE DADDY DANKPODS PROUD (lol) I’ll blow up some dirtybuds in the demo video too! (or at least try)
After more case work we have a top for it and the best branding known to humankind MARACA CRACKER 2,000!!!!!!! I’m really happy to see this project come together as well as it has I did a majour boo-boo where I moddeled the case as if the amp was 15mm wider and on the remodel I mucked up the case’s screw holes that I now realise I really need two more of. will do more soon
I did a tonne of minor case work for the device and got it all buttoned up and added a power LED. . I also filmed and edited a video advertising and showing off the maraca cracker 2000 with my friend and totally did not rip off dankpods in the process by blowing up earbuds and overdriving speakers that I couldn’t lapse BECAUSE LAPSE DOESN’T WORK ON LINUX (please fix this nothing works about it I have brought this up multiple times in stardance-help in slack and I’ve gotten nothing) . NEXT: I need to pull all the documentation (that I still need to make) and files into a gitlab repo
I’m ready to ship! . I’ve made a gitlab repo and spent quite some time making a schematic for the device (like >1.5 hours) I also took some nice photos with my Nikon D3200. I feel this is always the part of the project I dread most spending hours taking photos, making documentation, schematics and other tiny things that just take so much longer than you think they would
Ships:
I’ve done it! I’ve been wanting to make a decently high power output stereo amplifier for a while now and when I was looking for ICs to use I found the LM1875 a tiny 30 watt amplifier IC in a tiny 5 pin TO-220 package the main black body is a mere 10 mm * 8 mm big so I took the time to build two of them into a stereo amplifier and blew up some earbuds on the way (LOL) and rocked the entire house. The heatsink on the back does get pretty warm at higher volumes if you use it for a while though keeps under 60 degrees celsius so well within the LM1875 max tempreture (of 150 degrees celsius sustained) The internals are built onto a prototype board and housed in a 3D printed enclosure The big aluminium heatsink out the back of the maraca cracker 2,000 (name courtesy of DankPods) was salvaged from and old power supply. “this thing is hillarious if you hook it up to a tiny speaker”...
|
1793321509.2773123
|
1793407909.2773123
|
|
50067
|
YSH v8 Uni by @Yousuff | Stardance
|
Yousuff
|
1
|
6.0
|
20
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T18:57:03Z", "hours": 6.0, "multiplier": 6.34, "payout": 20, "blessing": "neutral", "text": "YSH Terminal — A custom terminal environment built from the ground up, evolving YSH from a simple shell into a more complete terminal experience. It features real filesystem interaction, shell-style commands, networking tools, themes, ASCII branding, developer features, a mini CLI game, and a growing set of utilities.", "repo": "https://github.com/YousufProjs-exe/YSH-v8/", "demo": "https://yousufprojs-exe.github.io/YSH-WEBSITE/"}]...
|
[{"post_id": 66125, "ts": "202 [{"post_id": 66125, "ts": "2026-09-11T18:53:14Z", "hours": 0.5556, "text": "YSH v8, best of current YSH is ready and is live on Github, now YSH is an actual shell with Filesystem and utilities but YSH aint a regular termianl its comes with LAN Networking(Chat and Fileshare), CLI Applications, Eastereggs and more!"}, {"post_id": 49561, "ts": "2026-08-18T13:17:05Z", "hours": 1.5011, "text": "Fixed all the Shorcuts and better File Share"}, {"post_id": 49192, "ts": "2026-08-17T20:50:57Z", "hours": 4.2697, "text": "YSH-Terminal with LAN Networking , CLI Applications and more.!!"}]...
|
Title: YSH v8 Uni by @Yousuff | Stardance
Devlogs Title: YSH v8 Uni by @Yousuff | Stardance
Devlogs:
YSH-Terminal with LAN Networking , CLI Applications and more.!!
Fixed all the Shorcuts and better File Share
YSH v8, best of current YSH is ready and is live on Github, now YSH is an actual shell with Filesystem and utilities but YSH aint a regular termianl its comes with LAN Networking(Chat and Fileshare), CLI Applications, Eastereggs and more!
Ships:
YSH Terminal — A custom terminal environment built from the ground up, evolving YSH from a simple shell into a more complete terminal experience. It features real filesystem interaction, shell-style commands, networking tools, themes, ASCII branding, developer features, a mini CLI game, and a growing set of utilities....
|
1793346467.9384391
|
1793432867.9384391
|
|
50068
|
Give Your Website a Pulse by @vires | Stardance
|
vires
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T04:18:01Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A minimal browser start page built with pure HTML, CSS and JavaScript — no dependencies, no build step. Open it as a new tab and get everything you need right away: clock, search, bookmarks, tasks, and an inspiring quote.", "repo": "https://github.com/abdulakimabdimanapov-rgb/Give-Your-Website-a-Pulse", "demo": "https://abdulakimabdimanapov-rgb.github.io/Give-Your-Website-a-Pulse/"}]...
|
[{"post_id": 48649, "ts": "202 [{"post_id": 48649, "ts": "2026-08-17T04:01:40Z", "hours": 0.6942, "text": "Hey everyone! Just shipped my custom New Tab page for the Give Your Website a Pulse mission! wanted a clean, fast, and interactive dashboard for my daily browser use, so I built this starting page with a modern glassmorphism design."}]...
|
Title: Give Your Website a Pulse by @vires | Stard Title: Give Your Website a Pulse by @vires | Stardance
Devlogs:
Hey everyone! Just shipped my custom New Tab page for the Give Your Website a Pulse mission! wanted a clean, fast, and interactive dashboard for my daily browser use, so I built this starting page with a modern glassmorphism design.
Ships:
A minimal browser start page built with pure HTML, CSS and JavaScript — no dependencies, no build step. Open it as a new tab and get everything you need right away: clock, search, bookmarks, tasks, and an inspiring quote....
|
1792878468.464725
|
1793742468.464725
|
|
50075
|
sten0 by @pizzalover125 | Stardance
|
pizzalover125
|
1
|
22.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-11T20:59:07Z", "hours": 22.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "an open source steno keyboard for under $20 :)", "repo": "https://github.com/pizzalover125/sten0", "demo": ""}]...
|
[{"post_id": 55818, "ts": "202 [{"post_id": 55818, "ts": "2024-07-01T00:00:00Z", "hours": 0.5, "text": "found a keycap model that works!!! (after going through another 2) LETS GO IM SO HAPPY RN ITS UNBELIEVABLE THEY FIT PERFECTLY im so so happy"}, {"post_id": 55816, "ts": "2024-06-28T00:00:00Z", "hours": 2.0, "text": "I wasn’t sure if my white filament was enough so i switched it to black but it didn’t end up working after multiple failed prints so im moving back to black ok it printed but it doesn’t fit need to tweak the model i printed a keycap it fits! didn’t like the design tho going to use this simple one: https://www.printables.com/model/700878-simple-choc-v1-flat-keycaps/files printed! looks super clean redesigning the thing now wait nvm i can just cutout the pins it fits! WHAAAT THE KEEB DOESN’T WORK ANYMORE NOOOOOOOOOOO fixed it! it was a messy solder connectionm shoutout to @Naytik on slack for the help"}, {"post_id": 55817, "ts": "2024-06-26T00:00:00Z", "hours": 2.0, "text": "last night, i printed the top plate that I CADded to add it, i needed to remove the keycaps unfortunately, the keycaps got stuck so i have to replace those switches asked to buy solder wick tried a bunch of things before asking like using glue or the leg of a diode while the wick is being shipped by AMZN, i’ll design the top plate looks pretty clean! it doesn’t work asked in Slack ok apparently i had to wash the bed did that! reprinted printed perfectly! however, it its too flimsy and the screws dont fit reprinting the model with bigger screw holes and more thickness did it! for 30 minutes, i tried screwing it in with my screws from AMZN but then i realized i got the wrong type of screw i needed self tapping i went to lowes and got some it worked awesome! except it broke the 3d print ok remodeled it voila!"}, {"post_id": 55815, "ts": "2024-06-02T00:00:00Z", "hours": 0.25, "text": "Raygen told me to update it with more details on my exact layout sounds like a great idea so ill do it! experimenting with https://stenokeyboards.com/products/the-uni-v4 and https://opensteno.org/demo/ done! i have both QWERTY and STENO will update README with more info"}, {"post_id": 55814, "ts": "2024-05-23T00:00:00Z", "hours": 4.0, "text": "added 1mm more of spacing but now i can’t 3d print it. im thinking to reduce space between Pico and rest made it smaller + moved diodes to back only 249mm wide dimensions: 249x37, 141x26 3d modeling time w cutout and i made a render! nvm i need screws apparently ahhhhhh have to redesign it again wait let me create BOM $53 flat is pretty good ngl ok back to case design watching this https://www.youtube.com/watch?v=cLz7wpwAEoI learned a lot about how to make it exposed PCB but ill just have a front panel ig going to use https://kbplate.ai03.com/ for cutouts ok i have no idea on how to do this idk what dimensions to use i have all of it imported; asked on Slack on how to do it; will continue work after actually let me fully prepare the BOM lets ring up the PCB cost on JLC $21.08… nice! let me create BOM.csv ok going to upload all PCB files through a Codespace added everything except the CAD and CAD images in README time to go back to doing CAD! (started 220) watching https://www.youtube.com/watch?v=7azQkSu0m_U not helpful at all manually did it cool section view ok i made it so the holes are invis cutout in middle also going to test out micro-usb cable it fits! voila! ok preparing for submission again"}, {"post_id": 55813, "ts": "2024-05-22T00:00:00Z", "hours": 3.0, "text": "ok time to make a better CAD! im thinking i’ll do a simpler backplate design with a cool frontplate so its basically a sandwich nvm this is too hard im switching to exposed PCB style time to look for inspo watching https://www.youtube.com/watch?v=82yD0RMeEw8 i came up with the following but it doesn’t seem like enough OMG IVE BEEN TRYING TO MAKE A CUTOUT FOR USB AND ITS NOT WORKING AHHHHH going to redo the PCB layout making it low profile now removing encoders; bulky and don’t look good hotswap also cause why not nvm no hotswap cause i don’t really need it personally using only what i need routed but just realized its not symetrical 😭 ok figuring out how to round corners figured it out! you just use arcs and move the lines acon was right; this feels super nice ok time for routing! OMG I DID IT WITH 0 VIAS im going to create a cool render now first i added back silkscreen art renders are awesome there were these random “K”s next to the diodes, so I removed them need to figure out where mounting holes go wait i dont need them cause i can just press fit with supports created dimensions according to my calculations, i need two rectangles; one that is 252x35 and another that is 147x26. 1mm filets idk if this will work added things in middle: added cutout! going to render this keys may not be able to be pressed"}, {"post_id": 55812, "ts": "2024-05-21T00:00:00Z", "hours": 1.0, "text": "project got rejected… 😭 got rejected for design which i can understand need to make design more cohesive no exposed PCB ig ok ill make basic face plate then ill spice it up nvm ill just create a cool render the encoder keeps bugging out; need a fix tried like 5 diff models and tweaked a bunch of settings and it worked!"}, {"post_id": 55810, "ts": "2024-05-17T00:00:00Z", "hours": 3.0, "text": "started off with a BOM wait if I get some more switches I can build 2 keyboards ok $6 more for +1 keyboard is not bad soooooo that comes down to $67.64 for two keebs or $33.82 for two doesn’t include 3d printed case but thats not too bad acon told me to look at other keyboard companies polish #1: logo on back watched https://www.youtube.com/watch?v=YR1xkOp5U1g just realized I forgot screws in BOM ok apparently i can just use M2x3 without any hex nuts. adding to BOM ok $80.43 now; still cheaper than an Asterik ok going to scroll more on hardware.hackclub.com wait b4 that I wanted to round all corners wait i don’t need mounting holes if tolerance is tight enough idk ill still keep them rounded literally every corner idk what else to make this polished ok ive seen so many other keyboards and don’t see how mine isn’t as polished… made PCB shorter ok im going to reroute everything to make routing better moving two diodes below encoders bc they seem kinda weird looks better rerouted everything! ok imma make a 3d model of the key + keycap WHY ALL KEYCAPS ARE SLANTED OMG MGOMOGMOGMOGM looks pretty slick NGL ill create a rotary encoder w/ cap as well time for render! not working on render? ok its fine added README… ready to submit!"}, {"post_id": 55811, "ts": "2024-05-17T00:00:00Z", "hours": 0.25, "text": "after I uploaded the thing on Slack, Taran told me I needed some sort of support for the pins after a lot of help by him, I made the thing below: Taran said it looks good so okay he said to extrude something on bottom ill do that later ok turns out i also need standoffs for OLED will do wait i can’t extrude a logo or something on bottom bc im splitting it in half"}, {"post_id": 55809, "ts": "2024-05-16T00:00:00Z", "hours": 2.0, "text": "BRUHHHH MY WHOLE JOURNAL for today GOT DELETED basically, I was learning how to Render KiCad It was this crazy thing where I had to downgrade KiCAD to 9.0 and then upgrade to 10.0 I downloaded Blender and Fusion and tried to Render but it wasn’t working I watched like 5 YT videos trying to figure it out So I ultimately decided to have no render I added mounting holes + logos made back panel tried to export from KiCAD as STEP but it doesn’t work? ok that was a weird bug; i just had to redraw the outline pretty basic, ngl idk where to add polish first im going to add keycaps to make it look better nvm no keycaps bc very tedious asked for help on Slack: https://hackclub.slack.com/archives/C0B0CADUV3P/p1778990312121819 what do we think? it looks pretty sick ngl idk what else to add for polish will look at approved keebs on hardware.hackclub.com liked https://github.com/KaiPereira/PR1SM , https://github.com/sudo-apt-install-tap/TaoTeChing , https://github.com/code2344/SplitCodeBoard , https://github.com/meepodeep/ErgoDecks ok all of them are pretty standard and i lowk didn’t gain much inspiration note to self: need to split the keyboard in half to print it wait I can just do that in the Bambu Slicer; ok ill just do that ok i think plan now is to finalize and then submit start w/ BOM im genuinely shocked by this time to see JLC.. doesn’t work? ok time to sleep; will see tmrw"}, {"post_id": 55807, "ts": "2024-05-15T00:00:00Z", "hours": 0.83, "text": "new day; no school! wanted to fully figure out the firmware aspect found the NKRO layout for https://nolltronics.com/product/picosteno/ NKRO is basically a setting you can change on your QWERTY keyboard to actually register all the keys you press at the same time basically, ill code firmware w/ regular QMK/KMK and itll be normal keyboard firmware. user runs Plover software on their computer Plover converts each regular key press to steno this way, I can have the OLED + rotary encoders be super easy to code up i removed the labels from the front + back silkscreen to make it look better / cleaner ill do only firmware today i created the keymap: column 1: Q W E R T Y U I Y P [ column 2: A S D F T O J K L ; ’ column 3: 2 C V [mute/unmute] [video on/off] N M 8 ’ this looks super simple but it isn’t bc i messed up in schematic / placement and some of the keys were swapped around; instead of rerouting, imo fixing it in firmware is better and faster and thats what I did wait nvm i messed up; this should be good: column 1: Q W E R T Y U I Y P column 2: A S D F T O J K L ; column 3: 2 C V [mute/unmute] [video on/off] N M 8 ’ [ im creating firware w help of Claude (pretty hard to do firmware w/o parts)"}, {"post_id": 55808, "ts": "2024-05-15T00:00:00Z", "hours": 0.25, "text": "adding the mounting holes watching https://www.youtube.com/watch?v=TDL3USgDEM0 realized I only have to press “a” and add M2 hole need to position it properly i want to make the PCB black (or white i haven’t chosen yet) looks pretty mid ngl okay time to do case idk what software to use ehhh ill just design a logo today time to hop on figma nvm my internet went out??????????? why did this happen to me uhhhh ig i can’t do much so ill end it here for today… unless it comes back"}, {"post_id": 55806, "ts": "2024-05-14T00:00:00Z", "hours": 2.25, "text": "before starting the schematic, I wanted to look at other open source Steno boards found https://plover.wiki/index.php/DIY_steno_writers they are cool, but none of them have encoders or OLEDs omg i just realized my layout is off i need another two keys on the left side i did not expect almost all steno keyboards to be not aligned? thats actually so weird, but ill change my design i also need to move the bottom row down by 1 unit how did i make all these mistakes wow ok that was ez to fix time to hop on KiCad watching https://www.youtube.com/watch?v=8WXpGTIbxlQ to learn a little bit got matrix done using this https://pip-assets.raspberrypi.com/categories/610-raspberry-pi-pico/documents/RP-008309-DS-1-Pico-R3-A4-Pinout.pdf?disposition=inline schematic done! it was pretty ez assigned footprint spent 5 minutes looking for EC11 + cherry mx footrpints but realized they were built in after alex told me time to start PCB! finished the keys, encoders, and pico placement; need to do diodes + OLED routing time! oops forgot to flip the diodes… ill do that rn! routed! added 3d models for keys took so long for no reason added all the other 3d models… these were shorter! aight going to call it for a day but great progress today!"}, {"post_id": 55805, "ts": "2024-05-13T00:00:00Z", "hours": 0.5, "text": "thought about required costs decided to make BOM for some reason im going to source a lot of parts from Amazon Aliexpress has misdelievered packages lot easier to get parts, replace parts, etc. i alr have a bunch of Picos lying around so i’ll use one of those PCB probably going to be around $20 realized i need to figure out firmware because it is complex found Plover (most popular firmware) ok this is a bit weird but basically I can program the keyboard firmware to be like a regular keyboard but Plover will translate the regular keypresses to Steno (in this image, I would set the top left key on my PCB to be a “W” on QWERTY which would be translate to the “T” sound on Steno ok i basically have firmware figured out! ill use a 7*4 matrix layout so I can get the 2 rotary encoders and make them keys i tried to draw out the matrix but its hard so ill prob just figure which keys are what after schematic done nvm ill use 3x10 cause its easier and i have enough keys and it would be easier to route"}, {"post_id": 55804, "ts": "2024-05-12T00:00:00Z", "hours": 0.5, "text": "created idea after seeing StenoKeyboard’s outrageous pricing on https://stenokeyboards.com/products/the-uni-v4 i’ve seen videos of people typing at crazy speeds with steno what if i made a cheap steno keyboard? v1 is going to be basic but i want v2 to be hotswap + RGB i could still do hotswap with this thing called “mill-max sockets” they basically plug the PCB holes and make a regular MX footprint become hotswappable require kapton tape ok ill decide this later created the thing below was originally going to copy the StenoKeyboards layout but Taran told me to make it more unique so I tried doing that ok ill first design w/o LEDs and then add them in v2 goal of this project is to be ultra-polished in every way possible want some sick renders"}]...
|
Title: sten0 by @pizzalover125 | Stardance
Devlog Title: sten0 by @pizzalover125 | Stardance
Devlogs:
created idea after seeing StenoKeyboard’s outrageous pricing on https://stenokeyboards.com/products/the-uni-v4 i’ve seen videos of people typing at crazy speeds with steno what if i made a cheap steno keyboard? v1 is going to be basic but i want v2 to be hotswap + RGB i could still do hotswap with this thing called “mill-max sockets” they basically plug the PCB holes and make a regular MX footprint become hotswappable require kapton tape ok ill decide this later created the thing below was originally going to copy the StenoKeyboards layout but Taran told me to make it more unique so I tried doing that ok ill first design w/o LEDs and then add them in v2 goal of this project is to be ultra-polished in every way possible want some sick renders
thought about required costs decided to make BOM for some reason im going to source a lot of parts from Amazon Aliexpress has misdelievered packages lot easier to get parts, replace parts, etc. i alr have a bunch of Picos lying around so i’ll use one of those PCB probably going to be around $20 realized i need to figure out firmware because it is complex found Plover (most popular firmware) ok this is a bit weird but basically I can program the keyboard firmware to be like a regular keyboard but Plover will translate the regular keypresses to Steno (in this image, I would set the top left key on my PCB to be a “W” on QWERTY which would be translate to the “T” sound on Steno ok i basically have firmware figured out! ill use a 7*4 matrix layout so I can get the 2 rotary encoders and make them keys i tried to draw out the matrix but its hard so ill prob just figure which keys are what after schematic done nvm ill use 3x10 cause its easier and i have enough keys and it would be easier to route
before starting the schematic, I wanted to look at other open source Steno boards found https://plover.wiki/index.php/DIY_steno_writers they are cool, but none of them have encoders or OLEDs omg i just realized my layout is off i need another two keys on the left side i did not expect almost all steno keyboards to be not aligned? thats actually so weird, but ill change my design i also need to move the bottom row down by 1 unit how did i make all these mistakes wow ok that was ez to fix time to hop on KiCad watching https://www.youtube.com/watch?v=8WXpGTIbxlQ to learn a little bit got matrix done using this https://pip-assets.raspberrypi.com/categories/610-raspberry-pi-pico/documents/RP-008309-DS-1-Pico-R3-A4-Pinout.pdf?disposition=inline schematic done! it was pretty ez assigned footprint spent 5 minutes looking for EC11 + cherry mx footrpints but realized they were built in after alex told me time to start PCB! finished the keys, encoders, and pico placement; need to do diodes + OLED routing time! oops forgot to flip the diodes… ill do that rn! routed! added 3d models for keys took so long for no reason added all the other 3d models… these were shorter! aight going to call it for a day but great progress today!
adding the mounting holes watching https://www.youtube.com/watch?v=TDL3USgDEM0 realized I only have to press “a” and add M2 hole need to position it properly i want to make the PCB black (or white i haven’t chosen yet) looks pretty mid ngl okay time to do case idk what software to use ehhh ill just design a logo today time to hop on figma nvm my internet went out??????????? why did this happen to me uhhhh ig i can’t do much so ill end it here for today… unless it comes back
new day; no school! wanted to fully figure out the firmware aspect found the NKRO layout for https://nolltronics.com/product/picosteno/ NKRO is basically a setting you can change on your QWERTY keyboard to actually register all the keys you press at the same time basically, ill code firmware w/ regular QMK/KMK and itll be normal keyboard firmware. user runs Plover software on their computer Plover converts each regular key press to steno this way, I can have the OLED + rotary encoders be super easy to code up i removed the labels from the front + back silkscreen to make it look better / cleaner ill do only firmware today i created the keymap: column 1: Q W E R T Y U I Y P [ column 2: A S D F T O J K L ; ’ column 3: 2 C V [mute/unmute] [video on/off] N M 8 ’ this looks super simple but it isn’t bc i messed up in schematic / placement and some of the keys were swapped around; instead of rerouting, imo fixing it in firmware is better and faster and thats what I did wait nvm i messed up; this should be good: column 1: Q W E R T Y U I Y P column 2: A S D F T O J K L ; column 3: 2 C V [mute/unmute] [video on/off] N M 8 ’ [ im creating firware w help of Claude (pretty hard to do firmware w/o parts)
BRUHHHH MY WHOLE JOURNAL for today GOT DELETED basically, I was learning how to Render KiCad It was this crazy thing where I had to downgrade KiCAD to 9.0 and then upgrade to 10.0 I downloaded Blender and Fusion and tried to Render but it wasn’t working I watched like 5 YT videos trying to figure it out So I ultimately decided to have no render I added mounting holes + logos made back panel tried to export from KiCAD as STEP but it doesn’t work? ok that was a weird bug; i just had to redraw the outline pretty basic, ngl idk where to add polish first im going to add keycaps to make it look better nvm no keycaps bc very tedious asked for help on Slack: https://hackclub.slack.com/archives/C0B0CADUV3P/p1778990312121819 what do we think? it looks pretty sick ngl idk what else to add for polish will look at approved keebs on hardware.hackclub.com liked https://github.com/KaiPereira/PR1SM , https://github.com/sudo-apt-install-tap/TaoTeChing , https://github.com/code2344/SplitCodeBoard , https://github.com/meepodeep/ErgoDecks ok all of them are pretty standard and i lowk didn’t gain much inspiration note to self: need to split the keyboard in half to print it wait I can just do that in the Bambu Slicer; ok ill just do that ok i think plan now is to finalize and then submit start w/ BOM im genuinely shocked by this time to see JLC.. doesn’t work? ok time to sleep; will see tmrw
after I uploaded the thing on Slack, Taran told me I needed some sort of support for the pins after a lot of help by him, I made the thing below: Taran said it looks good so okay he said to extrude something on bottom ill do that later ok turns out i also need standoffs for OLED will do wait i can’t extrude a logo or something on bottom bc im splitting it in half
started off with a BOM wait if I get some more switches I can build 2 keyboards ok $6 more for +1 keyboard is not bad soooooo that comes down to $67.64 for two keebs or $33.82 for two doesn’t include 3d printed case but thats not too bad acon told me to look at other keyboard companies polish #1: logo on back watched https://www.youtube.com/watch?v=YR1xkOp5U1g just realized I forgot screws in BOM ok apparently i can just use M2x3 without any hex nuts. adding to BOM ok $80.43 now; still cheaper than an Asterik ok going to scroll more on hardware.hackclub.com wait b4 that I wanted to round all corners wait i don’t need mounting holes if tolerance is tight enough idk ill still keep them rounded literally every corner idk what else to make this polished ok ive seen so many other keyboards and don’t see how mine isn’t as polished… made PCB shorter ok im going to reroute everything to make routing better moving two diodes below encoders bc they seem kinda weird looks better rerouted everything! ok imma make a 3d model of the key + keycap WHY ALL KEYCAPS ARE SLANTED OMG MGOMOGMOGMOGM looks pretty slick NGL ill create a rotary encoder w/ cap as well time for render! not working on render? ok its fine added README… ready to submit!
project got rejected… 😭 got rejected for design which i can understand need to make design more cohesive no exposed PCB ig ok ill make basic face plate then ill spice it up nvm ill just create a cool render the encoder keeps bugging out; need a fix tried like 5 diff models and tweaked a bunch of settings and it worked!
ok time to make a better CAD! im thinking i’ll do a simpler backplate design with a cool frontplate so its basically a sandwich nvm this is too hard im switching to exposed PCB style time to look for inspo watching https://www.youtube.com/watch?v=82yD0RMeEw8 i came up with the following but it doesn’t seem like enough OMG IVE BEEN TRYING TO MAKE A CUTOUT FOR USB AND ITS NOT WORKING AHHHHH going to redo the PCB layout making it low profile now removing encoders; bulky and don’t look good hotswap also cause why not nvm no hotswap cause i don’t really need it personally using only what i need routed but just realized its not symetrical 😭 ok figuring out how to round corners figured it out! you just use arcs and move the lines acon was right; this feels super nice ok time for routing! OMG I DID IT WITH 0 VIAS im going to create a cool render now first i added back silkscreen art renders are awesome there were these random “K”s next to the diodes, so I removed them need to figure out where mounting holes go wait i dont need them cause i can just press fit with supports created dimensions according to my calculations, i need two rectangles; one that is 252x35 and another that is 147x26. 1mm filets idk if this will work added things in middle: added cutout! going to render this keys may not be able to be pressed
added 1mm more of spacing but now i can’t 3d print it. im thinking to reduce space between Pico and rest made it smaller + moved diodes to back only 249mm wide dimensions: 249x37, 141x26 3d modeling time w cutout and i made a render! nvm i need screws apparently ahhhhhh have to redesign it again wait let me create BOM $53 flat is pretty good ngl ok back to case design watching this https://www.youtube.com/watch?v=cLz7wpwAEoI learned a lot about how to make it exposed PCB but ill just have a front panel ig going to use https://kbplate.ai03.com/ for cutouts ok i have no idea on how to do this idk what dimensions to use i have all of it imported; asked on Slack on how to do it; will continue work after actually let me fully prepare the BOM lets ring up the PCB cost on JLC $21.08… nice! let me create BOM.csv ok going to upload all PCB files through a Codespace added everything except the CAD and CAD images in README time to go back to doing CAD! (started 220) watching https://www.youtube.com/watch?v=7azQkSu0m_U not helpful at all manually did it cool section view ok i made it so the holes are invis cutout in middle also going to test out micro-usb cable it fits! voila! ok preparing for submission again
Raygen told me to update it with more details on my exact layout sounds like a great idea so ill do it! experimenting with https://stenokeyboards.com/products/the-uni-v4 and https://opensteno.org/demo/ done! i have both QWERTY and STENO will update README with more info
last night, i printed the top plate that I CADded to add it, i needed to remove the keycaps unfortunately, the keycaps got stuck so i have to replace those switches asked to buy solder wick tried a bunch of things before asking like using glue or the leg of a diode while the wick is being shipped by AMZN, i’ll design the top plate looks pretty clean! it doesn’t work asked in Slack ok apparently i had to wash the bed did that! reprinted printed perfectly! however, it its too flimsy and the screws dont fit reprinting the model with bigger screw holes and more thickness did it! for 30 minutes, i tried screwing it in with my screws from AMZN but then i realized i got the wrong type of screw i needed self tapping i went to lowes and got some it worked awesome! except it broke the 3d print ok remodeled it voila!
I wasn’t sure if my white filament was enough so i switched it to black but it didn’t end up working after multiple failed prints so im moving back to black ok it printed but it doesn’t fit need to tweak the model i printed a keycap it fits! didn’t like the design tho going to use this simple one: https://www.printables.com/model/700878-simple-choc-v1-flat-keycaps/files printed! looks super clean redesigning the thing now wait nvm i can just cutout the pins it fits! WHAAAT THE KEEB DOESN’T WORK ANYMORE NOOOOOOOOOOO fixed it! it was a messy solder connectionm shoutout to @Naytik on slack for the help
found a keycap model that works!!! (after going through another 2) LETS GO IM SO HAPPY RN ITS UNBELIEVABLE THEY FIT PERFECTLY im so so happy
Ships:
an open source steno keyboard for under $20 :)...
|
1793378964.9290376
|
1794242964.9290376
|
|
50076
|
orph32 by @pizzalover125 | Stardance
|
pizzalover125
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-08T00:11:52Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "an esp32 devboard to be sold at hack club shops; Orpheus Pico, but with an ESP32 chip", "repo": "https://github.com/pizzalover125/orpheus32", "demo": ""}]...
|
[{"post_id": 56129, "ts": "202 [{"post_id": 56129, "ts": "2024-06-04T00:00:00Z", "hours": 1.0, "text": "im locking in polish today this bout to be the most polished thing ever first things first, delete whatever i made b4 start w blank slate okay, time to design a logo will use Figma o, r, p, h all layered on top of each other v2 of logo need to add 32 component to it bruh ts is so hard idk ill start afresh ok im back at 3:45 pm time to get back to work on this ok that looks better ok who let me cook something needs to be in the middle also got tons of positive feedback which is nice to hear who let me cook something forming? i feel like this is enough"}, {"post_id": 56079, "ts": "2024-06-03T00:00:00Z", "hours": 0.25, "text": "ahhhhhh im trying to make it better i tried to brand it as “the most comical devboard” but it did not end up working i need to find a way to make this more personalized ahhhh why is this so hard"}, {"post_id": 56078, "ts": "2024-06-02T00:00:00Z", "hours": 0.5, "text": "project rejected :( apparently it is too generic in terms of art need to fix that! looking at https://hardware.hackclub.com/gallery for inspo i like https://github.com/NotARoomba/ember and Taranium-RP2040 made it comic sans ahhhhh idk how to make the art better"}, {"post_id": 56077, "ts": "2024-05-21T00:00:00Z", "hours": 3.0, "text": "redoing all the passives going to change placement as well some changes to values + decoupling caps added done with pairs + placement! wowoowowowow time to see price bc i lessened number of items bruh price is $93 now $180 w customs and shipping 😢 I HAVE TO RESTART bc ESP32-S3 is too expensive luckily i have rev2 still available which uses routing time wait ill add SK6218-mini ok added PCB done! need to add silkscreen now! both sides done! time to add Hack Club logo BOOM! ok sent message in slack idk i feel like accelorometer is not needed i think i might prepare for submission now ok going to prepare for submission added cool labels to evrything creating render cause why not Render PCB + Schematic KiCAD Render JLC comes out to $40.30 👀 ok time to upload files and prepare README"}, {"post_id": 56076, "ts": "2024-05-20T00:00:00Z", "hours": 2.0, "text": "I fixed DRC errors that Taran pointed out now i want to add a neopixel to make it look cooler going to use SK6812 cause why not routed it! will add 3d model ok added it from SnapEDA wait the headers are reversed; need to fix time for silkscreen raygen wants me to add another neopixel was not planning to, but sure added! going to view other devboards notes from other breadboards: label schematic to make it pretty label pins (seems to be very important) hack club logo + other silkscreen art ok im locked in now wow this is harder than I expected first half done! one more half to go had a bunch of problems choosing font and positioning properly made post on Hack Club Slack ok i think thats it for now; will come back to fix problems, tidy schematic, and prepare to submit! seems like no major errors as nobody has said much on Slack Taran told me to add which GPIO are being used for sensors, so I did that! going to create order on JLC and source parts! im doing everything except the pins cause i don’t really need them PCBA ok i can do a lot of optimization but first, i need to fix all the things Rudy mentioned ahhh too tired for this; will do tmrw ig"}, {"post_id": 56075, "ts": "2024-05-19T00:00:00Z", "hours": 3.0, "text": "@Rudy on Slack told me to use a ESP32 with built-in UART-to-USB ig thats what we are doing for this after brief research, I found ESP32-S3-WROOM-1 with 36 GPIO will read https://documentation.espressif.com/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf idk if I even should create a board bc its going to be super basic copied USB-C w/o diode going to use same power circuitry added buttons bruh my schematic feels so basic pcb also feels too basic… idk if this is worth it cause its too basic ok im back after a couple of hours i’m going to make this a sensor board finally mastered differential pairs in KiCad w https://www.youtube.com/watch?v=M13QxtPVrXY ! wait routing this is impossible waiting for expert resposne in Slack; going to select some chips to use after brief research, i’ve decided to use BME280 and LSM6DS3 BME280 is temperature, while the LSM6DS3 is accelorometer after much reading of datasheets, came up with this! hopefully it is correct rev 3 is complete!"}, {"post_id": 56074, "ts": "2024-05-18T00:00:00Z", "hours": 2.0, "text": "time to fix everything I did wrong, such as: also apparently my routing is inefficient REROUTED EVERYTHING AGAIN BUT IT STILL DIDN”T WORK AHHHHH time to watch https://www.youtube.com/watch?v=KgOQaBUPiBo ok that vid no good lets try https://www.youtube.com/watch?v=v2okbB05piE AI slop vid; nvm lets try https://www.youtube.com/watch?v=0tuuMSxcVxg got it working! w render and we are done with routing for rev2… wow this is turning out great! next rev, need to minimize vias from 15 to like 5"}, {"post_id": 56073, "ts": "2024-05-18T00:00:00Z", "hours": 3.0, "text": "During highway, Jenin had this idea to make an ESP32 devboard called Orpheus32, but ended up never making it and granted me permission to make it I never made it… until now! im going to use KiCad going to use WROOM-32 realized that it doesn’t have easy USB pins like RP2040; need a USB to UART coverter after some vary minimal research, it looks like CH340C is the standard for the converter using LDO AMS117 3.3v edition working on USB-C need B5819W diode adding power LED following standard conventions for the first time by having GND face down and VCC/VBUS/+5V/etc face up USBC done LDO done USB to UART done buttons done actual ESP32 + pins done also! ok assigned footprints will start PCB now… wow this project is super easy thus far got general layout sort of… need to add components components added time to route ill use differential pair surprisingly not too difficult bruh i messed up schematic ok i added ground planes and am done with rev1! ill get a 3d model of the USBC first ok time to find bugs and do more revisions!"}]...
|
Title: orph32 by @pizzalover125 | Stardance
Devlo Title: orph32 by @pizzalover125 | Stardance
Devlogs:
During highway, Jenin had this idea to make an ESP32 devboard called Orpheus32, but ended up never making it and granted me permission to make it I never made it… until now! im going to use KiCad going to use WROOM-32 realized that it doesn’t have easy USB pins like RP2040; need a USB to UART coverter after some vary minimal research, it looks like CH340C is the standard for the converter using LDO AMS117 3.3v edition working on USB-C need B5819W diode adding power LED following standard conventions for the first time by having GND face down and VCC/VBUS/+5V/etc face up USBC done LDO done USB to UART done buttons done actual ESP32 + pins done also! ok assigned footprints will start PCB now… wow this project is super easy thus far got general layout sort of… need to add components components added time to route ill use differential pair surprisingly not too difficult bruh i messed up schematic ok i added ground planes and am done with rev1! ill get a 3d model of the USBC first ok time to find bugs and do more revisions!
time to fix everything I did wrong, such as: also apparently my routing is inefficient REROUTED EVERYTHING AGAIN BUT IT STILL DIDN”T WORK AHHHHH time to watch https://www.youtube.com/watch?v=KgOQaBUPiBo ok that vid no good lets try https://www.youtube.com/watch?v=v2okbB05piE AI slop vid; nvm lets try https://www.youtube.com/watch?v=0tuuMSxcVxg got it working! w render and we are done with routing for rev2… wow this is turning out great! next rev, need to minimize vias from 15 to like 5
@Rudy on Slack told me to use a ESP32 with built-in UART-to-USB ig thats what we are doing for this after brief research, I found ESP32-S3-WROOM-1 with 36 GPIO will read https://documentation.espressif.com/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf idk if I even should create a board bc its going to be super basic copied USB-C w/o diode going to use same power circuitry added buttons bruh my schematic feels so basic pcb also feels too basic… idk if this is worth it cause its too basic ok im back after a couple of hours i’m going to make this a sensor board finally mastered differential pairs in KiCad w https://www.youtube.com/watch?v=M13QxtPVrXY ! wait routing this is impossible waiting for expert resposne in Slack; going to select some chips to use after brief research, i’ve decided to use BME280 and LSM6DS3 BME280 is temperature, while the LSM6DS3 is accelorometer after much reading of datasheets, came up with this! hopefully it is correct rev 3 is complete!
I fixed DRC errors that Taran pointed out now i want to add a neopixel to make it look cooler going to use SK6812 cause why not routed it! will add 3d model ok added it from SnapEDA wait the headers are reversed; need to fix time for silkscreen raygen wants me to add another neopixel was not planning to, but sure added! going to view other devboards notes from other breadboards: label schematic to make it pretty label pins (seems to be very important) hack club logo + other silkscreen art ok im locked in now wow this is harder than I expected first half done! one more half to go had a bunch of problems choosing font and positioning properly made post on Hack Club Slack ok i think thats it for now; will come back to fix problems, tidy schematic, and prepare to submit! seems like no major errors as nobody has said much on Slack Taran told me to add which GPIO are being used for sensors, so I did that! going to create order on JLC and source parts! im doing everything except the pins cause i don’t really need them PCBA ok i can do a lot of optimization but first, i need to fix all the things Rudy mentioned ahhh too tired for this; will do tmrw ig
redoing all the passives going to change placement as well some changes to values + decoupling caps added done with pairs + placement! wowoowowowow time to see price bc i lessened number of items bruh price is $93 now $180 w customs and shipping 😢 I HAVE TO RESTART bc ESP32-S3 is too expensive luckily i have rev2 still available which uses routing time wait ill add SK6218-mini ok added PCB done! need to add silkscreen now! both sides done! time to add Hack Club logo BOOM! ok sent message in slack idk i feel like accelorometer is not needed i think i might prepare for submission now ok going to prepare for submission added cool labels to evrything creating render cause why not Render PCB + Schematic KiCAD Render JLC comes out to $40.30 👀 ok time to upload files and prepare README
project rejected :( apparently it is too generic in terms of art need to fix that! looking at https://hardware.hackclub.com/gallery for inspo i like https://github.com/NotARoomba/ember and Taranium-RP2040 made it comic sans ahhhhh idk how to make the art better
ahhhhhh im trying to make it better i tried to brand it as “the most comical devboard” but it did not end up working i need to find a way to make this more personalized ahhhh why is this so hard
im locking in polish today this bout to be the most polished thing ever first things first, delete whatever i made b4 start w blank slate okay, time to design a logo will use Figma o, r, p, h all layered on top of each other v2 of logo need to add 32 component to it bruh ts is so hard idk ill start afresh ok im back at 3:45 pm time to get back to work on this ok that looks better ok who let me cook something needs to be in the middle also got tons of positive feedback which is nice to hear who let me cook something forming? i feel like this is enough
Ships:
an esp32 devboard to be sold at hack club shops; Orpheus Pico, but with an ESP32 chip...
|
1793378966.7281199
|
1794242966.7281199
|
|
50077
|
clk0 by @pizzalover125 | Stardance
|
pizzalover125
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-07T04:22:26Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "an open source chess clock with custom CAD and firmware", "repo": "https://github.com/pizzalover125/chess-clock", "demo": ""}]...
|
[{"post_id": 56139, "ts": "202 [{"post_id": 56139, "ts": "2024-07-17T00:00:00Z", "hours": 1.0, "text": "this is from open sauce the clock stopped working need to fix it opened it up almost broke the screw 💀 ok thankfully it was just one wire that disconnected will reconnect it! ok it works! im going to add multiple time controls so its better done! there are a bunch of new time controls now im rlly proud of this project"}, {"post_id": 56121, "ts": "2024-07-11T00:00:00Z", "hours": 2.0, "text": "i tried really hard to fit it all together i put it together, then something would disconnect, then i would it put it back together, then it would disconnect again ill just redesign it to be taller printer not working? i tried to fix the wifi settings 💀 still didn’t work ill just use SD card redesign: ok hopefully ts works IT WORKED OMG OMG OMG im leaving for open sauce tomorrow so this was done right when I needed it to be LETS GO"}, {"post_id": 56120, "ts": "2024-06-29T00:00:00Z", "hours": 1.5, "text": "ok this is going to be hard to build I LAPSEd me soldering the 7-segment display (took 30 min) i printed out the bottom part realized the top part isn’t compatible with bottom part need to redesign didn’t have USB-C hole either redesigned! asked for help on Slack got that help with print settings ok redesigned: printed it the hole was too small the supports were impossible to remove will reprint"}, {"post_id": 56119, "ts": "2024-06-17T00:00:00Z", "hours": 1.0, "text": "going to work on the firmware somebody told me that the M2 wouldn’t work ok this is the firmware: https://pastebin.com/s5BTVMHb pretty simple going to make it better when i get parts redesigned the wiring diagram cause I’m going to have batteries! the display uses M2.5 holes 😭 time to fix fixed going to work on README created README updated files"}, {"post_id": 56118, "ts": "2024-06-16T00:00:00Z", "hours": 2.0, "text": "okay i learned that expedited shipping is allowed for JLCPCB so im designing a PCB this is also due to the fact that idk how to wire it without a PCB will make it a lot cleaner also! schematic done time to assign footprints assigned them! problem: stemma qt is very small and hard to solder it seems like ok this PCB is wayyyy too simple to need a PCB at all ill figure out how standoffs work watching https://www.youtube.com/watch?v=NHIrTtLCnEo that was so easy found these bumpers: https://www.adafruit.com/product/550 will add them actually no point in adding to CAD made this https://docs.google.com/spreadsheets/d/1HJi_SoZmRUPXIg3fWTzNNd4LjoeZRIxf5KhnIGp8wuw/edit?usp=sharing ! comes out to $54.36 at a quantity of 1 hardware is so expensive ok i just need to make firmware i think this project is almost ready to ship! added these holes:"}, {"post_id": 56117, "ts": "2024-06-15T00:00:00Z", "hours": 3.0, "text": "i was away from my house for a couple of days time to get back on this project added tolerances added a border! it looks kinda weird ngl added keycaps and colors! looks very cool made it assembleable remade the assembly ill make a render cause why not technically i am done with the CAD but idk if i want to make a PCB cause it needs to arrive in time ok made that apparently M1 screws don’t work with 3d printed stuff so ill need M2 made it M2 ok im working super slow now idk why new session at night i added chamfer to add M3 holes! the only major thing left other than firmware is how im going to assemble this i dont want to make a PCB cause i want it to be done in time PCB also not required? i could use a breadboard ok ill figure this out tmrw will create wiring diagram! kinda basic because wiring diagram is kinda basic"}, {"post_id": 56116, "ts": "2024-06-10T00:00:00Z", "hours": 2.5, "text": "rebranding this to be a chess clock again planning to use 8-segment clock displays like this one: thats what these clocks use: going to also use mx switches cause hey are used in: time to import all CAD models ah i can only find 1.2” not 0.56” i imported the mx switch time to decide what MCU i think ill use RP2040-zero wait nvm its hard to mount? i might use pico just because its easier to mount imported the pico! apparently i need beveled face to make it have good viewing angles watching https://www.youtube.com/watch?v=eApyyNPppaY starting to look like a chess clock! did some more research on how to mount a mx switch i need a 14x14mm cutout with 1.5mm plate size looks great! ill add pico mounting now okay turns out every OLED is different so ig ill have to redo some dimensions also i might make it bigger ok found models for the 0.56 i2c 7-segment display! going to use that because its better using this image annoying i need to covnert to mm voila! time to add screen cutout looks like a chess clock will later figure out how to assemble"}, {"post_id": 56115, "ts": "2024-05-23T00:00:00Z", "hours": 1.0, "text": "time for The Great Reset im starting over designs i want to rival the industry standard cubing timer browsing [link] for inspo + ideas bro no way there is an AI speedcubing timer; this is wild ok im thinking to use capacitve touch pad instead of switches to not make this a hackpad watching https://www.youtube.com/watch?v=tTMsbL0eH_M to learn that video wasn’t helpful; watching https://www.youtube.com/watch?v=42jUcqwKIw8 that vid didn’t have much so watching this https://www.youtube.com/watch?v=mWR9Q_pTagw ok capacitve touch is very hard to implement in such a large area such as a palm lots of chance for missed calls did some research and a grand total of 0 people have made an open source cubing timer soooo this is the first! thats kind of cool okay i might use this type of design with infared/distance sensors on each side to determine mx switches aren’t good bc they are designed for fingers, not hands ok this is a hard project wait i found [https://github.com/amadensor/cube-timer/tree/main/pcb/cube_timer] ok mine is the first PCB + case; the project is just an ESP32 on a breadboard going to read https://ww1.microchip.com/downloads/en/DeviceDoc/40001946A.pdf ok idk if this is possible even"}, {"post_id": 56114, "ts": "2024-05-16T00:00:00Z", "hours": 0.92, "text": "okay i tried a THIRD cable and it STILL DOESN’T WORK I need to buy another cable later I’ll work on PCB finished w schematic bc its super ez i want to use 1.3” OLED cause its bigger so easier to see downloaded the footprint + schematic from SNAPEDA updated schematic idk where to put MCU if I put it under then OLED pins would hit the MCU ok someone told me I can put it under found 3D model of OLED in GrabCAD and imported it downloaded Xiao RP2040 model from GrabCAD and imported it routed everything was going to move the mounting holes but decided not to ONSHAPE time! nvm, i wanted to change it just to be safe rounded the corners and routed! now time for CAD added holes + the rectangle itself tried to add top plate but i think its better to just have backplate printed the PCB IRL! going to print the backplate to get a feel on what this is going to be like prined backplate out; pretty good fit!"}, {"post_id": 56113, "ts": "2024-05-15T00:00:00Z", "hours": 1.0, "text": "thought of this project a long time ago i wanted to build an open source chess clock then I thought, why make the chess clock also work as a rubiks cube timer? thats when this idea popped in my head going to make this basic and cheap, so a 4 point project start off w schematic added xiao from https://hackpad.hackclub.com/resources going to be making the following thing: changing MCU to ESP32C3 bc i can create web app for chess clock! using low-profile switches to potentially make this folding finished schematic assigned footprints looked at 0.96” OLED on my desk and realized two numbers would be too small on that was thinking about 2 OLEDs but the Xiao has 1 i2c bus only guess we are switching to Pi Pico choc v2 switches have same travel distance but 4mm lower height than gateron did some research; choosing kalih PG1350 time to route ez routing had them flipped; had to route again added 3d models! ok im not going to make it round so its easier to CAD mounting holes took forever for some reason but I got it! created logo tried to add texture but it didn’t end up working ok i just realized the way i envisioned it is completely wrong i think i’ll switch this to a cubing timer cause this is the proper thing for that"}]...
|
Title: clk0 by @pizzalover125 | Stardance
Devlogs Title: clk0 by @pizzalover125 | Stardance
Devlogs:
thought of this project a long time ago i wanted to build an open source chess clock then I thought, why make the chess clock also work as a rubiks cube timer? thats when this idea popped in my head going to make this basic and cheap, so a 4 point project start off w schematic added xiao from https://hackpad.hackclub.com/resources going to be making the following thing: changing MCU to ESP32C3 bc i can create web app for chess clock! using low-profile switches to potentially make this folding finished schematic assigned footprints looked at 0.96” OLED on my desk and realized two numbers would be too small on that was thinking about 2 OLEDs but the Xiao has 1 i2c bus only guess we are switching to Pi Pico choc v2 switches have same travel distance but 4mm lower height than gateron did some research; choosing kalih PG1350 time to route ez routing had them flipped; had to route again added 3d models! ok im not going to make it round so its easier to CAD mounting holes took forever for some reason but I got it! created logo tried to add texture but it didn’t end up working ok i just realized the way i envisioned it is completely wrong i think i’ll switch this to a cubing timer cause this is the proper thing for that
okay i tried a THIRD cable and it STILL DOESN’T WORK I need to buy another cable later I’ll work on PCB finished w schematic bc its super ez i want to use 1.3” OLED cause its bigger so easier to see downloaded the footprint + schematic from SNAPEDA updated schematic idk where to put MCU if I put it under then OLED pins would hit the MCU ok someone told me I can put it under found 3D model of OLED in GrabCAD and imported it downloaded Xiao RP2040 model from GrabCAD and imported it routed everything was going to move the mounting holes but decided not to ONSHAPE time! nvm, i wanted to change it just to be safe rounded the corners and routed! now time for CAD added holes + the rectangle itself tried to add top plate but i think its better to just have backplate printed the PCB IRL! going to print the backplate to get a feel on what this is going to be like prined backplate out; pretty good fit!
time for The Great Reset im starting over designs i want to rival the industry standard cubing timer browsing [link] for inspo + ideas bro no way there is an AI speedcubing timer; this is wild ok im thinking to use capacitve touch pad instead of switches to not make this a hackpad watching https://www.youtube.com/watch?v=tTMsbL0eH_M to learn that video wasn’t helpful; watching https://www.youtube.com/watch?v=42jUcqwKIw8 that vid didn’t have much so watching this https://www.youtube.com/watch?v=mWR9Q_pTagw ok capacitve touch is very hard to implement in such a large area such as a palm lots of chance for missed calls did some research and a grand total of 0 people have made an open source cubing timer soooo this is the first! thats kind of cool okay i might use this type of design with infared/distance sensors on each side to determine mx switches aren’t good bc they are designed for fingers, not hands ok this is a hard project wait i found [https://github.com/amadensor/cube-timer/tree/main/pcb/cube_timer] ok mine is the first PCB + case; the project is just an ESP32 on a breadboard going to read https://ww1.microchip.com/downloads/en/DeviceDoc/40001946A.pdf ok idk if this is possible even
rebranding this to be a chess clock again planning to use 8-segment clock displays like this one: thats what these clocks use: going to also use mx switches cause hey are used in: time to import all CAD models ah i can only find 1.2” not 0.56” i imported the mx switch time to decide what MCU i think ill use RP2040-zero wait nvm its hard to mount? i might use pico just because its easier to mount imported the pico! apparently i need beveled face to make it have good viewing angles watching https://www.youtube.com/watch?v=eApyyNPppaY starting to look like a chess clock! did some more research on how to mount a mx switch i need a 14x14mm cutout with 1.5mm plate size looks great! ill add pico mounting now okay turns out every OLED is different so ig ill have to redo some dimensions also i might make it bigger ok found models for the 0.56 i2c 7-segment display! going to use that because its better using this image annoying i need to covnert to mm voila! time to add screen cutout looks like a chess clock will later figure out how to assemble
i was away from my house for a couple of days time to get back on this project added tolerances added a border! it looks kinda weird ngl added keycaps and colors! looks very cool made it assembleable remade the assembly ill make a render cause why not technically i am done with the CAD but idk if i want to make a PCB cause it needs to arrive in time ok made that apparently M1 screws don’t work with 3d printed stuff so ill need M2 made it M2 ok im working super slow now idk why new session at night i added chamfer to add M3 holes! the only major thing left other than firmware is how im going to assemble this i dont want to make a PCB cause i want it to be done in time PCB also not required? i could use a breadboard ok ill figure this out tmrw will create wiring diagram! kinda basic because wiring diagram is kinda basic
okay i learned that expedited shipping is allowed for JLCPCB so im designing a PCB this is also due to the fact that idk how to wire it without a PCB will make it a lot cleaner also! schematic done time to assign footprints assigned them! problem: stemma qt is very small and hard to solder it seems like ok this PCB is wayyyy too simple to need a PCB at all ill figure out how standoffs work watching https://www.youtube.com/watch?v=NHIrTtLCnEo that was so easy found these bumpers: https://www.adafruit.com/product/550 will add them actually no point in adding to CAD made this https://docs.google.com/spreadsheets/d/1HJi_SoZmRUPXIg3fWTzNNd4LjoeZRIxf5KhnIGp8wuw/edit?usp=sharing ! comes out to $54.36 at a quantity of 1 hardware is so expensive ok i just need to make firmware i think this project is almost ready to ship! added these holes:
going to work on the firmware somebody told me that the M2 wouldn’t work ok this is the firmware: https://pastebin.com/s5BTVMHb pretty simple going to make it better when i get parts redesigned the wiring diagram cause I’m going to have batteries! the display uses M2.5 holes 😭 time to fix fixed going to work on README created README updated files
ok this is going to be hard to build I LAPSEd me soldering the 7-segment display (took 30 min) i printed out the bottom part realized the top part isn’t compatible with bottom part need to redesign didn’t have USB-C hole either redesigned! asked for help on Slack got that help with print settings ok redesigned: printed it the hole was too small the supports were impossible to remove will reprint
i tried really hard to fit it all together i put it together, then something would disconnect, then i would it put it back together, then it would disconnect again ill just redesign it to be taller printer not working? i tried to fix the wifi settings 💀 still didn’t work ill just use SD card redesign: ok hopefully ts works IT WORKED OMG OMG OMG im leaving for open sauce tomorrow so this was done right when I needed it to be LETS GO
this is from open sauce the clock stopped working need to fix it opened it up almost broke the screw 💀 ok thankfully it was just one wire that disconnected will reconnect it! ok it works! im going to add multiple time controls so its better done! there are a bunch of new time controls now im rlly proud of this project
Ships:
an open source chess clock with custom CAD and firmware...
|
1793378968.5880759
|
1794242968.5880759
|
|
50084
|
slack bot by @lantern | Stardance
|
lantern
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T07:57:07Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A basic slack bot with 3 commands , i built this using the guide as this is my first time making a slack bot .Three commands are as follows /jpbot-ping – calculates and returns the bot’s response latency. /jpbot-catfact – fetches a random cat fact via the Cat Facts API using axios. /jpbot-joke – random joke via JokeAPI.", "repo": "https://github.com/jigneshphalsawal-cloud/slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BSJ1HU0TT"}]...
|
[{"post_id": 53607, "ts": "202 [{"post_id": 53607, "ts": "2026-08-24T07:41:58Z", "hours": 1.275, "text": "Added 3 commands for the slack bot!!!"}]...
|
Title: slack bot by @lantern | Stardance
Devlogs: Title: slack bot by @lantern | Stardance
Devlogs:
Added 3 commands for the slack bot!!!
Ships:
A basic slack bot with 3 commands , i built this using the guide as this is my first time making a slack bot .Three commands are as follows /jpbot-ping – calculates and returns the bot’s response latency. /jpbot-catfact – fetches a random cat fact via the Cat Facts API using axios. /jpbot-joke – random joke via JokeAPI....
|
1792958056.59357
|
1793822056.59357
|
|
50089
|
space-war by @dineshkarthik | Stardance
|
dineshkarthik
|
1
|
23.0
|
163
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-19T05:14:05Z", "hours": 13.0, "multiplier": 12.87, "payout": 163, "blessing": "neutral", "text": "🚀 Space War - Shipping Description I made a browser-based space shooter where the player has options to determine a certain way of playing and getting better at the game. In the project, I implemented different war zones, from 180 ° and 360 °, and added a variety of gameplays. The game allows battling enemy waves, collecting resources, upgrading the player’s ship, and being able to set and beat your own personal records. I also added a menu where you can choose a certain game mode and the system to store records to keep track of your stats accurately and have a reference of the best results. I aimed for variety in gameplay and for the player to feel like they are part of a bigger system, not just a simple space shooter, which is why I focused on adding content that would give them a reason to keep playing.", "repo": "https://github.com/Karthik-854321/space-war", "demo": "https://space-war-beta.vercel.app/"}]...
|
[{"post_id": 58217, "ts": "202 [{"post_id": 58217, "ts": "2026-08-30T16:00:53Z", "hours": 1.5722, "text": "improving from the feedback and suggestion i got from the first ship some formaulas or modified and some changes in js is taking apart soon you will see a complete game hsing everything suggested and this is the highest score i got make a try to break it"}, {"post_id": 54345, "ts": "2026-08-25T09:29:23Z", "hours": 4.3333, "text": "FINAL DEVLOG finally completed by project by adding a selection page that display the game highest records and give options to selct gaem mode with my custom arcrade retro style theme literally it takes a lot of time to arrange the background frame with the button trapezium shapes and with that and it is looking really great . i designed it by my thoughts if any suggestions are improvements are accepted and i will try to implement it later TRY IT NOW: https://space-war-beta.vercel.app/"}, {"post_id": 53794, "ts": "2026-08-24T14:31:51Z", "hours": 3.2506, "text": "a long time taken to refine complete css after getting too many resubmits for using ai in it actually i built the whole game from scratch from choosing the enimies their characters their shapes and in auto shoot game i revised my old mathematics textbook for shortest distance formulas and point of contact formulas that makes me learn my 11th textbook again i learned a lot from this finally i am about to complete the css part a few modifications are apart"}, {"post_id": 52155, "ts": "2026-08-22T07:50:40Z", "hours": 0.8447, "text": "forgot to write a devlog lost 10h of time but yet my GAME is making a clean 3d visuals"}, {"post_id": 50101, "ts": "2026-08-19T05:08:24Z", "hours": 2.0697, "text": "Space War - Final Devlog Space War’s development iteration has been completed in time for the next step. The current gameplay hub offers a pure mode-based experience. The following features have been added: 180° and 360° War Zone selection Both games are now separated as individual modes A 360° exclusive records panel has been added Highest Score, Best Survival Time, Missions and Coins are now available for tracking Everything is persistent via localStorage The whole UI is now organized into two sections: the game itself on the left and the records panel on the right Added responsive behavior so that the game area is always fully playable Original systems, upgrades, enemies, effects and controls are preserved From selecting a battlefield to challenging oneself to a new record, the Space War gameplay hub is now a truly comprehensive mode-based system."}, {"post_id": 48820, "ts": "2026-08-17T11:11:00Z", "hours": 1.79, "text": "Devlog 03, Hyperion: Space Defender The third update involved a significant redesign rather than just adding new features. I renamed the experience Hyperion: Space Defender and reworked the interface with a dedicated command system. The battlefield now takes up 75% of the screen , while the remaining 25% serves as a Command & Telemetry sidebar . The sidebar shows live information such as ship tier, hull integrity, system level, XP, coins, gems, score, and flight time . I also created a proper start screen and gameplay guide so players can learn the controls before they enter combat. Previous records like best score, best flight time, and most coins are displayed as well. The progression system became richer with different enemy classes and a boss system , which includes a dedicated boss health display. Players now have extra progression statistics such as tier, coins, score, and improved combat attributes. Persistence has also improved. High score, best survival time, and maximum coins are saved using localStorage , allowing records to persist between sessions. Finally, I upgraded the audio system from simple oscillator effects to a more advanced Web Audio setup, which uses oscillators, gain nodes, filters, and generated noise for better laser and explosion sounds. This update turned the project from a basic browser shooter into a more complete space-survival game system with progression, persistence, telemetry, mobile controls, bosses, audio, and a stronger interface ."}, {"post_id": 48699, "ts": "2026-08-17T06:37:05Z", "hours": 0.3347, "text": "Devlog 02 - Expanding the Gameplay SystemsThe second update went from a bare-bones prototype to a more fleshed-out survival gameI added progression and level-up systems for the player, which let him upgrade his laser size, movement speed, collection radius, fire rate, max HP, and special attack cooldown.The game now has XP, levels, gems, particles, damage numbers, screen effects, and a proper HUD that displays the level, time, HP, and XP.The most important addition, however, was mobile support - the game now has a virtual joystick that appears on touchscreens and turns swipes into directional inputI also added synthesized sound effects for lasers, hits, gems, slashes, and explosions using the Web Audio API.The game now has a proper survival loop - the player gathers XP and resources, levels up, buys upgrades, and fights off hordes of enemies that get progressively stronger.This iteration marked the first true step away from the technical experimentation of the early prototype toward an actual game with content and depth."}, {"post_id": 48688, "ts": "2026-08-17T06:09:50Z", "hours": 8.4686, "text": "Devlog 01 — Building the Core Combat PrototypeThe first update was about getting the basic game loop working before adding complicated systems.I built the initial Bullet Haven Game as a Canvas-based space shooter. The player can move using WASD, aim toward the mouse, and automatically fire bullets. The game includes three basic enemy types — Swarmer, Basic, and Tank — each with different speed, size, and HP values.I also added sprite loading with fallback shapes, so the game can continue running even if the image assets are unavailable. Enemy spawning happens from outside the screen and enemies move toward the player.For combat feedback, I implemented bullet-enemy collision, particle effects when enemies are destroyed, score tracking, and screen shake. The rendering system draws bullets, particles, enemies, the player, and the score every frame.This update gave me the foundation: movement → shooting → enemies → collision → destruction → score → game loop.The main goal was not to make the game complete yet, but to prove that the core gameplay system worked."}]...
|
Title: space-war by @dineshkarthik | Stardance
De Title: space-war by @dineshkarthik | Stardance
Devlogs:
Devlog 01 — Building the Core Combat PrototypeThe first update was about getting the basic game loop working before adding complicated systems.I built the initial Bullet Haven Game as a Canvas-based space shooter. The player can move using WASD, aim toward the mouse, and automatically fire bullets. The game includes three basic enemy types — Swarmer, Basic, and Tank — each with different speed, size, and HP values.I also added sprite loading with fallback shapes, so the game can continue running even if the image assets are unavailable. Enemy spawning happens from outside the screen and enemies move toward the player.For combat feedback, I implemented bullet-enemy collision, particle effects when enemies are destroyed, score tracking, and screen shake. The rendering system draws bullets, particles, enemies, the player, and the score every frame.This update gave me the foundation: movement → shooting → enemies → collision → destruction → score → game loop.The main goal was not to make the game complete yet, but to prove that the core gameplay system worked.
Devlog 02 - Expanding the Gameplay SystemsThe second update went from a bare-bones prototype to a more fleshed-out survival gameI added progression and level-up systems for the player, which let him upgrade his laser size, movement speed, collection radius, fire rate, max HP, and special attack cooldown.The game now has XP, levels, gems, particles, damage numbers, screen effects, and a proper HUD that displays the level, time, HP, and XP.The most important addition, however, was mobile support - the game now has a virtual joystick that appears on touchscreens and turns swipes into directional inputI also added synthesized sound effects for lasers, hits, gems, slashes, and explosions using the Web Audio API.The game now has a proper survival loop - the player gathers XP and resources, levels up, buys upgrades, and fights off hordes of enemies that get progressively stronger.This iteration marked the first true step away from the technical experimentation of the early prototype toward an actual game with content and depth.
Devlog 03, Hyperion: Space Defender The third update involved a significant redesign rather than just adding new features. I renamed the experience Hyperion: Space Defender and reworked the interface with a dedicated command system. The battlefield now takes up 75% of the screen , while the remaining 25% serves as a Command & Telemetry sidebar . The sidebar shows live information such as ship tier, hull integrity, system level, XP, coins, gems, score, and flight time . I also created a proper start screen and gameplay guide so players can learn the controls before they enter combat. Previous records like best score, best flight time, and most coins are displayed as well. The progression system became richer with different enemy classes and a boss system , which includes a dedicated boss health display. Players now have extra progression statistics such as tier, coins, score, and improved combat attributes. Persistence has also improved. High score, best survival time, and maximum coins are saved using localStorage , allowing records to persist between sessions. Finally, I upgraded the audio system from simple oscillator effects to a more advanced Web Audio setup, which uses oscillators, gain nodes, filters, and generated noise for better laser and explosion sounds. This update turned the project from a basic browser shooter into a more complete space-survival game system with progression, persistence, telemetry, mobile controls, bosses, audio, and a stronger interface .
Space War - Final Devlog Space War’s development iteration has been completed in time for the next step. The current gameplay hub offers a pure mode-based experience. The following features have been added: 180° and 360° War Zone selection Both games are now separated as individual modes A 360° exclusive records panel has been added Highest Score, Best Survival Time, Missions and Coins are now available for tracking Everything is persistent via localStorage The whole UI is now organized into two sections: the game itself on the left and the records panel on the right Added responsive behavior so that the game area is always fully playable Original systems, upgrades, enemies, effects and controls are preserved From selecting a battlefield to challenging oneself to a new record, the Space War gameplay hub is now a truly comprehensive mode-based system.
forgot to write a devlog lost 10h of time but yet my GAME is making a clean 3d visuals
a long time taken to refine complete css after getting too many resubmits for using ai in it actually i built the whole game from scratch from choosing the enimies their characters their shapes and in auto shoot game i revised my old mathematics textbook for shortest distance formulas and point of contact formulas that makes me learn my 11th textbook again i learned a lot from this finally i am about to complete the css part a few modifications are apart
FINAL DEVLOG finally completed by project by adding a selection page that display the game highest records and give options to selct gaem mode with my custom arcrade retro style theme literally it takes a lot of time to arrange the background frame with the button trapezium shapes and with that and it is looking really great . i designed it by my thoughts if any suggestions are improvements are accepted and i will try to implement it later TRY IT NOW: https://space-war-beta.vercel.app/
improving from the feedback and suggestion i got from the first ship some formaulas or modified and some changes in js is taking apart soon you will see a complete game hsing everything suggested and this is the highest score i got make a try to break it
Ships:
🚀 Space War - Shipping Description I made a browser-based space shooter where the player has options to determine a certain way of playing and getting better at the game. In the project, I implemented different war zones, from 180 ° and 360 °, and added a variety of gameplays. The game allows battling enemy waves, collecting resources, upgrading the player’s ship, and being able to set and beat your own personal records. I also added a menu where you can choose a certain game mode and the system to store records to keep track of your stats accurately and have a reference of the best results. I aimed for variety in gameplay and for the player to feel like they are part of a bigger system, not just a simple space shooter, which is why I focused on adding content that would give them a reason to keep playing....
|
1792878469.4185536
|
1793742469.4185536
|
|
50113
|
Automated Student Performance Analyzer (Python + P Automated Student Performance Analyzer (Python + Pandas) by @govindrkumar | Stardance...
|
govindrkumar
|
1
|
10.0
|
48
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-19T16:18:13Z", "hours": 10.0, "multiplier": 4.62, "payout": 48, "blessing": "neutral", "text": "I made a web app that helps automatically analyze student marks. You can either enter the marks manually or upload a CSV/XLSX file. The app then calculates total marks, finds subject-wise toppers, and creates graphs to show performance. The challenging part was making both input methods work with the same analysis system and fixing the different data formats. I’m proud that I was able to build and deploy the whole project myself. To test it, you can either enter some student marks manually or upload a CSV/XLSX file and check the generated results and graphs. Try it : https://automated-student-performance-analyzer.onrender.com", "repo": "https://github.com/govindrkumar/Automated-Student-Performance-Analyzer", "demo": "https://automated-student-performance-analy.vercel.app/"}]...
|
[{"post_id": 50419, "ts": "202 [{"post_id": 50419, "ts": "2026-08-19T16:13:50Z", "hours": 0.3108, "text": "Manual Working done! Home page redesigned too (Added a title in form and colored it brown. Nothing much!). I am not very good in css. So, sorry for leaving it with weak design. My all 4 QoLs are finished with this project. I didn’t see, use of MySQL so I had to drop it. For anyone trying to contribute is welcome for PR. Project try link : https://automated-student-performance-analyzer.onrender.com"}, {"post_id": 50401, "ts": "2026-08-19T15:46:52Z", "hours": 4.6431, "text": "So, In last two days : I successfully implemented my intended architecture. Firstly, I successfully implemented automatic upload of csv or xls file and analysis of dataframe. It provides total marks of all students, each subject toppers and graphical comparison of all students. Today, I woke up and started working on Manual upload. So, when user manually uploads data, they get a language selection panel. Afterward, according to their selection a table is generated. From where, they can enter the data and get same functionality which they were getting while automatic upload. So, now I have to correct some style.css and it will be ready for final shipment tomorrow."}, {"post_id": 49406, "ts": "2026-08-18T06:55:30Z", "hours": 5.3747, "text": "I just made a student result analyzer. Here, you can upload your .csv or .xlsx file and analyze your student marks, get the marks statement of everyone, topper list, subject-wise performance of each student using matplotlib graph. It uses flask in backend."}]...
|
Title: Automated Student Performance Analyzer (Pyt Title: Automated Student Performance Analyzer (Python + Pandas) by @govindrkumar | Stardance
Devlogs:
I just made a student result analyzer. Here, you can upload your .csv or .xlsx file and analyze your student marks, get the marks statement of everyone, topper list, subject-wise performance of each student using matplotlib graph. It uses flask in backend.
So, In last two days : I successfully implemented my intended architecture. Firstly, I successfully implemented automatic upload of csv or xls file and analysis of dataframe. It provides total marks of all students, each subject toppers and graphical comparison of all students. Today, I woke up and started working on Manual upload. So, when user manually uploads data, they get a language selection panel. Afterward, according to their selection a table is generated. From where, they can enter the data and get same functionality which they were getting while automatic upload. So, now I have to correct some style.css and it will be ready for final shipment tomorrow.
Manual Working done! Home page redesigned too (Added a title in form and colored it brown. Nothing much!). I am not very good in css. So, sorry for leaving it with weak design. My all 4 QoLs are finished with this project. I didn’t see, use of MySQL so I had to drop it. For anyone trying to contribute is welcome for PR. Project try link : https://automated-student-performance-analyzer.onrender.com
Ships:
I made a web app that helps automatically analyze student marks. You can either enter the marks manually or upload a CSV/XLSX file. The app then calculates total marks, finds subject-wise toppers, and creates graphs to show performance. The challenging part was making both input methods work with the same analysis system and fixing the different data formats. I’m proud that I was able to build and deploy the whole project myself. To test it, you can either enter some student marks manually or upload a CSV/XLSX file and check the generated results and graphs. Try it : https://automated-student-performance-analyzer.onrender.com...
|
1793274474.5054195
|
1793360874.5054195
|
|
50114
|
my personal website by @mabu | Stardance
|
mabu
|
1
|
2.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T08:45:33Z", "hours": 2.0, "multiplier": 1.22, "payout": 2, "blessing": "neutral", "text": "I love spider man so i decided to make a spider man based personal web about me i hope u guys like it and its a very simple website. I have added an about me section my idols , my music and my fav games", "repo": "https://github.com/mabu100/site-1-", "demo": "https://mabu100.github.io/site-1-/"}]...
|
[{"post_id": 48738, "ts": "202 [{"post_id": 48738, "ts": "2026-08-17T08:30:56Z", "hours": 0.2861, "text": "Ik that most ppl love to play games so i decide to add my own fav game section"}, {"post_id": 48725, "ts": "2026-08-17T07:54:41Z", "hours": 0.9594, "text": "I added my idols , my music taste and i wanted to make it spider man themed so i went for black and red"}, {"post_id": 48694, "ts": "2026-08-17T06:23:22Z", "hours": 0.7483, "text": "I am working on my personal website trying to make it spiderman themed!!"}]...
|
Title: my personal website by @mabu | Stardance
D Title: my personal website by @mabu | Stardance
Devlogs:
I am working on my personal website trying to make it spiderman themed!!
I added my idols , my music taste and i wanted to make it spider man themed so i went for black and red
Ik that most ppl love to play games so i decide to add my own fav game section
Ships:
I love spider man so i decided to make a spider man based personal web about me i hope u guys like it and its a very simple website. I have added an about me section my idols , my music and my fav games...
|
1792878488.2136357
|
1793742488.2136357
|
|
50131
|
Vanguard SSA (Space Situational Awareness) by @Spa Vanguard SSA (Space Situational Awareness) by @SpaceRanger | Stardance...
|
SpaceRanger
|
1
|
32.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-28T20:15:31Z", "hours": 32.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "In the end, I was not able to do half as much As I wanted to do, EVEN with the extension. TCH. For now, all the project does is show multiple different satellites in Orbit against a static earth, where you can choose How fast the in app world goes compared to the Real world. RUST was not like I expected it to be. Still love it tho. Y’all, Pleas vote nicely 🤧. Thanks.", "repo": "https://github.com/abdulgafarabdurrasheed/Vanguard-SSA", "demo": "https://entrepreneur-atmosphere-sao-archived.trycloudflare.com/"}]...
|
[{"post_id": 83881, "ts": "202 [{"post_id": 83881, "ts": "2026-10-28T20:12:47Z", "hours": 1.1275, "text": "Last Update till ship. Made README, Hosted and everything."}, {"post_id": 80681, "ts": "2026-10-18T14:11:49Z", "hours": 1.4303, "text": "Well, you can now choose your own time multiplier from between the Real world, and the app. This part was(Mostly) gemini code. I suck at math, so I had it do the calculations and stuff. I also tried to Make the earth also spin in relation to the satellites using Julian Time mathematical calculations, But i’ve not been able to achieve that. Changelog git commit -m “choose time multiplier plus earth rotation” ( a585661 ) choose time multiplier plus earth rotation ( eca1623 )"}, {"post_id": 76714, "ts": "2026-10-04T12:17:06Z", "hours": 1.9442, "text": "Changelog configured 2 way channel websocket broadcast. can now receive info from the frontend ( 2500f28 ) Yeah. That’s all. “THAT’S ALL YOU DID FOR 2 HOURS 🙆♀️”. Yeah. Keep judging. Until you try to code in RUST 😑🙂"}, {"post_id": 75998, "ts": "2026-10-01T23:58:50Z", "hours": 1.0653, "text": "Changelog Made the in App world go 60* faster than the normal time. ( be91922 ) Basically, 1 Normal second is 60 seconds in app. 1 Normal hour is 60 hours in app"}, {"post_id": 75991, "ts": "2026-10-01T21:38:25Z", "hours": 1.0053, "text": "Changelog Trajectory calculation Now uses universal timestamp ( c842228 ) Okay, Because Celestrak tracks and updates satellite data at different times, The data from the API doesn’t actually reflect the current coordinates of the satellites, especially when compared to one another. While the specific orbits were accurate, The timing was completely random, and so, if 2 satellites were recorded in the same position, 6 hours apart, My simulation will start them in the same coordinate. This is obviously dangerously inaccurate. Fix: I removed the simulated “timestep” entirely, and Built the whole thing to Check current time, Check time the satellite’s data was recorded, and Simulate Orbit/Calculate trajectory and coordinates based on that. Problem with that is, without the timestep, My previous calculation for How fast this thing can run in relation to real word time will be totally wrong. I’ll fix that next."}, {"post_id": 75982, "ts": "2026-10-01T20:30:22Z", "hours": 0.6856, "text": "Changelog Improve error handling for satellite and debris data fetching; adjust time step for simulation ( 7e7c487 ) Coming back to this after legit leaving it for One month 😭. Anyway, I fixed error handling for Cases where the user is not able to ping the Celestrak servers to get the data needed. Now It just falls back to the Cache. I also reduced the amount of time That goes by in app, to perfectly mirror the real world."}, {"post_id": 73015, "ts": "2026-09-24T07:04:21Z", "hours": 1.5769, "text": "A few different things have bugged me since last I Devlogged. For one, i’m not tntirely sure how to go on. What i need, to remove, and all. Secondly, everything is so Unorganized rn. So many debris and satellites Just swimming around in Orbit against a static Earth And everything doesn’t even scale properly. Lastly, I’ve tried to focus a bit more on Orging My own YSWS. Thank goodness stardance was extended(Expected, but thank goodness still)."}, {"post_id": 68568, "ts": "2026-09-15T10:28:11Z", "hours": 1.9689, "text": "Changelog tweaks and updates ( 7fc4786 ) Ported satellite data from backend, and introduced satellite component in frontend. ( b6b8e5d ) Meh. Frontend change. Not much."}, {"post_id": 64802, "ts": "2026-09-09T13:47:15Z", "hours": 1.9544, "text": "Changelog Updated program to include, and handle both satellite and debris Cache Data from Celestrak ( 1665273 ) Basically, Now I have 2 files of both Debris data and Satellite Data"}, {"post_id": 63937, "ts": "2026-09-08T00:39:47Z", "hours": 1.2925, "text": "Changelog Implement caching for live satellite data and adjust debris scaling for better visualization ( 0e71088 ) Okay, so remember in my last Devlog, i noted that Celestrak didn’t like me pinging their servers more than once every 2 hours, which crashes my RUST backend. So today i implemented Caching. Basically, How this works is, I check if there is a file named “active_satellites.txt”, if there is not, i go ahead and create one, and add all the satellite TLE data from Celestrak here. If there already was one, I check the MetaData for time modified, and if this is more than 2 hours, I ping Celestrak again, and Update the File with new data. If it is less than 2 hours tho, i go ahead and use the one i already HAD."}, {"post_id": 62528, "ts": "2026-09-05T23:06:15Z", "hours": 1.88, "text": "Changelog Changed from Static data to live data using celestrak Starlink APIs. ( 4a27c90 ) Okay, so i HAVE been able to Change from Static data to live data using Celestrak Starlink APIs. Doing this inSo many problems like Chunking, Parsing, RUST async/await, and doing all of that over 500 3d models without frying my CPU. Now, even tho i have been able to get it actually showing up, I need to deal with Celestrak Rate limiting, and Separating Debris from Satellites(Currently, One of the satellite is chosen to be the Satellite, and the rest are set to debris lol). I’ll fix all of this Tomorrow, FOR NOW I HAVE TO SLEEP(My girlfriend got Mad i was not sleeping enough lol 😭😂). Also fixing Scaling, as these should NOT be this big compared to the earth lol."}, {"post_id": 61809, "ts": "2026-09-04T21:53:45Z", "hours": 0.9103, "text": "Changelog Collision Detection now works on the frontend by changing to a red glow from a cyan glow. ( 81c0078 ) Okay, Massive W on this devlog. So I made collision detection show up on the frontend rather than just the Backend by enhancing my RUST functions to return a True or False value when collision is detected. I had some problems with that, cause RUST doesn’t do global variables, and trying to pass a variable from one function(The collision detector) To another(The trajectory calculation), to add a value to my struct was quite literally impossible. I had to delete one of my threads, and change my architecture from branching to linear. Oh, and I also changed the number of debris from 10 to 100, and the collision distance from 100km to 1000km to ensure collision will be detected lol."}, {"post_id": 61475, "ts": "2026-09-04T12:37:51Z", "hours": 0.7792, "text": "Changelog Add Asteroid component and GLB model for 3D visualization ( f92bbd9 ) Yay 🥳🎉. Finally have the debris models showing up. They’re really small tho, so can’t really be seennn. Lemme make them a bit bigger Done."}, {"post_id": 60702, "ts": "2026-09-03T07:58:01Z", "hours": 1.8011, "text": "Changelog Replaced 250 dynamic debris with 10 Static Debris. ( 10a6f0a ) Sighs. I promise this is not all i did for nearly 2 hours 😭🤧. I have been really battling with trying to render 3d Model Asteroids instead of red Meshes, and am having problems with Only accepting one unique item(Which means i’d have to load 10 different 4mb debris file 62 times every second PURELY ON THE FRONTEND, which would surely crash any browser in any computer lol. Severely Un-Optimised). Currently doing research On how to Handle that, Don’t wanna use gemini too much. Sadly, HackClub does not record time spent on research 😭"}, {"post_id": 60236, "ts": "2026-09-02T14:05:00Z", "hours": 2.1914, "text": "Changelog Add Debris component for visualizing debris in 3D space ( 20f3c78 ) Refactor collision detection to use dynamic debris field ( b07aa44 ) Added random coordinate generator for debris coordinates. ( 45ddcbf ) Basically, i have been working with generating debris coordinates, and Mesh visualizations for said Debris."}, {"post_id": 59950, "ts": "2026-09-02T00:43:08Z", "hours": 1.7517, "text": "Changelog Added 3d visualizations of the earth, and the ISS. ( 382c0e9 ) Basically, I Ditched the Nonsense Sphere Meshes, and added actual 3d models of the Earth and the ISS. I encountered several issues, Like scaling, and stuff. Had to make sure The ISS could be seen, While not being big enough to be a bother to the Earth. Ended up adding a glow to the satellite. Add 3D models for Earth and ISS with scaling logic"}, {"post_id": 59844, "ts": "2026-09-01T20:29:01Z", "hours": 1.5506, "text": "Changelog Added sattellite coordinates updates in the browser ( 81723a5 ) Init vanguard frontend with React and Vite setup ( a3f753c ) Started Adding the 3d implementation of a satellite(The ISS) orbiting the earth. For now, I have used Mesh spheres to test that my code works, before actually loading massive glb files. The Red satellite Mesh Sphere actually orbits the Blue Earth Mesh Sphere. THIS IS INTERESTING. NB: The prediction formula predicts the location of the ISS every second where one second is 90 seconds simulated."}, {"post_id": 59474, "ts": "2026-09-01T10:40:50Z", "hours": 0.7222, "text": "Changelog Implement WebSocket server for real-time trajectory updates. ( 6708b17 ) Basically, My RUST Program can now talk to my Browser console. It’s so cool. And it works over multiple Browsers Windows/Tabs too. Now I can add a frontend with those 3d models, and an infinite Zoomable Canvas. This is moving forward much faster than i thought."}, {"post_id": 59420, "ts": "2026-09-01T07:33:56Z", "hours": 0.9658, "text": "Changelog Added async support for frontend integration, And Used Tokio’s broadcast channel to pass messages between threads. ( daf47ad ) Okay, So…… I wanted a way to show my Output Outside if the terminal, and I chose to use a web browser, since I am already quite skilled in frontend web dev. Had to add 2 New crates. Tokio for Async/Await functions, and Axum for Web socket Functions. Had some fun reading through their documentations and Implementing Tokio’s Broadcast instead of mpsc ones. The reason i needed to change my broadcast method is cause mpsc is Single Consumer/Client, But multiple people might want to View the website at the same time"}, {"post_id": 59296, "ts": "2026-09-01T00:36:01Z", "hours": 0.6539, "text": "Changelog Implement collision detection in check_collision function using fake, Hardcoded debris coordinates ( 5b6b87f ) Okay, so I Hardcoded Debris Coordinates, and Compared it’s Predicted Coordinates to the Predicted Coordinates of My Sattelite. Cna now Predict Collision Chances, and Warn if They get too close. Also went on a Looking Spree, to Download 3d Models of Sattelites, Space Junk, and the Earth, To use in my Frontend, and Look at other Sites that do what I am aiming at like https://keeptrack.space , and https://cp4.rkas.net/?intldes=2007-012Q(Stuffin Space)."}, {"post_id": 59256, "ts": "2026-08-31T22:58:07Z", "hours": 0.3883, "text": "Changelog Added time tracking to the Telemetry state so the ISS can update coordinates based on time set. ( cf354ae ) Basically Made the Predicted Coordinates of the ISS change based on the amount of time that has passed(Simulates 90 minutes in 60 seconds)."}, {"post_id": 59133, "ts": "2026-08-31T19:18:10Z", "hours": 1.33, "text": "Changelog Add sgp4 and chrono dependencies; implement trajectory calculation for the ISS ( 4702ca4 ) Update telemetry handling and add orbital trajectory calculations ( 4cc8218 ) Basically, i can now track the Live position of the ISS, and Calculate/Predict it’s trajectory. Yay."}, {"post_id": 57691, "ts": "2026-08-29T22:39:05Z", "hours": 1.4156, "text": "Changelog Add telemetry models and refactor signal analysis and database saving functions ( 7aaf79a ) Threaded the analyse signal, and save to database functions too ( b37fc97 ) Added a thread to make sure the main loop runs without waiting for stuff… I guess ( 16c5881 ) Bad first commit. rectified ( 32b9e40 ) Basically Added Threading to the RUST Program to make sure stuff runs without waiting for something, And Multi File RUST Handling. Still only Infinitely Prints stuff to the terminal tho."}, {"post_id": 57359, "ts": "2026-08-29T14:15:58Z", "hours": 1.35, "text": "Changelog 4a6461d Basically, I wrote some functions, and a RUST struct with Mock telemetry data. Doesn’t do much rn, Just prints stuff to the terminal."}]...
|
Title: Vanguard SSA (Space Situational Awareness) Title: Vanguard SSA (Space Situational Awareness) by @SpaceRanger | Stardance
Devlogs:
Changelog 4a6461d Basically, I wrote some functions, and a RUST struct with Mock telemetry data. Doesn’t do much rn, Just prints stuff to the terminal.
Changelog Add telemetry models and refactor signal analysis and database saving functions ( 7aaf79a ) Threaded the analyse signal, and save to database functions too ( b37fc97 ) Added a thread to make sure the main loop runs without waiting for stuff… I guess ( 16c5881 ) Bad first commit. rectified ( 32b9e40 ) Basically Added Threading to the RUST Program to make sure stuff runs without waiting for something, And Multi File RUST Handling. Still only Infinitely Prints stuff to the terminal tho.
Changelog Add sgp4 and chrono dependencies; implement trajectory calculation for the ISS ( 4702ca4 ) Update telemetry handling and add orbital trajectory calculations ( 4cc8218 ) Basically, i can now track the Live position of the ISS, and Calculate/Predict it’s trajectory. Yay.
Changelog Added time tracking to the Telemetry state so the ISS can update coordinates based on time set. ( cf354ae ) Basically Made the Predicted Coordinates of the ISS change based on the amount of time that has passed(Simulates 90 minutes in 60 seconds).
Changelog Implement collision detection in check_collision function using fake, Hardcoded debris coordinates ( 5b6b87f ) Okay, so I Hardcoded Debris Coordinates, and Compared it’s Predicted Coordinates to the Predicted Coordinates of My Sattelite. Cna now Predict Collision Chances, and Warn if They get too close. Also went on a Looking Spree, to Download 3d Models of Sattelites, Space Junk, and the Earth, To use in my Frontend, and Look at other Sites that do what I am aiming at like https://keeptrack.space , and https://cp4.rkas.net/?intldes=2007-012Q(Stuffin Space).
Changelog Added async support for frontend integration, And Used Tokio’s broadcast channel to pass messages between threads. ( daf47ad ) Okay, So…… I wanted a way to show my Output Outside if the terminal, and I chose to use a web browser, since I am already quite skilled in frontend web dev. Had to add 2 New crates. Tokio for Async/Await functions, and Axum for Web socket Functions. Had some fun reading through their documentations and Implementing Tokio’s Broadcast instead of mpsc ones. The reason i needed to change my broadcast method is cause mpsc is Single Consumer/Client, But multiple people might want to View the website at the same time
Changelog Implement WebSocket server for real-time trajectory updates. ( 6708b17 ) Basically, My RUST Program can now talk to my Browser console. It’s so cool. And it works over multiple Browsers Windows/Tabs too. Now I can add a frontend with those 3d models, and an infinite Zoomable Canvas. This is moving forward much faster than i thought.
Changelog Added sattellite coordinates updates in the browser ( 81723a5 ) Init vanguard frontend with React and Vite setup ( a3f753c ) Started Adding the 3d implementation of a satellite(The ISS) orbiting the earth. For now, I have used Mesh spheres to test that my code works, before actually loading massive glb files. The Red satellite Mesh Sphere actually orbits the Blue Earth Mesh Sphere. THIS IS INTERESTING. NB: The prediction formula predicts the location of the ISS every second where one second is 90 seconds simulated.
Changelog Added 3d visualizations of the earth, and the ISS. ( 382c0e9 ) Basically, I Ditched the Nonsense Sphere Meshes, and added actual 3d models of the Earth and the ISS. I encountered several issues, Like scaling, and stuff. Had to make sure The ISS could be seen, While not being big enough to be a bother to the Earth. Ended up adding a glow to the satellite. Add 3D models for Earth and ISS with scaling logic
Changelog Add Debris component for visualizing debris in 3D space ( 20f3c78 ) Refactor collision detection to use dynamic debris field ( b07aa44 ) Added random coordinate generator for debris coordinates. ( 45ddcbf ) Basically, i have been working with generating debris coordinates, and Mesh visualizations for said Debris.
Changelog Replaced 250 dynamic debris with 10 Static Debris. ( 10a6f0a ) Sighs. I promise this is not all i did for nearly 2 hours 😭🤧. I have been really battling with trying to render 3d Model Asteroids instead of red Meshes, and am having problems with Only accepting one unique item(Which means i’d have to load 10 different 4mb debris file 62 times every second PURELY ON THE FRONTEND, which would surely crash any browser in any computer lol. Severely Un-Optimised). Currently doing research On how to Handle that, Don’t wanna use gemini too much. Sadly, HackClub does not record time spent on research 😭
Changelog Add Asteroid component and GLB model for 3D visualization ( f92bbd9 ) Yay 🥳🎉. Finally have the debris models showing up. They’re really small tho, so can’t really be seennn. Lemme make them a bit bigger Done.
Changelog Collision Detection now works on the frontend by changing to a red glow from a cyan glow. ( 81c0078 ) Okay, Massive W on this devlog. So I made collision detection show up on the frontend rather than just the Backend by enhancing my RUST functions to return a True or False value when collision is detected. I had some problems with that, cause RUST doesn’t do global variables, and trying to pass a variable from one function(The collision detector) To another(The trajectory calculation), to add a value to my struct was quite literally impossible. I had to delete one of my threads, and change my architecture from branching to linear. Oh, and I also changed the number of debris from 10 to 100, and the collision distance from 100km to 1000km to ensure collision will be detected lol.
Changelog Changed from Static data to live data using celestrak Starlink APIs. ( 4a27c90 ) Okay, so i HAVE been able to Change from Static data to live data using Celestrak Starlink APIs. Doing this inSo many problems like Chunking, Parsing, RUST async/await, and doing all of that over 500 3d models without frying my CPU. Now, even tho i have been able to get it actually showing up, I need to deal with Celestrak Rate limiting, and Separating Debris from Satellites(Currently, One of the satellite is chosen to be the Satellite, and the rest are set to debris lol). I’ll fix all of this Tomorrow, FOR NOW I HAVE TO SLEEP(My girlfriend got Mad i was not sleeping enough lol 😭😂). Also fixing Scaling, as these should NOT be this big compared to the earth lol.
Changelog Implement caching for live satellite data and adjust debris scaling for better visualization ( 0e71088 ) Okay, so remember in my last Devlog, i noted that Celestrak didn’t like me pinging their servers more than once every 2 hours, which crashes my RUST backend. So today i implemented Caching. Basically, How this works is, I check if there is a file named “active_satellites.txt”, if there is not, i go ahead and create one, and add all the satellite TLE data from Celestrak here. If there already was one, I check the MetaData for time modified, and if this is more than 2 hours, I ping Celestrak again, and Update the File with new data. If it is less than 2 hours tho, i go ahead and use the one i already HAD.
Changelog Updated program to include, and handle both satellite and debris Cache Data from Celestrak ( 1665273 ) Basically, Now I have 2 files of both Debris data and Satellite Data
Changelog tweaks and updates ( 7fc4786 ) Ported satellite data from backend, and introduced satellite component in frontend. ( b6b8e5d ) Meh. Frontend change. Not much.
A few different things have bugged me since last I Devlogged. For one, i’m not tntirely sure how to go on. What i need, to remove, and all. Secondly, everything is so Unorganized rn. So many debris and satellites Just swimming around in Orbit against a static Earth And everything doesn’t even scale properly. Lastly, I’ve tried to focus a bit more on Orging My own YSWS. Thank goodness stardance was extended(Expected, but thank goodness still).
Changelog Improve error handling for satellite and debris data fetching; adjust time step for simulation ( 7e7c487 ) Coming back to this after legit leaving it for One month 😭. Anyway, I fixed error handling for Cases where the user is not able to ping the Celestrak servers to get the data needed. Now It just falls back to the Cache. I also reduced the amount of time That goes by in app, to perfectly mirror the real world.
Changelog Trajectory calculation Now uses universal timestamp ( c842228 ) Okay, Because Celestrak tracks and updates satellite data at different times, The data from the API doesn’t actually reflect the current coordinates of the satellites, especially when compared to one another. While the specific orbits were accurate, The timing was completely random, and so, if 2 satellites were recorded in the same position, 6 hours apart, My simulation will start them in the same coordinate. This is obviously dangerously inaccurate. Fix: I removed the simulated “timestep” entirely, and Built the whole thing to Check current time, Check time the satellite’s data was recorded, and Simulate Orbit/Calculate trajectory and coordinates based on that. Problem with that is, without the timestep, My previous calculation for How fast this thing can run in relation to real word time will be totally wrong. I’ll fix that next.
Changelog Made the in App world go 60* faster than the normal time. ( be91922 ) Basically, 1 Normal second is 60 seconds in app. 1 Normal hour is 60 hours in app
Changelog configured 2 way channel websocket broadcast. can now receive info from the frontend ( 2500f28 ) Yeah. That’s all. “THAT’S ALL YOU DID FOR 2 HOURS 🙆♀️”. Yeah. Keep judging. Until you try to code in RUST 😑🙂
Well, you can now choose your own time multiplier from between the Real world, and the app. This part was(Mostly) gemini code. I suck at math, so I had it do the calculations and stuff. I also tried to Make the earth also spin in relation to the satellites using Julian Time mathematical calculations, But i’ve not been able to achieve that. Changelog git commit -m “choose time multiplier plus earth rotation” ( a585661 ) choose time multiplier plus earth rotation ( eca1623 )
Last Update till ship. Made README, Hosted and everything.
Ships:
In the end, I was not able to do half as much As I wanted to do, EVEN with the extension. TCH. For now, all the project does is show multiple different satellites in Orbit against a static earth, where you can choose How fast the in app world goes compared to the Real world. RUST was not like I expected it to be. Still love it tho. Y’all, Pleas vote nicely 🤧. Thanks....
|
1793324997.6497998
|
1793411397.6497998
|
|
50139
|
Jarvis by @AshutoshPola | Stardance
|
AshutoshPola
|
1
|
32.45
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T09:11:17Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Jarvis, a lightweight, local voice assistant for macOS that lives right in the menu bar. It runs small LLMs locally using Ollama with zero API costs, zero cloud tracking, and under 50 mb idle ram. Please make sure you download all the requirements before you run the code, And there is also no devlogs because I was planning to keep everything private but changed my mind later.", "repo": "https://github.com/ashutosh-pola/jarvis-v1", "demo": "https://github.com/ashutosh-pola/jarvis-v1/releases/tag/v1.0.0"}]...
|
[{"post_id": 51157, "ts": "202 [{"post_id": 51157, "ts": "2026-08-20T17:33:38Z", "hours": 0.5228, "text": "increased The local Gemma LLM query timeout to 180 seconds (3 minutes) after the reviewer had an issue with the model, originally i had it capped to 60 seconds and anything that takes longer than that, I just had a hard coded message about how it is taking too long for the model to run. This was put because my mac is only has an intel i5 and 8 gigs of ram, causing the model to freeze my mac after any question. If needed too or if your macbook can handle a it, you should increase the thinking time shown in the pic below to atleast 5 minutes"}, {"post_id": 50893, "ts": "2026-08-20T11:07:00Z", "hours": 0.4031, "text": "Big fix! I tracked down the macOS bugs from the reviewer feedback and fixed them. Resolved main-thread UI freezes, handled network config edge cases, and added Rosetta guides for Apple Silicon. Everything’s recompiled, tested, and running lag-free now!"}, {"post_id": 50520, "ts": "2026-08-19T18:21:59Z", "hours": 0.5225, "text": "tried to add macos arm support but I just left midway ill try again tomorrow (no pics so just put an old one)"}, {"post_id": 48756, "ts": "2026-08-17T09:04:08Z", "hours": 1.9, "text": "added a bar on the top"}, {"post_id": 48710, "ts": "2026-08-17T06:59:51Z", "hours": 28.7519, "text": "I was not gonna upload this here but I felt bad, its almost done"}]...
|
Title: Jarvis by @AshutoshPola | Stardance
Devlog Title: Jarvis by @AshutoshPola | Stardance
Devlogs:
I was not gonna upload this here but I felt bad, its almost done
added a bar on the top
tried to add macos arm support but I just left midway ill try again tomorrow (no pics so just put an old one)
Big fix! I tracked down the macOS bugs from the reviewer feedback and fixed them. Resolved main-thread UI freezes, handled network config edge cases, and added Rosetta guides for Apple Silicon. Everything’s recompiled, tested, and running lag-free now!
increased The local Gemma LLM query timeout to 180 seconds (3 minutes) after the reviewer had an issue with the model, originally i had it capped to 60 seconds and anything that takes longer than that, I just had a hard coded message about how it is taking too long for the model to run. This was put because my mac is only has an intel i5 and 8 gigs of ram, causing the model to freeze my mac after any question. If needed too or if your macbook can handle a it, you should increase the thinking time shown in the pic below to atleast 5 minutes
Ships:
I built Jarvis, a lightweight, local voice assistant for macOS that lives right in the menu bar. It runs small LLMs locally using Ollama with zero API costs, zero cloud tracking, and under 50 mb idle ram. Please make sure you download all the requirements before you run the code, And there is also no devlogs because I was planning to keep everything private but changed my mind later....
|
1792878489.0279891
|
1793742489.0279891
|
|
50140
|
NOVA-OS by @AnkitZu02281 | Stardance
|
AnkitZu02281
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T14:20:02Z", "hours": 2.0, "multiplier": 1.53, "payout": 0, "blessing": "neutral", "text": "NovaOS is a lightweight, browser-based desktop environment built with vanilla HTML, CSS, and JavaScript. It features draggable windows, a start menu, a live taskbar, and built-in apps like Notes, Calculator, and Settings I faced problem in draggable window making. I really liked how the interface and functions turned out.", "repo": "https://github.com/ankitdey2682010-a11y/Nova-OS", "demo": "https://ankitdey2682010-a11y.github.io/Nova-OS/"}]...
|
[{"post_id": 52373, "ts": "202 [{"post_id": 52373, "ts": "2026-08-22T14:17:31Z", "hours": 0.2775, "text": "FINISHING OFF WITH REQUIRED CHANGES IN JAVASCRIPT"}, {"post_id": 52356, "ts": "2026-08-22T13:53:39Z", "hours": 1.0136, "text": "Done with maximum stuffs."}, {"post_id": 52286, "ts": "2026-08-22T12:18:11Z", "hours": 0.5597, "text": "Finished the work on Html and Css now the only thing left is Javascript."}]...
|
Title: NOVA-OS by @AnkitZu02281 | Stardance
Devlo Title: NOVA-OS by @AnkitZu02281 | Stardance
Devlogs:
Finished the work on Html and Css now the only thing left is Javascript.
Done with maximum stuffs.
FINISHING OFF WITH REQUIRED CHANGES IN JAVASCRIPT
Ships:
NovaOS is a lightweight, browser-based desktop environment built with vanilla HTML, CSS, and JavaScript. It features draggable windows, a start menu, a live taskbar, and built-in apps like Notes, Calculator, and Settings I faced problem in draggable window making. I really liked how the interface and functions turned out....
|
1793274481.4833024
|
1793360881.4833024
|
|
50158
|
Kazi by @Bianca | Stardance
|
Bianca
|
1
|
212.74
|
407
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-20T21:14:41Z", "hours": 30.0, "multiplier": 13.9, "payout": 407, "blessing": "neutral", "text": "What I made: Kazi connects skilled trade workers with customers who need their services, making the process faster and easier. Workers are electricians, plumbers, builders, welders, mechanics, and other professionals who create profiles, showcase their skills, and find relevant jobs. Customers can use Kazi to discover skilled workers, view their profiles, and find the right person for the work they need. The challenges I faced: The challenges I faced were setting up the Google API to allow for Google sign-up and making sure the frontend and backend were communicating. Additionally, making a polished, well-thought-out app with minimal bugs was another challenge. Things I accomplished that I am proud of: Before starting this challenge, using the terminal felt like a foreign language and I didn’t know why the backend and frontend had to be separate. Now I can confidently say that the terminal is my best friend, and I don’t need to watch YouTube tutorials on the difference between an API and an SDK. Things to know: On the demo the google sign in does not work only on emulators it does. Taking photos and contact via phone is not supported on the demo as well. Using th README file has a lot of additional tips. If you create an account even if you close the file will be saved in the database and you can log in, if you have trouble deleting the account you made email me the email you used and ill do it manually.", "repo": "https://github.com/PhantomJelly/Kazi-Cursor.git", "demo": "https://phantomjelly.github.io/Kazi-Cursor/"}]...
|
[{"post_id": 65589, "ts": "202 [{"post_id": 65589, "ts": "2026-09-10T20:37:40Z", "hours": 9.9253, "text": "Dev vlog 21 - I didnt like the first iteration of the subsriptions screen so I made it more personalised to the specific industry im targeting. I changed words like “Pro plan” to “Artisan plan” and “Free plan” to “Apprentice plan”. The reason there is some what space is because I’ll be adding some assets what I’m still designing in procreate and Lottie."}, {"post_id": 65015, "ts": "2026-09-09T20:11:12Z", "hours": 10.4989, "text": "Dev vlog 20 - Today I made the workers job screen more interactable and customizable. I’m going through day by day to improve each screen’s UI. I’m honestly quite happy with how the app is coming up even though I’ve only done 2 screens im slowly getting to a completed version 1."}, {"post_id": 64677, "ts": "2026-09-09T08:33:15Z", "hours": 10.4519, "text": "Dev vlog 19 - I added a pay wall on the worker account that limits theamount of jobs a worker can recieve and and the features they have. It costs $3.00 (I converted it) which is a small amount for the workers, I dont want it to be too high as in Namibia subscriptions is not something people are willing to pay. Especially low wage workers and unemployed people"}, {"post_id": 64413, "ts": "2026-09-08T19:39:24Z", "hours": 6.9683, "text": "Dev vlog 18 - I’ve been making some assets to use for the UI and testing the app to find more areas I’d like to add more features and animations."}, {"post_id": 63751, "ts": "2026-09-07T18:24:22Z", "hours": 9.5639, "text": "Dev vlog 17 - Hi I made good progress with the UI, I started with the splash screen and I’m working my way from there, the animation was a bit glitchy and i fexed the issue. Additionally, the letters were not lined up which was quite a task to do, i though it would be easier but when importing the animation it would keep changing it so I had to make tha letters separate to the animation. I used Mobbin to get references and I saw most we’re too flashy so i made mine simple but enjoyable. Next I’ll be working on the user onboardeing, im currently preparing a lot of assets as I want it to be interactive and unique."}, {"post_id": 62718, "ts": "2026-09-06T06:43:31Z", "hours": 9.8536, "text": "Dev vlog 16 - After adding the Didit verification the SQL database was not syncing, a had to make 2 separate databses to make it work, now im able to make an account again."}, {"post_id": 62449, "ts": "2026-09-05T19:59:59Z", "hours": 9.1511, "text": "Dev post 15 - Hey everyone, I spent the day improving the web experience for testers and you guys :). Im still having troubles with the google sign in but ill try and address it tomorrow. My favourite thing i did was limiting the web screen so that it gives more of that app feel."}, {"post_id": 61380, "ts": "2026-09-04T08:21:31Z", "hours": 10.3572, "text": "Dev post 14 - Hi everyone I spent the whole day polishing up Kazi, fixing bugs, and just improving the overall experience. Now im going to add more features I’m planning on adding a paywall to start making some income from this, and im now brainstorming the features I should add."}, {"post_id": 60515, "ts": "2026-09-02T22:09:05Z", "hours": 10.7911, "text": "Dev vlog 13 - I caught a bug which was actually quite critical. When the user would delete their account, their information would not get deleted, so if they made an account with same old email all the past information would still be there."}, {"post_id": 59122, "ts": "2026-08-31T19:07:19Z", "hours": 9.1975, "text": "Dev post 12 - I added back the google sign in and polished up the rest of the verification setup."}, {"post_id": 58193, "ts": "2026-08-30T15:27:10Z", "hours": 9.7597, "text": "Dev vlog 11 - I’m building the a better workflow in Figma and iy was been taking quite a long time to implement and I want to change some of the things I’ve build. I also want to make the UI animations in Figma instead of Lottie because I know how to use Figma more and you can add an extension to export your work as .lottie files (a type of file that allows your animation to run on your app without taking much storage)."}, {"post_id": 57327, "ts": "2026-08-29T13:23:34Z", "hours": 9.3769, "text": "Dev vlog 10 - Hi there I’ve been finalising the setup of the workers ID verification. I ran into some problems but I found this site that allows ID verification (can use passports, drivers licenses) for free for your first 500 verification every month, essentially meaning that if you stay below 500 verifications per month its completely free. Its called Didit. After setting up I’ll go on tosetting up analytics to track onboarding and activity of users."}, {"post_id": 56479, "ts": "2026-08-28T08:06:11Z", "hours": 12.835, "text": "Dev vlog 9 - Hi and thank you to everyone who voted for my project and all the tips you’ve given me. I have a few challenges I’m tackling at the moment: 1. Google sign it, it works with then mobile version (if I test with an APK) but not on web like in the demo. 2. The ID verification, it needs to be able to authenticate yours profiles which seems so complex. 3. The UI and making animations, I dont have much time as I have my A-level exams soon."}, {"post_id": 55756, "ts": "2026-08-27T18:56:17Z", "hours": 10.3631, "text": "Dev vlog 8 - I made some changes to the assistant section so that the questions asked by agent is more conscience and more interactive. Where the user can just tap on the screen and not type."}, {"post_id": 54739, "ts": "2026-08-25T20:25:24Z", "hours": 10.1636, "text": "Dev vlog 7 - After I made a basic AI chat assist, I made some minor UI improvements. I mainly focused on the inquiry generation, I’m not 100% there but I’m trying to make it as quick and easy as possible for users to easily send a detailed inquiries with minimal effort."}, {"post_id": 54310, "ts": "2026-08-25T08:13:39Z", "hours": 11.7128, "text": "Dev vlog 6 - Hi there, I’ve made a drastic change as I’ve descided to add an AI chat bot to the app to make it even more easier to send workers inquiries. It will be a place where you just describe the issue and it will automatically find the best worker and send them an inquiry for you after you give it all the necessary information."}, {"post_id": 53196, "ts": "2026-08-23T17:12:34Z", "hours": 10.9467, "text": "Dev vlog 6 - I finished with the official Beta version of Kazi and will be launching soon to the play store. After launching and getting my first wavy of users I’ll launch the official version 1."}, {"post_id": 52272, "ts": "2026-08-22T11:49:28Z", "hours": 2.8028, "text": "Dev vlog 5 - I set up notifications that pop up when a user opens the app, next I want to make it more interactive and add custom icons. Also for when allowing for photos I’ll add some humor when asking for permission and more custom icons. I’ll be making the icon on procreate then use Lottie to turn it into files that can be used on the app."}, {"post_id": 51479, "ts": "2026-08-21T06:40:27Z", "hours": 8.0186, "text": "Dev vlog 4 - Im now focusing on making the UI more unique and interactive. For planning im using Figma and for animations im using Lottie. I added some coloured elements so that its easier to see the difference between features more easily, like if your inquiry is pending or has been answered."}, {"post_id": 50803, "ts": "2026-08-20T06:37:08Z", "hours": 9.8239, "text": "Dev vlog 3 - I started using emulator, it took a while to install and setup. I made worker accounts have bonuses feature to get more clients, but now I want to improve the UI and add custom badges and animations, I started learning how to use Lottie to do that."}, {"post_id": 50478, "ts": "2026-08-19T17:19:01Z", "hours": 10.575, "text": "Dev vlog 2 - I made the customer side of the app but I used dummy data and didn’t connect any APIs yet so I need to do that. I also need to fix bugs and allow customers to contact the workers."}, {"post_id": 49519, "ts": "2026-08-18T12:07:28Z", "hours": 9.4683, "text": "Dev vlog 1 - I’m building a mobile app to help trade workers like plumbers, electricians, and cleaners find work. In the same light to help people find someone who can fix their leaky tap or install a cupboard. This is the workers side that I’ve built, I used my brothers phone to help me make a demo account and test out the features. The key features are different languages, photo verification, and google sign up."}]...
|
Title: Kazi by @Bianca | Stardance
Devlogs:
Dev v Title: Kazi by @Bianca | Stardance
Devlogs:
Dev vlog 1 - I’m building a mobile app to help trade workers like plumbers, electricians, and cleaners find work. In the same light to help people find someone who can fix their leaky tap or install a cupboard. This is the workers side that I’ve built, I used my brothers phone to help me make a demo account and test out the features. The key features are different languages, photo verification, and google sign up.
Dev vlog 2 - I made the customer side of the app but I used dummy data and didn’t connect any APIs yet so I need to do that. I also need to fix bugs and allow customers to contact the workers.
Dev vlog 3 - I started using emulator, it took a while to install and setup. I made worker accounts have bonuses feature to get more clients, but now I want to improve the UI and add custom badges and animations, I started learning how to use Lottie to do that.
Dev vlog 4 - Im now focusing on making the UI more unique and interactive. For planning im using Figma and for animations im using Lottie. I added some coloured elements so that its easier to see the difference between features more easily, like if your inquiry is pending or has been answered.
Dev vlog 5 - I set up notifications that pop up when a user opens the app, next I want to make it more interactive and add custom icons. Also for when allowing for photos I’ll add some humor when asking for permission and more custom icons. I’ll be making the icon on procreate then use Lottie to turn it into files that can be used on the app.
Dev vlog 6 - I finished with the official Beta version of Kazi and will be launching soon to the play store. After launching and getting my first wavy of users I’ll launch the official version 1.
Dev vlog 6 - Hi there, I’ve made a drastic change as I’ve descided to add an AI chat bot to the app to make it even more easier to send workers inquiries. It will be a place where you just describe the issue and it will automatically find the best worker and send them an inquiry for you after you give it all the necessary information.
Dev vlog 7 - After I made a basic AI chat assist, I made some minor UI improvements. I mainly focused on the inquiry generation, I’m not 100% there but I’m trying to make it as quick and easy as possible for users to easily send a detailed inquiries with minimal effort.
Dev vlog 8 - I made some changes to the assistant section so that the questions asked by agent is more conscience and more interactive. Where the user can just tap on the screen and not type.
Dev vlog 9 - Hi and thank you to everyone who voted for my project and all the tips you’ve given me. I have a few challenges I’m tackling at the moment: 1. Google sign it, it works with then mobile version (if I test with an APK) but not on web like in the demo. 2. The ID verification, it needs to be able to authenticate yours profiles which seems so complex. 3. The UI and making animations, I dont have much time as I have my A-level exams soon.
Dev vlog 10 - Hi there I’ve been finalising the setup of the workers ID verification. I ran into some problems but I found this site that allows ID verification (can use passports, drivers licenses) for free for your first 500 verification every month, essentially meaning that if you stay below 500 verifications per month its completely free. Its called Didit. After setting up I’ll go on tosetting up analytics to track onboarding and activity of users.
Dev vlog 11 - I’m building the a better workflow in Figma and iy was been taking quite a long time to implement and I want to change some of the things I’ve build. I also want to make the UI animations in Figma instead of Lottie because I know how to use Figma more and you can add an extension to export your work as .lottie files (a type of file that allows your animation to run on your app without taking much storage).
Dev post 12 - I added back the google sign in and polished up the rest of the verification setup.
Dev vlog 13 - I caught a bug which was actually quite critical. When the user would delete their account, their information would not get deleted, so if they made an account with same old email all the past information would still be there.
Dev post 14 - Hi everyone I spent the whole day polishing up Kazi, fixing bugs, and just improving the overall experience. Now im going to add more features I’m planning on adding a paywall to start making some income from this, and im now brainstorming the features I should add.
Dev post 15 - Hey everyone, I spent the day improving the web experience for testers and you guys :). Im still having troubles with the google sign in but ill try and address it tomorrow. My favourite thing i did was limiting the web screen so that it gives more of that app feel.
Dev vlog 16 - After adding the Didit verification the SQL database was not syncing, a had to make 2 separate databses to make it work, now im able to make an account again.
Dev vlog 17 - Hi I made good progress with the UI, I started with the splash screen and I’m working my way from there, the animation was a bit glitchy and i fexed the issue. Additionally, the letters were not lined up which was quite a task to do, i though it would be easier but when importing the animation it would keep changing it so I had to make tha letters separate to the animation. I used Mobbin to get references and I saw most we’re too flashy so i made mine simple but enjoyable. Next I’ll be working on the user onboardeing, im currently preparing a lot of assets as I want it to be interactive and unique.
Dev vlog 18 - I’ve been making some assets to use for the UI and testing the app to find more areas I’d like to add more features and animations.
Dev vlog 19 - I added a pay wall on the worker account that limits theamount of jobs a worker can recieve and and the features they have. It costs $3.00 (I converted it) which is a small amount for the workers, I dont want it to be too high as in Namibia subscriptions is not something people are willing to pay. Especially low wage workers and unemployed people
Dev vlog 20 - Today I made the workers job screen more interactable and customizable. I’m going through day by day to improve each screen’s UI. I’m honestly quite happy with how the app is coming up even though I’ve only done 2 screens im slowly getting to a completed version 1.
Dev vlog 21 - I didnt like the first iteration of the subsriptions screen so I made it more personalised to the specific industry im targeting. I changed words like “Pro plan” to “Artisan plan” and “Free plan” to “Apprentice plan”. The reason there is some what space is because I’ll be adding some assets what I’m still designing in procreate and Lottie.
Ships:
What I made: Kazi connects skilled trade workers with customers who need their services, making the process faster and easier. Workers are electricians, plumbers, builders, welders, mechanics, and other professionals who create profiles, showcase their skills, and find relevant jobs. Customers can use Kazi to discover skilled workers, view their profiles, and find the right person for the work they need. The challenges I faced: The challenges I faced were setting up the Google API to allow for Google sign-up and making sure the frontend and backend were communicating. Additionally, making a polished, well-thought-out app with minimal bugs was another challenge. Things I accomplished that I am proud of: Before starting this challenge, using the terminal felt like a foreign language and I didn’t know why the backend and frontend had to be separate. Now I can confidently say that the terminal is my best friend, and I don’t need to watch YouTube tutorials on the difference between an API and an SDK. Things to know: On the demo the google sign in does not work only on emulators it does. Taking photos and contact via phone is not supported on the demo as well. Using th README file has a lot of additional tips. If you create an account even if you close the file will be saved in the database and you can log in, if you have trouble deleting the account you made email me the email you used and ill do it manually....
|
1792878526.8970366
|
1793742526.8970366
|
|
50167
|
Slashliner by @andrewdihas | Stardance
|
andrewdihas
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T14:37:23Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my very own Slack Bot that can respond to commands 24/7. I actually had problems setting up my Hackatime for this project and missynced 1 of my timelapses. I also had problems with troubleshooting and debugging as it was hard to figure out where exactly was the issue.", "repo": "https://github.com/andrewdihas/Slashliner", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354?skip_today=1"}]...
|
[{"post_id": 55030, "ts": "202 [{"post_id": 55030, "ts": "2026-08-26T13:44:17Z", "hours": 0.8633, "text": "I finished creating my Slack bot, Slashliner. I used NASA’s free apis for it."}]...
|
Title: Slashliner by @andrewdihas | Stardance
Dev Title: Slashliner by @andrewdihas | Stardance
Devlogs:
I finished creating my Slack bot, Slashliner. I used NASA’s free apis for it.
Ships:
I made my very own Slack Bot that can respond to commands 24/7. I actually had problems setting up my Hackatime for this project and missynced 1 of my timelapses. I also had problems with troubleshooting and debugging as it was hard to figure out where exactly was the issue....
|
1793307177.8747663
|
1793393577.8747663
|
|
50176
|
My own site! by @Tallurisaikumar | Stardance
|
Tallurisaikumar
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T13:55:48Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "finally my personal portfolio completed", "repo": "https://github.com/tallurisai9346-beep/portfolio", "demo": "https://portfolio-gray-mu-2xyxqk1f9r.vercel.app/"}]...
|
[{"post_id": 48813, "ts": "202 [{"post_id": 48813, "ts": "2026-08-17T11:06:07Z", "hours": 0.4364, "text": "finally my personal portfolio completed"}, {"post_id": 48790, "ts": "2026-08-17T10:14:54Z", "hours": 0.3308, "text": "this is my portfolio website that describes about me"}]...
|
Title: My own site! by @Tallurisaikumar | Stardanc Title: My own site! by @Tallurisaikumar | Stardance
Devlogs:
this is my portfolio website that describes about me
finally my personal portfolio completed
Ships:
finally my personal portfolio completed...
|
1792878513.1959598
|
1793742513.1959598
|
|
50198
|
InterOS by @Vihaan15 | Stardance
|
Vihaan15
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T12:14:17Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "It is my first webOS. It is inspired by the combination of Windows and macOS. By opening the link, you will directly get yourself into the InterOS. Click on the icons to open them and click the red dot to close the window. Hold the top of the window to drag the window anywhere you wish.", "repo": "https://github.com/Vihaan6119/InterOS", "demo": "https://vihaan6119.github.io/InterOS/"}]...
|
[{"post_id": 49518, "ts": "202 [{"post_id": 49518, "ts": "2026-08-18T12:06:33Z", "hours": 0.6272, "text": "finished my first WebOS Named it: InterOS"}, {"post_id": 48834, "ts": "2026-08-17T11:51:32Z", "hours": 1.4664, "text": "Finished half of my work"}]...
|
Title: InterOS by @Vihaan15 | Stardance
Devlogs:
Title: InterOS by @Vihaan15 | Stardance
Devlogs:
Finished half of my work
finished my first WebOS Named it: InterOS
Ships:
It is my first webOS. It is inspired by the combination of Windows and macOS. By opening the link, you will directly get yourself into the InterOS. Click on the icons to open them and click the red dot to close the window. Hold the top of the window to drag the window anywhere you wish....
|
1793278245.8197098
|
1793364645.8197098
|
|
50199
|
Aarav Builds by @Aaravkatiyar | Stardance
|
Aaravkatiyar
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T10:11:01Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Aarav Builds as a personal student portfolio with a real project log, learning map, notes section, theme preference, reading-size control, and shareable project filters. I used plain HTML, CSS, and JavaScript, deployed it on GitHub Pages, and tested the live site on desktop and mobile. The caching issue during deployment taught me to verify the actual public files after each release.", "repo": "https://github.com/aaravkatiyar55-gif/aarav-builds", "demo": "https://aaravkatiyar55-gif.github.io/aarav-builds/"}]...
|
[{"post_id": 48785, "ts": "202 [{"post_id": 48785, "ts": "2026-08-17T10:05:26Z", "hours": 0.8003, "text": "I started Aarav Builds , a personal site where I can keep track of the real projects and web-development skills I’m working on. I built the page with plain HTML, CSS, and JavaScript instead of a site builder. It has an introduction, a project build log, a learning map, and a short notes section. I added a theme toggle and reading-size preference that both persist after refresh. I also added project-type filters, so visitors can switch between the browser project and Slack bot entries. One issue I found while deploying was browser caching: the new HTML reached GitHub Pages before the matching JavaScript in one fresh check. I fixed it by versioning the CSS and JavaScript URLs, then tested the deployed filter and reading-size controls again. I tested the public site on desktop and at a 360px mobile width, checked that there was no horizontal overflow, and confirmed keyboard navigation starts at the skip link. GitHub repository: https://github.com/aaravkatiyar55-gif/aarav-builds . Live demo: https://aaravkatiyar55-gif.github.io/aarav-builds/"}]...
|
Title: Aarav Builds by @Aaravkatiyar | Stardance
Title: Aarav Builds by @Aaravkatiyar | Stardance
Devlogs:
I started Aarav Builds , a personal site where I can keep track of the real projects and web-development skills I’m working on. I built the page with plain HTML, CSS, and JavaScript instead of a site builder. It has an introduction, a project build log, a learning map, and a short notes section. I added a theme toggle and reading-size preference that both persist after refresh. I also added project-type filters, so visitors can switch between the browser project and Slack bot entries. One issue I found while deploying was browser caching: the new HTML reached GitHub Pages before the matching JavaScript in one fresh check. I fixed it by versioning the CSS and JavaScript URLs, then tested the deployed filter and reading-size controls again. I tested the public site on desktop and at a 360px mobile width, checked that there was no horizontal overflow, and confirmed keyboard navigation starts at the skip link. GitHub repository: https://github.com/aaravkatiyar55-gif/aarav-builds . Live demo: https://aaravkatiyar55-gif.github.io/aarav-builds/
Ships:
I built Aarav Builds as a personal student portfolio with a real project log, learning map, notes section, theme preference, reading-size control, and shareable project filters. I used plain HTML, CSS, and JavaScript, deployed it on GitHub Pages, and tested the live site on desktop and mobile. The caching issue during deployment taught me to verify the actual public files after each release....
|
1793278260.4543633
|
1793364660.4543633
|
|
50207
|
School Tracker by @Slime | Stardance
|
Slime
|
1
|
11.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T15:22:16Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Do you know which subject you are gonna study today? I don’t . So i made a website for it. This was a cool project to build specially since it is actually useful for me. And i am new to coding and specially new to JS so i took my time learning it. This is supposed to be a website that is useful for it work rather than looks so it looks ahhh… my bad abt that. Well, i used some AI too since i couldn’t have done it alone at all. And i didn’t onow abt devlog only being able to take 10hrs so only 1 devlog is available.", "repo": "https://github.com/Slime-x/School-Tracker", "demo": "https://slime-x.github.io/School-Tracker/"}]...
|
[{"post_id": 48768, "ts": "202 [{"post_id": 48768, "ts": "2026-08-17T09:20:34Z", "hours": 11.1114, "text": "I made a project for my school tracker! it helps me to know abt my subjects that i need to read today."}]...
|
Title: School Tracker by @Slime | Stardance
Devlo Title: School Tracker by @Slime | Stardance
Devlogs:
I made a project for my school tracker! it helps me to know abt my subjects that i need to read today.
Ships:
Do you know which subject you are gonna study today? I don’t . So i made a website for it. This was a cool project to build specially since it is actually useful for me. And i am new to coding and specially new to JS so i took my time learning it. This is supposed to be a website that is useful for it work rather than looks so it looks ahhh… my bad abt that. Well, i used some AI too since i couldn’t have done it alone at all. And i didn’t onow abt devlog only being able to take 10hrs so only 1 devlog is available....
|
1793346524.5536728
|
1793432924.5536728
|
|
50227
|
Dice Roller by @Avmovito | Stardance
|
Avmovito
|
1
|
18.0
|
11
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T10:16:04Z", "hours": 18.0, "multiplier": 1.09, "payout": 11, "blessing": "neutral", "text": "It was a simple dice roller project that was a web application; it contained so many types of dice .i was provide that i created the exact website as the refarence img given and i only used It was a simple dice roller project that was a web application; it contained so many types of dice .i was provide that i create the website as i wish with all the features i wish to add and only used to creat the referance img", "repo": "https://github.com/Adwaith-AR/Dice-Roller", "demo": "https://dice-roller-pink-chi.vercel.app/"}]...
|
[{"post_id": 48780, "ts": "202 [{"post_id": 48780, "ts": "2026-08-17T09:58:09Z", "hours": 18.2344, "text": "i created this project after june 1 but i was adding this to sardust just now but have been saving my devlog as a doc 1. ui completed (The past two days were spent creating the ui, icon, and logo for the dice roll website. It was not that smooth, I had to change the image of the dice 2 times) 2.big update( from yesterday and today i completed the coding for the dice roll for the d6 dice and also the img creation for the d8 and the starting of the d10 dice img creation has done and i also completed the theme switcher to the website) 3.last update( I have finished the project, which includes the remaining dice, the theme switcher, dice selector, roll history, and new functions) 4.d12 added(as part of improving the website i was adding more dice so today i added d12 dice i was planing to add up to d50)"}]...
|
Title: Dice Roller by @Avmovito | Stardance
Devlo Title: Dice Roller by @Avmovito | Stardance
Devlogs:
i created this project after june 1 but i was adding this to sardust just now but have been saving my devlog as a doc 1. ui completed (The past two days were spent creating the ui, icon, and logo for the dice roll website. It was not that smooth, I had to change the image of the dice 2 times) 2.big update( from yesterday and today i completed the coding for the dice roll for the d6 dice and also the img creation for the d8 and the starting of the d10 dice img creation has done and i also completed the theme switcher to the website) 3.last update( I have finished the project, which includes the remaining dice, the theme switcher, dice selector, roll history, and new functions) 4.d12 added(as part of improving the website i was adding more dice so today i added d12 dice i was planing to add up to d50)
Ships:
It was a simple dice roller project that was a web application; it contained so many types of dice .i was provide that i created the exact website as the refarence img given and i only used It was a simple dice roller project that was a web application; it contained so many types of dice .i was provide that i create the website as i wish with all the features i wish to add and only used to creat the referance img...
|
1793281877.8739746
|
1793368277.8739746
|
|
50232
|
format-fixer by @harshitkataria20 | Stardance
|
harshitkataria20
|
1
|
1.06
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T12:03:48Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a privacy focused format fixer web that allows the user to change the images format from png to jpg, webp and vice versa and also to pdf’s it also allows user to type text and it will remove extra spacing, markdowns etc to make the text easily readable and because the images and text never leave your browser you dont have to worry about getting your info stolen the next time you change your png to pdf", "repo": "https://github.com/hshit2010/Format-fixer", "demo": "https://aboutharshit.info/Format-fixer/"}]...
|
[{"post_id": 50216, "ts": "202 [{"post_id": 50216, "ts": "2026-08-19T11:01:00Z", "hours": 0.5542, "text": "I wrote the ui again to make it less AI generated"}, {"post_id": 49616, "ts": "2026-08-18T14:34:05Z", "hours": 0.5042, "text": "made some changes on the website to make it look less AI generated and added a vector convertor so you can convert your image into a vector one and let it adapt to the screen instead of stretching awkwardly and added a landing page that allows the user to sort between image and text so it is easy to use"}, {"post_id": 48839, "ts": "2026-08-17T11:59:10Z", "hours": 0.2619, "text": "a privacy focused format changer, I used to run into issues like while changing png to pdf there was no safe option for private stuff so i created a website that is fully focused on privacy and functionability , your data never leaves your browser so you can work without a worry in the world and also added a feature called text sanitizer that removes the extra spacing , etc and make the text beautifull . I made it in such a way that it only has work content and no distractions and annoying stuff."}]...
|
Title: format-fixer by @harshitkataria20 | Stardan Title: format-fixer by @harshitkataria20 | Stardance
Devlogs:
a privacy focused format changer, I used to run into issues like while changing png to pdf there was no safe option for private stuff so i created a website that is fully focused on privacy and functionability , your data never leaves your browser so you can work without a worry in the world and also added a feature called text sanitizer that removes the extra spacing , etc and make the text beautifull . I made it in such a way that it only has work content and no distractions and annoying stuff.
made some changes on the website to make it look less AI generated and added a vector convertor so you can convert your image into a vector one and let it adapt to the screen instead of stretching awkwardly and added a landing page that allows the user to sort between image and text so it is easy to use
I wrote the ui again to make it less AI generated
Ships:
I made a privacy focused format fixer web that allows the user to change the images format from png to jpg, webp and vice versa and also to pdf’s it also allows user to type text and it will remove extra spacing, markdowns etc to make the text easily readable and because the images and text never leave your browser you dont have to worry about getting your info stolen the next time you change your png to pdf...
|
1793281890.7134182
|
1793368290.7134182
|
|
50256
|
Mihera F1 RC car by @Alcaraz9219 | Stardance
|
Alcaraz9219
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-05T17:40:10Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a F1 radio control car that works with Arduino and electronic components. The entire car and the remote control was build from scratch and with a 3D printer. This proyect teach me that they don’t always turn out the way we want them to the first time round, and I made a lot of mistakes that I had to solve them designing and printing again, or using the tools that I have, but I have learnt a lot in this proyect and , although I couldn’t compleately at all and I know that is not the best radio control car, I am so proud of it.", "repo": "https://github.com/Alcaraz9219/F1-RC-car", "demo": ""}]...
|
[{"post_id": 70694, "ts": "202 [{"post_id": 70694, "ts": "2026-09-19T16:29:33Z", "hours": 3.1525, "text": "To wrap up the project a bit, I’ve designed and printed the front nose and I’ve also printed the front wing. The car’s electronics are now complete after I replaced the transmitter and receiver modules with two NRF24L01 PA+LNA units with antennas, which work much better and have a much greater range. And although the F1 bodywork and the DRS are still missing, I’ll leave it as finished for the time being because I don’t have time to work on it any further and also because the Stardance deadline is approaching. So that’s it for now, and I hope people have enjoyed the project."}, {"post_id": 62812, "ts": "2026-09-06T10:29:26Z", "hours": 6.2022, "text": "After a few problems with the printer, I’ve finally finished making the control unit and fitting all the components inside; I can say that the car is now working. But there’s another problem: to connect the car’s Arduino R4 to the R3 – which I ended up having to use due to technical issues with the ESP32 – I’ve used a 433 MHz RF transmitter and receiver module that has a very short range, and as I want to fit it inside the casing on both the car and the remote control, the distance is practically zero. So I’ve already bought an NRF24L01 PA+LNA, which is another bidirectional transmitter with a much greater range and comes with an antenna; the next step will be to fit it and carry out the final test before installing the DRS and the casing."}, {"post_id": 52967, "ts": "2026-08-23T10:49:03Z", "hours": 1.7503, "text": "In this section, I have designed the casing for the controller, which I have decided should be shaped like an F1 steering wheel. The controller will use a Steamaker ESP32 Plus board; a joystick will be used to control the car’s steering, and there will be two buttons to control the motors so that the car can move forwards and backwards. Also, to make it look more like a real F1 car, the steering wheel will feature a display showing information about the controller and the car, such as battery level, speed and the status of the DRS – which is the opening of the rear wing to reduce aerodynamic drag, something that’s very helpful in real cars. The next step will be to create the 3D model of the hollow steering wheel and add the mounts for the components. If anyone can think of any extras to add to the car or the controller, please let me know; if it’s a good idea, I’ll take it into account and add it."}, {"post_id": 50886, "ts": "2026-08-20T10:58:06Z", "hours": 3.8042, "text": "On 2 June, I started a project. The idea was to build a radio-controlled car in the shape and style of a Formula 1 car, but I wanted to build the whole thing myself from scratch. The car is being built solely from my own designs, which are being 3D-printed. This project is divided into two parts: the car, which contains electronic components such as an Arduino R4 Wi-Fi, a servomotor for the steering, another for the DRS system, an L298N controller and two motors, as well as a battery holder with its own switch; and the remote control, which communicates with the car via a transmitter module in the remote and a receiver in the car. The remote control features components such as a Steemakers ESP32 Plus, a joystick for the motors, two buttons for steering, another to activate the DRS, and a display to show information. This is the plan for the project, which is not yet finished. Unfortunately, when I started this project I wasn’t familiar with Stardance, so I haven’t recorded all the hours spent doing calculations, looking through all the files and their dates, photos and videos – it could easily have been around 45 hours of unrecorded work. Anyway, what I’ve done so far has been to design the chassis and the mounts for the components, fit everything into the car, and build the steering system – which has undoubtedly been the most difficult part and caused me the most headaches, but which eventually ended up working. Since I started on Stardance, I’ve been designing the front wing, assembling the whole car to check that it works, and finally fitting just the remote control components to check that they work before designing the remote control itself. This isn’t proving to be an easy project – there are lots of errors cropping up – but you learn a lot from them. The next step will be to design the remote control in 3D and then print it."}]...
|
Title: Mihera F1 RC car by @Alcaraz9219 | Stardanc Title: Mihera F1 RC car by @Alcaraz9219 | Stardance
Devlogs:
On 2 June, I started a project. The idea was to build a radio-controlled car in the shape and style of a Formula 1 car, but I wanted to build the whole thing myself from scratch. The car is being built solely from my own designs, which are being 3D-printed. This project is divided into two parts: the car, which contains electronic components such as an Arduino R4 Wi-Fi, a servomotor for the steering, another for the DRS system, an L298N controller and two motors, as well as a battery holder with its own switch; and the remote control, which communicates with the car via a transmitter module in the remote and a receiver in the car. The remote control features components such as a Steemakers ESP32 Plus, a joystick for the motors, two buttons for steering, another to activate the DRS, and a display to show information. This is the plan for the project, which is not yet finished. Unfortunately, when I started this project I wasn’t familiar with Stardance, so I haven’t recorded all the hours spent doing calculations, looking through all the files and their dates, photos and videos – it could easily have been around 45 hours of unrecorded work. Anyway, what I’ve done so far has been to design the chassis and the mounts for the components, fit everything into the car, and build the steering system – which has undoubtedly been the most difficult part and caused me the most headaches, but which eventually ended up working. Since I started on Stardance, I’ve been designing the front wing, assembling the whole car to check that it works, and finally fitting just the remote control components to check that they work before designing the remote control itself. This isn’t proving to be an easy project – there are lots of errors cropping up – but you learn a lot from them. The next step will be to design the remote control in 3D and then print it.
In this section, I have designed the casing for the controller, which I have decided should be shaped like an F1 steering wheel. The controller will use a Steamaker ESP32 Plus board; a joystick will be used to control the car’s steering, and there will be two buttons to control the motors so that the car can move forwards and backwards. Also, to make it look more like a real F1 car, the steering wheel will feature a display showing information about the controller and the car, such as battery level, speed and the status of the DRS – which is the opening of the rear wing to reduce aerodynamic drag, something that’s very helpful in real cars. The next step will be to create the 3D model of the hollow steering wheel and add the mounts for the components. If anyone can think of any extras to add to the car or the controller, please let me know; if it’s a good idea, I’ll take it into account and add it.
After a few problems with the printer, I’ve finally finished making the control unit and fitting all the components inside; I can say that the car is now working. But there’s another problem: to connect the car’s Arduino R4 to the R3 – which I ended up having to use due to technical issues with the ESP32 – I’ve used a 433 MHz RF transmitter and receiver module that has a very short range, and as I want to fit it inside the casing on both the car and the remote control, the distance is practically zero. So I’ve already bought an NRF24L01 PA+LNA, which is another bidirectional transmitter with a much greater range and comes with an antenna; the next step will be to fit it and carry out the final test before installing the DRS and the casing.
To wrap up the project a bit, I’ve designed and printed the front nose and I’ve also printed the front wing. The car’s electronics are now complete after I replaced the transmitter and receiver modules with two NRF24L01 PA+LNA units with antennas, which work much better and have a much greater range. And although the F1 bodywork and the DRS are still missing, I’ll leave it as finished for the time being because I don’t have time to work on it any further and also because the Stardance deadline is approaching. So that’s it for now, and I hope people have enjoyed the project.
Ships:
I made a F1 radio control car that works with Arduino and electronic components. The entire car and the remote control was build from scratch and with a 3D printer. This proyect teach me that they don’t always turn out the way we want them to the first time round, and I made a lot of mistakes that I had to solve them designing and printing again, or using the tools that I have, but I have learnt a lot in this proyect and , although I couldn’t compleately at all and I know that is not the best radio control car, I am so proud of it....
|
1793346532.4059057
|
1793432932.4059057
|
|
50272
|
A game Where Dinosaur Jumps by @flameslayersog | S A game Where Dinosaur Jumps by @flameslayersog | Stardance...
|
flameslayersog
|
1
|
1.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T14:14:54Z", "hours": 1.0, "multiplier": 1.61, "payout": 2, "blessing": "neutral", "text": "I have made a Dinosaur and cactus game replica and done it a little sketchy and just a kind reminder that this is made by a 14 year old!", "repo": "https://github.com/TanayNIakm/Blocky-Game/", "demo": "https://blockyvscactus.netlify.app/"}]...
|
[{"post_id": 48910, "ts": "202 [{"post_id": 48910, "ts": "2026-08-17T14:02:42Z", "hours": 1.0114, "text": "Completed the Game"}]...
|
Title: A game Where Dinosaur Jumps by @flameslayer Title: A game Where Dinosaur Jumps by @flameslayersog | Stardance
Devlogs:
Completed the Game
Ships:
I have made a Dinosaur and cactus game replica and done it a little sketchy and just a kind reminder that this is made by a 14 year old!...
|
1793285526.9894073
|
1793371926.9894073
|
|
50283
|
AEGIS by @sudarsh | Stardance
|
sudarsh
|
1
|
8.93
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T20:00:07Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "AEGIS (Advanced Earth Guard & Intelligence System) is a real-time planetary │ defense mission control dashboard that monitors near-Earth asteroids, solar │ weather events, and ISS orbital telemetry. Built with React, Three.js, Express, │ and SQLite, it visualizes an interactive 3D Solar System with custom GLSL │ planetary shaders while actively streaming live data from NASA NeoWs, NASA DONKI, │ NOAA SWPC, and WhereTheISS.at.", "repo": "https://github.com/sudarshandev-llm/aegis-star", "demo": "https://beastsudarsh09.hackclub.app"}]...
|
[{"post_id": 79052, "ts": "202 [{"post_id": 79052, "ts": "2026-10-12T14:34:27Z", "hours": 1.9278, "text": "AEGIS got returned, and that’s fair The Shipwrights returned AEGIS. Their feedback was that it reads as AI-generated end to end, without enough of my own input. I used AI heavily to build the first version, so I can’t really argue with that. So I’m going to remake it properly. This time: I’ll redesign the UI myself, with my own layout, colors and panel designs I’ll go through the code until I can explain how each part works (the NASA polling, the DEFCON logic, the ISS tracker, the Earth shader) I’ll make smaller, more frequent commits so the progress is visible I’ll add an “AI usage” section to the README that says honestly what was AI-assisted and what I wrote Will post updates as I go. To be continued…"}, {"post_id": 75705, "ts": "2026-09-30T19:58:52Z", "hours": 1.3342, "text": "Finally AEGIS is live check out 🎊🎊🎊🎊"}, {"post_id": 72251, "ts": "2026-09-22T15:08:34Z", "hours": 0.4294, "text": "I know I haven’t posted a devlog for a while — and there’s a reason. While working on AEGIS, I ran into an unexpected issue that broke the entire simulation tab and its mappings. A lot of the work had to be rebuilt and remapped from scratch, which completely disrupted the development timeline. Instead of rushing out an update, I decided to fix the foundation properly. Now I’m back on track, rebuilding the simulation system and continuing AEGIS toward its bigger goal: real-time space data, simulations, research tools, and eventually more advanced systems for exploring space technology."}, {"post_id": 71334, "ts": "2026-09-20T17:21:39Z", "hours": 0.3914, "text": "🚀 AEGIS — Development Update Just pushed another major update to AEGIS. I’ve now integrated NASA’s space-data APIs to bring live/near-real-time space data directly into the AEGIS interface — including: ☀️ Solar Activity & CME data ☄️ Near-Earth Object tracking 🛰️ ISS orbital-position data The goal isn’t to simply display numbers on a screen. AEGIS is being built as a foundation for exploring and researching space systems. I’m now focusing on taking it further — turning these real-time data streams into tools that can help us analyze space environments, study orbital behavior, monitor celestial events, and eventually support the design of more advanced devices for space research. This is still an early stage, but the direction is becoming much clearer: From data → to analysis → to research → to real space technology."}, {"post_id": 70682, "ts": "2026-09-19T16:12:29Z", "hours": 0.4678, "text": "I have just made an simulation for Aegis(Advanced Earth-orbit & Geospatial Intelligence System) I have made this 3D space visualization and simulation interface as part of AEGIS. It provides an interactive view of Earth, planetary bodies, orbital paths, asteroids, and space objects in a dynamic environment. Users can track objects, zoom through space, control simulation speed, enable real-time rotation, and switch between different simulation states. The interface is designed like a mission-control environment, combining scientific visualization with a clean futuristic HUD. My focus was on making complex orbital and space data visually understandable while keeping the experience interactive and immersive. This is one of the core visualization components I built for AEGIS."}, {"post_id": 70191, "ts": "2026-09-18T17:40:50Z", "hours": 4.2275, "text": "Designing the AEGIS Frontend 🚀"}]...
|
Title: AEGIS by @sudarsh | Stardance
Devlogs:
Des Title: AEGIS by @sudarsh | Stardance
Devlogs:
Designing the AEGIS Frontend 🚀
I have just made an simulation for Aegis(Advanced Earth-orbit & Geospatial Intelligence System) I have made this 3D space visualization and simulation interface as part of AEGIS. It provides an interactive view of Earth, planetary bodies, orbital paths, asteroids, and space objects in a dynamic environment. Users can track objects, zoom through space, control simulation speed, enable real-time rotation, and switch between different simulation states. The interface is designed like a mission-control environment, combining scientific visualization with a clean futuristic HUD. My focus was on making complex orbital and space data visually understandable while keeping the experience interactive and immersive. This is one of the core visualization components I built for AEGIS.
🚀 AEGIS — Development Update Just pushed another major update to AEGIS. I’ve now integrated NASA’s space-data APIs to bring live/near-real-time space data directly into the AEGIS interface — including: ☀️ Solar Activity & CME data ☄️ Near-Earth Object tracking 🛰️ ISS orbital-position data The goal isn’t to simply display numbers on a screen. AEGIS is being built as a foundation for exploring and researching space systems. I’m now focusing on taking it further — turning these real-time data streams into tools that can help us analyze space environments, study orbital behavior, monitor celestial events, and eventually support the design of more advanced devices for space research. This is still an early stage, but the direction is becoming much clearer: From data → to analysis → to research → to real space technology.
I know I haven’t posted a devlog for a while — and there’s a reason. While working on AEGIS, I ran into an unexpected issue that broke the entire simulation tab and its mappings. A lot of the work had to be rebuilt and remapped from scratch, which completely disrupted the development timeline. Instead of rushing out an update, I decided to fix the foundation properly. Now I’m back on track, rebuilding the simulation system and continuing AEGIS toward its bigger goal: real-time space data, simulations, research tools, and eventually more advanced systems for exploring space technology.
Finally AEGIS is live check out 🎊🎊🎊🎊
AEGIS got returned, and that’s fair The Shipwrights returned AEGIS. Their feedback was that it reads as AI-generated end to end, without enough of my own input. I used AI heavily to build the first version, so I can’t really argue with that. So I’m going to remake it properly. This time: I’ll redesign the UI myself, with my own layout, colors and panel designs I’ll go through the code until I can explain how each part works (the NASA polling, the DEFCON logic, the ISS tracker, the Earth shader) I’ll make smaller, more frequent commits so the progress is visible I’ll add an “AI usage” section to the README that says honestly what was AI-assisted and what I wrote Will post updates as I go. To be continued…
Ships:
AEGIS (Advanced Earth Guard & Intelligence System) is a real-time planetary │ defense mission control dashboard that monitors near-Earth asteroids, solar │ weather events, and ISS orbital telemetry. Built with React, Three.js, Express, │ and SQLite, it visualizes an interactive 3D Solar System with custom GLSL │ planetary shaders while actively streaming live data from NASA NeoWs, NASA DONKI, │ NOAA SWPC, and WhereTheISS.at....
|
1793346536.4417143
|
1793432936.4417143
|
|
50313
|
SpaceOs by @vardaankatyal | Stardance
|
vardaankatyal
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T08:53:56Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a space based os in web. Challenging thing for me was i didn’t knew how to make so i watched yt. i am proud that i made something great. people must try terminal cmds as it is something differrent from guide", "repo": "https://github.com/vardaankatyal-netizen/spaceos", "demo": "https://spaceos-xi.vercel.app/"}]...
|
[{"post_id": 49394, "ts": "202 [{"post_id": 49394, "ts": "2026-08-18T06:07:57Z", "hours": 0.3117, "text": "I am working for more than 1.5 hours on a webos having a theme of space"}]...
|
Title: SpaceOs by @vardaankatyal | Stardance
Devl Title: SpaceOs by @vardaankatyal | Stardance
Devlogs:
I am working for more than 1.5 hours on a webos having a theme of space
Ships:
I made a space based os in web. Challenging thing for me was i didn’t knew how to make so i watched yt. i am proud that i made something great. people must try terminal cmds as it is something differrent from guide...
|
1793289261.2807114
|
1793375661.2807114
|
|
50329
|
Forgotten valley by @ankit677 | Stardance
|
ankit677
|
1
|
2.0
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T13:34:24Z", "hours": 2.0, "multiplier": 3.43, "payout": 5, "blessing": "neutral", "text": "I made Forgotten Valley, a horror game built with Unity and C#. I worked on the player gameplay, scripting, and game mechanics. I’m proud of turning my ideas into a playable game and improving it through testing and fixing problems. I want people to know that Forgotten Valley is an indie horror game that I’m continuing to develop and improve.", "repo": "https://github.com/Ankit6772012/Forgotten-valley", "demo": "https://play.unity.com/en/games/db7fa15c-116a-49cf-b69a-96806234995a/forgotten-valley"}]...
|
[{"post_id": 52945, "ts": "202 [{"post_id": 52945, "ts": "2026-08-23T10:06:48Z", "hours": 0.6683, "text": "I added settings option in my game adding resume,restart,quit and main menu options. I also added sliders.This was not a easy task my script was not so good,it have too errors. I firstly solved all the errors in my script then i procced to next steps."}, {"post_id": 52257, "ts": "2026-08-22T11:09:04Z", "hours": 0.8733, "text": "Today,as a first day on stardance,working on forgotten valley horror game.I added pausemenu script to make my game settings like a professional.My goal was to add sensitivity,resume and restart controls.I wrote pausemenu script and added it to maincamera game object."}]...
|
Title: Forgotten valley by @ankit677 | Stardance
Title: Forgotten valley by @ankit677 | Stardance
Devlogs:
Today,as a first day on stardance,working on forgotten valley horror game.I added pausemenu script to make my game settings like a professional.My goal was to add sensitivity,resume and restart controls.I wrote pausemenu script and added it to maincamera game object.
I added settings option in my game adding resume,restart,quit and main menu options. I also added sliders.This was not a easy task my script was not so good,it have too errors. I firstly solved all the errors in my script then i procced to next steps.
Ships:
I made Forgotten Valley, a horror game built with Unity and C#. I worked on the player gameplay, scripting, and game mechanics. I’m proud of turning my ideas into a playable game and improving it through testing and fixing problems. I want people to know that Forgotten Valley is an indie horror game that I’m continuing to develop and improve....
|
1793234917.72724
|
1793321317.72724
|
|
50360
|
THE OBSERVER by @lakshay99_b | Stardance
|
lakshay99_b
|
1
|
2.27
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-20T09:44:00Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I finally shipped THE OBSERVER 🚀 I built The Observer as an astronomy-focused new-tab dashboard that turns a normal browser tab into a small digital observatory. I wanted it to feel alive, so I connected it with real space data like NASA’s Astronomy Picture of the Day, the ISS position, people currently in space, and upcoming launches. I also built the animated starfield, solar-system visualization, bookmarks, field notes, search, settings, and the rest of the interface myself using HTML, CSS and vanilla JavaScript. The most challenging part was getting all the different pieces to work together reliably. Working with multiple APIs, handling asynchronous data, dealing with loading/error states, creating the Canvas animations, and making the layout work across screen sizes taught me a lot more than I expected. I’m especially proud of the fact that this isn’t a one-click AI-generated website or a template that I simply customized. I spent the time designing the UI, writing the code, connecting the APIs, debugging things that broke, and iterating until it became something I was actually happy to ship. If you’re reviewing/testing it: open the deployed site and give it a moment to load the live data. Try the NASA picture, ISS tracker, people-in-space section, upcoming launch countdown, planet cards, search, bookmarks, settings, and Field Notes. You can also refresh the page to check that your saved settings and notes persist. This is the version I’m submitting for review, but I don’t consider it the end of The Observer. There are still plenty of things I’d love to improve and add. Thanks for checking out my project. 🌌 — Lakshay", "repo": "https://github.com/lakshay99b-dotcom/the-observer", "demo": "https://the-observer-angvey.vercel.app"}]...
|
[{"post_id": 51037, "ts": "202 [{"post_id": 51037, "ts": "2026-08-20T15:00:08Z", "hours": 0.2667, "text": "Spent some time cleaning up the top part of the page. Moved the search bar under the clock so it sits more like a normal new tab page. Made it wider too. Before it was stuck on the side and felt a bit awkward. Also shifted the GitHub / Stardance / YouTube buttons below the search bar and added simple icons to them. Looks cleaner now. Tried adding a space background image. First one I picked was too bright and made the text hard to read, so I darkened it with an overlay. It’s better now but I might still change the image later if I find a nicer one. Notes and name still save properly. APOD and ISS are working. Not a huge update, just small things that were bothering me. Feels a bit more usable now."}, {"post_id": 50859, "ts": "2026-08-20T09:43:10Z", "hours": 0.4308, "text": "JUST PLAYING THE FINAL CARD this is devlog#5 and now i am happy that this is finally at the stage of completenes."}, {"post_id": 50358, "ts": "2026-08-19T15:12:39Z", "hours": 0.3822, "text": "devlog#3 this might be going to be my last devlog for my this project. I FINALLY ADDED A VIDEO FETCHER FOR NASA’S VIDEO ADD IT IS ALMOST COMPLETE. FEATURES -search for anything -real time, date -nasa’s images and videoes -iss position tracker -launch tracker -name of humans currently in orbit although i know i was posting very less devlogs, but actually i am so stuck in code that i don’t remeber to do this."}, {"post_id": 50332, "ts": "2026-08-19T14:31:10Z", "hours": 0.4181, "text": "The Observer — Bringing the Solar System to Life 🌌The Observer is starting to feel like an actual space exploration tool.In this build, I’ve been working on the interactive solar-system visualization, where planets are displayed with their connections and can be explored to reveal information about them.The current version includes:🪐 Interactive planet visualization⭐ Animated background stars🌍 Planet information such as radius, gravity, mass and moons🛰️ Live ISS position data📍 ISS latitude, longitude, altitude and velocity💻 A completely browser-based interfaceThis screenshot is also a good reminder that development isn’t always clean 😅 — while building the star-field animation and resizing system, I ran into a JavaScript error in the console. I’m currently debugging it and improving the system so the visualization remains stable across different screen sizes.The goal for The Observer isn’t just to make something that looks like space.I want to turn it into a small interactive window into our actual universe — combining real astronomical data, visualization and exploration in one place.Still building. 🚀 #Stardance #HackClub #TheObserver #WebDevelopment #JavaScript #Space #Astronomy #BuildInPublic"}, {"post_id": 50170, "ts": "2026-08-19T08:52:18Z", "hours": 1.1272, "text": "this is my devlog#1 i today worked for nearly an hour messing with code and output. Currently the output in not attractive but i am just trying to improve it."}]...
|
Title: THE OBSERVER by @lakshay99_b | Stardance
D Title: THE OBSERVER by @lakshay99_b | Stardance
Devlogs:
this is my devlog#1 i today worked for nearly an hour messing with code and output. Currently the output in not attractive but i am just trying to improve it.
The Observer — Bringing the Solar System to Life 🌌The Observer is starting to feel like an actual space exploration tool.In this build, I’ve been working on the interactive solar-system visualization, where planets are displayed with their connections and can be explored to reveal information about them.The current version includes:🪐 Interactive planet visualization⭐ Animated background stars🌍 Planet information such as radius, gravity, mass and moons🛰️ Live ISS position data📍 ISS latitude, longitude, altitude and velocity💻 A completely browser-based interfaceThis screenshot is also a good reminder that development isn’t always clean 😅 — while building the star-field animation and resizing system, I ran into a JavaScript error in the console. I’m currently debugging it and improving the system so the visualization remains stable across different screen sizes.The goal for The Observer isn’t just to make something that looks like space.I want to turn it into a small interactive window into our actual universe — combining real astronomical data, visualization and exploration in one place.Still building. 🚀 #Stardance #HackClub #TheObserver #WebDevelopment #JavaScript #Space #Astronomy #BuildInPublic
devlog#3 this might be going to be my last devlog for my this project. I FINALLY ADDED A VIDEO FETCHER FOR NASA’S VIDEO ADD IT IS ALMOST COMPLETE. FEATURES -search for anything -real time, date -nasa’s images and videoes -iss position tracker -launch tracker -name of humans currently in orbit although i know i was posting very less devlogs, but actually i am so stuck in code that i don’t remeber to do this.
JUST PLAYING THE FINAL CARD this is devlog#5 and now i am happy that this is finally at the stage of completenes.
Spent some time cleaning up the top part of the page. Moved the search bar under the clock so it sits more like a normal new tab page. Made it wider too. Before it was stuck on the side and felt a bit awkward. Also shifted the GitHub / Stardance / YouTube buttons below the search bar and added simple icons to them. Looks cleaner now. Tried adding a space background image. First one I picked was too bright and made the text hard to read, so I darkened it with an overlay. It’s better now but I might still change the image later if I find a nicer one. Notes and name still save properly. APOD and ISS are working. Not a huge update, just small things that were bothering me. Feels a bit more usable now.
Ships:
I finally shipped THE OBSERVER 🚀 I built The Observer as an astronomy-focused new-tab dashboard that turns a normal browser tab into a small digital observatory. I wanted it to feel alive, so I connected it with real space data like NASA’s Astronomy Picture of the Day, the ISS position, people currently in space, and upcoming launches. I also built the animated starfield, solar-system visualization, bookmarks, field notes, search, settings, and the rest of the interface myself using HTML, CSS and vanilla JavaScript. The most challenging part was getting all the different pieces to work together reliably. Working with multiple APIs, handling asynchronous data, dealing with loading/error states, creating the Canvas animations, and making the layout work across screen sizes taught me a lot more than I expected. I’m especially proud of the fact that this isn’t a one-click AI-generated website or a template that I simply customized. I spent the time designing the UI, writing the code, connecting the APIs, debugging things that broke, and iterating until it became something I was actually happy to ship. If you’re reviewing/testing it: open the deployed site and give it a moment to load the live data. Try the NASA picture, ISS tracker, people-in-space section, upcoming launch countdown, planet cards, search, bookmarks, settings, and Field Notes. You can also refresh the page to check that your saved settings and notes persist. This is the version I’m submitting for review, but I don’t consider it the end of The Observer. There are still plenty of things I’d love to improve and add. Thanks for checking out my project. 🌌 — Lakshay...
|
1792878572.348227
|
1793742572.348227
|
|
50363
|
ARYA sites by @aryamankumar2403 | Stardance
|
aryamankumar2403
|
1
|
3.01
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T15:12:41Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal portfolio website using HTML and CSS. It has sections about me, what I’m currently learning, my interests, my goals, and a way to contact me on Instagram. The most challenging part was getting the spacing and layout right, especially making the sections look good without them looking too plain or too cluttered. I also had to learn how divs and classes work properly to style things the way I wanted. I’m proud that I built this from scratch, step by step, without just copying a template. It’s one of my first real projects and I actually understand what every part of the code does. To test it, just open the live site and check if all the sections load properly and the Instagram link works. It’s still a work in progress so some styling might not be perfect.", "repo": "https://github.com/AryaBuilds/ARYA-sites", "demo": "https://aryabuilds.github.io/ARYA-sites/"}]...
|
[{"post_id": 60065, "ts": "202 [{"post_id": 60065, "ts": "2026-09-02T05:54:24Z", "hours": 0.3069, "text": "I am Rebulding All Protpolio"}, {"post_id": 50258, "ts": "2026-08-19T12:33:18Z", "hours": 0.3392, "text": "A NEW LOOK OF MY SITE GUYS"}, {"post_id": 50232, "ts": "2026-08-19T11:41:42Z", "hours": 0.3678, "text": "“I’m working on my personal website project for school. I made it using HTML and CSS, and a little JavaScript too. It has sections like About Me, my Hobbies, School Life and Contact. It’s my first website so it’s not that perfect but I tried my best"}, {"post_id": 49633, "ts": "2026-08-18T14:58:51Z", "hours": 2.2281, "text": "personal portfolio site made with HTML and CSS, showing who i am, what im learning and how to contact me."}]...
|
Title: ARYA sites by @aryamankumar2403 | Stardance Title: ARYA sites by @aryamankumar2403 | Stardance
Devlogs:
personal portfolio site made with HTML and CSS, showing who i am, what im learning and how to contact me.
“I’m working on my personal website project for school. I made it using HTML and CSS, and a little JavaScript too. It has sections like About Me, my Hobbies, School Life and Contact. It’s my first website so it’s not that perfect but I tried my best
A NEW LOOK OF MY SITE GUYS
I am Rebulding All Protpolio
Ships:
I made a personal portfolio website using HTML and CSS. It has sections about me, what I’m currently learning, my interests, my goals, and a way to contact me on Instagram. The most challenging part was getting the spacing and layout right, especially making the sections look good without them looking too plain or too cluttered. I also had to learn how divs and classes work properly to style things the way I wanted. I’m proud that I built this from scratch, step by step, without just copying a template. It’s one of my first real projects and I actually understand what every part of the code does. To test it, just open the live site and check if all the sections load properly and the Instagram link works. It’s still a work in progress so some styling might not be perfect....
|
1792878817.8840222
|
1793742817.8840222
|
|
50366
|
TARS by @ravioli | Stardance
|
ravioli
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T18:09:30Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This project comes from my love for films and ai. Its a representation of one of the best robots on screen, this is a very basic framework, much more is to come", "repo": "https://github.com/ravioliiii665/TARS-Slack-Bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 53243, "ts": "202 [{"post_id": 53243, "ts": "2026-08-23T18:04:22Z", "hours": 0.7711, "text": "Finally made and shipped TARS, llm integration was a pain and still need to fine tune the responses, but this is a good start."}]...
|
Title: TARS by @ravioli | Stardance
Devlogs:
Fina Title: TARS by @ravioli | Stardance
Devlogs:
Finally made and shipped TARS, llm integration was a pain and still need to fine tune the responses, but this is a good start.
Ships:
This project comes from my love for films and ai. Its a representation of one of the best robots on screen, this is a very basic framework, much more is to come...
|
1793292966.428121
|
1793379366.428121
|
|
50369
|
5x5 matrix display by @Chonki_29 | Stardance
|
Chonki_29
|
1
|
4.12
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T20:09:23Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hi i made a 5x5 LED matrix display consisting of 25 LEDs which i manually soldered with resistors onto a zero pcb. After making the display i used chatgpt to help me write the code that turned it into a digital dice. when the button is pressed it generates and displays a random number from 1 to 6 like a normal dice It was a fun project, i got to practice my soldering and learn about how led matrices work and how to control them with esp32 Thanks!", "repo": "https://github.com/chonki29/5x5-LED-matrix", "demo": ""}]...
|
[{"post_id": 64442, "ts": "202 [{"post_id": 64442, "ts": "2026-09-08T20:30:45Z", "hours": 1.1167, "text": "Fixed the old schematic and made the pcb :)) when i first made the schematic of the circuit i used the wrong type of esp32 this time i replaced that added the correct one made the connections and then made the pcb for the circuit :)) (0 errors and 0 warnings)"}, {"post_id": 49841, "ts": "2026-08-18T19:47:54Z", "hours": 0.3, "text": "DIY MATRIX + DIGITAL DICE COMPLETE!!!"}, {"post_id": 49757, "ts": "2026-08-18T17:56:33Z", "hours": 1.5644, "text": "5x5 LED MATRIX soldered onto zero-pcb with resistors (hardware part complete)"}, {"post_id": 48990, "ts": "2026-08-17T16:08:33Z", "hours": 0.6833, "text": "5x5 LED Matrix design on KiCad"}]...
|
Title: 5x5 matrix display by @Chonki_29 | Stardanc Title: 5x5 matrix display by @Chonki_29 | Stardance
Devlogs:
5x5 LED Matrix design on KiCad
5x5 LED MATRIX soldered onto zero-pcb with resistors (hardware part complete)
DIY MATRIX + DIGITAL DICE COMPLETE!!!
Fixed the old schematic and made the pcb :)) when i first made the schematic of the circuit i used the wrong type of esp32 this time i replaced that added the correct one made the connections and then made the pcb for the circuit :)) (0 errors and 0 warnings)
Ships:
Hi i made a 5x5 LED matrix display consisting of 25 LEDs which i manually soldered with resistors onto a zero pcb. After making the display i used chatgpt to help me write the code that turned it into a digital dice. when the button is pressed it generates and displays a random number from 1 to 6 like a normal dice It was a fun project, i got to practice my soldering and learn about how led matrices work and how to control them with esp32 Thanks!...
|
1793292974.9847665
|
1793379374.9847665
|
|
50380
|
scam-buzzer by @itzanhzz | Stardance
|
itzanhzz
|
1
|
17.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T13:12:25Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Scam buzzer is a Chrome extension that checks the pages you visit against a small ML model running on your own machine, then it warns you when a URL looks like a scam or phishing attempt. The whole thing here runs locally! To check this out, read the README and run it yourself!", "repo": "https://github.com/anhpham-dev/scam-detection", "demo": "https://github.com/anhpham-dev/scam-detection/releases/tag/v1.0.0"}]...
|
[{"post_id": 55006, "ts": "202 [{"post_id": 55006, "ts": "2026-08-26T13:08:50Z", "hours": 0.5994, "text": "Devlog 9 This would be my last devlog. I’ve cleaned up the codebase and write the README. shipping it now"}, {"post_id": 54850, "ts": "2026-08-26T00:59:41Z", "hours": 0.6133, "text": "Devlog 8 Ive finally done with the extension design!!! Now im just cleaning up the codebase and write README"}, {"post_id": 54477, "ts": "2026-08-25T14:28:01Z", "hours": 3.0161, "text": "Devlog 7 This project is about to be completedddd!!! im so excited and btw, after running some tests on the model in ver 4, it usually predict every websites as “phishing”. Even though the overall acurracy is about 0.95. I found this very concerning because it shouldn’t have happened. After I dig deeper, I found that “has_https” caused a lot of bias in the model (its scale was about 6 or smt) but bascially it contributes a lot toward the final prediction. Then i’ve removed it and then the phishing biased percentages reduced by a bit. I’d figured that training a new model would be better rather than going around fixing some parameters in the predictor script. In the v5, I’ve tried to add a threshold testing. Basically instead the model immediately saying phishing prob = .7 => phishing, I experimented with <.6 -> not high-risk, .6-.9 -> suspicious and >.9 -> malicious. This pretty much didn’t do nothing much cuz I traded of some accuracy for nothing and google.com was still being predicted as .99 phishing. After that, I retrained the model while removing the URL scheme from the TF-IDF input. So instead of the tf-idf seeing: https://google.com , it sees approx google.com . The idea here was to prevent the TF-IDF from learning: https:// , :// , s:// , ttps as phishing indicator. Running all those tests for about 2 hours and the results aren’t significant. I’ve decided to add a trusted domain list and then moving toward designing the extension and the local API. 💀💀💀💀"}, {"post_id": 54156, "ts": "2026-08-25T00:23:58Z", "hours": 3.1178, "text": "Devlog 6 Meaning running testing and refactoring some of the training python scripts, I’ve used FastAPI to create the api for the ML model. There was a schemas that the api expect and also predict (on /predict POST endpoint)"}, {"post_id": 53072, "ts": "2026-08-23T14:04:46Z", "hours": 0.4936, "text": "Devlog 5 Quick one here, TF-IDF and the lexical feature classifier achieve the highest accuracy here. I’ll be using that for the chrome extension."}, {"post_id": 52947, "ts": "2026-08-23T10:11:25Z", "hours": 3.6544, "text": "Devlog 4 I’ve grouped some of the domain features into 3 main groups: Identity: How long the domain is, how many subdomain labels there are, etc… it’d help us to distinguish from google.com and secure-login-account-verification.example.com Composition: digits, hyphens or special characters in the domain, as well as ratio and Shannon entropy. The entropy calculation was written from scratch rather than pulling from scipy => it kept the dependencies light. High entropy like x7Qhd6agz1 look very different from low entropy one like google Suspicion indicator: binary flags for punycode, numeric TLDs, long subdomains, and high-entropy domains. I’ve also updated the hybrid model training script to compare TF-IDF alone, TF-IDF plus some lexical features, TF-IDF with new 3 grouped domain features, and TF-IDF with both."}, {"post_id": 50355, "ts": "2026-08-19T15:09:01Z", "hours": 0.7725, "text": "Quick devlog After combining the TF-IDF and handcrafted features, the model seems to performs worse… I might need to check some scaling problem or something? The teacher says to me that my hand-crafted features are highly correlated or like they are having redundant signals…"}, {"post_id": 50199, "ts": "2026-08-19T10:27:32Z", "hours": 1.565, "text": "Devlog 3 I’m finally done with researching and implementing character TF-IDF for this classifier. I’m trying to combine 2 of the classifier method into a hybrid to see if the model still predict that google.com is phishing or not. (hopefully not)"}, {"post_id": 49951, "ts": "2026-08-18T22:58:39Z", "hours": 1.3886, "text": "Devlog 2: I’ve just doen with working on the TF-IDF model. Tho, the training time is still long (like whole 5 minutes or something for the entire pipeline). But the accuracy is great (96.95%)!!"}, {"post_id": 49515, "ts": "2026-08-18T12:03:54Z", "hours": 0.5033, "text": "Finally done with the first ml classifier. What it does: basically, it takes an url, extract characteristics from it and and predict wether it belongs to 4 of the classes. Dataset used: here Pipeline: raw csv -> keep url + type -> normalize url -> remove duplicate url (if there are any) -> stratified sampling. Next, I’m going to add character-level TF-IDF so that the model doesnt happens to predict google.com as 99.05% phishing 💀💀"}, {"post_id": 49495, "ts": "2026-08-18T11:19:17Z", "hours": 1.4431, "text": "Just writing the training script took me 1h13 of researching …. First time writing ml model 💀🔥"}]...
|
Title: scam-buzzer by @itzanhzz | Stardance
Devlo Title: scam-buzzer by @itzanhzz | Stardance
Devlogs:
Just writing the training script took me 1h13 of researching …. First time writing ml model 💀🔥
Finally done with the first ml classifier. What it does: basically, it takes an url, extract characteristics from it and and predict wether it belongs to 4 of the classes. Dataset used: here Pipeline: raw csv -> keep url + type -> normalize url -> remove duplicate url (if there are any) -> stratified sampling. Next, I’m going to add character-level TF-IDF so that the model doesnt happens to predict google.com as 99.05% phishing 💀💀
Devlog 2: I’ve just doen with working on the TF-IDF model. Tho, the training time is still long (like whole 5 minutes or something for the entire pipeline). But the accuracy is great (96.95%)!!
Devlog 3 I’m finally done with researching and implementing character TF-IDF for this classifier. I’m trying to combine 2 of the classifier method into a hybrid to see if the model still predict that google.com is phishing or not. (hopefully not)
Quick devlog After combining the TF-IDF and handcrafted features, the model seems to performs worse… I might need to check some scaling problem or something? The teacher says to me that my hand-crafted features are highly correlated or like they are having redundant signals…
Devlog 4 I’ve grouped some of the domain features into 3 main groups: Identity: How long the domain is, how many subdomain labels there are, etc… it’d help us to distinguish from google.com and secure-login-account-verification.example.com Composition: digits, hyphens or special characters in the domain, as well as ratio and Shannon entropy. The entropy calculation was written from scratch rather than pulling from scipy => it kept the dependencies light. High entropy like x7Qhd6agz1 look very different from low entropy one like google Suspicion indicator: binary flags for punycode, numeric TLDs, long subdomains, and high-entropy domains. I’ve also updated the hybrid model training script to compare TF-IDF alone, TF-IDF plus some lexical features, TF-IDF with new 3 grouped domain features, and TF-IDF with both.
Devlog 5 Quick one here, TF-IDF and the lexical feature classifier achieve the highest accuracy here. I’ll be using that for the chrome extension.
Devlog 6 Meaning running testing and refactoring some of the training python scripts, I’ve used FastAPI to create the api for the ML model. There was a schemas that the api expect and also predict (on /predict POST endpoint)
Devlog 7 This project is about to be completedddd!!! im so excited and btw, after running some tests on the model in ver 4, it usually predict every websites as “phishing”. Even though the overall acurracy is about 0.95. I found this very concerning because it shouldn’t have happened. After I dig deeper, I found that “has_https” caused a lot of bias in the model (its scale was about 6 or smt) but bascially it contributes a lot toward the final prediction. Then i’ve removed it and then the phishing biased percentages reduced by a bit. I’d figured that training a new model would be better rather than going around fixing some parameters in the predictor script. In the v5, I’ve tried to add a threshold testing. Basically instead the model immediately saying phishing prob = .7 => phishing, I experimented with <.6 -> not high-risk, .6-.9 -> suspicious and >.9 -> malicious. This pretty much didn’t do nothing much cuz I traded of some accuracy for nothing and google.com was still being predicted as .99 phishing. After that, I retrained the model while removing the URL scheme from the TF-IDF input. So instead of the tf-idf seeing: https://google.com , it sees approx google.com . The idea here was to prevent the TF-IDF from learning: https:// , :// , s:// , ttps as phishing indicator. Running all those tests for about 2 hours and the results aren’t significant. I’ve decided to add a trusted domain list and then moving toward designing the extension and the local API. 💀💀💀💀
Devlog 8 Ive finally done with the extension design!!! Now im just cleaning up the codebase and write README
Devlog 9 This would be my last devlog. I’ve cleaned up the codebase and write the README. shipping it now
Ships:
Scam buzzer is a Chrome extension that checks the pages you visit against a small ML model running on your own machine, then it warns you when a URL looks like a scam or phishing attempt. The whole thing here runs locally! To check this out, read the README and run it yourself!...
|
1793318209.2132337
|
1793404609.2132337
|
|
50387
|
personal site by @ibrahim- | Stardance
|
ibrahim-
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T17:56:56Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is the homepage for the IBFactor website (my personal portfolio). Runs on vanilla JS, HTML, & CSS Sections: Profile Projects Blog Contact (Neko!)", "repo": "https://github.com/ibfactor/main", "demo": "https://ibfactor.com"}]...
|
[{"post_id": 49058, "ts": "202 [{"post_id": 49058, "ts": "2026-08-17T17:28:52Z", "hours": 0.2714, "text": "Devlog #3 Added a sample blog post + contact (did i added mention neko.js )"}, {"post_id": 49046, "ts": "2026-08-17T17:12:00Z", "hours": 0.5067, "text": "Devlog #2 Icons! (and profile + blog)"}, {"post_id": 48945, "ts": "2026-08-17T14:51:13Z", "hours": 0.3525, "text": "Devlog #1 Added my projects and got done with some basic css (the logo is based on a jasmine flower)"}]...
|
Title: personal site by @ibrahim- | Stardance
Dev Title: personal site by @ibrahim- | Stardance
Devlogs:
Devlog #1 Added my projects and got done with some basic css (the logo is based on a jasmine flower)
Devlog #2 Icons! (and profile + blog)
Devlog #3 Added a sample blog post + contact (did i added mention neko.js )
Ships:
This is the homepage for the IBFactor website (my personal portfolio). Runs on vanilla JS, HTML, & CSS Sections: Profile Projects Blog Contact (Neko!)...
|
1793293021.041752
|
1793379421.041752
|